Class: SQSPoller::Handler::Puppetsdb
- Inherits:
-
Object
- Object
- SQSPoller::Handler::Puppetsdb
- Defined in:
- lib/sqspoller/handlers/puppetsdb.rb
Instance Method Summary collapse
- #add_node_from_ref(ref_node, dest_node, as_name) ⇒ Object
- #del_node(node, as_name) ⇒ Object
- #process(queue_name, msg, conf) ⇒ Object
Instance Method Details
#add_node_from_ref(ref_node, dest_node, as_name) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/sqspoller/handlers/puppetsdb.rb', line 63 def add_node_from_ref(ref_node, dest_node, as_name) yaml_data = @puppet_enc.get_node_yaml(ref_node) if yaml_data.empty? SQSPoller.warn("#{@queue_name}: Reference node configuration '#{ref_node}' not found for autoscaling group '#{as_name}'") else SQSPoller.info("#{@queue_name}: Writing node configuration for #{dest_node} due to event from autoscaling group #{as_name}") @puppet_enc.write_node_data(dest_node, yaml_data) end end |
#del_node(node, as_name) ⇒ Object
73 74 75 76 |
# File 'lib/sqspoller/handlers/puppetsdb.rb', line 73 def del_node(node, as_name) SQSPoller.info("#{@queue_name}: Deleting node configuration for #{node} due to event from autoscaling group #{as_name}") @puppet_enc.delete_item(node) end |
#process(queue_name, msg, conf) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/sqspoller/handlers/puppetsdb.rb', line 33 def process(queue_name, msg, conf) @queue_name = queue_name domain = conf['domain'] template_map = conf['template_map'] begin msg_data = msg..to_h sns_msg_data = JSON.load(msg_data[:body]) rescue SQSPoller.warn("#{@queue_name}: Message is not a properly formatted SNS message") return end msg_id = msg_data. instance_id = sns_msg_data['EC2InstanceId'] event_type = sns_msg_data['Event'] autoscale_name = sns_msg_data['AutoScalingGroupName'] reference_node = template_map[autoscale_name] SQSPoller.debug("#{@queue_name}: Found message '#{msg_id}'") SQSPoller.debug("#{@queue_name}: Processing event '#{event_type}' for autoscaling group '#{autoscale_name}' and instance-id #{instance_id}") (SQSPoller.warn("#{@queue_name}: Unregistered autoscaling group: #{autoscale_name}"); return) if reference_node.nil? @puppet_enc = PuppetSDB::PuppetSDB.new(:domain => domain) case event_type when "autoscaling:EC2_INSTANCE_LAUNCH" add_node_from_ref(reference_node, instance_id, autoscale_name) when "autoscaling:EC2_INSTANCE_TERMINATE" del_node(instance_id, autoscale_name) end end |