from neutron.db import agents_db
from neutron.db.loadbalancer import loadbalancer_db
from neutron.extensions import lbaas_agentscheduler
+from neutron.extensions import portbindings
from neutron.openstack.common import importutils
from neutron.openstack.common import log as logging
from neutron.openstack.common import rpc
port['admin_state_up'] = True
port['device_owner'] = 'neutron:' + constants.LOADBALANCER
port['device_id'] = str(uuid.uuid5(uuid.NAMESPACE_DNS, str(host)))
-
+ port[portbindings.HOST_ID] = host
self.plugin._core_plugin.update_port(
context,
port_id,
from neutron import context
from neutron.db.loadbalancer import loadbalancer_db as ldb
from neutron.db import servicetype_db as st_db
+from neutron.extensions import portbindings
from neutron import manager
from neutron.openstack.common import uuidutils
from neutron.plugins.common import constants
)
from neutron.tests import base
from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer
+from neutron.tests.unit import testlib_api
class TestLoadBalancerPluginBase(
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):
exp = {
'device_owner': '',
result = wsgi.Serializer(
attributes.get_attr_metadata()).serialize(data, ctype)
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())