Пример #1
0
def switch_dns_forward(databaseinfra, source_object_list, ip_attribute_name,
                       dns_attribute_name, equivalent_atribute_name,
                       workflow_dict):

    for source_object in source_object_list:
        old_ip = source_object.__getattribute__(ip_attribute_name)
        dns = source_object.__getattribute__(dns_attribute_name)
        source_object.__setattr__(dns_attribute_name, old_ip)

        target_object = source_object.__getattribute__(
            equivalent_atribute_name)
        new_ip = target_object.__getattribute__(ip_attribute_name)
        target_object.__setattr__(dns_attribute_name, dns)

        LOG.info("Changing {}: from {} to {}".format(dns, old_ip, new_ip))

        DNSAPIProvider.update_database_dns_content(databaseinfra=databaseinfra,
                                                   dns=dns,
                                                   old_ip=old_ip,
                                                   new_ip=new_ip)

        source_object.save()
        target_object.save()
        workflow_dict['objects_changed'].append({
            'source_object':
            source_object,
            'ip_attribute_name':
            ip_attribute_name,
            'dns_attribute_name':
            dns_attribute_name,
            'equivalent_atribute_name':
            equivalent_atribute_name,
        })
Пример #2
0
    def do(self):
        for instance in self.host.instances.all():
            old_instance = instance.future_instance
            DNSAPIProvider.update_database_dns_content(
                self.infra, old_instance.dns,
                old_instance.address, instance.address
            )

            instance.dns = old_instance.dns
            old_instance.dns = old_instance.address
            old_instance.save()
            instance.save()

            if self.instance.id == instance.id:
                self.instance.dns = instance.dns

        old_host = self.host.future_host
        self.host.hostname = old_host.hostname
        old_host.hostname = old_host.address

        old_host.save()
        self.host.save()

        if self.infra.endpoint and old_host.address in self.infra.endpoint:
            self.infra.endpoint = self.infra.endpoint.replace(
                old_host.address, self.host.address
            )
            self.infra.save()
Пример #3
0
def switch_dns_forward(databaseinfra, source_object_list, ip_attribute_name,
                       dns_attribute_name, equivalent_atribute_name,
                       workflow_dict):

    for source_object in source_object_list:
        old_ip = source_object.__getattribute__(ip_attribute_name)
        dns = source_object.__getattribute__(dns_attribute_name)
        source_object.__setattr__(dns_attribute_name, old_ip)

        target_object = source_object.__getattribute__(
            equivalent_atribute_name)
        new_ip = target_object.__getattribute__(ip_attribute_name)
        target_object.__setattr__(dns_attribute_name, dns)

        LOG.info("Changing {}: from {} to {}".format(dns, old_ip, new_ip))

        DNSAPIProvider.update_database_dns_content(
            databaseinfra=databaseinfra,
            dns=dns,
            old_ip=old_ip,
            new_ip=new_ip)

        source_object.save()
        target_object.save()
        workflow_dict['objects_changed'].append({
            'source_object': source_object,
            'ip_attribute_name': ip_attribute_name,
            'dns_attribute_name': dns_attribute_name,
            'equivalent_atribute_name': equivalent_atribute_name,
        })
Пример #4
0
    def undo(self, workflow_dict):
        LOG.info("Running undo...")
        try:
            databaseinfra = workflow_dict['databaseinfra']

            vip_ip = get_vip_ip_from_databaseinfra(databaseinfra=databaseinfra)

            databaseinfraattr = workflow_dict['source_secondary_ips'][0]

            dnslist = DatabaseInfraDNSList.objects.filter(
                dns__startswith="{}.".format(databaseinfra.name), type=FOXHA)
            if dnslist:
                infradns = dnslist[0]
                infradns.type = FLIPPER
                infradns.save()

                DNSAPIProvider.update_database_dns_content(
                    databaseinfra=databaseinfra,
                    dns=infradns.dns,
                    old_ip=vip_ip,
                    new_ip=databaseinfraattr.ip)

            if 'objects_changed' in workflow_dict:
                for object_changed in workflow_dict['objects_changed']:
                    switch_dns_backward(
                        databaseinfra=databaseinfra,
                        source_object_list=[
                            object_changed['source_object'],
                        ],
                        ip_attribute_name=object_changed['ip_attribute_name'],
                        dns_attribute_name=object_changed[
                            'dns_attribute_name'],
                        equivalent_atribute_name=object_changed[
                            'equivalent_atribute_name'])
                return True

            switch_dns_backward(
                databaseinfra=databaseinfra,
                source_object_list=workflow_dict['source_hosts'],
                ip_attribute_name='address',
                dns_attribute_name='hostname',
                equivalent_atribute_name='future_host')

            switch_dns_backward(
                databaseinfra=databaseinfra,
                source_object_list=workflow_dict['source_instances'],
                ip_attribute_name='address',
                dns_attribute_name='dns',
                equivalent_atribute_name='future_instance')

            return True
        except Exception:
            traceback = full_stack()

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

            return False
