foreman_monitoring 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +18 -1
- data/Rakefile +0 -0
- data/app/controllers/api/v2/monitoring_results_controller.rb +2 -1
- data/app/controllers/concerns/foreman_monitoring/hosts_controller_extensions.rb +30 -31
- data/app/helpers/concerns/foreman_monitoring/hosts_helper_ext.rb +12 -15
- data/app/lib/proxy_api/monitoring.rb +4 -4
- data/app/models/concerns/foreman_monitoring/host_extensions.rb +10 -12
- data/app/models/concerns/orchestration/monitoring.rb +23 -16
- data/app/models/host_status/monitoring_status.rb +16 -1
- data/app/models/monitoring_result.rb +1 -1
- data/app/models/setting/monitoring.rb +5 -6
- data/app/overrides/add_host_monitoring_result_tab.rb +2 -4
- data/app/overrides/add_host_multiple_power_set_downtime_checkbox.rb +1 -2
- data/app/overrides/add_host_set_downtime_modal.rb +1 -2
- data/app/services/monitoring.rb +4 -5
- data/app/views/hosts/_downtime_fields.html.erb +2 -2
- data/lib/foreman_monitoring/engine.rb +10 -6
- data/lib/foreman_monitoring/version.rb +1 -1
- data/test/functional/hosts_controller_test.rb +30 -10
- data/test/lib/proxy_api/monitoring_test.rb +2 -2
- data/test/unit/host_test.rb +9 -2
- metadata +7 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6ec30b6e40aad99c7da94b66100590381d300289
         | 
| 4 | 
            +
              data.tar.gz: ef1bb20065f0c5b11544f64babe2ab0c8faa3b6d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 92fc91db5150b641f8a169fce2468695a4a64e84ec02235259385864deb0c1b7309e49853fb297a88f9e37d143371f88d6aa446c37abebc8d8a2172433a725d1
         | 
| 7 | 
            +
              data.tar.gz: 9306c61272155529c75cd7c90b9a115a5d931b11455f0313fa057de42ac565a3a301023cbd95fc8fa744d913e570ea8a8ad3c689f042c45aa5a6d4dc00d944e2
         | 
    
        data/README.md
    CHANGED
    
    | @@ -17,7 +17,16 @@ The gem name is `foreman_monitoring`. | |
| 17 17 |  | 
| 18 18 | 
             
            RPM users can install the `tfm-rubygem-foreman_monitoring` package.
         | 
| 19 19 |  | 
| 20 | 
            -
             | 
| 20 | 
            +
            Deb users can install the `ruby-foreman_monitoring` package.
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            If using the gem as installation source database enhancement and service restart must
         | 
| 23 | 
            +
            be done manually.
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ```
         | 
| 26 | 
            +
            foreman-rake db:migrate
         | 
| 27 | 
            +
            foreman-rake db:seed
         | 
| 28 | 
            +
            touch ~foreman/tmp/restart.txt
         | 
| 29 | 
            +
            ```
         | 
| 21 30 |  | 
| 22 31 | 
             
            # Usage
         | 
| 23 32 |  | 
| @@ -37,6 +46,14 @@ panel. You can configure if the sub-status should affect the global status. | |
| 37 46 | 
             
            Furthermore it allows to individually set a downtime at the host detail view
         | 
| 38 47 | 
             
            or as a bulk action from the host overview.
         | 
| 39 48 |  | 
| 49 | 
            +
            # Troubleshooting
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            Logging entries relevant to the plug-in will be located in the Foreman's log
         | 
| 52 | 
            +
            which is by default `/var/log/foreman/production.log`.
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            Also check the troubleshooting section of the Smart Proxy plug-in if problems
         | 
| 55 | 
            +
            occure in the underlying communication.
         | 
| 56 | 
            +
             | 
| 40 57 | 
             
            ## Contributing
         | 
| 41 58 |  | 
| 42 59 | 
             
            Fork and send a Pull Request. Thanks!
         | 
    
        data/Rakefile
    CHANGED
    
    | 
            File without changes
         | 
| @@ -12,7 +12,8 @@ module Api | |
| 12 12 | 
             
                  param :timestamp, String, :desc => N_('Timestamp of the results')
         | 
| 13 13 | 
             
                  param :acknowledged, [true, false], :desc => N_('Is the result acknowledged?')
         | 
| 14 14 | 
             
                  param :downtime, [true, false], :desc => N_('Is the result in downtime?')
         | 
| 15 | 
            -
                  param :result, [0, 1, 2, 3], | 
| 15 | 
            +
                  param :result, [0, 1, 2, 3],
         | 
| 16 | 
            +
                        :desc => N_('State of the monitoring result (0 -> ok, 1 -> warning, 2 -> critical, 3 -> unknown)')
         | 
| 16 17 |  | 
| 17 18 | 
             
                  def create
         | 
| 18 19 | 
             
                    begin
         | 
| @@ -1,18 +1,17 @@ | |
| 1 1 | 
             
            module ForemanMonitoring
         | 
| 2 2 | 
             
              module HostsControllerExtensions
         | 
| 3 | 
            -
                 | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
                   | 
| 15 | 
            -
                  alias_method_chain :update_multiple_power_state, :monitoring
         | 
| 3 | 
            +
                def self.prepended(base)
         | 
| 4 | 
            +
                  base.class_eval do
         | 
| 5 | 
            +
                    before_action :find_resource_with_monitoring, :only => [:downtime]
         | 
| 6 | 
            +
                    before_action :find_multiple_with_monitoring, :only => %i[select_multiple_downtime update_multiple_downtime
         | 
| 7 | 
            +
                                                                              select_multiple_monitoring_proxy update_multiple_monitoring_proxy]
         | 
| 8 | 
            +
                    before_action :validate_host_downtime_params, :only => [:downtime]
         | 
| 9 | 
            +
                    before_action :validate_hosts_downtime_params, :only => [:update_multiple_downtime]
         | 
| 10 | 
            +
                    before_action :validate_multiple_monitoring_proxy, :only => :update_multiple_monitoring_proxy
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    alias_method :find_resource_with_monitoring, :find_resource
         | 
