def provision(self, force=False, extra_args=""): """ Provision CCCP nodes. By default, it runs provisioning only for the first time, and skips for the subsequent calls. Args: force (bool): Provision forcefully. extra_args (str): Extra cmd line args for running ansible playbook """ provision(self.hosts['controller'], force=force, extra_args=extra_args)
def provision(self, force=False, extra_args=""): """ Provision CCCP nodes. By default, it runs provisioning only for the first time, and skips for the subsequent calls. Args: force (bool): Provision forcefully. extra_args (str): Extra cmd line args for running ansible playbook """ controller = copy.copy(self.hosts['controller']) controller['hosts'] = None _print('Provisioning...') provisioned, out = provision( controller, force=force, extra_args=extra_args) if provisioned: _print(out[-1000:])
def run(): os.environ.pop('CCCP_CI_PROVISIONED', None) os.environ.pop('CCCP_CI_HOSTS', None) nodes = get_nodes(count=5) jenkins_master_host = nodes[0] jenkins_slave_host = nodes[1] openshift_host = nodes[2] scanner_host = nodes[3] controller = nodes.pop() nodes_env = ( "\nJENKINS_MASTER_HOST=%s\n" "JENKINS_SLAVE_HOST=%s\n" "OPENSHIFT_HOST=%s\n" "CONTROLLER=%s\n" "SCANNER_HOST=%s\n" ) % (jenkins_master_host, jenkins_slave_host, openshift_host, controller, scanner_host) with open('env.properties', 'a') as f: f.write(nodes_env) hosts_data = { 'openshift': { 'host': openshift_host, 'remote_user': '******' }, 'jenkins_master': { 'host': jenkins_master_host, 'remote_user': '******' }, 'jenkins_slave': { 'host': jenkins_slave_host, 'remote_user': '******' }, 'controller': { 'host': controller, 'user': '******', 'workdir': '/root/container-pipeline-service', # relative to this workdir 'inventory_path': 'hosts' } } _print(hosts_data) generate_ansible_inventory(jenkins_master_host, jenkins_slave_host, openshift_host, scanner_host) run_cmd('iptables -F', host=openshift_host) run_cmd('iptables -F', host=jenkins_slave_host) setup_controller(controller) provision(hosts_data['controller']) os.environ['CCCP_CI_PROVISIONED'] = "true" os.environ['CCCP_CI_HOSTS'] = json.dumps(hosts_data) run_cmd('~/venv/bin/nosetests ci/tests', stream=True) os.environ.pop('CCCP_CI_PROVISIONED', None) os.environ.pop('CCCP_CI_HOSTS', None)