def do(self, workflow_dict): try: databaseinfra = workflow_dict['databaseinfra'] environment = workflow_dict['environment'] credentials = get_credentials_for( environment=environment, credential_type=CredentialType.FOREMAN) forman_provider = get_foreman_provider(databaseinfra=databaseinfra, credentials=credentials) vip = workflow_dict['vip'] for host in workflow_dict['target_hosts']: LOG.info('Get fqdn for host {}'.format(host)) host_attr = HostAttr.objects.get(host=host) script = 'hostname' output = {} return_code = exec_remote_command( server=host.address, username=host_attr.vm_user, password=host_attr.vm_password, command=script, output=output) LOG.info(output) if return_code != 0: raise Exception(str(output)) fqdn = output['stdout'][0].strip() if fqdn == "localhost.localdomain": errormsg = "The fqdn {} is not valid.".format(fqdn) LOG.error(errormsg) raise Exception(errormsg) LOG.info("Call foreman for fqdn={}, vip={}, dsrc={}".format( fqdn, vip.vip_ip, vip.dscp)) forman_provider.setup_database_dscp(fqdn=fqdn, vip_ip=vip.vip_ip, dsrc=vip.dscp, port=3306) return True except Exception: traceback = full_stack() workflow_dict['exceptions']['error_codes'].append(DBAAS_0007) workflow_dict['exceptions']['traceback'].append(traceback) return False
def provider(self): if self._provider is None: self._provider = get_foreman_provider(self.infra, self.credentials) return self._provider
def __init__(self, instance): super(Foreman, self).__init__(instance) self.credentials = get_credentials_for( self.environment, CredentialType.FOREMAN ) self.provider = get_foreman_provider(self.infra, self.credentials)