| 13 | 
            +
                    alias_method :find_multiple_with_monitoring, :find_multiple
         | 
| 14 | 
            +
                  end
         | 
| 16 15 | 
             
                end
         | 
| 17 16 |  | 
| 18 17 | 
             
                def downtime
         | 
| @@ -20,11 +19,10 @@ module ForemanMonitoring | |
| 20 19 | 
             
                    process_error(:redirect => host_path, :error_msg => @host.errors.full_messages.to_sentence)
         | 
| 21 20 | 
             
                    return false
         | 
| 22 21 | 
             
                  end
         | 
| 23 | 
            -
                  process_success :success_msg => _('Created downtime for %s') %  | 
| 22 | 
            +
                  process_success :success_msg => _('Created downtime for %s') % @host, :success_redirect => :back
         | 
| 24 23 | 
             
                end
         | 
| 25 24 |  | 
| 26 | 
            -
                def select_multiple_downtime
         | 
| 27 | 
            -
                end
         | 
| 25 | 
            +
                def select_multiple_downtime; end
         | 
| 28 26 |  | 
| 29 27 | 
             
                def update_multiple_downtime
         | 
| 30 28 | 
             
                  failed_hosts = {}
         | 
| @@ -60,21 +58,21 @@ module ForemanMonitoring | |
| 60 58 | 
             
                  validate_multiple_proxy(select_multiple_monitoring_proxy_hosts_path)
         | 
| 61 59 | 
             
                end
         | 
| 62 60 |  | 
| 63 | 
            -
                def select_multiple_monitoring_proxy
         | 
| 64 | 
            -
                end
         | 
| 61 | 
            +
                def select_multiple_monitoring_proxy; end
         | 
| 65 62 |  | 
| 66 63 | 
             
                def update_multiple_monitoring_proxy
         | 
| 67 64 | 
             
                  update_multiple_proxy(_('Monitoring'), :monitoring_proxy=)
         | 
| 68 65 | 
             
                end
         | 
| 69 66 |  | 
| 70 | 
            -
                def  | 
| 67 | 
            +
                def update_multiple_power_state
         | 
| 71 68 | 
             
                  options = {
         | 
| 72 69 | 
             
                    :comment => 'Power state changed in Foreman',
         | 
| 73 70 | 
             
                    :author => "Foreman User #{User.current}",
         | 
| 74 | 
            -
                    :start_time =>  | 
| 75 | 
            -
                    :end_time =>  | 
| 71 | 
            +
                    :start_time => Time.current.to_i,
         | 
| 72 | 
            +
                    :end_time => Time.current.advance(:minutes => 30).to_i
         | 
| 76 73 | 
             
                  }
         | 
| 77 | 
            -
                   | 
| 74 | 
            +
                  set_downtime = Foreman::Cast.to_bool(params[:power][:set_downtime])
         | 
| 75 | 
            +
                  if set_downtime && User.current.allowed_to?(:controller => :hosts, :action => :select_multiple_downtime)
         | 
| 78 76 | 
             
                    @hosts.each do |host|
         | 
| 79 77 | 
             
                      unless host.monitored?
         | 
| 80 78 | 
             
                        logger.debug "Not setting a downtime for #{host} as it is not monitored."
         | 
| @@ -87,7 +85,7 @@ module ForemanMonitoring | |
| 87 85 | 
             
                      end
         | 
| 88 86 | 
             
                    end
         | 
| 89 87 | 
             
                  end
         | 
| 90 | 
            -
                   | 
| 88 | 
            +
                  super
         | 
| 91 89 | 
             
                end
         | 
| 92 90 |  | 
| 93 91 | 
             
                private
         | 
| @@ -96,8 +94,8 @@ module ForemanMonitoring | |
| 96 94 | 
             
                  {
         | 
| 97 95 | 
             
                    :comment => params[:downtime][:comment],
         | 
| 98 96 | 
             
                    :author => "Foreman User #{User.current}",
         | 
| 99 | 
            -
                    :start_time =>  | 
| 100 | 
            -
                    :end_time =>  | 
| 97 | 
            +
                    :start_time => Time.zone.parse(params[:downtime][:starttime]).to_i,
         | 
| 98 | 
            +
                    :end_time => Time.zone.parse(params[:downtime][:endtime]).to_i
         | 
| 101 99 | 
             
                  }
         | 
| 102 100 | 
             
                end
         | 
| 103 101 |  | 
| @@ -118,20 +116,21 @@ module ForemanMonitoring | |
| 118 116 | 
             
                    process_error(:redirect => redirect_url, :error_msg => 'No start/endtime for downtime!')
         | 
| 119 117 | 
             
                    return false
         | 
| 120 118 | 
             
                  end
         | 
| 121 | 
            -
                   | 
| 122 | 
            -
             | 
| 123 | 
            -
             | 
| 124 | 
            -
                  rescue ArgumentError
         | 
| 119 | 
            +
                  starttime = Time.zone.parse(params[:downtime][:starttime])
         | 
| 120 | 
            +
                  endtime = Time.zone.parse(params[:downtime][:endtime])
         | 
| 121 | 
            +
                  if starttime.nil? || endtime.nil? || starttime >= endtime
         | 
| 125 122 | 
             
                    process_error(:redirect => redirect_url, :error_msg => 'Invalid start/endtime for downtime!')
         | 
| 126 123 | 
             
                    return false
         | 
| 127 124 | 
             
                  end
         | 
| 125 | 
            +
                  true
         | 
| 128 126 | 
             
                end
         | 
| 129 127 |  | 
| 130 128 | 
             
                def action_permission
         | 
| 131 129 | 
             
                  case params[:action]
         | 
| 132 | 
            -
                  when 'downtime', 'select_multiple_downtime', 'update_multiple_downtime' | 
| 133 | 
            -
                    'select_multiple_monitoring_proxy', 'update_multiple_monitoring_proxy'
         | 
| 130 | 
            +
                  when 'downtime', 'select_multiple_downtime', 'update_multiple_downtime'
         | 
| 134 131 | 
             
                    :downtime
         | 
| 132 | 
            +
                  when 'select_multiple_monitoring_proxy', 'update_multiple_monitoring_proxy'
         | 
