summaryrefslogtreecommitdiffstats
path: root/bin/oscp
diff options
context:
space:
mode:
Diffstat (limited to 'bin/oscp')
-rwxr-xr-xbin/oscp184
1 files changed, 0 insertions, 184 deletions
diff --git a/bin/oscp b/bin/oscp
deleted file mode 100755
index 4d3286ed8..000000000
--- a/bin/oscp
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/env python2
-# vim: expandtab:tabstop=4:shiftwidth=4
-
-import argparse
-import traceback
-import sys
-import os
-import re
-import ConfigParser
-
-from openshift_ansible import awsutil
-
-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
- self.config_path = os.path.join(os.path.sep, 'etc', \
- 'openshift_ansible', \
- 'openshift_ansible.conf')
-
- self.parse_cli_args()
- self.parse_config_file()
-
- # parse host and user
- self.process_host()
-
- self.aws = awsutil.AwsUtil()
-
- # get a dict of host inventory
- if self.args.refresh_cache:
- self.get_hosts(True)
- else:
- self.get_hosts()
-
- if (self.args.src == '' or self.args.dest == '') and not self.args.list:
- self.parser.print_help()
- return
-
- if self.args.debug:
- print self.host
- print self.args
-
- # perform the scp
- if self.args.list:
- self.list_hosts()
- else:
- self.scp()
-
- def parse_config_file(self):
- if os.path.isfile(self.config_path):
- config = ConfigParser.ConfigParser()
- config.read(self.config_path)
-
- def parse_cli_args(self):
- parser = argparse.ArgumentParser(description='OpenShift Online SSH Tool.')
- parser.add_argument('-d', '--debug', default=False,
- action="store_true", help="debug mode")
- parser.add_argument('-v', '--verbose', default=False,
- action="store_true", help="Verbose?")
- parser.add_argument('--refresh-cache', default=False,
- action="store_true", help="Force a refresh on the host cache.")
- parser.add_argument('--list', default=False,
- action="store_true", help="list out hosts")
- parser.add_argument('-r', '--recurse', action='store_true', default=False,
- help='Recursively copy files to or from destination.')
- parser.add_argument('-o', '--ssh_opts', action='store',
- help='options to pass to SSH.\n \
- "-oPort=22,TCPKeepAlive=yes"')
-
- parser.add_argument('src', nargs='?', default='')
- parser.add_argument('dest',nargs='?', default='')
-
- self.args = parser.parse_args()
- self.parser = parser
-
-
- def process_host(self):
- '''Determine host name and user name for SSH.
- '''
- # 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
- self.host = self.args.dest
- else:
- self.local_src = False
- self.host = self.args.src
-
- if '@' in self.host:
- re_host = re.compile("(.*@)(.*)(:.*$)")
- else:
- re_host = re.compile("(.*)(:.*$)")
-
- search = re_host.search(self.host)
-
- if search:
- if len(search.groups()) > 2:
- self.user = search.groups()[0]
- self.host = search.groups()[1]
- self.path = search.groups()[2]
- else:
- self.host = search.groups()[0]
- self.path = search.groups()[1]
-
- 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.get_inventory(['--refresh-cache'])['_meta']['hostvars']
- else:
- 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 = 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 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.
- '''
- 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
- '''
- try:
- # shell args start with the program name in position 1
- scp_args = ['/usr/bin/scp']
-
- if self.args.verbose:
- scp_args.append('-v')
-
- if self.args.recurse:
- scp_args.append('-r')
-
- if self.args.ssh_opts:
- for arg in self.args.ssh_opts.split(","):
- scp_args.append("-o%s" % arg)
-
- results = self.select_host()
-
- if self.args.debug: print results
-
- if not results:
- return # early exit, no results
-
- # Assume we have one and only one.
- server_info = results[1]
-
- host_str = "%s%s%s" % (self.user, server_info['oo_public_ip'], self.path)
-
- if self.local_src:
- scp_args.append(self.args.src)
- scp_args.append(host_str)
- else:
- scp_args.append(host_str)
- scp_args.append(self.args.dest)
-
- print "Running: %s\n" % ' '.join(scp_args)
-
- os.execve('/usr/bin/scp', scp_args, os.environ)
- except:
- print traceback.print_exc()
- print sys.exc_info()
-
-
-if __name__ == '__main__':
- oscp = Oscp()
-