Пример #5
0
 def update_host_dns(self, origin_host, destiny_host):
     DNSAPIProvider.update_database_dns_content(self.infra,
                                                origin_host.hostname,
                                                origin_host.address,
                                                destiny_host.address)
     destiny_host.hostname = origin_host.hostname
     origin_host.hostname = origin_host.address
     origin_host.save()
     destiny_host.save()
Пример #6
0
    def do(self, workflow_dict):
        try:

            databaseinfra = workflow_dict['databaseinfra']
            LOG.info("Creating dns for VIP...")
            vip_ip = get_vip_ip_from_databaseinfra(databaseinfra=databaseinfra)

            vip_dns = add_dns_record(databaseinfra=databaseinfra,
                                     name=databaseinfra.name,
                                     ip=vip_ip,
                                     type=FOXHA)

            LOG.info("Updating databaseinfra endpoint...")
            databaseinfra.endpoint_dns = "{}:{}".format(vip_dns, 3306)
            databaseinfra.save()
            workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict['hosts'],
                                 workflow_dict['names']['vms']):
                host = host_name[0]

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=host_name[1],
                    ip=host.address,
                    type=HOST)
                host.save()

            LOG.info("Creating dns for instances...")
            for instance_name in zip(workflow_dict['instances'],
                                     workflow_dict['names']['vms']):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE)
                instance.save()

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(
                databaseinfra=workflow_dict['databaseinfra'])

            return True

        except Exception:
            traceback = full_stack()

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

            return False
    def do(self, workflow_dict):
        try:
            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict['hosts'],
                                 workflow_dict['names']['vms']):
                host = host_name[0]
                LOG.info("Updating host dns - host: {}".format(host))

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=host_name[1],
                    ip=host.address,
                    type=HOST)
                host.save()
                LOG.info("DNS host updated - dns: {}".format(host.hostname))

            LOG.info("Creating dns for instances...")
            for instance_name in zip(workflow_dict['instances'],
                                     workflow_dict['names']['vms']):
                instance = instance_name[0]
                LOG.info(
                    "Updating instance dns - instance: {}".format(instance))

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE)
                instance.save()
                LOG.info("DNS instance updated - dns: {}".format(instance.dns))

                if workflow_dict['qt'] == 1:
                    LOG.info("Updating databaseinfra dns endpoint")
                    databaseinfra = workflow_dict['databaseinfra']
                    databaseinfra.endpoint_dns = instance.dns + \
                        ':%i' % instance.port
                    databaseinfra.save()
                    workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(
                databaseinfra=workflow_dict['databaseinfra'])

            return True

        except Exception:
            traceback = full_stack()

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

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

            DNSAPIProvider.update_database_dns_ttl(databaseinfra=workflow_dict['databaseinfra'], ttl=None)
            return True
        except Exception:
            traceback = full_stack()

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

            return False
    def do(self, workflow_dict):
        try:
            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict['hosts'], workflow_dict['names']['vms']):
                host = host_name[0]
                LOG.info("Updating host dns - host: {}".format(host))

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=host_name[
                        1],
                    ip=host.address,
                    type=HOST)
                host.save()
                LOG.info("DNS host updated - dns: {}".format(host.hostname))

            LOG.info("Creating dns for instances...")
            for instance_name in zip(workflow_dict['instances'], workflow_dict['names']['vms']):
                instance = instance_name[0]
                LOG.info("Updating instance dns - instance: {}".format(instance))

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[
                        1],
                    ip=instance.address,
                    type=INSTANCE)
                instance.save()
                LOG.info("DNS instance updated - dns: {}".format(instance.dns))

                if workflow_dict['qt'] == 1:
                    LOG.info("Updating databaseinfra dns endpoint")
                    databaseinfra = workflow_dict['databaseinfra']
                    databaseinfra.endpoint_dns = instance.dns + \
                        ':%i' % instance.port
                    databaseinfra.save()
                    workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(
                databaseinfra=workflow_dict['databaseinfra'])

            return True

        except Exception:
            traceback = full_stack()

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

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

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.update_database_dns_ttl(databaseinfra=workflow_dict['databaseinfra'], ttl=5)

            return True
        except Exception:
            traceback = full_stack()

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

            return False
    def undo(self, workflow_dict):
        LOG.info("Running undo...")
        try:

            DNSAPIProvider.update_database_dns_ttl(
                databaseinfra=workflow_dict['databaseinfra'], ttl=None)
            return True
        except Exception:
            traceback = full_stack()

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

            return False
    def do(self, workflow_dict):
        try:

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.update_database_dns_ttl(
                databaseinfra=workflow_dict['databaseinfra'], ttl=60)

            return True
        except Exception:
            traceback = full_stack()

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

            return False
