diff options
| author | Kenny Woodson <kwoodson@redhat.com> | 2016-03-14 15:24:59 -0400 | 
|---|---|---|
| committer | Kenny Woodson <kwoodson@redhat.com> | 2016-03-14 15:37:24 -0400 | 
| commit | 8279c9423d1e2166db04c256e3b475583537888b (patch) | |
| tree | 1f4284abb0e56b85da692b96585e0add9f820cf7 /bin | |
| parent | 00ccce6741369f5cffdcca2a9511c57e3aff4b47 (diff) | |
| download | openshift-8279c9423d1e2166db04c256e3b475583537888b.tar.gz openshift-8279c9423d1e2166db04c256e3b475583537888b.tar.bz2 openshift-8279c9423d1e2166db04c256e3b475583537888b.tar.xz openshift-8279c9423d1e2166db04c256e3b475583537888b.zip | |
Updating our metadata tooling to work without env
Diffstat (limited to 'bin')
| -rw-r--r-- | bin/openshift_ansible/awsutil.py | 10 | ||||
| -rwxr-xr-x | bin/oscp | 79 | ||||
| -rwxr-xr-x | bin/ossh | 92 | ||||
| -rwxr-xr-x | bin/ossh_bash_completion | 6 | ||||
| -rw-r--r-- | bin/ossh_zsh_completion | 6 | 
5 files changed, 46 insertions, 147 deletions
| diff --git a/bin/openshift_ansible/awsutil.py b/bin/openshift_ansible/awsutil.py index eba11e851..11651f087 100644 --- a/bin/openshift_ansible/awsutil.py +++ b/bin/openshift_ansible/awsutil.py @@ -137,13 +137,13 @@ class AwsUtil(object):          inst_by_env = {}          for _, 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: +            if 'oo_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 +            if host['oo_environment'] not in inst_by_env: +                inst_by_env[host['oo_environment']] = {} +            host_id = "%s:%s" % (host['oo_name'], host['oo_id']) +            inst_by_env[host['oo_environment']][host_id] = host          return inst_by_env @@ -14,6 +14,8 @@ CONFIG_MAIN_SECTION = 'main'  class Oscp(object):      def __init__(self): +        self.host = None +        self.user = ''          self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))          # Default the config path to /etc @@ -56,8 +58,6 @@ class Oscp(object):      def parse_cli_args(self):          parser = argparse.ArgumentParser(description='OpenShift Online SSH Tool.') -        parser.add_argument('-e', '--env', -                          action="store", help="Environment where this server exists.")          parser.add_argument('-d', '--debug', default=False,                            action="store_true", help="debug mode")          parser.add_argument('-v', '--verbose', default=False, @@ -82,8 +82,6 @@ class Oscp(object):      def process_host(self):          '''Determine host name and user name for SSH.          ''' -        self.user = '' -          # is the first param passed a valid file?          if os.path.isfile(self.args.src) or os.path.isdir(self.args.src):              self.local_src = True @@ -108,76 +106,34 @@ class Oscp(object):                  self.host = search.groups()[0]                  self.path = search.groups()[1] -        if self.args.env: -            self.env = self.args.env -        elif "." in self.host: -            self.host, self.env = self.host.split(".") -        else: -            self.env = None -      def get_hosts(self, refresh_cache=False): -        '''Query our host inventory and return a dict where the format -           equals: - -           dict['environment'] = [{'servername' : {}}, ] -        ''' +        '''Query our host inventory and return a dict where the format '''          if refresh_cache: -            self.host_inventory = self.aws.build_host_dict_by_env(['--refresh-cache']) +            self.host_inventory = self.aws.get_inventory(['--refresh-cache'])['_meta']['hostvars']          else: -            self.host_inventory = self.aws.build_host_dict_by_env() +            self.host_inventory = self.aws.get_inventory()['_meta']['hostvars']      def select_host(self):          '''select host attempts to match the host specified             on the command line with a list of hosts.          ''' -        results = [] -        for env in self.host_inventory.keys(): -            for hostname, server_info in self.host_inventory[env].items(): -                if hostname.split(':')[0] == self.host: -                    results.append((hostname, server_info)) - -        # attempt to select the correct environment if specified -        if self.env: -            results = filter(lambda result: result[1]['oo_environment'] == self.env, results) - -        if results: -            return results +        results = None +        if self.host_inventory.has_key(self.host): +           results = (self.host, self.host_inventory[self.host])          else:              print "Could not find specified host: %s." % self.host          # default - no results found. -        return None +        return results      def list_hosts(self, limit=None):          '''Function to print out the host inventory.             Takes a single parameter to limit the number of hosts printed.          ''' - -        if self.env: -            results = self.select_host() -            if len(results) == 1: -                hostname, server_info = results[0] -                sorted_keys = server_info.keys() -                sorted_keys.sort() -                for key in sorted_keys: -                    print '{0:<35} {1}'.format(key, server_info[key]) -            else: -                for host_id, server_info in results[:limit]: -                    print '{oo_name:<35} {oo_clusterid:<10} {oo_environment:<8} ' \ -                          '{oo_id:<15} {oo_public_ip:<18} {oo_private_ip:<18}'.format(**server_info) - -                if limit: -                    print -                    print 'Showing only the first %d results...' % limit -                    print - -        else: -            for env, host_ids in self.host_inventory.items(): -                for host_id, server_info in host_ids.items(): -                    print '{oo_name:<35} {oo_clusterid:<10} {oo_environment:<8} ' \ -                          '{oo_id:<15} {oo_public_ip:<18} {oo_private_ip:<18}'.format(**server_info) - +        for host_id, server_info in self.host_inventory.items(): +            print '{oo_name:<35} {oo_clusterid:<10} {oo_environment:<8} ' \ +                '{oo_id:<15} {oo_public_ip:<18} {oo_private_ip:<18}'.format(**server_info)      def scp(self):          '''scp files to or from a specified host @@ -203,17 +159,10 @@ class Oscp(object):              if not results:                  return # early exit, no results -            if len(results) > 1: -                print "Multiple results found for %s." % self.host -                for result in results: -                    print "{oo_name:<35} {oo_clusterid:<5} {oo_environment:<5} {oo_id:<10}".format(**result[1]) -                return # early exit, too many results -              # Assume we have one and only one. -            hostname, server_info = results[0] -            dns = server_info['oo_public_ip'] +            server_info = results[1] -            host_str = "%s%s%s" % (self.user, dns, self.path) +            host_str = "%s%s%s" % (self.user, server_info['oo_public_ip'], self.path)              if self.local_src:                  scp_args.append(self.args.src) @@ -14,6 +14,8 @@ CONFIG_MAIN_SECTION = 'main'  class Ossh(object):      def __init__(self): +        self.user = None +        self.host = None          self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))          # Default the config path to /etc @@ -54,8 +56,6 @@ class Ossh(object):      def parse_cli_args(self):          parser = argparse.ArgumentParser(description='OpenShift Online SSH Tool.') -        parser.add_argument('-e', '--env', action="store", -                            help="Which environment to search for the host ")          parser.add_argument('-d', '--debug', default=False,                              action="store_true", help="debug mode")          parser.add_argument('-v', '--verbose', default=False, @@ -83,91 +83,48 @@ class Ossh(object):      def process_host(self):          '''Determine host name and user name for SSH.          ''' -        self.env = None -        self.user = None - -        re_env = re.compile("\.(" + "|".join(self.host_inventory.keys()) + ")") -        search = re_env.search(self.args.host) -        if self.args.env: -            self.env = self.args.env -        elif search: -            # take the first? -            self.env = search.groups()[0] -        # remove env from hostname command line arg if found -        if search: -            self.args.host = re_env.split(self.args.host)[0] +        parts = self.args.host.split('@')          # parse username if passed -        if '@' in self.args.host: -            self.user, self.host = self.args.host.split('@') +        if len(parts) > 1: +            self.user = parts[0] +            self.host = parts[1]          else: -            self.host = self.args.host +            self.host = parts[0] +              if self.args.login_name:                  self.user = self.args.login_name -    def get_hosts(self, refresh_cache=False): -        '''Query our host inventory and return a dict where the format -           equals: -           dict['servername'] = dns_name -        ''' +    def get_hosts(self, refresh_cache=False): +        '''Query our host inventory and return a dict where the format '''          if refresh_cache: -            self.host_inventory = self.aws.build_host_dict_by_env(['--refresh-cache']) +            self.host_inventory = self.aws.get_inventory(['--refresh-cache'])['_meta']['hostvars']          else: -            self.host_inventory = self.aws.build_host_dict_by_env() +            self.host_inventory = self.aws.get_inventory()['_meta']['hostvars']      def select_host(self):          '''select host attempts to match the host specified             on the command line with a list of hosts.          ''' -        results = [] -        for env in self.host_inventory.keys(): -            for hostname, server_info in self.host_inventory[env].items(): -                if hostname.split(':')[0] == self.host: -                    results.append((hostname, server_info)) - -        # attempt to select the correct environment if specified -        if self.env: -            results = filter(lambda result: result[1]['oo_environment'] == self.env, results) - -        if results: -            return results +        results = None +        if self.host_inventory.has_key(self.host): +           results = (self.host, self.host_inventory[self.host])          else:              print "Could not find specified host: %s." % self.host          # default - no results found. -        return None +        return results      def list_hosts(self, limit=None):          '''Function to print out the host inventory.             Takes a single parameter to limit the number of hosts printed.          ''' - -        if self.env: -            results = self.select_host() -            if len(results) == 1: -                hostname, server_info = results[0] -                sorted_keys = server_info.keys() -                sorted_keys.sort() -                for key in sorted_keys: -                    print '{0:<35} {1}'.format(key, server_info[key]) -            else: -                for host_id, server_info in results[:limit]: -                    print '{oo_name:<35} {oo_clusterid:<10} {oo_environment:<8} ' \ -                          '{oo_id:<15} {oo_public_ip:<18} {oo_private_ip:<18}'.format(**server_info) - -                if limit: -                    print -                    print 'Showing only the first %d results...' % limit -                    print - -        else: -            for env, host_ids in self.host_inventory.items(): -                for host_id, server_info in host_ids.items(): -                    print '{oo_name:<35} {oo_clusterid:<10} {oo_environment:<8} ' \ -                          '{oo_id:<15} {oo_public_ip:<18} {oo_private_ip:<18}'.format(**server_info) +        for host_id, server_info in self.host_inventory.items(): +            print '{oo_name:<35} {oo_clusterid:<10} {oo_environment:<8} ' \ +                '{oo_id:<15} {oo_public_ip:<18} {oo_private_ip:<18}'.format(**server_info)      def ssh(self):          '''SSH to a specified host @@ -193,17 +150,10 @@ class Ossh(object):              if not results:                  return # early exit, no results -            if len(results) > 1: -                print "Multiple results found for %s." % self.host -                for result in results: -                    print "{oo_name:<35} {oo_clusterid:<5} {oo_environment:<5} {oo_id:<10}".format(**result[1]) -                return # early exit, too many results -              # Assume we have one and only one. -            _, server_info = results[0] -            dns = server_info['oo_public_ip'] +            server_info = results[1] -            ssh_args.append(dns) +            ssh_args.append(server_info['oo_public_ip'])              #last argument              if self.args.command: diff --git a/bin/ossh_bash_completion b/bin/ossh_bash_completion index 77b770a43..dcbde3e51 100755 --- a/bin/ossh_bash_completion +++ b/bin/ossh_bash_completion @@ -1,12 +1,12 @@  __ossh_known_hosts(){      if python -c 'import openshift_ansible' &>/dev/null; then -      /usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join(["%s.%s" % (host["oo_name"],host["oo_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("oo_name", "oo_environment"))])' +      /usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join([name for name in z["_meta"]["hostvars"].keys()])'      elif [[ -f /dev/shm/.ansible/tmp/multi_inventory.cache ]]; then -      /usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["oo_name"],host["oo_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("oo_name", "oo_environment"))])' +      /usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join([name for name in z["_meta"]["hostvars"].keys()])'      elif [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then -      /usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["oo_name"],host["oo_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("oo_name", "oo_environment"))])' +      /usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join([name for name in z["_meta"]["hostvars"].keys()])'      fi  } diff --git a/bin/ossh_zsh_completion b/bin/ossh_zsh_completion index 170ca889b..94ea61dab 100644 --- a/bin/ossh_zsh_completion +++ b/bin/ossh_zsh_completion @@ -2,13 +2,13 @@  _ossh_known_hosts(){      if python -c 'import openshift_ansible' &>/dev/null; then -      print $(/usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join(["%s.%s" % (host["oo_name"],host["oo_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("oo_name", "oo_environment"))])') +      print $(/usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join([name for name in z["_meta"]["hostvars"].keys()])')      elif [[ -f /dev/shm/.ansible/tmp/multi_inventory.cache ]]; then -      print $(/usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["oo_name"],host["oo_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("oo_name", "oo_environment"))])') +      print $(/usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join([name for name in z["_meta"]["hostvars"].keys() ])')      elif [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then -      print $(/usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(["%s.%s" % (host["oo_name"],host["oo_environment"]) for dns, host in z["_meta"]["hostvars"].items() if all(k in host for k in ("oo_name", "oo_environment"))])') +      print $(/usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join([name for name in z["_meta"]["hostvars"].keys() ])')      fi | 
