Fix use of Neutron port ``device_owner`` field

Adapt functional test bundles to test with DVR.

Closes-Bug: #1813931
Change-Id: I61466dceb22d4dc769716a4ab1a738525ce67518
This commit is contained in:
Frode Nordahl 2019-07-10 13:50:05 +02:00
parent 42e8dda01e
commit 52af8d8d6d
No known key found for this signature in database
GPG Key ID: 6A5D59A3BA48373F
11 changed files with 118 additions and 68 deletions

View File

@ -31,6 +31,8 @@ from keystoneauth1 import exceptions as keystone_exceptions
from neutronclient.v2_0 import client as neutron_client
from novaclient import client as nova_client
import neutron_lib.constants
import charm.openstack.octavia as octavia # for constants
import charmhelpers.core as ch_core
@ -213,7 +215,21 @@ def get_hm_port(identity_service, local_unit_name, local_unit_address):
# before it is created in the local units OVSDB
'admin_state_up': False,
'binding:host_id': socket.gethostname(),
'device_owner': 'Octavia:health-mgr',
# NOTE(fnordahl): device_owner has special meaning
# for Neutron [0], and things may break if set to
# an arbritary value. Using a value known by Neutron
# is_dvr_serviced() function [1] gets us the correct
# rules appiled to the port to allow IPv6 Router
# Advertisement packets through LP: #1813931
# 0: https://github.com/openstack/neutron/blob/
# 916347b996684c82b29570cd2962df3ea57d4b16/
# neutron/plugins/ml2/drivers/openvswitch/
# agent/ovs_dvr_neutron_agent.py#L592
# 1: https://github.com/openstack/neutron/blob/
# 50308c03c960bd6e566f328a790b8e05f5e92ead/
# neutron/common/utils.py#L200
'device_owner': (
neutron_lib.constants.DEVICE_OWNER_LOADBALANCERV2),
'security_groups': [
health_secgrp['id'],
],

View File

@ -28,8 +28,6 @@ relations:
- neutron-api:amqp
- - rabbitmq-server:amqp
- glance:amqp
- - rabbitmq-server:amqp
- neutron-gateway:amqp
- - rabbitmq-server:amqp
- nova-cloud-controller:amqp
- - rabbitmq-server:amqp
@ -40,15 +38,17 @@ relations:
- nova-cloud-controller:neutron-api
- - neutron-api:neutron-load-balancer
- octavia:neutron-api
- - neutron-gateway:quantum-network-service
- nova-cloud-controller:quantum-network-service
- - rabbitmq-server:amqp
- neutron-openvswitch:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch:neutron-plugin-api
- - neutron-openvswitch:neutron-plugin
- nova-compute:neutron-plugin
- - neutron-openvswitch:neutron-plugin
- - rabbitmq-server:amqp
- neutron-openvswitch-octavia:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch-octavia:neutron-plugin-api
- - neutron-openvswitch-octavia:neutron-plugin
- octavia:neutron-openvswitch
- - hacluster-octavia:ha
- octavia:ha
@ -83,14 +83,19 @@ applications:
debug: True
flat-network-providers: physnet1
neutron-security-groups: True
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
bridge-mappings: physnet1:br-ex
debug: True
enable-dvr: True
neutron-openvswitch:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
debug: True
enable-local-dhcp-and-metadata: True
use-dvr-snat: True
prevent-arp-spoofing: False
firewall-driver: openvswitch
bridge-mappings: physnet1:br-ex
neutron-openvswitch-octavia:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
@ -121,8 +126,8 @@ applications:
charm: ../../../octavia
num_units: 3
options:
debug: True
openstack-origin: cloud:bionic-rocky
debug: True
spare-pool-size: 2
loadbalancer-topology: 'ACTIVE_STANDBY'
vip: 'ADD YOUR VIP HERE'
@ -139,3 +144,4 @@ applications:
charm: cs:~openstack-charmers-next/octavia-diskimage-retrofit
options:
amp-image-tag: 'octavia-amphora'
retrofit-uca-pocket: rocky

View File

