N1Kv: Fix failing network and port creates
Due to the change in name of an attribute from "profile_id" to "profile"
in Neutron attribute extensions for networks and ports, network and port
creations fail from the dashboard since dashboard is still using
"n1kv:profile_id" rather than "n1kv:profile".
Change-Id: I3a0508eda6b7b977d4f5bc5304d0ef13bd4092f2
Closes-Bug: 1474618
(cherry picked from commit b93e868925
)
This commit is contained in:
parent
0e4745faa8
commit
b84218d84f
|
@ -751,7 +751,7 @@ def port_create(request, network_id, **kwargs):
|
|||
LOG.debug("port_create(): netid=%s, kwargs=%s" % (network_id, kwargs))
|
||||
# In the case policy profiles are being used, profile id is needed.
|
||||
if 'policy_profile_id' in kwargs:
|
||||
kwargs['n1kv:profile_id'] = kwargs.pop('policy_profile_id')
|
||||
kwargs['n1kv:profile'] = kwargs.pop('policy_profile_id')
|
||||
kwargs = unescape_port_kwargs(**kwargs)
|
||||
body = {'port': {'network_id': network_id}}
|
||||
if 'tenant_id' not in kwargs:
|
||||
|
|
|
@ -170,21 +170,46 @@ class NeutronApiTests(test.APITestCase):
|
|||
ret_val = api.neutron.port_get(self.request, port_id)
|
||||
self.assertIsInstance(ret_val, api.neutron.Port)
|
||||
|
||||
def test_port_create(self):
|
||||
port_data = self.api_ports.first()
|
||||
params = {'network_id': port_data['network_id'],
|
||||
'tenant_id': port_data['tenant_id'],
|
||||
'name': port_data['name'],
|
||||
'device_id': port_data['device_id']}
|
||||
def _test_port_create(self, with_n1kv=False):
|
||||
port = {'port': self.api_ports.first()}
|
||||
params = {'network_id': port['port']['network_id'],
|
||||
'tenant_id': port['port']['tenant_id'],
|
||||
'name': port['port']['name'],
|
||||
'device_id': port['port']['device_id']}
|
||||
|
||||
neutronclient = self.stub_neutronclient()
|
||||
neutronclient.create_port(body={'port': params})\
|
||||
.AndReturn({'port': port_data})
|
||||
self.mox.ReplayAll()
|
||||
|
||||
ret_val = api.neutron.port_create(self.request, **params)
|
||||
if with_n1kv:
|
||||
n1kv_profile = 'n1kv:profile'
|
||||
test_policy_profile = 'test_policy_profile'
|
||||
port['port'][n1kv_profile] = test_policy_profile
|
||||
body = {k: v for (k, v) in params.items()}
|
||||
body[n1kv_profile] = port['port'][n1kv_profile]
|
||||
neutronclient.create_port(body={'port': body}).AndReturn(port)
|
||||
self.mox.ReplayAll()
|
||||
ret_val = api.neutron.port_create(
|
||||
self.request,
|
||||
policy_profile_id=test_policy_profile,
|
||||
**params)
|
||||
# assert that when 'policy_profile_id' is passed as a param to
|
||||
# port_create function, 'n1kv:profile' is appended as a key to the
|
||||
# returned port dictionary with value TEST_POLICY_PROFILE
|
||||
self.assertEqual(test_policy_profile, ret_val[n1kv_profile])
|
||||
# also assert that 'policy_profile_id' isn't there in the returned
|
||||
# port dictionary
|
||||
self.assertNotIn('policy_profile_id',
|
||||
[k for k, _ in ret_val.items()])
|
||||
else:
|
||||
neutronclient.create_port(body={'port': params}).AndReturn(port)
|
||||
self.mox.ReplayAll()
|
||||
ret_val = api.neutron.port_create(self.request, **params)
|
||||
self.assertIsInstance(ret_val, api.neutron.Port)
|
||||
self.assertEqual(api.neutron.Port(port_data).id, ret_val.id)
|
||||
self.assertEqual(api.neutron.Port(port['port']).id, ret_val.id)
|
||||
|
||||
def test_port_create(self):
|
||||
self._test_port_create()
|
||||
|
||||
def test_port_create_with_policy_profile(self):
|
||||
self._test_port_create(with_n1kv=True)
|
||||
|
||||
def test_port_update(self):
|
||||
port_data = self.api_ports.first()
|
||||
|
|
Loading…
Reference in New Issue