add portbinding host into vip port
When creating vip port, add 'host' into port data. Bug #1227091 Change-Id: I0f59b3b56a4a26561a10e5645c8ebf803b2c6a70
This commit is contained in:
parent
7539477a97
commit
f2828d96f5
@ -26,6 +26,7 @@ from neutron.common import rpc as q_rpc
|
|||||||
from neutron.db import agents_db
|
from neutron.db import agents_db
|
||||||
from neutron.db.loadbalancer import loadbalancer_db
|
from neutron.db.loadbalancer import loadbalancer_db
|
||||||
from neutron.extensions import lbaas_agentscheduler
|
from neutron.extensions import lbaas_agentscheduler
|
||||||
|
from neutron.extensions import portbindings
|
||||||
from neutron.openstack.common import importutils
|
from neutron.openstack.common import importutils
|
||||||
from neutron.openstack.common import log as logging
|
from neutron.openstack.common import log as logging
|
||||||
from neutron.openstack.common import rpc
|
from neutron.openstack.common import rpc
|
||||||
@ -168,7 +169,7 @@ class LoadBalancerCallbacks(object):
|
|||||||
port['admin_state_up'] = True
|
port['admin_state_up'] = True
|
||||||
port['device_owner'] = 'neutron:' + constants.LOADBALANCER
|
port['device_owner'] = 'neutron:' + constants.LOADBALANCER
|
||||||
port['device_id'] = str(uuid.uuid5(uuid.NAMESPACE_DNS, str(host)))
|
port['device_id'] = str(uuid.uuid5(uuid.NAMESPACE_DNS, str(host)))
|
||||||
|
port[portbindings.HOST_ID] = host
|
||||||
self.plugin._core_plugin.update_port(
|
self.plugin._core_plugin.update_port(
|
||||||
context,
|
context,
|
||||||
port_id,
|
port_id,
|
||||||
|
@ -22,6 +22,7 @@ from neutron.common import exceptions
|
|||||||
from neutron import context
|
from neutron import context
|
||||||
from neutron.db.loadbalancer import loadbalancer_db as ldb
|
from neutron.db.loadbalancer import loadbalancer_db as ldb
|
||||||
from neutron.db import servicetype_db as st_db
|
from neutron.db import servicetype_db as st_db
|
||||||
|
from neutron.extensions import portbindings
|
||||||
from neutron import manager
|
from neutron import manager
|
||||||
from neutron.openstack.common import uuidutils
|
from neutron.openstack.common import uuidutils
|
||||||
from neutron.plugins.common import constants
|
from neutron.plugins.common import constants
|
||||||
@ -30,6 +31,7 @@ from neutron.services.loadbalancer.drivers.haproxy import (
|
|||||||
)
|
)
|
||||||
from neutron.tests import base
|
from neutron.tests import base
|
||||||
from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer
|
from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer
|
||||||
|
from neutron.tests.unit import testlib_api
|
||||||
|
|
||||||
|
|
||||||
class TestLoadBalancerPluginBase(
|
class TestLoadBalancerPluginBase(
|
||||||
@ -275,6 +277,24 @@ class TestLoadBalancerCallbacks(TestLoadBalancerPluginBase):
|
|||||||
host='host'
|
host='host'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_plug_vip_port_mock_with_host(self):
|
||||||
|
exp = {
|
||||||
|
'device_owner': 'neutron:' + constants.LOADBALANCER,
|
||||||
|
'device_id': 'c596ce11-db30-5c72-8243-15acaae8690f',
|
||||||
|
'admin_state_up': True,
|
||||||
|
portbindings.HOST_ID: 'host'
|
||||||
|
}
|
||||||
|
with mock.patch.object(
|
||||||
|
self.plugin._core_plugin, 'update_port') as mock_update_port:
|
||||||
|
with self.pool() as pool:
|
||||||
|
with self.vip(pool=pool) as vip:
|
||||||
|
ctx = context.get_admin_context()
|
||||||
|
self.callbacks.plug_vip_port(
|
||||||
|
ctx, port_id=vip['vip']['port_id'], host='host')
|
||||||
|
mock_update_port.assert_called_once_with(
|
||||||
|
ctx, vip['vip']['port_id'],
|
||||||
|
{'port': testlib_api.SubDictMatch(exp)})
|
||||||
|
|
||||||
def test_unplug_vip_port(self):
|
def test_unplug_vip_port(self):
|
||||||
exp = {
|
exp = {
|
||||||
'device_owner': '',
|
'device_owner': '',
|
||||||
|
@ -72,3 +72,13 @@ class WebTestCase(base.BaseTestCase):
|
|||||||
result = wsgi.Serializer(
|
result = wsgi.Serializer(
|
||||||
attributes.get_attr_metadata()).serialize(data, ctype)
|
attributes.get_attr_metadata()).serialize(data, ctype)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class SubDictMatch(object):
|
||||||
|
|
||||||
|
def __init__(self, sub_dict):
|
||||||
|
self.sub_dict = sub_dict
|
||||||
|
|
||||||
|
def __eq__(self, super_dict):
|
||||||
|
return all(item in super_dict.items()
|
||||||
|
for item in self.sub_dict.items())
|
||||||
|
Loading…
Reference in New Issue
Block a user