@ -28,8 +28,6 @@ relations:
- neutron-api:amqp
- - rabbitmq-server:amqp
- glance:amqp
- - rabbitmq-server:amqp
- neutron-gateway:amqp
- - rabbitmq-server:amqp
- nova-cloud-controller:amqp
- - rabbitmq-server:amqp
@ -40,15 +38,17 @@ relations:
- nova-cloud-controller:neutron-api
- - neutron-api:neutron-load-balancer
- octavia:neutron-api
- - neutron-gateway:quantum-network-service
- nova-cloud-controller:quantum-network-service
- - rabbitmq-server:amqp
- neutron-openvswitch:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch:neutron-plugin-api
- - neutron-openvswitch:neutron-plugin
- nova-compute:neutron-plugin
- - neutron-openvswitch:neutron-plugin
- - rabbitmq-server:amqp
- neutron-openvswitch-octavia:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch-octavia:neutron-plugin-api
- - neutron-openvswitch-octavia:neutron-plugin
- octavia:neutron-openvswitch
- - glance-simplestreams-sync:juju-info
- octavia-diskimage-retrofit:juju-info
@ -81,14 +81,19 @@ applications:
debug: True
flat-network-providers: physnet1
neutron-security-groups: True
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
openstack-origin: cloud:bionic-rocky
bridge-mappings: physnet1:br-ex
debug: True
enable-dvr: True
neutron-openvswitch:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
debug: True
enable-local-dhcp-and-metadata: True
use-dvr-snat: True
prevent-arp-spoofing: False
firewall-driver: openvswitch
bridge-mappings: physnet1:br-ex
neutron-openvswitch-octavia:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
@ -116,8 +121,8 @@ applications:
charm: ../../../octavia
num_units: 3
options:
debug: True
openstack-origin: cloud:bionic-rocky
debug: True
spare-pool-size: 2
loadbalancer-topology: 'ACTIVE_STANDBY'
rabbitmq-server:
@ -133,3 +138,4 @@ applications:
charm: cs:~openstack-charmers-next/octavia-diskimage-retrofit
options:
amp-image-tag: 'octavia-amphora'
retrofit-uca-pocket: rocky

View File

@ -28,8 +28,6 @@ relations:
- neutron-api:amqp
- - rabbitmq-server:amqp
- glance:amqp
- - rabbitmq-server:amqp
- neutron-gateway:amqp
- - rabbitmq-server:amqp
- nova-cloud-controller:amqp
- - rabbitmq-server:amqp
@ -40,15 +38,17 @@ relations:
- nova-cloud-controller:neutron-api
- - neutron-api:neutron-load-balancer
- octavia:neutron-api
- - neutron-gateway:quantum-network-service
- nova-cloud-controller:quantum-network-service
- - rabbitmq-server:amqp
- neutron-openvswitch:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch:neutron-plugin-api
- - neutron-openvswitch:neutron-plugin
- nova-compute:neutron-plugin
- - neutron-openvswitch:neutron-plugin
- - rabbitmq-server:amqp
- neutron-openvswitch-octavia:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch-octavia:neutron-plugin-api
- - neutron-openvswitch-octavia:neutron-plugin
- octavia:neutron-openvswitch
- - hacluster-octavia:ha
- octavia:ha
@ -83,14 +83,19 @@ applications:
debug: True
flat-network-providers: physnet1
neutron-security-groups: True
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
openstack-origin: cloud:bionic-stein
bridge-mappings: physnet1:br-ex
debug: True
enable-dvr: True
neutron-openvswitch:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
debug: True
enable-local-dhcp-and-metadata: True
use-dvr-snat: True
prevent-arp-spoofing: False
firewall-driver: openvswitch
bridge-mappings: physnet1:br-ex
neutron-openvswitch-octavia:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
@ -121,8 +126,8 @@ applications:
charm: ../../../octavia
num_units: 3
options:
debug: True
openstack-origin: cloud:bionic-stein
debug: True
spare-pool-size: 2
loadbalancer-topology: 'ACTIVE_STANDBY'
vip: 'ADD YOUR VIP HERE'

View File

@ -28,8 +28,6 @@ relations:
- neutron-api:amqp
- - rabbitmq-server:amqp
- glance:amqp
- - rabbitmq-server:amqp
- neutron-gateway:amqp
- - rabbitmq-server:amqp
- nova-cloud-controller:amqp
- - rabbitmq-server:amqp
@ -40,15 +38,17 @@ relations:
- nova-cloud-controller:neutron-api
- - neutron-api:neutron-load-balancer
- octavia:neutron-api
- - neutron-gateway:quantum-network-service
- nova-cloud-controller:quantum-network-service
- - rabbitmq-server:amqp
- neutron-openvswitch:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch:neutron-plugin-api
- - neutron-openvswitch:neutron-plugin
- nova-compute:neutron-plugin
- - neutron-openvswitch:neutron-plugin
- - rabbitmq-server:amqp
- neutron-openvswitch-octavia:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch-octavia:neutron-plugin-api
- - neutron-openvswitch-octavia:neutron-plugin
- octavia:neutron-openvswitch
- - glance-simplestreams-sync:juju-info
- octavia-diskimage-retrofit:juju-info
@ -81,14 +81,19 @@ applications:
debug: True
flat-network-providers: physnet1
neutron-security-groups: True
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
openstack-origin: cloud:bionic-stein
bridge-mappings: physnet1:br-ex
debug: True
enable-dvr: True
neutron-openvswitch:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
debug: True
enable-local-dhcp-and-metadata: True
use-dvr-snat: True
prevent-arp-spoofing: False
firewall-driver: openvswitch
bridge-mappings: physnet1:br-ex
neutron-openvswitch-octavia:
series: bionic
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
@ -116,8 +121,8 @@ applications:
charm: ../../../octavia
num_units: 3
options:
debug: True
openstack-origin: cloud:bionic-stein
debug: True
spare-pool-size: 2
loadbalancer-topology: 'ACTIVE_STANDBY'
rabbitmq-server:

