Hello community, here is the log from the commit of package hawk2 for openSUSE:Factory checked in at 2016-04-28 16:55:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/hawk2 (Old) and /work/SRC/openSUSE:Factory/.hawk2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hawk2" Changes: -------- --- /work/SRC/openSUSE:Factory/hawk2/hawk2.changes 2016-04-06 11:52:30.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.hawk2.new/hawk2.changes 2016-04-28 16:59:44.000000000 +0200 @@ -1,0 +2,15 @@ +Fri Apr 22 11:04:30 UTC 2016 - kgronl...@suse.com + +- Update to version 2.0.0+git.1461322965.7f27886: + + UI: Revised primitive attribute loading to avoid ugly bounce + + UI: Avoid using spinner placeholders + + Call correct rake when running gettext:pack / assets:precompile + +------------------------------------------------------------------- +Thu Apr 07 11:17:23 UTC 2016 - kgronl...@suse.com + +- Update to version 2.0.0+git.1460021004.dc75922: + + UI: Correct font-awesome icon asset paths (bsc#974435) + + Improved hawk 1 package obsoletion statement + +------------------------------------------------------------------- Old: ---- hawk2-2.0.0+git.1459616683.31efac7.tar.bz2 New: ---- hawk2-2.0.0+git.1461322965.7f27886.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hawk2.spec ++++++ --- /var/tmp/diff_new_pack.qLftl7/_old 2016-04-28 16:59:47.000000000 +0200 +++ /var/tmp/diff_new_pack.qLftl7/_new 2016-04-28 16:59:47.000000000 +0200 @@ -31,20 +31,21 @@ %define gname haclient %define uname hacluster -%define version_unconverted 2.0.0+git.1459616683.31efac7 +%define version_unconverted 2.0.0+git.1461322965.7f27886 Name: hawk2 Summary: HA Web Konsole License: GPL-2.0 Group: %{pkg_group} -Version: 2.0.0+git.1459616683.31efac7 +Version: 2.0.0+git.1461322965.7f27886 Release: 0 Url: http://www.clusterlabs.org/wiki/Hawk Source: %{name}-%{version}.tar.bz2 Source100: hawk-rpmlintrc BuildRoot: %{_tmppath}/%{name}-%{version}-build Provides: ha-cluster-webui -Provides: hawk +Obsoletes: hawk <= 1.1.0 +Provides: hawk = %{version} Requires: crmsh Requires: graphviz Requires: graphviz-gd ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.qLftl7/_old 2016-04-28 16:59:47.000000000 +0200 +++ /var/tmp/diff_new_pack.qLftl7/_new 2016-04-28 16:59:47.000000000 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/ClusterLabs/hawk.git</param> - <param name="changesrevision">31efac70e90a9014985c8c6d59920d0e9a825a3c</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">7f278860d9cf9f27a4e3bddda9fd51b40cca6ed1</param></service></servicedata> \ No newline at end of file ++++++ hawk2-2.0.0+git.1459616683.31efac7.tar.bz2 -> hawk2-2.0.0+git.1461322965.7f27886.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/Makefile new/hawk2-2.0.0+git.1461322965.7f27886/Makefile --- old/hawk2-2.0.0+git.1459616683.31efac7/Makefile 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/Makefile 2016-04-22 13:04:22.000000000 +0200 @@ -59,7 +59,7 @@ bundle package && bundle install --local --deployment ; \ fi ; \ TEXTDOMAIN=hawk bin/rake gettext:pack; \ - RAILS_ENV=production bundle exec rake assets:precompile) + RAILS_ENV=production bin/rake assets:precompile) %:: %.in sed \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/assets/javascripts/module/primitives.js new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/assets/javascripts/module/primitives.js --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/assets/javascripts/module/primitives.js 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/assets/javascripts/module/primitives.js 2016-04-22 13:04:22.000000000 +0200 @@ -167,14 +167,14 @@ // enable create/apply var form = $(controller_type.form_selector); form.find('#agent-info').removeClass('hidden').find('a').attr('href', Routes.cib_agent_path($('body').data('cib'), encodeURIComponent(agent))); - form.find('#editform-loading').slideDown(); + form.find('#editform-loading').show(); form.find(".submit").prop("disabled", false); }; var disable_detail = function() { var form = $(controller_type.form_selector); form.find('#agent-info').addClass('hidden').find('a').attr('href', '#'); - form.find('#editform-loading').slideUp(); + form.find('#editform-loading').hide(); form.find(".submit").prop("disabled", true); form.find('#paramslist, #oplist, #metalist, #utilizationlist').html(''); }; @@ -315,11 +315,10 @@ // enable toggleables $('form').toggleify(); - $(controller_type.form_selector).find('#editform-loading').slideUp(); + $(controller_type.form_selector).find('#editform-loading').hide(); }, error: function(xhr, status, msg) { - console.log('error', arguments); - $(controller_type.form_selector).find('#editform-loading').addClass('hidden'); + $(controller_type.form_selector).find('#editform-loading').hide(); $.growl({ message: __('Failed to fetch meta attributes') },{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/assets/javascripts/module/wizards.js new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/assets/javascripts/module/wizards.js --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/assets/javascripts/module/wizards.js 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/assets/javascripts/module/wizards.js 2016-04-22 13:04:22.000000000 +0200 @@ -66,7 +66,7 @@ } vform.find(".actions .list-group-item").addClass("disabled"); - vform.find(".notifications").html('<div class="alert alert-info"><i class="fa fa-spinner fa-spin fa-2x"></i> ' + __("Applying configuration changes...") + '</div>'); + vform.find(".notifications").html('<div class="alert alert-info"><i class="fa fa-refresh fa-pulse-opacity fa-2x"></i> ' + __("Applying configuration changes...") + '</div>'); vform.find(".submit").prop("disabled", true); }); vform.on("ajax:success", function(e, data, status, xhr) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/views/graphs/show.html.haml new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/views/graphs/show.html.haml --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/views/graphs/show.html.haml 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/views/graphs/show.html.haml 2016-04-22 13:04:22.000000000 +0200 @@ -10,10 +10,10 @@ .panel.panel-default .panel-body .graph-placeholder.text-center - = '<i class="fa fa-spinner fa-spin fa-4x"></i>'.html_safe + = '<i class="fa fa-refresh fa-pulse-opacity fa-2x"></i>'.html_safe .graph-image = image_tag cib_graph_path(cib_id: current_cib.id, format: "svg", t: Time.now.to_i), class: "img-responsive center-block", alt: _("Graph") :javascript $(window).load(function() { - $(".graph-placeholder").slideUp(); + $(".graph-placeholder").hide(); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/views/primitives/_form.html.haml new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/views/primitives/_form.html.haml --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/app/views/primitives/_form.html.haml 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/app/views/primitives/_form.html.haml 2016-04-22 13:04:22.000000000 +0200 @@ -37,7 +37,7 @@ = icon_tag "info" %p#editform-loading.centered.text-center{style: "display: none;"} - %i.fa.fa-2x.fa-spinner.fa-spin.text-info + %i.fa.fa-refresh.fa-pulse-opacity.text-info #paramslist #oplist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/config/boot.rb new/hawk2-2.0.0+git.1461322965.7f27886/hawk/config/boot.rb --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/config/boot.rb 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/config/boot.rb 2016-04-22 13:04:22.000000000 +0200 @@ -33,9 +33,6 @@ gem "sass-rails", version: "~> 5.0" require "sass-rails" - gem "hashie", version: "~> 3.4" - require "hashie" - gem "virtus", version: "~> 1.0" require "virtus" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/javascripts/misc/cookie.js new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/javascripts/misc/cookie.js --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/javascripts/misc/cookie.js 1970-01-01 01:00:00.000000000 +0100 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/javascripts/misc/cookie.js 2016-04-22 13:04:22.000000000 +0200 @@ -0,0 +1,145 @@ +/*! + * JavaScript Cookie v2.1.0 + * https://github.com/js-cookie/js-cookie + * + * Copyright 2006, 2015 Klaus Hartl & Fagner Brack + * Released under the MIT license + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + var _OldCookies = window.Cookies; + var api = window.Cookies = factory(); + api.noConflict = function () { + window.Cookies = _OldCookies; + return api; + }; + } +}(function () { + function extend () { + var i = 0; + var result = {}; + for (; i < arguments.length; i++) { + var attributes = arguments[ i ]; + for (var key in attributes) { + result[key] = attributes[key]; + } + } + return result; + } + + function init (converter) { + function api (key, value, attributes) { + var result; + + // Write + + if (arguments.length > 1) { + attributes = extend({ + path: '/' + }, api.defaults, attributes); + + if (typeof attributes.expires === 'number') { + var expires = new Date(); + expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); + attributes.expires = expires; + } + + try { + result = JSON.stringify(value); + if (/^[\{\[]/.test(result)) { + value = result; + } + } catch (e) {} + + if (!converter.write) { + value = encodeURIComponent(String(value)) + .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); + } else { + value = converter.write(value, key); + } + + key = encodeURIComponent(String(key)); + key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); + key = key.replace(/[\(\)]/g, escape); + + return (document.cookie = [ + key, '=', value, + attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE + attributes.path && '; path=' + attributes.path, + attributes.domain && '; domain=' + attributes.domain, + attributes.secure ? '; secure' : '' + ].join('')); + } + + // Read + + if (!key) { + result = {}; + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling "get()" + var cookies = document.cookie ? document.cookie.split('; ') : []; + var rdecode = /(%[0-9A-Z]{2})+/g; + var i = 0; + + for (; i < cookies.length; i++) { + var parts = cookies[i].split('='); + var name = parts[0].replace(rdecode, decodeURIComponent); + var cookie = parts.slice(1).join('='); + + if (cookie.charAt(0) === '"') { + cookie = cookie.slice(1, -1); + } + + try { + cookie = converter.read ? + converter.read(cookie, name) : converter(cookie, name) || + cookie.replace(rdecode, decodeURIComponent); + + if (this.json) { + try { + cookie = JSON.parse(cookie); + } catch (e) {} + } + + if (key === name) { + result = cookie; + break; + } + + if (!key) { + result[name] = cookie; + } + } catch (e) {} + } + + return result; + } + + api.get = api.set = api; + api.getJSON = function () { + return api.apply({ + json: true + }, [].slice.call(arguments)); + }; + api.defaults = {}; + + api.remove = function (key, attributes) { + api(key, '', extend(attributes, { + expires: -1 + })); + }; + + api.withConverter = init; + + return api; + } + + return init(function () {}); +})); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/javascripts/misc/js.cookie.js new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/javascripts/misc/js.cookie.js --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/javascripts/misc/js.cookie.js 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/javascripts/misc/js.cookie.js 1970-01-01 01:00:00.000000000 +0100 @@ -1,145 +0,0 @@ -/*! - * JavaScript Cookie v2.1.0 - * https://github.com/js-cookie/js-cookie - * - * Copyright 2006, 2015 Klaus Hartl & Fagner Brack - * Released under the MIT license - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - define(factory); - } else if (typeof exports === 'object') { - module.exports = factory(); - } else { - var _OldCookies = window.Cookies; - var api = window.Cookies = factory(); - api.noConflict = function () { - window.Cookies = _OldCookies; - return api; - }; - } -}(function () { - function extend () { - var i = 0; - var result = {}; - for (; i < arguments.length; i++) { - var attributes = arguments[ i ]; - for (var key in attributes) { - result[key] = attributes[key]; - } - } - return result; - } - - function init (converter) { - function api (key, value, attributes) { - var result; - - // Write - - if (arguments.length > 1) { - attributes = extend({ - path: '/' - }, api.defaults, attributes); - - if (typeof attributes.expires === 'number') { - var expires = new Date(); - expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); - attributes.expires = expires; - } - - try { - result = JSON.stringify(value); - if (/^[\{\[]/.test(result)) { - value = result; - } - } catch (e) {} - - if (!converter.write) { - value = encodeURIComponent(String(value)) - .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); - } else { - value = converter.write(value, key); - } - - key = encodeURIComponent(String(key)); - key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); - key = key.replace(/[\(\)]/g, escape); - - return (document.cookie = [ - key, '=', value, - attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE - attributes.path && '; path=' + attributes.path, - attributes.domain && '; domain=' + attributes.domain, - attributes.secure ? '; secure' : '' - ].join('')); - } - - // Read - - if (!key) { - result = {}; - } - - // To prevent the for loop in the first place assign an empty array - // in case there are no cookies at all. Also prevents odd result when - // calling "get()" - var cookies = document.cookie ? document.cookie.split('; ') : []; - var rdecode = /(%[0-9A-Z]{2})+/g; - var i = 0; - - for (; i < cookies.length; i++) { - var parts = cookies[i].split('='); - var name = parts[0].replace(rdecode, decodeURIComponent); - var cookie = parts.slice(1).join('='); - - if (cookie.charAt(0) === '"') { - cookie = cookie.slice(1, -1); - } - - try { - cookie = converter.read ? - converter.read(cookie, name) : converter(cookie, name) || - cookie.replace(rdecode, decodeURIComponent); - - if (this.json) { - try { - cookie = JSON.parse(cookie); - } catch (e) {} - } - - if (key === name) { - result = cookie; - break; - } - - if (!key) { - result[name] = cookie; - } - } catch (e) {} - } - - return result; - } - - api.get = api.set = api; - api.getJSON = function () { - return api.apply({ - json: true - }, [].slice.call(arguments)); - }; - api.defaults = {}; - - api.remove = function (key, attributes) { - api(key, '', extend(attributes, { - expires: -1 - })); - }; - - api.withConverter = init; - - return api; - } - - return init(function () {}); -})); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/javascripts/vendor.js new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/javascripts/vendor.js --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/javascripts/vendor.js 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/javascripts/vendor.js 2016-04-22 13:04:22.000000000 +0200 @@ -15,7 +15,7 @@ //= require bootstrap //= require font-awesome/font-awesome //= require misc/highlight -//= require misc/js.cookie +//= require misc/cookie //= require misc/eventcontrol //= require js-routes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/stylesheets/font-awesome/_path.scss new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/stylesheets/font-awesome/_path.scss --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/stylesheets/font-awesome/_path.scss 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/stylesheets/font-awesome/_path.scss 2016-04-22 13:04:22.000000000 +0200 @@ -3,13 +3,12 @@ @font-face { font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$fa-font-path}fontawesome-webfont.eot'), '#{$fa-font-path}fontawesome-webfont.eot')); + src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$fa-font-path}fontawesome-webfont.eot?#iefix'), '#{$fa-font-path}fontawesome-webfont.eot?#iefix')) format('embedded-opentype'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$fa-font-path}fontawesome-webfont.woff2'), '#{$fa-font-path}fontawesome-webfont.woff2')) format('woff2'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$fa-font-path}fontawesome-webfont.woff'), '#{$fa-font-path}fontawesome-webfont.woff')) format('woff'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$fa-font-path}fontawesome-webfont.ttf'), '#{$fa-font-path}fontawesome-webfont.ttf')) format('truetype'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$fa-font-path}fontawesome-webfont.svg#fontawesomeregular'), '#{$fa-font-path}fontawesome-webfont.svg#fontawesomeregular')) format('svg'); font-weight: normal; font-style: normal; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/stylesheets/font-awesome/_variables.scss new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/stylesheets/font-awesome/_variables.scss --- old/hawk2-2.0.0+git.1459616683.31efac7/hawk/vendor/assets/stylesheets/font-awesome/_variables.scss 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/hawk/vendor/assets/stylesheets/font-awesome/_variables.scss 2016-04-22 13:04:22.000000000 +0200 @@ -1,7 +1,7 @@ // Variables // -------------------------- -$fa-font-path: "/assets/font-awesome" !default; +$fa-font-path: if($bootstrap-sass-asset-helper, "font-awesome/", "../fonts/font-awesome/") !default; $fa-font-size-base: 14px !default; $fa-line-height-base: 1 !default; //$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1459616683.31efac7/tools/hawk_monitor.c new/hawk2-2.0.0+git.1461322965.7f27886/tools/hawk_monitor.c --- old/hawk2-2.0.0+git.1459616683.31efac7/tools/hawk_monitor.c 2016-04-02 22:43:16.000000000 +0200 +++ new/hawk2-2.0.0+git.1461322965.7f27886/tools/hawk_monitor.c 2016-04-22 13:04:22.000000000 +0200 @@ -1,8 +1,9 @@ /* - * Copyright (c) 2010-2013 SUSE LLC, All Rights Reserved. + * Copyright (c) 2010-2016 SUSE LLC, All Rights Reserved. * See COPYING for license. * - * Author: Tim Serong <tser...@suse.com> + * Author: Tim Serong <tser...@suse.com>, + * Kristoffer Gronlund <kgronl...@suse.com> * */ @@ -11,17 +12,17 @@ * Its only purpose is to be polled by the user's web browser, to * indicate whether the state of the cluster has changed since the * status display was last rendered. If something has changed, the - * browser needs to make another proper request (to the Rails app) - * to update the status display accordingly. + * browser needs to make another request to update the status display + * accordingly. * * USAGE: * - * 1) Client invokes with QUERY_STRING == epoch (e.g.: /monitor?0:36:2), + * 1) Rails invokes with environment variable QUERY_STRING set to epoch, * where epoch is either "admin_epoch:epoch:num_updates" from the CIB, * or is an empty string (for unknown, or previously disconnected). * Other parameters ("&..." after the epoch) are ignored. * - * 2) Server connects to CIB, and: + * 2) hawk_monitor connects to CIB, and: * - If client epoch is empty string: * - If CIB connection succeeds, respond immediately with new epoch. * - If connection fails, attept to connect for up to 60 seconds. @@ -47,15 +48,11 @@ * 1) Request https://SERVER:7630/monitor?EPOCH * 2) Wait and see what comes back. If the epoch returned is in any * way different to what you started with, fire off another request - * to update the display (https://SERVER:7630/main/status?format=json) + * to update the display (https://SERVER:7630/cib/live.json) * 3) Remember the new epoch, and go back to step 1. * * SECURITY/PERFORMANCE CONSIDERATIONS: * - * - hawk_monitor runs as a regular CGI application, i.e. the web server forks - * a new process for each request. This overhead is deemed acceptable, as - * this is for a low use monitoring app, not a heavy load public web site. - * * - No authentication is performed, so anyone can get the current epoch from * the CIB. This data should not however constitute any sort of security * risk. @@ -95,14 +92,14 @@ #define T_CIB_DIFF_NOTIFY "cib_diff_notify" #endif -int cib_connect(void); -void mon_cib_connection_destroy(gpointer user_data); -void crm_diff_update(const char *event, xmlNode *msg); -gboolean mon_timer_popped(gpointer data); -void mon_shutdown(int nsig); -void cleanup(void); -void finish(void); -void get_new_epoch(void); +static int cib_connect(void); +static void mon_cib_connection_destroy(gpointer user_data); +static void crm_diff_update(const char *event, xmlNode *msg); +static gboolean mon_timer_popped(gpointer data); +static void mon_shutdown(int nsig); +static void cleanup(void); +static void finish(void); +static void get_new_epoch(void); char *origin = NULL; @@ -144,16 +141,12 @@ void crm_diff_update(const char *event, xmlNode *msg) { - if (mainloop != NULL && g_main_loop_is_running(mainloop)) { - g_main_loop_quit(mainloop); - } + mon_cib_connection_destroy(NULL); } gboolean mon_timer_popped(gpointer data) { - if (mainloop != NULL && g_main_loop_is_running(mainloop)) { - g_main_loop_quit(mainloop); - } + mon_cib_connection_destroy(NULL); return FALSE; }