From 703f2edbee4fb05bc7cdcdc429729052a72f485f Mon Sep 17 00:00:00 2001 From: Alexander Gubanov Date: Tue, 28 Apr 2015 11:39:05 +0300 Subject: [PATCH] Add Nova network scenarios Added base methods (create/delete) for nova network and added scenario to rally jobs for functional test. Change-Id: I8c1f11e0f84345e10423b2117fc88513ca206fe0 Co-Authored-By: Andrey Kurilin --- rally-jobs/rally.yaml | 32 +++++++++++++++++++ rally/consts.py | 1 + .../plugins/openstack/scenarios/nova/utils.py | 19 +++++++++++ .../openstack/scenarios/nova/test_utils.py | 30 +++++++++++++++++ 4 files changed, 82 insertions(+) diff --git a/rally-jobs/rally.yaml b/rally-jobs/rally.yaml index 762a895a..e8f003c9 100644 --- a/rally-jobs/rally.yaml +++ b/rally-jobs/rally.yaml @@ -1041,3 +1041,35 @@ sla: failure_rate: max: 0 + + NovaNetworks.create_and_list_networks: + - + args: + start_cidr: "10.10.0.0/24" + runner: + type: "constant" + times: 5 + concurrency: 2 + context: + users: + tenants: 3 + users_per_tenant: 2 + sla: + failure_rate: + max: 0 + + NovaNetworks.create_and_delete_network: + - + args: + start_cidr: "10.10.0.0/24" + runner: + type: "constant" + times: 5 + concurrency: 2 + context: + users: + tenants: 3 + users_per_tenant: 2 + sla: + failure_rate: + max: 0 diff --git a/rally/consts.py b/rally/consts.py index 1ee980be..0f889cb4 100644 --- a/rally/consts.py +++ b/rally/consts.py @@ -86,6 +86,7 @@ class _Service(utils.ImmutableMixin, utils.EnumMixin): """OpenStack services names, by rally convention.""" NOVA = "nova" + NOVA_NET = "nova-network" NOVAV21 = "novav21" NOVAV3 = "novav3" CINDER = "cinder" diff --git a/rally/plugins/openstack/scenarios/nova/utils.py b/rally/plugins/openstack/scenarios/nova/utils.py index 5790e48b..699b0054 100644 --- a/rally/plugins/openstack/scenarios/nova/utils.py +++ b/rally/plugins/openstack/scenarios/nova/utils.py @@ -798,3 +798,22 @@ class NovaScenario(scenario.OpenStackScenario): :param server: Server to unlock """ server.unlock() + + @base.atomic_action_timer("nova.create_network") + def _create_network(self, ip_range, **kwargs): + """Create nova network. + + :param ip_range: IP range in CIDR notation to create + """ + net_label = self._generate_random_name(prefix="rally_novanet") + ip_range = network_wrapper.generate_cidr(start_cidr=ip_range) + return self.admin_clients("nova").networks.create( + label=net_label, cidr=ip_range, **kwargs) + + @base.atomic_action_timer("nova.delete_network") + def _delete_network(self, net_id): + """Delete nova network. + + :param net_id: The nova-network ID to delete + """ + return self.admin_clients("nova").networks.delete(net_id) diff --git a/tests/unit/plugins/openstack/scenarios/nova/test_utils.py b/tests/unit/plugins/openstack/scenarios/nova/test_utils.py index ba688840..2a164ea4 100644 --- a/tests/unit/plugins/openstack/scenarios/nova/test_utils.py +++ b/tests/unit/plugins/openstack/scenarios/nova/test_utils.py @@ -796,3 +796,33 @@ class NovaScenarioTestCase(test.ScenarioTestCase): server.unlock.assert_called_once_with() self._test_atomic_action_timer(nova_scenario.atomic_actions(), "nova.unlock_server") + + def test__delete_network(self): + fake_netlabel = "test1" + nova_scenario = utils.NovaScenario() + nova_scenario._delete_network(fake_netlabel) + self.admin_clients("nova").networks.delete.assert_called_once_with( + fake_netlabel) + self._test_atomic_action_timer(nova_scenario.atomic_actions(), + "nova.delete_network") + + @mock.patch(NOVA_UTILS + ".network_wrapper.generate_cidr") + def test__create_network(self, mock_generate_cidr): + fake_cidr = "10.2.0.0/24" + fake_net = mock.MagicMock() + fake_net.cidr = fake_cidr + self.admin_clients("nova").networks.create.return_value = (fake_net) + + nova_scenario = utils.NovaScenario() + nova_scenario._generate_random_name = mock.Mock( + return_value="rally_novanet_fake") + + return_netlabel = nova_scenario._create_network(fake_cidr, + fakearg="fakearg") + mock_generate_cidr.assert_called_once_with(start_cidr=fake_cidr) + self.admin_clients("nova").networks.create.assert_called_once_with( + label="rally_novanet_fake", cidr=mock_generate_cidr.return_value, + fakearg="fakearg") + self.assertEqual(return_netlabel, fake_net) + self._test_atomic_action_timer(nova_scenario.atomic_actions(), + "nova.create_network")