| 133 | 
            +
                    :edit
         | 
| 135 134 | 
             
                  else
         | 
| 136 135 | 
             
                    super
         | 
| 137 136 | 
             
                  end
         | 
| @@ -1,18 +1,17 @@ | |
| 1 1 | 
             
            module ForemanMonitoring
         | 
| 2 2 | 
             
              module HostsHelperExt
         | 
| 3 | 
            -
                 | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
                   | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                   | 
| 12 | 
            -
                  multiple_actions_without_monitoring + [[_('Set downtime'), select_multiple_downtime_hosts_path], [_('Change Monitoring Proxy'), select_multiple_monitoring_proxy_hosts_path]]
         | 
| 3 | 
            +
                def multiple_actions
         | 
| 4 | 
            +
                  actions = super
         | 
| 5 | 
            +
                  if authorized_for(:controller => :hosts, :action => :select_multiple_downtime)
         | 
| 6 | 
            +
                    actions << [_('Set downtime'), select_multiple_downtime_hosts_path]
         | 
| 7 | 
            +
                  end
         | 
| 8 | 
            +
                  if authorized_for(:controller => :hosts, :action => :select_multiple_monitoring_proxy)
         | 
| 9 | 
            +
                    actions << [_('Change Monitoring Proxy'), select_multiple_monitoring_proxy_hosts_path]
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  actions
         | 
| 13 12 | 
             
                end
         | 
| 14 13 |  | 
| 15 | 
            -
                def  | 
| 14 | 
            +
                def host_title_actions(host)
         | 
| 16 15 | 
             
                  title_actions(
         | 
| 17 16 | 
             
                    button_group(
         | 
| 18 17 | 
             
                      display_link_if_authorized(_('Downtime'),
         | 
| @@ -24,12 +23,10 @@ module ForemanMonitoring | |
| 24 23 | 
             
                                                 :title    => _('Set a downtime for this host'),
         | 
| 25 24 | 
             
                                                 :id       => 'host-downtime',
         | 
| 26 25 | 
             
                                                 :data     => { :toggle => 'modal',
         | 
| 27 | 
            -
                                                                :target => '#set_host_downtime'
         | 
| 28 | 
            -
                                                              }
         | 
| 29 | 
            -
                                                )
         | 
| 26 | 
            +
                                                                :target => '#set_host_downtime' })
         | 
| 30 27 | 
             
                    )
         | 
| 31 28 | 
             
                  )
         | 
| 32 | 
            -
                   | 
| 29 | 
            +
                  super
         | 
| 33 30 | 
             
                end
         | 
| 34 31 |  | 
| 35 32 | 
             
                def host_monitoring_result_icon_class(result)
         | 
| @@ -18,19 +18,19 @@ module ProxyAPI | |
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                def create_host(host, attributes = {})
         | 
| 21 | 
            -
                  parse(put({:attributes => attributes}, "host/#{host}"))
         | 
| 21 | 
            +
                  parse(put({ :attributes => attributes }, "host/#{host}"))
         | 
| 22 22 | 
             
                rescue => e
         | 
| 23 23 | 
             
                  raise ProxyException.new(url, e, N_('Unable to create monitoring host object for %s') % host)
         | 
| 24 24 | 
             
                end
         | 
| 25 25 |  | 
| 26 26 | 
             
                def update_host(host, attributes = {})
         | 
| 27 | 
            -
                  parse(post({:attributes => attributes}, "host/#{host}"))
         | 
| 27 | 
            +
                  parse(post({ :attributes => attributes }, "host/#{host}"))
         | 
| 28 28 | 
             
                rescue => e
         | 
| 29 29 | 
             
                  raise ProxyException.new(url, e, N_('Unable to update monitoring host object for %s') % host)
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                def delete_host(host)
         | 
| 33 | 
            -
                  raise Foreman::Exception | 
| 33 | 
            +
                  raise Foreman::Exception, 'Missing hostname.' if host.blank?
         | 
| 34 34 | 
             
                  parse(delete("host/#{host}"))
         | 
| 35 35 | 
             
                rescue RestClient::ResourceNotFound
         | 
| 36 36 | 
             
                  true
         | 
| @@ -43,7 +43,7 @@ module ProxyAPI | |
| 43 43 | 
             
                rescue RestClient::ResourceNotFound
         | 
| 44 44 | 
             
                  nil
         | 
| 45 45 | 
             
                rescue => e
         | 
