Method: Amigrind::Repo#add_to_channel
- Defined in:
- lib/amigrind/repo.rb
#add_to_channel(env, blueprint_name, id, channel) ⇒ Object
TODO: refactor these client-y things.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/amigrind/repo.rb', line 83 def add_to_channel(env, blueprint_name, id, channel) raise "'env' must be a String or an Environment." \ unless env.is_a?(String) || env.is_a?(Environments::Environment) raise "'blueprint_name' must be a String." unless blueprint_name.is_a?(String) raise "'id' must be a Fixnum." unless id.is_a?(Fixnum) raise "'channel' must be a String or Symbol." \ unless channel.is_a?(String) || channel.is_a?(Symbol) if env.is_a?(String) env = environment(env) end raise "channel '#{channel}' does not exist in environment '#{env.name}'." \ unless env.channels.key?(channel.to_s) || channel.to_sym == :latest credentials = Amigrind::Config.aws_credentials(env) amigrind_client = Amigrind::Core::Client.new(env.aws.region, credentials) ec2 = Aws::EC2::Client.new(region: env.aws.region, credentials: credentials) image = amigrind_client.get_image_by_id(name: blueprint_name, id: id) tag_key = Amigrind::Core::AMIGRIND_CHANNEL_TAG % { channel_name: channel } info_log "setting '#{tag_key}' on image #{image.id}..." ec2.( resources: [ image.id ], tags: [ { key: tag_key, value: '1' } ] ) end |