class Opsicle::ExecuteRecipes
Constants
- NoInstanceError
Attributes
client[R]
recipes[R]
Public Class Methods
new(environment)
click to toggle source
# File lib/opsicle/commands/execute_recipes.rb, line 8 def initialize(environment) @environment = environment @client = Client.new(environment) end
Public Instance Methods
determine_from_eip()
click to toggle source
# File lib/opsicle/commands/execute_recipes.rb, line 49 def determine_from_eip if instance = Opsicle::Instances.find_by_eip(client).first Array(instance[:instance_id]) else raise NoInstanceError, "Unable to find instances with elastic IPs" end end
determine_from_ips(ips)
click to toggle source
# File lib/opsicle/commands/execute_recipes.rb, line 41 def determine_from_ips(ips) if instances = Opsicle::Instances.find_by_ip(client, ips) instances.map { |instance| instance[:instance_id] } else raise NoInstanceError, "Unable to find instances with given IP" end end
determine_from_layers(layers)
click to toggle source
# File lib/opsicle/commands/execute_recipes.rb, line 57 def determine_from_layers(layers) if instances = Opsicle::Layer.instance_ids(client, layers) instances else raise NoInstanceError, "Unable to find instances in specified layers" end end
determine_instance_ids(options)
click to toggle source
# File lib/opsicle/commands/execute_recipes.rb, line 29 def determine_instance_ids(options) if options[:instance_ids] options[:instance_ids] elsif options[:layers] determine_from_layers(options[:layers]) elsif options[:ip_addresses] determine_from_ips(options[:ip_addresses]) elsif options[:eip] determine_from_eip end end
execute(options={ monitor: true })
click to toggle source
# File lib/opsicle/commands/execute_recipes.rb, line 13 def execute(options={ monitor: true }) Output.say "Starting OpsWorks chef run..." #so this is how to format the command arguments: #http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/OpsWorks/Client.html#create_deployment-instance_method command_args = {} command_args["recipes"] = options[:recipes] command_opts = {} command_opts["instance_ids"] = determine_instance_ids(options) command_opts["custom_json"] = options.delete(:json) if options[:json] command_opts.reject! {|key,value| value.nil?} response = client.run_command('execute_recipes', command_args, command_opts) launch_stack_monitor(response, options) end