From 6878f8690843e3f4b4c68f464bb39dd682bf51f4 Mon Sep 17 00:00:00 2001 From: Thomas Wiest Date: Thu, 23 Oct 2014 16:13:54 -0400 Subject: made aws list display more information, and be able to only show a single environment --- lib/aws_command.rb | 14 ++++++++++---- lib/aws_helper.rb | 8 +++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/aws_command.rb b/lib/aws_command.rb index d471557b8..bc353ae64 100644 --- a/lib/aws_command.rb +++ b/lib/aws_command.rb @@ -35,7 +35,7 @@ module OpenShift # Add a created by tag ah.extra_vars['oo_new_inst_tags'] = {} if ah.extra_vars['oo_new_inst_tags'].nil? - ah.extra_vars['oo_new_inst_tags']["created-by"] = ENV['USER'] + ah.extra_vars['oo_new_inst_tags']['created-by'] = ENV['USER'] ah.extra_vars['oo_new_inst_tags'].merge!(AwsHelper.generate_env_tag(options[:env])) ah.extra_vars['oo_new_inst_tags'].merge!(AwsHelper.generate_host_type_tag(options[:type])) ah.extra_vars['oo_new_inst_tags'].merge!(AwsHelper.generate_env_host_type_tag(options[:env], options[:type])) @@ -96,15 +96,21 @@ module OpenShift ah.run_playbook("playbooks/aws/#{host_type}/config.yml") end + option :env, :required => false, :aliases => '-e', :enum => SUPPORTED_ENVS, + :desc => 'The environment to list.' desc "list", "Lists instances." def list() AwsHelper.check_creds() hosts = AwsHelper.get_hosts() + hosts.delete_if { |h| h.env != options[:env] } unless options[:env].nil? + + fmt_str = "%34s %5s %8s %17s %7s" + puts - puts "Instances" - puts "---------" - hosts.each { |h| puts " #{h.name}.#{h.env}" } + puts fmt_str % ['Name','Env', 'State', 'IP', 'Created By'] + puts fmt_str % ['----','---', '-----', '--', '----------'] + hosts.each { |h| puts fmt_str % [h.name, h.env, h.state, h.public_ip, h.created_by ] } puts end diff --git a/lib/aws_helper.rb b/lib/aws_helper.rb index 6d213107b..053f5267e 100644 --- a/lib/aws_helper.rb +++ b/lib/aws_helper.rb @@ -21,12 +21,14 @@ module OpenShift retval << OpenStruct.new({ :name => info['ec2_tag_Name'], :env => info['ec2_tag_environment'] || 'UNSET', - :external_ip => info['ec2_ip_address'], - :public_dns => info['ec2_public_dns_name'] + :public_ip => info['ec2_ip_address'], + :public_dns => info['ec2_public_dns_name'], + :state => info['ec2_state'], + :created_by => info['ec2_tag_created-by'] }) end - retval.sort_by! { |h| [h.env, h.name] } + retval.sort_by! { |h| [h.env, h.state, h.name] } return retval end -- cgit v1.2.3