Quellcode durchsuchen

Removed comments and cleaned up code.

Kenny Woodson vor 10 Jahren
Ursprung
Commit
cedef18d94
5 geänderte Dateien mit 28 neuen und 127 gelöschten Zeilen
  1. 6 5
      bin/README_SHELL_COMPLETION
  2. 0 2
      bin/ansibleutil.py
  3. 0 66
      bin/opssh.py
  4. 22 53
      bin/ossh
  5. 0 1
      inventory/aws/ec2.ini

+ 6 - 5
bin/README_SHELL_COMPLETION

@@ -1,7 +1,7 @@
 # ossh is an ssh replacement.
 # ossh is an ssh replacement.
 
 
 
 
-Ossh uses a dynamic inventory cache in order to lookup hostnames and translate them
+ossh uses a dynamic inventory cache in order to lookup hostnames and translate them
 to something meaningful such as an IP address or dns name.
 to something meaningful such as an IP address or dns name.
 
 
 This allows us to treat our servers as cattle and not as pets.
 This allows us to treat our servers as cattle and not as pets.
@@ -13,9 +13,10 @@ You can populate the cache by running `ossh --list`.  This
 will populate the cache file and the completions should
 will populate the cache file and the completions should
 become available.
 become available.
 
 
-This zsh script will look at the cached version of your
-multi_ec2 results in ~/.ansible/tmp/.  It will then parse a few
-{host}.{env} out of the json and return them to be completable.
+This script will look at the cached version of your
+multi_ec2 results in ~/.ansible/tmp/multi_ec2_inventory.cache.
+It will then parse a few {host}.{env} out of the json
+and return them to be completable.
 
 
 # BASH
 # BASH
 In order to setup bash completion, source the following script:
 In order to setup bash completion, source the following script:
@@ -27,6 +28,6 @@ that the _ossh_zsh_completion script is somewhere in the path
 of $fpath.
 of $fpath.
 
 
 Once $fpath includes the _ossh_zsh_completion script then you should
 Once $fpath includes the _ossh_zsh_completion script then you should
-run `exec zsh`.  This will then allow you to call `ossh host[TAB]` 
+run `exec zsh`.  This will then allow you to call `ossh host[TAB]`
 for a list of completions.
 for a list of completions.
 
 

+ 0 - 2
bin/ansibleutil.py

@@ -26,8 +26,6 @@ class AnsibleUtil(object):
         if p.returncode != 0:
         if p.returncode != 0:
             raise RuntimeError(err)
             raise RuntimeError(err)
 
 
-        #with open('/tmp/ans.out','w') as fd:
-            #fd.writelines(out)
         return json.loads(out.strip())
         return json.loads(out.strip())
 
 
     def get_environments(self):
     def get_environments(self):

+ 0 - 66
bin/opssh.py

@@ -1,66 +0,0 @@
-#!/usr/bin/env python
-# vim: expandtab:tabstop=4:shiftwidth=4
-
-import argparse
-import os
-import ansibleutil
-import sys
-
-class Program(object):
-    def __init__(self):
-        self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
-        self.parse_cli_args()
-        self.ansible = ansibleutil.AnsibleUtil()
-
-        inv = self.ansible.get_inventory()
-        #print inv.keys()
-        #sys.exit()
-
-        if self.args.list_environments:
-            self.list_environments()
-            sys.exit()
-
-        if self.args.list_groups:
-            self.list_security_groups()
-            sys.exit()
-
-    def parse_cli_args(self):
-        parser = argparse.ArgumentParser(
-            description='OpenShift Online Operations Parallel SSH'
-        )
-
-        parser.add_argument("-v", '--verbosity', action="count",
-                            help="increase output verbosity")
-
-        group = parser.add_mutually_exclusive_group()
-
-        group.add_argument('--list-environments', action="store_true",
-                            help='List all environments')
-        group.add_argument('--list-groups', action="store_true",
-                            help='List all security groups')
-        group.add_argument('-e', '--environment',
-                            help='Set the environment')
-
-        self.args = parser.parse_args()
-
-    def list_environments(self):
-        envs = self.ansible.get_environments()
-        print
-        print "Environments"
-        print "------------"
-        for env in envs:
-            print env
-        print
-
-    def list_security_groups(self):
-        envs = self.ansible.get_security_groups()
-        print
-        print "Groups"
-        print "------"
-        for env in envs:
-            print env
-        print
-
-
-if __name__ == '__main__':
-    p = Program()

