Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

kilo neutron-server with juno neutron-l3-agent

As I'm trying to make an upgrade from juno to kilo with minimal downtime with an extra server given on purpose, I'm trying to make neutron working with different versions for the services.

The architecture is composed by one controller which has the neutron server, many compute nodes with the neutron openvswitch plugin and a network node whith openvswitch, L3 agent, dhcp agent and metadata agent. This server has an access to an external network.

All servers are on Ubuntu 14.04.3 LTS

All services on the controller are in the kilo version, and so is neutron-server. On the other hand, every neutron services on network nodes are under juno version.

My problem comes when the l3-agent tries to create a router. Here is exactly what I get :

2015-11-03 15:14:08.065 30892 DEBUG neutron.agent.linux.utils [-] 
Command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ip', 'netns', 'exec', 'qrouter-34876fb1-6218-4108-a013-5d4f8c1f2767', 'ip', '-o', '-d', 'link', 'list']
Exit code: 0
Stdout: '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default \\    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 \n'
Stderr: '' execute /usr/lib/python2.7/dist-packages/neutron/agent/linux/utils.py:81
2015-11-03 15:14:08.067 30892 ERROR neutron.agent.l3_agent [-] 'subnet'
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent Traceback (most recent call last):
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent   File "/usr/lib/python2.7/dist-packages/neutron/common/utils.py", line 341, in call
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent     return func(*args, **kwargs)
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent   File "/usr/lib/python2.7/dist-packages/neutron/agent/l3_agent.py", line 945, in process_router
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent     self._set_subnet_info(ex_gw_port)
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent   File "/usr/lib/python2.7/dist-packages/neutron/agent/l3_agent.py", line 861, in _set_subnet_info
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent     prefixlen = netaddr.IPNetwork(port['subnet']['cidr']).prefixlen
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent KeyError: 'subnet'
2015-11-03 15:14:08.067 30892 TRACE neutron.agent.l3_agent 
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/eventlet/greenpool.py", line 80, in _spawn_n_impl
    func(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/common/utils.py", line 344, in call
    self.logger(e)
  File "/usr/lib/python2.7/dist-packages/neutron/openstack/common/excutils.py", line 82, in __exit__
    six.reraise(self.type_, self.value, self.tb)
  File "/usr/lib/python2.7/dist-packages/neutron/common/utils.py", line 341, in call
    return func(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/neutron/agent/l3_agent.py", line 945, in process_router
    self._set_subnet_info(ex_gw_port)
  File "/usr/lib/python2.7/dist-packages/neutron/agent/l3_agent.py", line 861, in _set_subnet_info
    prefixlen = netaddr.IPNetwork(port['subnet']['cidr']).prefixlen
KeyError: 'subnet'
2015-11-03 15:14:08.069 30892 DEBUG neutron.agent.l3_agent [-] Finished a router update for 34876fb1-6218-4108-a013-5d4f8c1f2767 _process_router_update /usr/lib/python2.7/dist-packages/neutron/agent/l3_agent.py:1870

I have also seen how a router is written in JSON format and overall how its ports are written. From what I have seen, there is a 'subnets' attribute but no 'subnet', I tried to replace but then python complained that lists must be indexed with integers and not str.

My question is, like there is for nova with the [upgrade_levels] section, is there something in kilo neutron-server to ensure backward compatibility ?