12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- require 'fileutils'
- module OpenShift
- module Ops
- class AwsHelper
- MYDIR = File.expand_path(File.dirname(__FILE__))
- def self.get_list()
- cmd = "#{MYDIR}/../inventory/aws/ec2.py --list"
- hosts = %x[#{cmd} 2>&1]
- raise "Error: failed to list hosts\n#{hosts}" unless $?.exitstatus == 0
- return JSON.parse(hosts)
- end
- def self.get_hosts()
- hosts = get_list()
- retval = []
- hosts['_meta']['hostvars'].each do |host, info|
- retval << OpenStruct.new({
- :name => info['ec2_tag_Name'] || 'UNSET',
- :env => info['ec2_tag_environment'] || 'UNSET',
- :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.state, h.name] }
- return retval
- end
- def self.get_host_details(host)
- hosts = get_list()
- dns_names = hosts["tag_Name_#{host}"]
- raise "Host not found [#{host}]" if dns_names.nil?
- raise "Multiple entries found for [#{host}]" if dns_names.size > 1
- return hosts['_meta']['hostvars'][dns_names.first]
- end
- def self.check_creds()
- raise "AWS_ACCESS_KEY_ID environment variable must be set" if ENV['AWS_ACCESS_KEY_ID'].nil?
- raise "AWS_SECRET_ACCESS_KEY environment variable must be set" if ENV['AWS_SECRET_ACCESS_KEY'].nil?
- end
- def self.clear_inventory_cache()
- path = "#{ENV['HOME']}/.ansible/tmp"
- cache_files = ["#{path}/ansible-ec2.cache", "#{path}/ansible-ec2.index"]
- FileUtils.rm_f(cache_files)
- end
- def self.generate_env_tag(env)
- return { "environment" => env }
- end
- def self.generate_env_tag_name(env)
- h = generate_env_tag(env)
- return "tag_#{h.keys.first}_#{h.values.first}"
- end
- def self.generate_host_type_tag(host_type)
- return { "host-type" => host_type }
- end
- def self.generate_host_type_tag_name(host_type)
- h = generate_host_type_tag(host_type)
- return "tag_#{h.keys.first}_#{h.values.first}"
- end
- def self.generate_env_host_type_tag(env, host_type)
- return { "env-host-type" => "#{env}-#{host_type}" }
- end
- def self.generate_env_host_type_tag_name(env, host_type)
- h = generate_env_host_type_tag(env, host_type)
- return "tag_#{h.keys.first}_#{h.values.first}"
- end
- end
- end
- end
|