class Chef::Knife::Ec2AmiList
Overview¶ ↑
This file provides the facility to display AMI list.
Owner¶ ↑
By default owner is aws-marketplace but you can specify following owner with the help of -o or –owner
* self => Displays the list of AMIs created by the user * aws-marketplace => Displays all AMIs form trusted vendors like Ubuntu, Microsoft, SAP, Zend as well as many open source offering * microsoft => Displays only Microsoft vendor AMIs
Platform¶ ↑
By default all platform AMI's will display but you can filter your response by specify the platform using -p or –platform
* Valid Platform => ubuntu, debian, centos, fedora, rhel, nginx, turnkey, jumpbox, coreos, cisco
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/ec2_ami_list.rb, line 60 def run $stdout.sync = true validate_aws_config! custom_warnings! servers_list = [ ui.color("AMI ID", :bold), ui.color("Platform", :bold), ui.color("Architecture", :bold), ui.color("Size", :bold), ui.color("Name", :bold), ui.color("Description", :bold), ].flatten.compact output_column_count = servers_list.length if config[:format] == "summary" ami_hashes.each_pair do |_k, v| servers_list << v["image_id"] servers_list << v["platform"] servers_list << v["architecture"] servers_list << v["size"] servers_list << v["name"] servers_list << v["description"] end puts ui.list(servers_list, :uneven_columns_across, output_column_count) else output(format_for_display(ami_hashes)) end end
Private Instance Methods
ami_hashes()
click to toggle source
# File lib/chef/knife/ec2_ami_list.rb, line 94 def ami_hashes all_data = {} ec2_connection.describe_images(image_params).images.each do |v| v_data = {} if config[:search] next unless v.description.downcase.include?(config[:search].downcase) end %w{image_id platform description architecture}.each do |id| v_data[id] = v.send(id) end v_data["name"] = v.name.split(/\W+/).first v_data["size"] = v.block_device_mappings[0].ebs.volume_size.to_s all_data[v_data["image_id"]] = v_data end all_data end
image_params()
click to toggle source
# File lib/chef/knife/ec2_ami_list.rb, line 113 def image_params params = {} params["owners"] = [config[:owner].to_s] filters = [] if config[:platform] filters << { name: "platform", values: [config[:platform]] } end # TODO: Need to find substring to match in the description # filters << { description: config[:search] } if config[:search] if filters.length > 0 params["filters"] = filters end params end