+ 22 - 53
bin/ossh

@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
+# vim: expandtab:tabstop=4:shiftwidth=4
 
 
-import pdb
 import argparse
 import argparse
 import ansibleutil
 import ansibleutil
 import traceback
 import traceback
@@ -8,24 +8,19 @@ import sys
 import os
 import os
 import re
 import re
 
 
-
-# use dynamic inventory
-# list instances
-# symlinked to ~/bin
-# list instances that match pattern
-# python!
-
-# list environment stuff as well
-# 3 states:
-#  - an exact match; return result
-#  - a partial match; return all regex results
-#  - no match; None
-
 class Ossh(object):
 class Ossh(object):
     def __init__(self):
     def __init__(self):
         self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
         self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
         self.parse_cli_args()
         self.parse_cli_args()
 
 
+        self.ansible = ansibleutil.AnsibleUtil()
+
+        # get a dict of host inventory
+        if self.args.list:
+            self.get_hosts()
+        else:
+            self.get_hosts(True)
+
         # parse host and user
         # parse host and user
         self.process_host()
         self.process_host()
 
 
@@ -37,13 +32,6 @@ class Ossh(object):
             self.parser.print_help()
             self.parser.print_help()
             return
             return
 
 
-        self.ansible = ansibleutil.AnsibleUtil()
-
-        # get a dict of host inventory
-        if self.args.list:
-            self.get_hosts()
-        else:
-            self.get_hosts(True)
 
 
         if self.args.debug:
         if self.args.debug:
             print self.args
             print self.args
@@ -56,8 +44,6 @@ class Ossh(object):
 
 
     def parse_cli_args(self):
     def parse_cli_args(self):
         parser = argparse.ArgumentParser(description='Openshift Online SSH Tool.')
         parser = argparse.ArgumentParser(description='Openshift Online SSH Tool.')