| 46 | 
            -
                  raise ProxyException.new(url, e, N_('Unable to query monitoring host object for % | 
| 46 | 
            +
                  raise ProxyException.new(url, e, N_('Unable to query monitoring host object for %{host}: %{message}') % { :host => host, :message => e.try(:response) || e.try(:message) })
         | 
| 47 47 | 
             
                end
         | 
| 48 48 | 
             
              end
         | 
| 49 49 | 
             
            end
         | 
| @@ -1,15 +1,13 @@ | |
| 1 1 | 
             
            module ForemanMonitoring
         | 
| 2 2 | 
             
              module HostExtensions
         | 
| 3 | 
            -
                 | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 3 | 
            +
                def self.prepended(base)
         | 
| 4 | 
            +
                  base.class_eval do
         | 
| 5 | 
            +
                    include Orchestration::Monitoring
         | 
| 6 6 |  | 
| 7 | 
            -
             | 
| 7 | 
            +
                    after_build :downtime_host_build
         | 
| 8 8 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
                   | 
| 11 | 
            -
             | 
| 12 | 
            -
                  has_many :monitoring_results, :dependent => :destroy, :foreign_key => 'host_id'
         | 
| 9 | 
            +
                    has_many :monitoring_results, :dependent => :destroy, :foreign_key => 'host_id'
         | 
| 10 | 
            +
                  end
         | 
| 13 11 | 
             
                end
         | 
| 14 12 |  | 
| 15 13 | 
             
                def monitoring_status(options = {})
         | 
| @@ -42,12 +40,12 @@ module ForemanMonitoring | |
| 42 40 | 
             
                  monitoring_proxy.present?
         | 
| 43 41 | 
             
                end
         | 
| 44 42 |  | 
| 45 | 
            -
                def  | 
| 46 | 
            -
                   | 
| 43 | 
            +
                def hostgroup_inherited_attributes
         | 
| 44 | 
            +
                  super + ['monitoring_proxy_id']
         | 
| 47 45 | 
             
                end
         | 
| 48 46 |  | 
| 49 | 
            -
                def  | 
| 50 | 
            -
                  ids =  | 
| 47 | 
            +
                def smart_proxy_ids
         | 
| 48 | 
            +
                  ids = super
         | 
| 51 49 | 
             
                  [monitoring_proxy, hostgroup.try(:monitoring_proxy)].compact.each do |proxy|
         | 
| 52 50 | 
             
                    ids << proxy.id
         | 
| 53 51 | 
             
                  end
         | 
| @@ -11,48 +11,55 @@ module Orchestration::Monitoring | |
| 11 11 | 
             
              def queue_monitoring
         | 
| 12 12 | 
             
                return unless monitored? && errors.empty?
         | 
| 13 13 | 
             
                clear_monitoring_object
         | 
| 14 | 
            -
                !monitoring_object. | 
| 14 | 
            +
                !monitoring_object.key?(:attrs) ? queue_monitoring_create : queue_monitoring_update
         | 
| 15 15 | 
             
              end
         | 
| 16 16 |  | 
| 17 17 | 
             
              def queue_monitoring_create
         | 
| 18 | 
            -
                 | 
| 19 | 
            -
             | 
| 18 | 
            +
                return true unless ::Monitoring.create_action?(:create)
         | 
| 19 | 
            +
                queue.create(:name   => _('Create monitoring object for %s') % self, :priority => 20,
         | 
| 20 | 
            +
                             :action => [self, :setMonitoring])
         | 
| 20 21 | 
             
              end
         | 
| 21 22 |  | 
| 22 23 | 
             
              def queue_monitoring_update
         | 
| 23 24 | 
             
                return unless monitoring_update_required?(monitoring_object[:attrs], monitoring_attributes)
         | 
| 24 | 
            -
                Rails.logger.debug( | 
| 25 | 
            -
                 | 
| 26 | 
            -
             | 
| 25 | 
            +
                Rails.logger.debug('Detected a change to the monitoring object is required.')
         | 
| 26 | 
            +
                if ::Monitoring.create_action?(:create)
         | 
| 27 | 
            +
                  queue.create(:name   => _('Monitoring update for %s') % old, :priority => 2,
         | 
| 28 | 
            +
                               :action => [self, :setMonitoringUpdate])
         | 
| 29 | 
            +
                end
         | 
| 27 30 | 
             
              end
         | 
| 28 31 |  | 
| 29 32 | 
             
              def queue_monitoring_destroy
         | 
| 30 33 | 
             
                return unless monitored? && errors.empty?
         | 
| 31 | 
            -
                 | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 34 | 
            +
                if ::Monitoring.delete_action?(:delete)
         | 
| 35 | 
            +
                  queue.create(:name   => _('Removing monitoring object for %s') % self, :priority => 2,
         | 
| 36 | 
            +
                               :action => [self, :delMonitoring])
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
                if ::Monitoring.delete_action?(:downtime)
         | 
| 39 | 
            +
                  queue.create(:name   => _('Set monitoring downtime for %s') % self, :priority => 2,
         | 
| 40 | 
            +
                               :action => [self, :setMonitoringDowntime])
         | 
| 41 | 
            +
                end
         | 
| 35 42 | 
             
              end
         | 
| 36 43 |  | 
| 37 44 | 
             
              def setMonitoring
         | 
| 38 45 | 
             
                Rails.logger.info "Adding Monitoring object for #{name}"
         | 
| 39 46 | 
             
                monitoring.create_host(self)
         | 
| 40 47 | 
             
              rescue => e
         | 
| 41 | 
            -
                failure _("Failed to create a monitoring object %{name}: %{message}\n ")  | 
| 48 | 
            +
                failure format(_("Failed to create a monitoring object %{name}: %{message}\n "), :name => name, :message => e.message), e
         | 
| 42 49 | 
             
              end
         | 
| 43 50 |  | 
| 44 51 | 
             
              def delMonitoring
         | 
| 45 52 | 
             
                Rails.logger.info "Deleting Monitoring object for #{name}"
         | 
| 46 53 | 
             
                monitoring.delete_host(self)
         | 
| 47 54 | 
             
              rescue => e
         | 
| 48 | 
            -
                failure _("Failed to delete a monitoring object %{name}: %{message}\n ")  | 
| 55 | 
            +
                failure format(_("Failed to delete a monitoring object %{name}: %{message}\n "), :name => name, :message => e.message), e
         | 
| 49 56 | 
             
              end
         | 
| 50 57 |  | 
| 51 58 | 
             
              def setMonitoringUpdate
         | 
| 52 59 | 
             
                Rails.logger.info "Updating Monitoring object for #{name}"
         | 
| 53 60 | 
             
                monitoring.update_host(self)
         | 
| 54 61 | 
             
              rescue => e
         | 
| 55 | 
            -
                failure _("Failed to update a monitoring object %{name}: %{message}\n ")  | 
| 62 | 
            +
                failure format(_("Failed to update a monitoring object %{name}: %{message}\n "), :name => name, :message => e.message), e
         | 
| 56 63 | 
             
              end
         | 
| 57 64 |  | 
| 58 65 | 
             
              def delMonitoringUpdate; end
         | 
| @@ -61,14 +68,14 @@ module Orchestration::Monitoring | |
| 61 68 | 
             
                Rails.logger.info "Setting Monitoring downtime for #{name}"
         | 
| 62 69 | 
             
                monitoring.set_downtime_host(self, monitoring_downtime_defaults)
         | 
| 63 70 | 
             
              rescue => e
         | 
| 64 | 
            -
                failure _("Failed to set a monitoring downtime for %{name}: %{message}\n ")  | 
| 71 | 
            +
                failure format(_("Failed to set a monitoring downtime for %{name}: %{message}\n "), :name => name, :message => e.message), e
         | 
| 65 72 | 
             
              end
         | 
| 66 73 |  | 
| 67 74 | 
             
              def delMonitoringDowntime
         | 
| 68 75 | 
             
                Rails.logger.info "Deleting Monitoring downtime for #{name}"
         | 
| 69 76 | 
             
                monitoring.del_downtime_host(self, monitoring_downtime_defaults)
         | 
| 70 77 | 
             
              rescue => e
         | 
| 71 | 
            -
                failure _("Failed to set a monitoring downtime for %{name}: %{message}\n ")  | 
| 78 | 
            +
                failure format(_("Failed to set a monitoring downtime for %{name}: %{message}\n "), :name => name, :message => e.message), e
         | 
| 72 79 | 
             
              end
         | 
| 73 80 |  | 
| 74 81 | 
             
              def monitoring_object
         | 
| @@ -99,7 +106,7 @@ module Orchestration::Monitoring | |
| 99 106 | 
             
                  end
         | 
| 100 107 | 
             
                  desired_v
         | 
| 101 108 | 
             
                end
         | 
| 102 | 
            -
                Rails.logger.debug  | 
| 109 | 
            +
                Rails.logger.debug 'No monitoring update required.'
         | 
| 103 110 | 
             
                false
         | 
| 104 111 | 
             
              end
         | 
| 105 112 | 
             
            end
         | 
| @@ -14,6 +14,7 @@ module HostStatus | |
| 14 14 | 
             
                  grouped_results.each do |resultset, _count|
         | 
| 15 15 | 
             
                    result, downtime, acknowledged = resultset
         | 
| 16 16 | 
             
                    next if downtime
         | 
| 17 | 
            +
                    result = map_result_to_status(result)
         | 
| 17 18 | 
             
                    result = WARNING if acknowledged || result == UNKNOWN
         | 
| 18 19 | 
             
                    state = result if result > state
         | 
| 19 20 | 
             
                  end
         | 
| @@ -70,7 +71,21 @@ module HostStatus | |
| 70 71 | 
             
                private
         | 
| 71 72 |  | 
| 72 73 | 
             
                def grouped_results
         | 
| 73 | 
            -
                  host.monitoring_results.group([ | 
| 74 | 
            +
                  host.monitoring_results.group(%i[result downtime acknowledged]).count
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                def map_result_to_status(result)
         | 
| 78 | 
            +
                  return result if Rails::VERSION::MAJOR < 5
         | 
| 79 | 
            +
                  case result.to_sym
         | 
| 80 | 
            +
                  when :ok
         | 
| 81 | 
            +
                    OK
         | 
| 82 | 
            +
                  when :warning
         | 
| 83 | 
            +
                    WARNING
         | 
| 84 | 
            +
                  when :critical
         | 
| 85 | 
            +
                    CRITICAL
         | 
| 86 | 
            +
                  else
         | 
| 87 | 
            +
                    UNKNOWN
         | 
| 88 | 
            +
                  end
         | 
| 74 89 | 
             
                end
         | 
| 75 90 | 
             
              end
         | 
| 76 91 | 
             
            end
         | 
| @@ -1,17 +1,16 @@ | |
| 1 1 | 
             
            class Setting
         | 
| 2 2 | 
             
              class Monitoring < ::Setting
         | 
| 3 | 
            -
             | 
| 4 3 | 
             
                def self.default_settings
         | 
| 5 4 | 
             
                  [
         | 
| 6 5 | 
             
                    set('monitoring_affect_global_status',
         | 
| 7 6 | 
             
                        _("Monitoring status will affect a host's global status when enabled"),
         | 
| 8 7 | 
             
                        true, N_('Monitoring status should affect global status')),
         | 
| 9 8 | 
             
                    set('monitoring_create_action',
         | 
| 10 | 
            -
                        _( | 
| 11 | 
            -
                        'create', N_('Host Create Action'), nil, {:collection =>  | 
| 9 | 
            +
                        _('What action should be taken when a host is created'),
         | 
| 10 | 
            +
                        'create', N_('Host Create Action'), nil, { :collection => proc { ::Monitoring::CREATE_ACTIONS } }),
         | 
| 12 11 | 
             
                    set('monitoring_delete_action',
         | 
| 13 | 
            -
                        _( | 
| 14 | 
            -
                        'delete', N_('Host Delete Action'), nil, {:collection =>  | 
| 12 | 
            +
                        _('What action should be taken when a host is deleted'),
         | 
| 13 | 
            +
                        'delete', N_('Host Delete Action'), nil, { :collection => proc { ::Monitoring::DELETE_ACTIONS } })
         | 
| 15 14 | 
             
                  ]
         | 
| 16 15 | 
             
                end
         | 
| 17 16 |  | 
| @@ -20,7 +19,7 @@ class Setting | |
| 20 19 | 
             
                  return unless super
         | 
| 21 20 |  | 
| 22 21 | 
             
                  self.transaction do
         | 
| 23 | 
            -
                    default_settings.each { |s| self.create! s.update(:category =>  | 
| 22 | 
            +
                    default_settings.each { |s| self.create! s.update(:category => 'Setting::Monitoring') }
         | 
| 24 23 | 
             
                  end
         | 
| 25 24 |  | 
| 26 25 | 
             
                  true
         | 
| @@ -1,11 +1,9 @@ | |
| 1 1 | 
             
            Deface::Override.new(:virtual_path  => 'hosts/show',
         | 
| 2 2 | 
             
                                 :name          => 'add_monitoring_result_tab',
         | 
| 3 3 | 
             
                                 :insert_bottom => 'ul.nav-tabs',
         | 
| 4 | 
            -
                                 :partial       => 'monitoring_results/host_tab'
         | 
| 5 | 
            -
                                )
         | 
| 4 | 
            +
                                 :partial       => 'monitoring_results/host_tab')
         | 
| 6 5 |  | 
| 7 6 | 
             
            Deface::Override.new(:virtual_path  => 'hosts/show',
         | 
| 8 7 | 
             
                                 :name          => 'add_monitoring_result_tab_pane',
         | 
| 9 8 | 
             
                                 :insert_bottom => 'div.tab-content',
         | 
| 10 | 
            -
                                 :partial       => 'monitoring_results/host_tab_pane'
         | 
| 11 | 
            -
                                )
         | 
| 9 | 
            +
                                 :partial       => 'monitoring_results/host_tab_pane')
         | 
| @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            Deface::Override.new(:virtual_path  => 'hosts/select_multiple_power_state',
         | 
| 2 2 | 
             
                                 :name          => 'add_host_multiple_power_set_downtime_checkbox',
         | 
| 3 3 | 
             
                                 :insert_before => "erb[silent]:contains('end')",
         | 
| 4 | 
            -
                                 :partial       => 'hosts/host_downtime_checkbox'
         | 
| 5 | 
            -
                                )
         | 
| 4 | 
            +
                                 :partial       => 'hosts/host_downtime_checkbox')
         | 
    
        data/app/services/monitoring.rb
    CHANGED
    
    | @@ -27,23 +27,22 @@ class Monitoring | |
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 29 | 
             
              def set_downtime_host(host, options = {})
         | 
| 30 | 
            -
                proxy_api.create_host_downtime(host. | 
| 30 | 
            +
                proxy_api.create_host_downtime(host.name, default_downtime_options.merge(options))
         | 
| 31 31 | 
             
              end
         | 
| 32 32 |  | 
| 33 33 | 
             
              def del_downtime_host(host, options = {})
         | 
| 34 | 
            -
                proxy_api.remove_host_downtime(host. | 
| 34 | 
            +
                proxy_api.remove_host_downtime(host.name, default_downtime_options.merge(options))
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 37 | 
             
              def create_host(host)
         | 
| 38 | 
            -
                proxy_api.create_host(host. | 
| 38 | 
            +
                proxy_api.create_host(host.name, host.monitoring_attributes)
         | 
| 39 39 | 
             
              end
         | 
| 40 40 |  | 
| 41 41 | 
             
              def update_host(host)
         | 
| 42 | 
            -
                proxy_api.update_host(host. | 
| 42 | 
            +
                proxy_api.update_host(host.name, host.monitoring_attributes)
         | 
| 43 43 | 
             
              end
         | 
| 44 44 |  | 
| 45 45 | 
             
              def delete_host(host)
         | 
| 46 | 
            -
                # We cannot use host.fqdn here as that is delegated to primary interface that does not exist anymore
         | 
| 47 46 | 
             
                proxy_api.delete_host(host.name)
         | 
| 48 47 | 
             
              end
         | 
| 49 48 |  | 
| @@ -1,3 +1,3 @@ | |
| 1 1 | 
             
            <%= text_f f, :comment, :size => "col-md-5", :label => _('Comment'), :help_inline => _('Short description that explains why the downtime was set.'), :required => true %>
         | 
| 2 | 
            -
            <%= datetime_f f, :starttime, :size => "col-md-5", :label => _('Starttime'), :help_inline => _('Time when the downtime should start.'), :value =>  | 
| 3 | 
            -
            <%= datetime_f f, :endtime, :size => "col-md-5", :label => _('Endtime'), :help_inline => _('Time when the downtime should end.'), :value =>  | 
| 2 | 
            +
            <%= datetime_f f, :starttime, :size => "col-md-5", :label => _('Starttime'), :help_inline => _('Time when the downtime should start.'), :value => Time.current.strftime("%Y-%m-%dT%H:%M"), :required => true %>
         | 
| 3 | 
            +
            <%= datetime_f f, :endtime, :size => "col-md-5", :label => _('Endtime'), :help_inline => _('Time when the downtime should end.'), :value => Time.current.advance(:hours => 2).strftime("%Y-%m-%dT%H:%M"), :required => true %>
         | 
| @@ -7,7 +7,6 @@ module ForemanMonitoring | |
| 7 7 | 
             
                config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
         | 
| 8 8 | 
             
                config.autoload_paths += Dir["#{config.root}/app/helpers/concerns"]
         | 
| 9 9 | 
             
                config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
         | 
| 10 | 
            -
                config.autoload_paths += Dir["#{config.root}/app/overrides"]
         | 
| 11 10 | 
             
                config.autoload_paths += Dir["#{config.root}/app/services"]
         | 
| 12 11 |  | 
| 13 12 | 
             
                # Add any db migrations
         | 
| @@ -43,10 +42,13 @@ module ForemanMonitoring | |
| 43 42 | 
             
                        :resource_type => 'Host'
         | 
| 44 43 | 
             
                      permission :upload_monitoring_results,
         | 
| 45 44 | 
             
                        :'api/v2/monitoring_results' => [:create]
         | 
| 45 | 
            +
                      permission :edit_hosts,
         | 
| 46 | 
            +
                        { :hosts => [:select_multiple_monitoring_proxy, :update_multiple_monitoring_proxy] },
         | 
| 47 | 
            +
                        :resource_type => 'Host'
         | 
| 46 48 | 
             
                    end
         | 
| 47 49 |  | 
| 48 50 | 
             
                    role 'Monitoring viewer', [:view_monitoring_results]
         | 
| 49 | 
            -
                    role 'Monitoring manager', [:view_monitoring_results, :manage_host_downtimes | 
| 51 | 
            +
                    role 'Monitoring manager', [:view_monitoring_results, :manage_host_downtimes]
         | 
| 50 52 |  | 
| 51 53 | 
             
                    register_custom_status HostStatus::MonitoringStatus
         | 
| 52 54 |  | 
| @@ -62,15 +64,17 @@ module ForemanMonitoring | |
| 62 64 | 
             
                    # add monitoring smart proxy to hosts and hostgroups
         | 
| 63 65 | 
             
                    smart_proxy_for Host::Managed, :monitoring_proxy, monitoring_proxy_options
         | 
| 64 66 | 
             
                    smart_proxy_for Hostgroup, :monitoring_proxy, monitoring_proxy_options
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                    add_controller_action_scope(HostsController, :index) { |base_scope| base_scope.includes(:monitoring_proxy) }
         | 
| 65 69 | 
             
                  end
         | 
| 66 70 | 
             
                end
         | 
| 67 71 |  | 
| 68 72 | 
             
                config.to_prepare do
         | 
| 69 73 | 
             
                  begin
         | 
| 70 | 
            -
                    ::Host::Managed.send | 
| 71 | 
            -
                    ::Hostgroup.send | 
| 72 | 
            -
                    ::HostsHelper.send(: | 
| 73 | 
            -
                    ::HostsController.send | 
| 74 | 
            +
                    ::Host::Managed.send(:prepend, ForemanMonitoring::HostExtensions)
         | 
| 75 | 
            +
                    ::Hostgroup.send(:include, ForemanMonitoring::HostgroupExtensions)
         | 
| 76 | 
            +
                    ::HostsHelper.send(:prepend, ForemanMonitoring::HostsHelperExt)
         | 
| 77 | 
            +
                    ::HostsController.send(:prepend, ForemanMonitoring::HostsControllerExtensions)
         | 
| 74 78 | 
             
                  rescue => e
         | 
| 75 79 | 
             
                    Rails.logger.warn "ForemanMonitoring: skipping engine hook (#{e})"
         | 
| 76 80 | 
             
                  end
         | 
| @@ -5,6 +5,9 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 5 5 | 
             
              setup do
         | 
| 6 6 | 
             
                User.current = users(:admin)
         | 
| 7 7 | 
             
                disable_monitoring_orchestration
         | 
| 8 | 
            +
                ProxyAPI::Monitoring.stubs(:create_host).returns(true)
         | 
| 9 | 
            +
                ProxyAPI::Monitoring.stubs(:update_host).returns(true)
         | 
| 10 | 
            +
                ProxyAPI::Monitoring.stubs(:delete_host).returns(true)
         | 
| 8 11 | 
             
                @host = FactoryGirl.create(:host, :managed)
         | 
| 9 12 | 
             
              end
         | 
| 10 13 |  | 
| @@ -19,8 +22,8 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 19 22 | 
             
                    :id => @host.name,
         | 
| 20 23 | 
             
                    :downtime => {
         | 
| 21 24 | 
             
                      :comment => 'Maintenance work.',
         | 
| 22 | 
            -
                      :starttime =>  | 
| 23 | 
            -
                      :endtime =>  | 
| 25 | 
            +
                      :starttime => Time.current,
         | 
| 26 | 
            +
                      :endtime => Time.current.advance(:hours => 2)
         | 
| 24 27 | 
             
                    }
         | 
| 25 28 | 
             
                  }, set_session_user
         | 
| 26 29 | 
             
                  assert_response :found
         | 
| @@ -52,13 +55,27 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 52 55 | 
             
                    :downtime => {
         | 
| 53 56 | 
             
                      :comment => 'Maintenance work.',
         | 
| 54 57 | 
             
                      :starttime => 'invalid',
         | 
| 55 | 
            -
                      :endtime => 'invalid' | 
| 58 | 
            +
                      :endtime => 'invalid'
         | 
| 59 | 
            +
                    }
         | 
| 56 60 | 
             
                  }, set_session_user
         | 
| 57 61 | 
             
                  assert_response :found
         | 
| 58 62 | 
             
                  assert_redirected_to host_path(:id => @host)
         | 
| 59 63 | 
             
                  assert_not_nil flash[:error]
         | 
| 60 64 | 
             
                  assert_equal 'Invalid start/endtime for downtime!', flash[:error]
         | 
| 61 65 | 
             
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                test 'should parse the times in the correct time zone' do
         | 
| 68 | 
            +
                  User.current.update_attribute(:timezone, 'Berlin')
         | 
| 69 | 
            +
                  Host::Managed.any_instance.expects(:downtime_host).with(has_entries(:start_time => 1_492_676_100, :end_time => 1_492_683_300))
         | 
| 70 | 
            +
                  put :downtime, {
         | 
| 71 | 
            +
                    :id => @host.name,
         | 
| 72 | 
            +
                    :downtime => {
         | 
| 73 | 
            +
                      :comment => 'Maintenance work.',
         | 
| 74 | 
            +
                      :starttime => '2017-04-20T10:15',
         | 
| 75 | 
            +
                      :endtime => '2017-04-20T12:15'
         | 
| 76 | 
            +
                    }
         | 
| 77 | 
            +
                  }, set_session_user
         | 
| 78 | 
            +
                end
         | 
| 62 79 | 
             
              end
         | 
| 63 80 |  | 
| 64 81 | 
             
              describe 'setting a downtime on multiple hosts' do
         | 
| @@ -69,9 +86,10 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 69 86 |  | 
| 70 87 | 
             
                test 'show a host selection' do
         | 
| 71 88 | 
             
                  host_ids = @hosts.map(&:id)
         | 
| 72 | 
            -
                  xhr :post, :select_multiple_downtime, {:host_ids => host_ids}, set_session_user
         | 
| 89 | 
            +
                  xhr :post, :select_multiple_downtime, { :host_ids => host_ids }, set_session_user
         | 
| 73 90 | 
             
                  assert_response :success
         | 
| 74 | 
            -
                   | 
| 91 | 
            +
                  assert_includes response.body, @hosts.first.name
         | 
| 92 | 
            +
                  assert_includes response.body, @hosts.last.name
         | 
| 75 93 | 
             
                end
         | 
| 76 94 |  | 
| 77 95 | 
             
                test 'should set a downtime' do
         | 
| @@ -80,8 +98,8 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 80 98 | 
             
                    :host_ids => @hosts.map(&:id),
         | 
| 81 99 | 
             
                    :downtime => {
         | 
| 82 100 | 
             
                      :comment => 'Maintenance work.',
         | 
| 83 | 
            -
                      :starttime =>  | 
| 84 | 
            -
                      :endtime =>  | 
| 101 | 
            +
                      :starttime => Time.current,
         | 
| 102 | 
            +
                      :endtime => Time.current.advance(:hours => 2)
         | 
| 85 103 | 
             
                    }
         | 
| 86 104 | 
             
                  }
         | 
| 87 105 |  | 
| @@ -157,9 +175,11 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 157 175 |  | 
| 158 176 | 
             
                test 'show a host selection' do
         | 
| 159 177 | 
             
                  host_ids = hosts.map(&:id)
         | 
| 160 | 
            -
                  xhr :post, :select_multiple_monitoring_proxy, {:host_ids => host_ids}, set_session_user
         | 
| 178 | 
            +
                  xhr :post, :select_multiple_monitoring_proxy, { :host_ids => host_ids }, set_session_user
         | 
| 161 179 | 
             
                  assert_response :success
         | 
| 162 | 
            -
                   | 
| 180 | 
            +
                  hosts.each do |host|
         | 
| 181 | 
            +
                    assert response.body =~ /#{host.name}/m
         | 
| 182 | 
            +
                  end
         | 
| 163 183 | 
             
                end
         | 
| 164 184 |  | 
| 165 185 | 
             
                test 'should change the proxy' do
         | 
| @@ -178,7 +198,7 @@ class HostsControllerExtensionsTest < ActionController::TestCase | |
| 178 198 | 
             
                  assert_response :found
         | 
| 179 199 | 
             
                  assert_redirected_to hosts_path
         | 
| 180 200 | 
             
                  assert_nil flash[:error]
         | 
| 181 | 
            -
                  assert_equal "The Monitoring proxy of the selected hosts was set to #{monitoring_proxy.name} | 
| 201 | 
            +
                  assert_equal "The Monitoring proxy of the selected hosts was set to #{monitoring_proxy.name}", flash[:notice]
         | 
| 182 202 |  | 
| 183 203 | 
             
                  hosts.each do |host|
         | 
| 184 204 | 
             
                    as_admin do
         | 
| @@ -27,13 +27,13 @@ class ProxyApiDhcpTest < ActiveSupport::TestCase | |
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 29 | 
             
              test 'create_host should do put' do
         | 
| 30 | 
            -
                @monitoring.expects(:put).with({:attributes => {:ip => '1.1.1.1'}}, 'host/example.com').
         | 
| 30 | 
            +
                @monitoring.expects(:put).with({ :attributes => { :ip => '1.1.1.1' } }, 'host/example.com').
         | 
| 31 31 | 
             
                  returns(fake_rest_client_response({ 'result' => {} }))
         | 
| 32 32 | 
             
                assert_equal({ 'result' => {} }, @monitoring.create_host('example.com', :ip => '1.1.1.1'))
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 35 | 
             
              test 'update_host should do post' do
         | 
| 36 | 
            -
                @monitoring.expects(:post).with({:attributes => {:ip => '1.1.1.1'}}, 'host/example.com').
         | 
| 36 | 
            +
                @monitoring.expects(:post).with({ :attributes => { :ip => '1.1.1.1' } }, 'host/example.com').
         | 
| 37 37 | 
             
                  returns(fake_rest_client_response({ 'result' => {} }))
         | 
| 38 38 | 
             
                assert_equal({ 'result' => {} }, @monitoring.update_host('example.com', :ip => '1.1.1.1'))
         | 
| 39 39 | 
             
              end
         | 
    
        data/test/unit/host_test.rb
    CHANGED
    
    | @@ -41,7 +41,7 @@ class HostTest < ActiveSupport::TestCase | |
| 41 41 | 
             
                  test 'should queue monitoring update' do
         | 
| 42 42 | 
             
                    fake_host_query_result = {
         | 
| 43 43 | 
             
                      'ip' => '1.1.1.1',
         | 
| 44 | 
            -
                      'ip6' => '2001:db8::1' | 
| 44 | 
            +
                      'ip6' => '2001:db8::1'
         | 
| 45 45 | 
             
                    }
         | 
| 46 46 | 
             
                    ProxyAPI::Monitoring.any_instance.stubs(:query_host).returns(fake_host_query_result)
         | 
| 47 47 | 
             
                    host.save
         | 
| @@ -79,7 +79,6 @@ class HostTest < ActiveSupport::TestCase | |
| 79 79 | 
             
                    Setting[:monitoring_delete_action] = 'downtime'
         | 
| 80 80 | 
             
                  end
         | 
| 81 81 |  | 
| 82 | 
            -
             | 
| 83 82 | 
             
                  test 'should not queue monitoring create actions' do
         | 
| 84 83 | 
             
                    assert_valid host
         | 
| 85 84 | 
             
                    tasks = host.queue.all.map(&:name)
         | 
| @@ -94,6 +93,14 @@ class HostTest < ActiveSupport::TestCase | |
| 94 93 | 
             
                    assert_includes tasks, "Set monitoring downtime for #{host}"
         | 
| 95 94 | 
             
                    assert_equal 1, tasks.size
         | 
| 96 95 | 
             
                  end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                  test 'should set downtime on delete with correct hostname' do
         | 
| 98 | 
            +
                    assert host.save
         | 
| 99 | 
            +
                    host.queue.clear
         | 
| 100 | 
            +
                    host.stubs(:skip_orchestration?).returns(false) # Enable orchestration
         | 
| 101 | 
            +
                    ProxyAPI::Monitoring.any_instance.expects(:create_host_downtime).with(host.name, anything).returns(true).once
         | 
| 102 | 
            +
                    assert host.destroy
         | 
| 103 | 
            +
                  end
         | 
| 97 104 | 
             
                end
         | 
| 98 105 |  | 
| 99 106 | 
             
                test 'setMonitoring' do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,29 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: foreman_monitoring
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Timo Goebel
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-10-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rubocop
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - -  | 
| 17 | 
            +
                - - '='
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 19 | 
            +
                    version: 0.49.1
         | 
| 20 20 | 
             
              type: :development
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - -  | 
| 24 | 
            +
                - - '='
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 0.49.1
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: rdoc
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 125 125 | 
             
                  version: '0'
         | 
| 126 126 | 
             
            requirements: []
         | 
| 127 127 | 
             
            rubyforge_project: 
         | 
| 128 | 
            -
            rubygems_version: 2.6. | 
| 128 | 
            +
            rubygems_version: 2.6.12
         | 
| 129 129 | 
             
            signing_key: 
         | 
| 130 130 | 
             
            specification_version: 4
         | 
| 131 131 | 
             
            summary: Foreman plugin for monitoring system integration.
         |