Пример #13
0
    def undo(self, workflow_dict):
        try:
            DNSAPIProvider.remove_database_dns(
                environment=workflow_dict["environment"], databaseinfraid=workflow_dict["databaseinfra"].id
            )

            DatabaseInfraDNSList.objects.filter(databaseinfra=workflow_dict["databaseinfra"].id).delete()

            return True

        except Exception:
            traceback = full_stack()

            workflow_dict["exceptions"]["error_codes"].append(DBAAS_0007)
            workflow_dict["exceptions"]["traceback"].append(traceback)

            return False
Пример #14
0
 def update_instance_dns(self, origin_instance, destiny_instance):
     DNSAPIProvider.update_database_dns_content(self.infra,
                                                origin_instance.dns,
                                                origin_instance.address,
                                                destiny_instance.address)
     destiny_instance.dns = origin_instance.dns
     origin_instance.dns = origin_instance.address
     origin_instance.save()
     destiny_instance.save()
     if self.instance.id == origin_instance.id:
         self.instance.dns = origin_instance.dns
     if self.instance.id == destiny_instance.id:
         self.instance.dns = destiny_instance.dns
     if self.instance.future_instance.id == origin_instance.id:
         self.instance.future_instance.dns = origin_instance.dns
     if self.instance.future_instance.id == destiny_instance.id:
         self.instance.future_instance.dns = destiny_instance.dns
Пример #15
0
    def do(self, workflow_dict):
        try:
            databaseinfra = workflow_dict['databaseinfra']

            vip_ip = get_vip_ip_from_databaseinfra(databaseinfra=databaseinfra)

            databaseinfraattr = workflow_dict['source_secondary_ips'][0]

            infradns = DatabaseInfraDNSList.objects.get(
                dns__startswith="{}.".format(databaseinfra.name), type=FLIPPER)
            infradns.type = FOXHA
            infradns.save()

            DNSAPIProvider.update_database_dns_content(
                databaseinfra=databaseinfra,
                dns=infradns.dns,
                old_ip=databaseinfraattr.ip,
                new_ip=vip_ip)

            workflow_dict['objects_changed'] = []

            switch_dns_forward(
                databaseinfra=databaseinfra,
                source_object_list=workflow_dict['source_hosts'],
                ip_attribute_name='address',
                dns_attribute_name='hostname',
                equivalent_atribute_name='future_host',
                workflow_dict=workflow_dict)

            switch_dns_forward(
                databaseinfra=databaseinfra,
                source_object_list=workflow_dict['source_instances'],
                ip_attribute_name='address',
                dns_attribute_name='dns',
                equivalent_atribute_name='future_instance',
                workflow_dict=workflow_dict)

            return True
        except Exception:
            traceback = full_stack()

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

            return False
    def undo(self, workflow_dict):
        try:
            DNSAPIProvider.remove_database_dns(
                environment=workflow_dict['environment'],
                databaseinfraid=workflow_dict['databaseinfra'].id)

            DatabaseInfraDNSList.objects.filter(
                databaseinfra=workflow_dict['databaseinfra'].id).delete()

            return True

        except Exception:
            traceback = full_stack()

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

            return False
