yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #64556
[Bug 1696048] [NEW] Neutron/designate sync in OS Newton
Public bug reported:
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
** Affects: neutron
Importance: Undecided
Status: New
--
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:
New
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
Follow ups