Skip to content

Commit

Permalink
Merge pull request ManageIQ#16635 from zeari/monitoring_manager_deletion
Browse files Browse the repository at this point in the history
ensure monitoring manager deletion and creation on endpoint update
  • Loading branch information
agrare authored Jan 4, 2018
2 parents bf689eb + 8f771b9 commit 272f1e6
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
11 changes: 11 additions & 0 deletions app/models/endpoint.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ class Endpoint < ApplicationRecord
validates :url, :uniqueness => true, :if => :url
validate :validate_certificate_authority

after_create :endpoint_created
after_destroy :endpoint_destroyed

def endpoint_created
resource.endpoint_created(role) if resource.respond_to?(:endpoint_created)
end

def endpoint_destroyed
resource.endpoint_destroyed(role) if resource.respond_to?(:endpoint_destroyed)
end

def verify_ssl=(val)
val = resolve_verify_ssl_value(val)
super
Expand Down
31 changes: 20 additions & 11 deletions app/models/mixins/has_monitoring_manager_mixin.rb
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
module HasMonitoringManagerMixin
extend ActiveSupport::Concern

private
def endpoint_created(role)
if role == "prometheus_alerts" && monitoring_manager.nil?
monitoring_manager = ensure_monitoring_manager
monitoring_manager.save
end
end

def ensure_monitoring_manager
# monitoring_manager should be defined by child classes.
if try(:monitoring_manager_needed?)
build_monitoring_manager(:parent_manager => self)
monitoring_manager.name = "#{name} Monitoring Manager"
def endpoint_destroyed(role)
if role == "prometheus_alerts" && monitoring_manager.present?
# TODO: if someone deletes the alerts endpoint and then quickly readds it they can end up without a manager.
monitoring_manager.destroy_queue
end
ensure_monitoring_manager_properties
end

def ensure_monitoring_manager_properties
if monitoring_manager
monitoring_manager.zone_id = zone_id
monitoring_manager.provider_region = provider_region
private

def ensure_monitoring_manager
if monitoring_manager.nil?
build_monitoring_manager(:parent_manager => self,
:name => "#{name} Monitoring Manager",
:zone_id => zone_id,
:provider_region => provider_region)
end

monitoring_manager
end
end

0 comments on commit 272f1e6

Please sign in to comment.