Allow passing project_id to create_network

The neutron net-create verb allows passing a tenant_id param,
allowing a cloud admin to create networks on any projects is
granted to.
This change allows passing this param, which is an admin-only
option.

Change-Id: I76285ad1f7106f9a5900f118cdc7a5012786869d
This commit is contained in:
Ricardo Carrillo Cruz
2016-03-03 22:45:52 +00:00
parent 8ff81fa7b1
commit d0709ead25
2 changed files with 20 additions and 2 deletions

View File

@@ -1675,7 +1675,7 @@ class OpenStackCloud(object):
return True
def create_network(self, name, shared=False, admin_state_up=True,
external=False, provider=None):
external=False, provider=None, project_id=None):
"""Create a network.
:param string name: Name of the network being created.
@@ -1685,17 +1685,21 @@ class OpenStackCloud(object):
:param dict provider: A dict of network provider options. Example::
{ 'network_type': 'vlan', 'segmentation_id': 'vlan1' }
:param string project_id: Specify the project ID this network
will be created on (admin-only).
:returns: The network object.
:raises: OpenStackCloudException on operation error.
"""
network = {
'name': name,
'shared': shared,
'admin_state_up': admin_state_up,
}
if project_id is not None:
network['tenant_id'] = project_id
if provider:
if not isinstance(provider, dict):
raise OpenStackCloudException(

View File

@@ -36,6 +36,20 @@ class TestNetwork(base.TestCase):
)
)
@mock.patch.object(shade.OpenStackCloud, 'neutron_client')
def test_create_network_specific_tenant(self, mock_neutron):
self.cloud.create_network("netname", project_id="project_id_value")
mock_neutron.create_network.assert_called_with(
body=dict(
network=dict(
name='netname',
shared=False,
admin_state_up=True,
tenant_id="project_id_value",
)
)
)
@mock.patch.object(shade.OpenStackCloud, 'neutron_client')
def test_create_network_external(self, mock_neutron):
self.cloud.create_network("netname", external=True)