-        parser.add_argument('-r', '--random', action="store",
-                          help="Choose a random host")
         parser.add_argument('-e', '--env', action="store",
         parser.add_argument('-e', '--env', action="store",
                           help="Which environment to search for the host ")
                           help="Which environment to search for the host ")
         parser.add_argument('-d', '--debug', default=False,
         parser.add_argument('-d', '--debug', default=False,
@@ -73,7 +59,7 @@ class Ossh(object):
 
 
         parser.add_argument('-o', '--ssh_opts', action='store',
         parser.add_argument('-o', '--ssh_opts', action='store',
                             help='options to pass to SSH.\n \
                             help='options to pass to SSH.\n \
-                                  "-o ForwardX11 yes"')
+                                  "-oForwardX11=yes,TCPKeepAlive=yes"')
         parser.add_argument('host', nargs='?', default='')
         parser.add_argument('host', nargs='?', default='')
 
 
         self.args = parser.parse_args()
         self.args = parser.parse_args()
@@ -86,7 +72,7 @@ class Ossh(object):
         self.env = None
         self.env = None
         self.user = None
         self.user = None
 
 
-        re_env = re.compile('\.(int|stg|prod|ops)')
+        re_env = re.compile("\.(" + "|".join(self.host_inventory.keys()) + ")")
         search = re_env.search(self.args.host)
         search = re_env.search(self.args.host)
         if self.args.env:
         if self.args.env:
             self.env = self.args.env
             self.env = self.args.env
@@ -106,19 +92,16 @@ class Ossh(object):
             if self.args.login_name:
             if self.args.login_name:
                 self.user = self.args.login_name
                 self.user = self.args.login_name
 
 
-    def get_hosts(self, cache=False):
+    def get_hosts(self, cache_only=False):
         '''Query our host inventory and return a dict where the format
         '''Query our host inventory and return a dict where the format
            equals:
            equals:
 
 
            dict['servername'] = dns_name
            dict['servername'] = dns_name
         '''
         '''
-        # TODO: perform a numerical sort on these hosts
-        # and display them
-
-        if not cache:
-            self.host_inventory = self.ansible.build_host_dict()
-        else:
+        if cache_only:
             self.host_inventory = self.ansible.build_host_dict(['--cache-only'])
             self.host_inventory = self.ansible.build_host_dict(['--cache-only'])
+        else:
+            self.host_inventory = self.ansible.build_host_dict()
 
 
     def select_host(self, regex=False):
     def select_host(self, regex=False):
         '''select host attempts to match the host specified
         '''select host attempts to match the host specified
@@ -127,25 +110,17 @@ class Ossh(object):
            if regex is specified then we will attempt to match
            if regex is specified then we will attempt to match
            all *{host_string}* equivalents.
            all *{host_string}* equivalents.
         '''
         '''
-# list environment stuff as well
-# 3 states:
-#  - an exact match; return result
-#  - a partial match; return all regex results
-#  - no match; None
         re_host = re.compile(self.host)
         re_host = re.compile(self.host)
 
 
-        exact = []
         results = []
         results = []
         for hostname, server_info in self.host_inventory[self.env].items():
         for hostname, server_info in self.host_inventory[self.env].items():
             if hostname.split(':')[0] == self.host:
             if hostname.split(':')[0] == self.host:
-                exact.append((hostname, server_info))
-                break
+                # an exact match, return it!
+                return [(hostname, server_info)]
             elif re_host.search(hostname):
             elif re_host.search(hostname):
                 results.append((hostname, server_info))
                 results.append((hostname, server_info))
 
 
-        if exact:
-            return exact
-        elif results:
+        if results:
             return results
             return results
         else:
         else:
             print "Could not find specified host: %s in %s" % (self.host, self.env)
             print "Could not find specified host: %s in %s" % (self.host, self.env)
@@ -153,7 +128,6 @@ class Ossh(object):
         # default - no results found.
         # default - no results found.
         return None
         return None
 
 
-
     def list_hosts(self, limit=None):
     def list_hosts(self, limit=None):
         '''Function to print out the host inventory.
         '''Function to print out the host inventory.
 
 
@@ -192,10 +166,8 @@ class Ossh(object):
         '''SSH to a specified host
         '''SSH to a specified host
         '''
         '''
         try:
         try:
-            cmd = '/usr/bin/ssh'
-
             # shell args start with the program name in position 1
             # shell args start with the program name in position 1
-            ssh_args = [cmd, ]
+            ssh_args = ['/usr/bin/ssh']
 
 
             if self.user:
             if self.user:
                 ssh_args.append('-l%s' % self.user)
                 ssh_args.append('-l%s' % self.user)
@@ -204,7 +176,8 @@ class Ossh(object):
                 ssh_args.append('-vvv')
                 ssh_args.append('-vvv')
 
 
             if self.args.ssh_opts:
             if self.args.ssh_opts:
-                ssh_args.append("-o%s" % self.args.ssh_opts)
+                for arg in self.args.ssh_opts.split(","):
+                    ssh_args.append("-o%s" % arg)
 
 
             result = self.select_host()
             result = self.select_host()
             if not result:
             if not result:
@@ -235,10 +208,6 @@ class Ossh(object):
             print sys.exc_info()
             print sys.exc_info()
 
 
 
 
-def main():
-    ossh = Ossh()
-
-
 if __name__ == '__main__':
 if __name__ == '__main__':
-    main()
+    ossh = Ossh()
 
 

+ 0 - 1
inventory/aws/ec2.ini

@@ -12,7 +12,6 @@
 # in AWS and merge the results together. Alternatively, set this to a comma
 # in AWS and merge the results together. Alternatively, set this to a comma
 # separated list of regions. E.g. 'us-east-1,us-west-1,us-west-2'
 # separated list of regions. E.g. 'us-east-1,us-west-1,us-west-2'
 regions = all
 regions = all
-#regions = us-east-1
 regions_exclude = us-gov-west-1,cn-north-1
 regions_exclude = us-gov-west-1,cn-north-1
 
 
 # When generating inventory, Ansible needs to know how to address a server.
 # When generating inventory, Ansible needs to know how to address a server.