예제 #1
0
    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
예제 #3
0
 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)
예제 #4
0
 def provider(self):
     if self._provider is None:
         self._provider = get_foreman_provider(self.infra, self.credentials)
     return self._provider