Exemplo n.º 1
0
    def _process_dns_floatingip_create_precommit(self, context,
                                                 floatingip_data, req_data):
        # expects to be called within a plugin's session
        dns_domain = req_data.get(dns.DNSDOMAIN)
        if not validators.is_attr_set(dns_domain):
            return
        if not self.dns_driver:
            return

        dns_name = req_data[dns.DNSNAME]
        self._validate_floatingip_dns(dns_name, dns_domain)

        current_dns_name, current_dns_domain = (
            self._get_requested_state_for_external_dns_service_create(
                context, floatingip_data, req_data))
        dns_actions_data = None
        if current_dns_name and current_dns_domain:
            fip_obj.FloatingIPDNS(
                context,
                floatingip_id=floatingip_data['id'],
                dns_name=req_data[dns.DNSNAME],
                dns_domain=req_data[dns.DNSDOMAIN],
                published_dns_name=current_dns_name,
                published_dns_domain=current_dns_domain).create()
            dns_actions_data = DNSActionsData(
                current_dns_name=current_dns_name,
                current_dns_domain=current_dns_domain)
        floatingip_data['dns_name'] = dns_name
        floatingip_data['dns_domain'] = dns_domain
        return dns_actions_data
Exemplo n.º 2
0
 def _process_dns_floatingip_update_precommit(self, context,
                                              floatingip_data):
     # expects to be called within a plugin's session
     if not utils.is_extension_supported(self._core_plugin,
                                         dns.Dns.get_alias()):
         return
     if not self.dns_driver:
         return
     dns_data_db = fip_obj.FloatingIPDNS.get_object(
         context, floatingip_id=floatingip_data['id'])
     if dns_data_db and dns_data_db['dns_name']:
         # dns_name and dns_domain assigned for floating ip. It doesn't
         # matter whether they are defined for internal port
         return
     current_dns_name, current_dns_domain = (
         self._get_requested_state_for_external_dns_service_update(
             context, floatingip_data))
     if dns_data_db:
         if (dns_data_db['published_dns_name'] != current_dns_name or
                 dns_data_db['published_dns_domain'] != current_dns_domain):
             dns_actions_data = DNSActionsData(
                 previous_dns_name=dns_data_db['published_dns_name'],
                 previous_dns_domain=dns_data_db['published_dns_domain'])
             if current_dns_name and current_dns_domain:
                 dns_data_db['published_dns_name'] = current_dns_name
                 dns_data_db['published_dns_domain'] = current_dns_domain
                 dns_actions_data.current_dns_name = current_dns_name
                 dns_actions_data.current_dns_domain = current_dns_domain
             else:
                 dns_data_db.delete()
             return dns_actions_data
         else:
             return
     if current_dns_name and current_dns_domain:
         fip_obj.FloatingIPDNS(
             context,
             floatingip_id=floatingip_data['id'],
             dns_name='',
             dns_domain='',
             published_dns_name=current_dns_name,
             published_dns_domain=current_dns_domain).create()
         return DNSActionsData(current_dns_name=current_dns_name,
                               current_dns_domain=current_dns_domain)