diff options
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/cluster | 54 | ||||
| -rw-r--r-- | bin/openshift-ansible-bin.spec | 122 | 
2 files changed, 30 insertions, 146 deletions
diff --git a/bin/cluster b/bin/cluster index 582327415..59a6755d3 100755 --- a/bin/cluster +++ b/bin/cluster @@ -5,6 +5,7 @@ import argparse  import ConfigParser  import os  import sys +import subprocess  import traceback @@ -53,7 +54,6 @@ class Cluster(object):          """          Create an OpenShift cluster for given provider          :param args: command line arguments provided by user -        :return: exit status from run command          """          env = {'cluster_id': args.cluster_id,                 'deployment_type': self.get_deployment_type(args)} @@ -65,65 +65,60 @@ class Cluster(object):          env['num_infra'] = args.infra          env['num_etcd'] = args.etcd -        return self.action(args, inventory, env, playbook) +        self.action(args, inventory, env, playbook)      def terminate(self, args):          """          Destroy OpenShift cluster          :param args: command line arguments provided by user -        :return: exit status from run command          """          env = {'cluster_id': args.cluster_id,                 'deployment_type': self.get_deployment_type(args)}          playbook = "playbooks/{}/openshift-cluster/terminate.yml".format(args.provider)          inventory = self.setup_provider(args.provider) -        return self.action(args, inventory, env, playbook) +        self.action(args, inventory, env, playbook)      def list(self, args):          """          List VMs in cluster          :param args: command line arguments provided by user -        :return: exit status from run command          """          env = {'cluster_id': args.cluster_id,                 'deployment_type': self.get_deployment_type(args)}          playbook = "playbooks/{}/openshift-cluster/list.yml".format(args.provider)          inventory = self.setup_provider(args.provider) -        return self.action(args, inventory, env, playbook) +        self.action(args, inventory, env, playbook)      def config(self, args):          """          Configure or reconfigure OpenShift across clustered VMs          :param args: command line arguments provided by user -        :return: exit status from run command          """          env = {'cluster_id': args.cluster_id,                 'deployment_type': self.get_deployment_type(args)}          playbook = "playbooks/{}/openshift-cluster/config.yml".format(args.provider)          inventory = self.setup_provider(args.provider) -        return self.action(args, inventory, env, playbook) +        self.action(args, inventory, env, playbook)      def update(self, args):          """          Update to latest OpenShift across clustered VMs          :param args: command line arguments provided by user -        :return: exit status from run command          """          env = {'cluster_id': args.cluster_id,                 'deployment_type': self.get_deployment_type(args)}          playbook = "playbooks/{}/openshift-cluster/update.yml".format(args.provider)          inventory = self.setup_provider(args.provider) -        return self.action(args, inventory, env, playbook) +        self.action(args, inventory, env, playbook)      def service(self, args):          """          Make the same service call across all nodes in the cluster          :param args: command line arguments provided by user -        :return: exit status from run command          """          env = {'cluster_id': args.cluster_id,                 'deployment_type': self.get_deployment_type(args), @@ -132,7 +127,7 @@ class Cluster(object):          playbook = "playbooks/{}/openshift-cluster/service.yml".format(args.provider)          inventory = self.setup_provider(args.provider) -        return self.action(args, inventory, env, playbook) +        self.action(args, inventory, env, playbook)      def setup_provider(self, provider):          """ @@ -142,10 +137,14 @@ class Cluster(object):          """          config = ConfigParser.ConfigParser()          if 'gce' == provider: -            config.readfp(open('inventory/gce/hosts/gce.ini')) +            gce_ini_default_path = os.path.join( +                'inventory/gce/hosts/gce.ini') +            gce_ini_path = os.environ.get('GCE_INI_PATH', gce_ini_default_path) +            if os.path.exists(gce_ini_path):  +                config.readfp(open(gce_ini_path)) -            for key in config.options('gce'): -                os.environ[key] = config.get('gce', key) +                for key in config.options('gce'): +                    os.environ[key] = config.get('gce', key)              inventory = '-i inventory/gce/hosts'          elif 'aws' == provider: @@ -183,7 +182,6 @@ class Cluster(object):          :param inventory: derived provider library          :param env: environment variables for kubernetes          :param playbook: ansible playbook to execute -        :return: exit status from ansible-playbook command          """          verbose = '' @@ -213,7 +211,18 @@ class Cluster(object):              sys.stderr.write('RUN [{}]\n'.format(command))              sys.stderr.flush() -        return os.system(command) +        try: +            subprocess.check_call(command, shell=True) +        except subprocess.CalledProcessError as exc: +            raise ActionFailed("ACTION [{}] failed: {}" +                               .format(args.action, exc)) + + +class ActionFailed(Exception): +    """ +    Raised when action failed. +    """ +    pass  if __name__ == '__main__': @@ -328,14 +337,11 @@ if __name__ == '__main__':              sys.stderr.write('\nACTION [update] aborted by user!\n')              exit(1) -    status = 1      try: -        status = args.func(args) -        if status != 0: -            sys.stderr.write("ACTION [{}] failed with exit status {}\n".format(args.action, status)) -    except Exception, e: +        args.func(args) +    except Exception as exc:          if args.verbose:              traceback.print_exc(file=sys.stderr)          else: -            sys.stderr.write("{}\n".format(e)) -    exit(status) +            print >>sys.stderr, exc +        exit(1) diff --git a/bin/openshift-ansible-bin.spec b/bin/openshift-ansible-bin.spec deleted file mode 100644 index d90810bc3..000000000 --- a/bin/openshift-ansible-bin.spec +++ /dev/null @@ -1,122 +0,0 @@ -Summary:       OpenShift Ansible Scripts for working with metadata hosts -Name:          openshift-ansible-bin -Version:       0.0.19 -Release:       1%{?dist} -License:       ASL 2.0 -URL:           https://github.com/openshift/openshift-ansible -Source0:       %{name}-%{version}.tar.gz -Requires:      python2, openshift-ansible-inventory -BuildRequires: python2-devel -BuildArch:     noarch - -%description -Scripts to make it nicer when working with hosts that are defined only by metadata. - -%prep -%setup -q - -%build - -%install -mkdir -p %{buildroot}%{_bindir} -mkdir -p %{buildroot}%{python_sitelib}/openshift_ansible -mkdir -p %{buildroot}/etc/bash_completion.d -mkdir -p %{buildroot}/etc/openshift_ansible - -cp -p ossh oscp opssh opscp ohi %{buildroot}%{_bindir} -cp -pP openshift_ansible/* %{buildroot}%{python_sitelib}/openshift_ansible - -# Make it so we can load multi_ec2.py as a library. -rm %{buildroot}%{python_sitelib}/openshift_ansible/multi_ec2.py* -ln -sf /usr/share/ansible/inventory/multi_ec2.py %{buildroot}%{python_sitelib}/openshift_ansible/multi_ec2.py -ln -sf /usr/share/ansible/inventory/multi_ec2.pyc %{buildroot}%{python_sitelib}/openshift_ansible/multi_ec2.pyc - -cp -p ossh_bash_completion %{buildroot}/etc/bash_completion.d - -cp -p openshift_ansible.conf.example %{buildroot}/etc/openshift_ansible/openshift_ansible.conf - -%files -%{_bindir}/* -%{python_sitelib}/openshift_ansible/ -/etc/bash_completion.d/* -%config(noreplace) /etc/openshift_ansible/ - -%changelog -* Thu Aug 20 2015 Kenny Woodson <kwoodson@redhat.com> 0.0.19-1 -- Updated to show private ips when doing a list (kwoodson@redhat.com) -- Updated to read config first and default to users home dir -  (kwoodson@redhat.com) -- Prevent Ansible from serializing tasks (lhuard@amadeus.com) -- Infra node support (whearn@redhat.com) -- Playbook updates for clustered etcd (jdetiber@redhat.com) -- bin/cluster supports boto credentials as well as env variables -  (jdetiber@redhat.com) -- Merge pull request #291 from lhuard1A/profile -  (twiest@users.noreply.github.com) -- Add a generic mechanism for passing options (lhuard@amadeus.com) -- Infrastructure - Validate AWS environment before calling playbooks -  (jhonce@redhat.com) -- Add a --profile option to spot which task takes more time -  (lhuard@amadeus.com) -- changed Openshift to OpenShift (twiest@redhat.com) - -* Tue Jun 09 2015 Kenny Woodson <kwoodson@redhat.com> 0.0.18-1 -- Implement OpenStack provider (lhuard@amadeus.com) -- * Update defaults and examples to track core concepts guide -  (jhonce@redhat.com) -- Issue 119 - Add support for ~/.openshift-ansible (jhonce@redhat.com) -- Infrastructure - Add service action to bin/cluster (jhonce@redhat.com) - -* Fri May 15 2015 Thomas Wiest <twiest@redhat.com> 0.0.17-1 -- fixed the openshift-ansible-bin build (twiest@redhat.com) - -* Fri May 15 2015 Thomas Wiest <twiest@redhat.com> 0.0.14-1 -- Command line tools import multi_ec2 as lib (kwoodson@redhat.com) -- Adding cache location for multi ec2 (kwoodson@redhat.com) -* Thu May 07 2015 Thomas Wiest <twiest@redhat.com> 0.0.13-1 -- added '-e all' to ohi and fixed pylint errors. (twiest@redhat.com) - -* Tue May 05 2015 Thomas Wiest <twiest@redhat.com> 0.0.12-1 -- fixed opssh and opscp to allow just environment or just host-type. -  (twiest@redhat.com) - -* Mon May 04 2015 Thomas Wiest <twiest@redhat.com> 0.0.11-1 -- changed opssh to a bash script using ohi to make it easier to maintain, and -  to expose all of the pssh features directly. (twiest@redhat.com) -- Added --user option to ohi to pre-pend the username in the hostlist output. -  (twiest@redhat.com) -- Added utils.py that contains a normalize_dnsname function good for sorting -  dns names to a human readable list. (twiest@redhat.com) - -* Thu Apr 30 2015 Thomas Wiest <twiest@redhat.com> 0.0.10-1 -- added --list-host-types option to opscp (twiest@redhat.com) - -* Thu Apr 30 2015 Thomas Wiest <twiest@redhat.com> 0.0.9-1 -- added opscp (twiest@redhat.com) -* Mon Apr 13 2015 Thomas Wiest <twiest@redhat.com> 0.0.8-1 -- fixed bug in opssh where it wouldn't actually run pssh (twiest@redhat.com) - -* Mon Apr 13 2015 Thomas Wiest <twiest@redhat.com> 0.0.7-1 -- added the ability to run opssh and ohi on all hosts in an environment, as -  well as all hosts of the same host-type regardless of environment -  (twiest@redhat.com) -- added ohi (twiest@redhat.com) -* Thu Apr 09 2015 Thomas Wiest <twiest@redhat.com> 0.0.6-1 -- fixed bug where opssh would throw an exception if pssh returned a non-zero -  exit code (twiest@redhat.com) - -* Wed Apr 08 2015 Thomas Wiest <twiest@redhat.com> 0.0.5-1 -- fixed the opssh default output behavior to be consistent with pssh. Also -  fixed a bug in how directories are named for --outdir and --errdir. -  (twiest@redhat.com) -* Tue Mar 31 2015 Thomas Wiest <twiest@redhat.com> 0.0.4-1 -- Fixed when tag was missing and added opssh completion (kwoodson@redhat.com) - -* Mon Mar 30 2015 Thomas Wiest <twiest@redhat.com> 0.0.3-1 -- created a python package named openshift_ansible (twiest@redhat.com) - -* Mon Mar 30 2015 Thomas Wiest <twiest@redhat.com> 0.0.2-1 -- added config file support to opssh, ossh, and oscp (twiest@redhat.com) -* Tue Mar 24 2015 Thomas Wiest <twiest@redhat.com> 0.0.1-1 -- new package built with tito -  | 
