summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/aws_command.rb2
-rw-r--r--lib/gce_command.rb14
-rw-r--r--lib/gce_helper.rb32
3 files changed, 36 insertions, 12 deletions
diff --git a/lib/aws_command.rb b/lib/aws_command.rb
index 06a65aac1..0c714cdb4 100644
--- a/lib/aws_command.rb
+++ b/lib/aws_command.rb
@@ -7,7 +7,7 @@ module OpenShift
module Ops
class AwsCommand < Thor
# WARNING: we do not currently support environments with hyphens in the name
- SUPPORTED_ENVS = %w(prod stg int ops tint kint test jint amint tdint lint)
+ SUPPORTED_ENVS = %w(prod stg int twiest gshipley kint test jhonce amint tdint lint)
option :type, :required => true, :enum => LaunchHelper.get_aws_host_types,
:desc => 'The host type of the new instances.'
diff --git a/lib/gce_command.rb b/lib/gce_command.rb
index 54dbf29ba..b7ebee18e 100644
--- a/lib/gce_command.rb
+++ b/lib/gce_command.rb
@@ -10,7 +10,7 @@ module OpenShift
module Ops
class GceCommand < Thor
# WARNING: we do not currently support environments with hyphens in the name
- SUPPORTED_ENVS = %w(prod stg int tint kint test jint amint tdint lint)
+ SUPPORTED_ENVS = %w(prod stg int twiest gshipley kint test jhonce amint tdint lint)
option :type, :required => true, :enum => LaunchHelper.get_gce_host_types,
:desc => 'The host type of the new instances.'
@@ -120,14 +120,20 @@ module OpenShift
ah.run_playbook("playbooks/gce/#{host_type}/terminate.yml")
end
+ option :env, :required => false, :aliases => '-e', :enum => SUPPORTED_ENVS,
+ :desc => 'The environment to list.'
desc "list", "Lists instances."
def list()
hosts = GceHelper.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 { |k| puts " #{k.name}" }
+ puts fmt_str % ['Name','Env', 'State', 'IP Address', '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/gce_helper.rb b/lib/gce_helper.rb
index 2ff716ce1..19fa00020 100644
--- a/lib/gce_helper.rb
+++ b/lib/gce_helper.rb
@@ -5,23 +5,41 @@ module OpenShift
class GceHelper
MYDIR = File.expand_path(File.dirname(__FILE__))
- def self.get_hosts()
+ def self.get_list()
cmd = "#{MYDIR}/../inventory/gce/gce.py --list"
hosts = %x[#{cmd} 2>&1]
raise "Error: failed to list hosts\n#{hosts}" unless $?.exitstatus == 0
- # invert the hash so that it's key is the host, and values is an array of metadata
- data = {}
- JSON.parse(hosts).each do |key,value|
- value.each { |h| (data[h] ||= []) << key }
+ return JSON.parse(hosts)
+ end
+
+ def self.get_tag(tags, selector)
+ tags.each do |tag|
+ return $1 if tag =~ selector
end
- # For now, we only care about the name. In the future, we may want the other metadata included.
+ return nil
+ end
+
+ def self.get_hosts()
+ hosts = get_list()
+
retval = []
- data.keys.sort.each { |k| retval << OpenStruct.new({ :name => k }) }
+ hosts['_meta']['hostvars'].each do |host, info|
+ retval << OpenStruct.new({
+ :name => info['gce_name'],
+ :env => get_tag(info['gce_tags'], /^env-(\w+)$/) || 'UNSET',
+ :public_ip => info['gce_public_ip'],
+ :state => info['gce_status'],
+ :created_by => get_tag(info['gce_tags'], /^created-by-(\w+)$/) || 'UNSET',
+ })
+ end
+
+ retval.sort_by! { |h| [h.env, h.state, h.name] }
return retval
+
end
def self.get_host_details(host)