Пример #17
0
    def do(self):
        LOG.info('Creating DNS for {}'.format(self.instance))

        host = self.instance.hostname
        host.hostname = add_dns_record(databaseinfra=self.databaseinfra,
                                       name=self.instance.vm_name,
                                       ip=host.address,
                                       type=HOST)
        host.save()

        self.instance.dns = add_dns_record(databaseinfra=self.databaseinfra,
                                           name=self.instance.vm_name,
                                           ip=self.instance.address,
                                           type=INSTANCE)
        self.instance.save()

        DNSAPIProvider.create_database_dns_for_ip(
            databaseinfra=self.databaseinfra, ip=self.instance.address)
Пример #18
0
    def do(self):
        for instance in self.host.instances.all():
            DNSAPIProvider.update_database_dns_content(self.infra,
                                                       instance.dns,
                                                       instance.address,
                                                       self.host.address)
            instance.address = self.host.address
            instance.save()

        DNSAPIProvider.update_database_dns_content(self.infra,
                                                   self.host.hostname,
                                                   self.instance.address,
                                                   self.host.address)

        if self.infra.endpoint and self.instance.address in self.infra.endpoint:
            self.infra.endpoint = self.infra.endpoint.replace(
                self.instance.address, self.host.address)
            self.infra.save()
        self.instance.address = self.host.address
Пример #19
0
    def do(self, workflow_dict):
        try:

            for infra_attr in workflow_dict['source_secondary_ips']:
                if not infra_attr.is_write:
                    LOG.info("Calling dnsapi provider...")
                    DNSAPIProvider.remove_database_dns(
                        environment=workflow_dict['environment'],
                        databaseinfraid=workflow_dict['databaseinfra'].id,
                        dns=infra_attr.dns)

            return True
        except Exception:
            traceback = full_stack()

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

            return False
Пример #20
0
    def update_host_dns(self, origin_host, destiny_host):
        for instance in self.instances:
            DNSAPIProvider.update_database_dns_content(self.infra,
                                                       instance.dns,
                                                       origin_host.address,
                                                       destiny_host.address)

        DNSAPIProvider.update_database_dns_content(self.infra,
                                                   origin_host.hostname,
                                                   origin_host.address,
                                                   destiny_host.address)

        destiny_host.hostname = origin_host.hostname
        origin_host.hostname = origin_host.address
        origin_host.save()
        destiny_host.save()

        if self.infra.endpoint and origin_host.address in self.infra.endpoint:
            self.infra.endpoint = self.infra.endpoint.replace(
                origin_host.address, destiny_host.address)
            self.infra.save()
Пример #21
0
    def update_host_dns(self, origin_host, destiny_host):
        for instance in self.instances:
            DNSAPIProvider.update_database_dns_content(
                self.infra, instance.dns,
                origin_host.address, destiny_host.address
            )

        DNSAPIProvider.update_database_dns_content(
            self.infra, origin_host.hostname,
            origin_host.address, destiny_host.address
        )

        destiny_host.hostname = origin_host.hostname
        origin_host.hostname = origin_host.address
        origin_host.save()
        destiny_host.save()

        if self.infra.endpoint and origin_host.address in self.infra.endpoint:
            self.infra.endpoint = self.infra.endpoint.replace(
                origin_host.address, destiny_host.address
            )
            self.infra.save()
Пример #22
0
def switch_dns_backward(databaseinfra, source_object_list, ip_attribute_name,
                        dns_attribute_name, equivalent_atribute_name):

    for source_object in source_object_list:
        target_object = source_object.__getattribute__(equivalent_atribute_name)
        old_ip = target_object.__getattribute__(ip_attribute_name)
        dns = target_object.__getattribute__(dns_attribute_name)
        target_object.__setattr__(dns_attribute_name, old_ip)

        new_ip = source_object.__getattribute__(ip_attribute_name)
        source_object.__setattr__(dns_attribute_name, dns)

        LOG.info("Changing {}: from {} to {}".format(dns, old_ip, new_ip))

        DNSAPIProvider.update_database_dns_content(
            databaseinfra=databaseinfra,
            dns=dns,
            old_ip=old_ip,
            new_ip=new_ip)

        target_object.save()
        source_object.save()
