← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1696048] Re: Neutron/designate sync in OS Newton

 

[Expired for neutron because there has been no activity for 60 days.]

** Changed in: neutron
       Status: Incomplete => Expired

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1696048

Title:
  Neutron/designate sync in OS Newton

Status in neutron:
  Expired

Bug description:
  Hi
  I installed designate on Newton openstack in Centos 7.3.
  After complete designate setup as indicated in
  https://docs.openstack.org/project-install-guide/dns/ocata/install-rdo.html (I have not found specific doc for newton).
    - All processes are running (central, api, mdns, worker, producer, sink)
    - I created zone with my domain.
    - I updated my network to indicates domain name ( update with --dns-domain)
    - I updated my server.conf on the 3 HA neutron servers (add '[designate]' group directives, add final dot to my [default] 'dns_domain' attribute and add in '[default]' the driver : 'external_dns_driver = designate'.
    - I updated my ml2 plugin to add 'dns' in 'extension_drivers' attribute.
    - I restarted neutron servers.
  All commands as 'openstack dns service list' and 'openstack zone list and openstack recordset list xxx' are ok.
  Now, when i create a VM from dashboard, the VM is created without problem (as without designate) but no recordset is created. I don't see any call to port 9001 in api log. It seems that designate plugin is not called...
  So to debug :
    - I installed devstack/newton with designate.
    - Analyzing neutron log, I've set some logging into neutron.plugins.ml2.extensions.dns_integration.py as it contains callbacks used by neutron.
  When I create an instance on the private newtork (which has dns_domain set to my test domain) neutron schedules the callback '_create_port_in_external_dns_service'.

  So, I set into it some trace and the problem is that function return
  because port id (newly created) is not in db :

  ...
  def _create_port_in_external_dns_service(resource, event, trigger, **kwargs):
     dns_driver = _get_dns_driver()
     if not dns_driver:
        LOG.info(_LE("NO DRIVER"))
        return
     context = kwargs['context']
     port = kwargs['port']
     dns_data_db = context.session.query(dns_db.PortDNS).filter_by(
     port_id=port['id']).one_or_none()
     LOG.info(_LE("PORT : " + port['id']))    <--------- port id is really id newly created
     if not (dns_data_db and dns_data_db['current_dns_name']):
        LOG.info(_LE("NO DNS_DATA_DB : "))
        return                                <--------- I return here !
     records = [ip['ip_address'] for ip in port['fixed_ips']]
     _send_data_to_external_dns_service(context, dns_driver,
                            dns_data_db['current_dns_domain'],
                            dns_data_db['current_dns_name'],
                            records)
  ...

  After VM creation, if I do a 'openstack port list', port id is present !
  Async problem ?
  Many thanks

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1696048/+subscriptions


References