summaryrefslogtreecommitdiffstats
path: root/bin/awsutil.py
diff options
context:
space:
mode:
authorThomas Wiest <twiest@redhat.com>2015-03-30 17:46:21 -0400
committerThomas Wiest <twiest@redhat.com>2015-03-30 17:47:09 -0400
commit24ce165d9ca662f9a0438e658197ff41fd02ae03 (patch)
tree73152042f29406e20a6dd41c0b83f8f34c7b8681 /bin/awsutil.py
parent1ba0619575f23e880d431ec2a15b9c02bfc5e3a9 (diff)
downloadopenshift-24ce165d9ca662f9a0438e658197ff41fd02ae03.tar.gz
openshift-24ce165d9ca662f9a0438e658197ff41fd02ae03.tar.bz2
openshift-24ce165d9ca662f9a0438e658197ff41fd02ae03.tar.xz
openshift-24ce165d9ca662f9a0438e658197ff41fd02ae03.zip
created a python package named openshift_ansible
Diffstat (limited to 'bin/awsutil.py')
-rw-r--r--bin/awsutil.py141
1 files changed, 0 insertions, 141 deletions
diff --git a/bin/awsutil.py b/bin/awsutil.py
deleted file mode 100644
index 78421e5f5..000000000
--- a/bin/awsutil.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# vim: expandtab:tabstop=4:shiftwidth=4
-
-import subprocess
-import os
-import json
-import re
-
-class AwsUtil(object):
- def __init__(self, inventory_path=None, host_type_aliases={}):
- self.host_type_aliases = host_type_aliases
- self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
-
- if inventory_path is None:
- inventory_path = os.path.realpath(os.path.join(self.file_path, \
- '..','inventory','multi_ec2.py'))
-
- if not os.path.isfile(inventory_path):
- raise Exception("Inventory file not found [%s]" % inventory_path)
-
- self.inventory_path = inventory_path
- self.setup_host_type_alias_lookup()
-
- def setup_host_type_alias_lookup(self):
- self.alias_lookup = {}
- for key, values in self.host_type_aliases.iteritems():
- for value in values:
- self.alias_lookup[value] = key
-
-
-
- def get_inventory(self,args=[]):
- cmd = [self.inventory_path]
-
- if args:
- cmd.extend(args)
-
- env = os.environ
-
- p = subprocess.Popen(cmd, stderr=subprocess.PIPE,
- stdout=subprocess.PIPE, env=env)
-
- out,err = p.communicate()
-
- if p.returncode != 0:
- raise RuntimeError(err)
-
- return json.loads(out.strip())
-
- def get_environments(self):
- pattern = re.compile(r'^tag_environment_(.*)')
-
- envs = []
- inv = self.get_inventory()
- for key in inv.keys():
- m = pattern.match(key)
- if m:
- envs.append(m.group(1))
-
- envs.sort()
- return envs
-
- def get_host_types(self):
- pattern = re.compile(r'^tag_host-type_(.*)')
-
- host_types = []
- inv = self.get_inventory()
- for key in inv.keys():
- m = pattern.match(key)
- if m:
- host_types.append(m.group(1))
-
- host_types.sort()
- return host_types
-
- def get_security_groups(self):
- pattern = re.compile(r'^security_group_(.*)')
-
- groups = []
- inv = self.get_inventory()
- for key in inv.keys():
- m = pattern.match(key)
- if m:
- groups.append(m.group(1))
-
- groups.sort()
- return groups
-
- def build_host_dict_by_env(self, args=[]):
- inv = self.get_inventory(args)
-
- inst_by_env = {}
- for dns, host in inv['_meta']['hostvars'].items():
- # If you don't have an environment tag, we're going to ignore you
- if 'ec2_tag_environment' not in host:
- continue
-
- if host['ec2_tag_environment'] not in inst_by_env:
- inst_by_env[host['ec2_tag_environment']] = {}
- host_id = "%s:%s" % (host['ec2_tag_Name'],host['ec2_id'])
- inst_by_env[host['ec2_tag_environment']][host_id] = host
-
- return inst_by_env
-
- # Display host_types
- def print_host_types(self):
- host_types = self.get_host_types()
- ht_format_str = "%35s"
- alias_format_str = "%-20s"
- combined_format_str = ht_format_str + " " + alias_format_str
-
- print
- print combined_format_str % ('Host Types', 'Aliases')
- print combined_format_str % ('----------', '-------')
-
- for ht in host_types:
- aliases = []
- if ht in self.host_type_aliases:
- aliases = self.host_type_aliases[ht]
- print combined_format_str % (ht, ", ".join(aliases))
- else:
- print ht_format_str % ht
- print
-
- # Convert host-type aliases to real a host-type
- def resolve_host_type(self, host_type):
- if self.alias_lookup.has_key(host_type):
- return self.alias_lookup[host_type]
- return host_type
-
- def gen_env_host_type_tag(self, host_type, env):
- """Generate the environment host type tag
- """
- host_type = self.resolve_host_type(host_type)
- return "tag_env-host-type_%s-%s" % (env, host_type)
-
- def get_host_list(self, host_type, env):
- """Get the list of hosts from the inventory using host-type and environment
- """
- inv = self.get_inventory()
- host_type_tag = self.gen_env_host_type_tag(host_type, env)
- return inv[host_type_tag]