Пример #23
0
def switch_dns_backward(databaseinfra, source_object_list, ip_attribute_name,
                        dns_attribute_name, equivalent_atribute_name):

    for source_object in source_object_list:
        target_object = source_object.__getattribute__(
            equivalent_atribute_name)
        old_ip = target_object.__getattribute__(ip_attribute_name)
        dns = target_object.__getattribute__(dns_attribute_name)
        target_object.__setattr__(dns_attribute_name, old_ip)

        new_ip = source_object.__getattribute__(ip_attribute_name)
        source_object.__setattr__(dns_attribute_name, dns)

        LOG.info("Changing {}: from {} to {}".format(dns, old_ip, new_ip))

        DNSAPIProvider.update_database_dns_content(databaseinfra=databaseinfra,
                                                   dns=dns,
                                                   old_ip=old_ip,
                                                   new_ip=new_ip)

        target_object.save()
        source_object.save()
Пример #24
0
    def undo(self):
        LOG.info('Running undo of CreateDNS')

        DNSAPIProvider.remove_databases_dns_for_ip(
            databaseinfra=self.databaseinfra, ip=self.instance.address)
    def do(self, workflow_dict):
        try:
            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict['hosts'],
                                 workflow_dict['names']['vms']):
                host = host_name[0]

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=host_name[1],
                    ip=host.address,
                    type=HOST)
                host.save()

            instances_redis = []
            instances_sentinel = []

            for instance in workflow_dict['instances']:
                if instance.instance_type == Instance.REDIS_SENTINEL:
                    instances_sentinel.append(instance)
                else:
                    instances_redis.append(instance)

            LOG.info("Creating dns for instances...")
            for instance_name in zip(instances_redis,
                                     workflow_dict['names']['vms']):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE)
                instance.save()

                if workflow_dict['qt'] == 1:
                    LOG.info("Updating databaseinfra dns endpoint")
                    databaseinfra = workflow_dict['databaseinfra']
                    databaseinfra.endpoint_dns = instance.dns + \
                        ':%i' % instance.port
                    databaseinfra.save()
                    workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Creating dns for sentinel instances...")
            for instance_name in zip(instances_sentinel,
                                     workflow_dict['names']['vms']):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE,
                    database_sufix='sentinel')
                instance.save()

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(
                databaseinfra=workflow_dict['databaseinfra'])

            return True

        except Exception:
            traceback = full_stack()

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

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

            if 'databaseinfraattr' in workflow_dict:

                LOG.info("Creating dns for databaseinfraattr...")
                for infra_attr in workflow_dict['databaseinfraattr']:

                    if infra_attr.is_write:
                        dnsname = workflow_dict['databaseinfra'].name
                    else:
                        dnsname = workflow_dict['databaseinfra'].name + '-r'

                    dnsname = add_dns_record(
                        databaseinfra=workflow_dict['databaseinfra'],
                        name=dnsname,
                        ip=infra_attr.ip,
                        type=FLIPPER)

                    infra_attr.dns = dnsname
                    infra_attr.save()

                    if infra_attr.is_write:
                        LOG.info("Updating databaseinfra dns endpoint")
                        databaseinfra = workflow_dict['databaseinfra']
                        databaseinfra.endpoint_dns = infra_attr.dns + ':%i' % 3306
                        databaseinfra.save()
                        workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict['hosts'],
                                 workflow_dict['names']['vms']):
                host = host_name[0]

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=host_name[1],
                    ip=host.address,
                    type=HOST)
                host.save()

            LOG.info("Creating dns for instances...")
            for instance_name in zip(workflow_dict['instances'],
                                     workflow_dict['names']['vms']):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE)
                instance.save()

                if workflow_dict['qt'] == 1:
                    LOG.info("Updating databaseinfra dns endpoint")
                    databaseinfra = workflow_dict['databaseinfra']
                    databaseinfra.endpoint_dns = instance.dns + ':%i' % instance.port
                    databaseinfra.save()
                    workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(
                databaseinfra=workflow_dict['databaseinfra'])

            return True

        except Exception, e:
            traceback = full_stack()

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

            return False
    def do(self, workflow_dict):
        try:

            if 'databaseinfraattr' in workflow_dict:

                LOG.info("Creating dns for databaseinfraattr...")
                for infra_attr in workflow_dict['databaseinfraattr']:

                    if infra_attr.is_write:
                        dnsname = workflow_dict['databaseinfra'].name
                    else:
                        dnsname = workflow_dict['databaseinfra'].name + '-r'

                    dnsname = add_dns_record(
                        databaseinfra=workflow_dict['databaseinfra'],
                        name=dnsname,
                        ip=infra_attr.ip,
                        type=FLIPPER)

                    infra_attr.dns = dnsname
                    infra_attr.save()

                    if infra_attr.is_write:
                        LOG.info("Updating databaseinfra dns endpoint")
                        databaseinfra = workflow_dict['databaseinfra']
                        databaseinfra.endpoint_dns = infra_attr.dns + \
                            ':%i' % 3306
                        databaseinfra.save()
                        workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict['hosts'], workflow_dict['names']['vms']):
                host = host_name[0]

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=host_name[
                        1],
                    ip=host.address,
                    type=HOST)
                host.save()

            LOG.info("Creating dns for instances...")
            for instance_name in zip(workflow_dict['instances'], workflow_dict['names']['vms']):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict['databaseinfra'],
                    name=instance_name[
                        1],
                    ip=instance.address,
                    type=INSTANCE)
                instance.save()

                if workflow_dict['qt'] == 1:
                    LOG.info("Updating databaseinfra dns endpoint")
                    databaseinfra = workflow_dict['databaseinfra']
                    databaseinfra.endpoint_dns = instance.dns + \
                        ':%i' % instance.port
                    databaseinfra.save()
                    workflow_dict['databaseinfra'] = databaseinfra

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(
                databaseinfra=workflow_dict['databaseinfra'])

            return True

        except Exception:
            traceback = full_stack()

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

            return False
