Пример #1
0
    def undo(self, workflow_dict):
        LOG.info("Running undo...")
        try:

            databaseinfra = workflow_dict['databaseinfra']
            try:
                vip_ip = get_vip_ip_from_databaseinfra(
                    databaseinfra=databaseinfra)
            except ObjectDoesNotExist:
                return True

            LOG.info("Deleting VIP {}".format(vip_ip))
            dbaas_api = DatabaseAsAServiceApi(databaseinfra=databaseinfra)
            networkprovider = NetworkProvider(dbaas_api=dbaas_api)
            networkprovider.delete_vip(vip_ip=vip_ip)
            LOG.info("VIP deleted")

            return True

        except Exception:
            traceback = full_stack()

            workflow_dict['exceptions']['error_codes'].append(DBAAS_0024)
            workflow_dict['exceptions']['traceback'].append(traceback)

            return False
Пример #2
0
    def do(self, workflow_dict):
        try:

            databaseinfra = workflow_dict['databaseinfra']
            dbaas_api = DatabaseAsAServiceApi(databaseinfra=databaseinfra)
            equipments = []

            for instance in workflow_dict['target_instances']:
                host = instance.hostname
                host_attr = HostAttr.objects.get(host=host)
                equipments.append(
                    Equipment(name='VM-{}'.format(host_attr.vm_id),
                              ip=host.address,
                              port=instance.port))

            LOG.info("Creating VIP to equipments = [{}]".format(equipments))
            networkprovider = NetworkProvider(dbaas_api=dbaas_api)

            vipname, vipdomain = get_dns_name_domain(
                databaseinfra=databaseinfra,
                name=databaseinfra.name,
                type=FOXHA)
            vip_dns = '%s.%s' % (vipname, vipdomain)
            LOG.info("VIP dns = {}".format(vip_dns))
            vip = networkprovider.create_vip(equipments=equipments,
                                             port=3306,
                                             vip_dns=vip_dns)

            LOG.info("VIP created: {}".format(vip))

            LOG.info("Updating databaseinfra endpoint...")

            #databaseinfra.endpoint = "{}:{}".format(vip.vip_ip, 3306)
            #databaseinfra.save()

            workflow_dict['vip'] = vip

            #workflow_dict['databaseinfra'] = databaseinfra

            return True
        except Exception:
            traceback = full_stack()

            workflow_dict['exceptions']['error_codes'].append(DBAAS_0024)
            workflow_dict['exceptions']['traceback'].append(traceback)

            return False
Пример #3
0
 def __init__(self, instance):
     super(Network, self).__init__(instance)
     self.api = DatabaseAsAServiceApi(self.infra)
     self.provider = NetworkProvider(self.api)