View File

@ -28,8 +28,6 @@ relations:
- neutron-api:amqp
- - rabbitmq-server:amqp
- glance:amqp
- - rabbitmq-server:amqp
- neutron-gateway:amqp
- - rabbitmq-server:amqp
- nova-cloud-controller:amqp
- - rabbitmq-server:amqp
@ -40,15 +38,17 @@ relations:
- nova-cloud-controller:neutron-api
- - neutron-api:neutron-load-balancer
- octavia:neutron-api
- - neutron-gateway:quantum-network-service
- nova-cloud-controller:quantum-network-service
- - rabbitmq-server:amqp
- neutron-openvswitch:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch:neutron-plugin-api
- - neutron-openvswitch:neutron-plugin
- nova-compute:neutron-plugin
- - neutron-openvswitch:neutron-plugin
- - rabbitmq-server:amqp
- neutron-openvswitch-octavia:amqp
- - neutron-api:neutron-plugin-api
- neutron-openvswitch-octavia:neutron-plugin-api
- - neutron-openvswitch-octavia:neutron-plugin
- octavia:neutron-openvswitch
- - glance-simplestreams-sync:juju-info
- octavia-diskimage-retrofit:juju-info
@ -76,13 +76,19 @@ applications:
debug: True
flat-network-providers: physnet1
neutron-security-groups: True
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
bridge-mappings: physnet1:br-ex
debug: True
enable-dvr: True
neutron-openvswitch:
series: disco
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0
options:
debug: True
enable-local-dhcp-and-metadata: True
use-dvr-snat: True
prevent-arp-spoofing: False
firewall-driver: openvswitch
bridge-mappings: physnet1:br-ex
neutron-openvswitch-octavia:
series: disco
charm: cs:~openstack-charmers-next/neutron-openvswitch
num_units: 0

View File

@ -1,6 +1,6 @@
charm_name: octavia
gate_bundles:
- bionic-stein
- bionic-stein-ha
- bionic-rocky-ha
smoke_bundles:
- bionic-stein
@ -8,8 +8,6 @@ comment: |
Holding the ``disco-stein`` bundle pending LP: #1824112
The `bionic-rocky-lxd` bundle currently fails due to a bug in LXD.
https://github.com/lxc/lxd/issues/4947
Holding the ``cosmic-rocky-lxd`` bundle awaiting required changes to CI.
Holding the ``cosmic-rocky-ha`` bundle due to it consitently timing out atm.
dev_bundles:
- disco-stein
- bionic-rocky-lxd
@ -27,6 +25,7 @@ configure:
- zaza.openstack.charm_tests.nova.setup.create_flavors
- zaza.openstack.charm_tests.nova.setup.manage_ssh_key
- zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network
- zaza.openstack.charm_tests.octavia.setup.centralized_fip_network
- zaza.openstack.charm_tests.octavia.setup.prepare_payload_instance
- zaza.openstack.charm_tests.octavia.setup.prepare_payload_instance
comment: |

View File

@ -2,3 +2,5 @@ keystoneauth1
pbr
python-novaclient
python-neutronclient
neutron_lib
pytest-runner

View File

@ -29,8 +29,11 @@ neutronclient = mock.MagicMock()
sys.modules['charms.leadership'] = charms.leadership
keystoneauth1 = mock.MagicMock()
novaclient = mock.MagicMock()
neutron_lib = mock.MagicMock()
sys.modules['charms.leadership'] = charms.leadership
sys.modules['keystoneauth1'] = keystoneauth1
sys.modules['novaclient'] = novaclient
sys.modules['neutronclient'] = neutronclient
sys.modules['neutronclient.v2_0'] = neutronclient.v2_0
sys.modules['neutron_lib'] = neutron_lib
sys.modules['neutron_lib.constants'] = neutron_lib.constants

View File

@ -143,6 +143,8 @@ class TestAPICrud(test_utils.PatchHelper):
self.patch('subprocess.check_output', 'check_output')
self.patch('charms.reactive.set_flag', 'set_flag')
identity_service = mock.MagicMock()
self.patch_object(api_crud, 'neutron_lib')
self.neutron_lib.constants.DEVICE_OWNER_LOADBALANCERV2 = 'fakeowner'
result = api_crud.get_hm_port(identity_service,
'fake-unit-name',
'192.0.2.42')
@ -157,7 +159,7 @@ class TestAPICrud(test_utils.PatchHelper):
'port': {
'admin_state_up': False,
'binding:host_id': 'fakehostname',
'device_owner': 'Octavia:health-mgr',
'device_owner': 'fakeowner',
'security_groups': ['fake-secgrp-uuid'],
'name': 'octavia-health-manager-'
'fake-unit-name-listen-port',