Пример #28
0
    def do(self, workflow_dict):
        try:
            LOG.info("Creating dns for hosts...")
            for host_name in zip(workflow_dict["hosts"], workflow_dict["names"]["vms"]):
                host = host_name[0]

                host.hostname = add_dns_record(
                    databaseinfra=workflow_dict["databaseinfra"], name=host_name[1], ip=host.address, type=HOST
                )
                host.save()

            instances_redis = []
            instances_sentinel = []

            for instance in workflow_dict["instances"]:
                if instance.instance_type == Instance.REDIS_SENTINEL:
                    instances_sentinel.append(instance)
                else:
                    instances_redis.append(instance)

            LOG.info("Creating dns for instances...")
            for instance_name in zip(instances_redis, workflow_dict["names"]["vms"]):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict["databaseinfra"],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE,
                )
                instance.save()

                if workflow_dict["qt"] == 1:
                    LOG.info("Updating databaseinfra dns endpoint")
                    databaseinfra = workflow_dict["databaseinfra"]
                    databaseinfra.endpoint_dns = instance.dns + ":%i" % instance.port
                    databaseinfra.save()
                    workflow_dict["databaseinfra"] = databaseinfra

            LOG.info("Creating dns for sentinel instances...")
            for instance_name in zip(instances_sentinel, workflow_dict["names"]["vms"]):
                instance = instance_name[0]

                instance.dns = add_dns_record(
                    databaseinfra=workflow_dict["databaseinfra"],
                    name=instance_name[1],
                    ip=instance.address,
                    type=INSTANCE,
                    database_sufix="sentinel",
                )
                instance.save()

            LOG.info("Calling dnsapi provider...")
            DNSAPIProvider.create_database_dns(databaseinfra=workflow_dict["databaseinfra"])

            return True

        except Exception:
            traceback = full_stack()

            workflow_dict["exceptions"]["error_codes"].append(DBAAS_0007)
            workflow_dict["exceptions"]["traceback"].append(traceback)

            return False
Пример #29
0
 def update_vip_dns(self, origin_vip, destiny_vip):
     if origin_vip and destiny_vip:
         vip_dns = self.infra.endpoint_dns.split(':')[0]
         DNSAPIProvider.update_database_dns_content(self.infra, vip_dns,
                                                    origin_vip.vip_ip,
                                                    destiny_vip.vip_ip)