From d52920b3878479f7dd549cba1679870b4f00ee33 Mon Sep 17 00:00:00 2001 From: Kailun Qin Date: Wed, 27 Feb 2019 23:02:52 +0800 Subject: Add network segment range command object Add network segment range command object in support of network segment range management. This patch set includes documentation, unit tests and functional tests (currently skipped unit network segment range enabled in Neutron by default) for the following new commands: - "os network segment range create" - "os network segment range delete" - "os network segment range list" - "os network segment range set" - "os network segment range show" Co-authored-by: Allain Legacy [depends on removed by dtroyer as those are all +W and trying to pass the gate, OSC has it's freeze dealine looming] Depends: https://review.openstack.org/624708 Depends: https://review.openstack.org/624709 Depends: https://review.openstack.org/638386 Partially-implements: blueprint network-segment-range-management Change-Id: I335692f2db5be07c1c164f09b13f1abb80b7ba33 --- .../network/v2/test_network_segment_range.py | 145 +++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 openstackclient/tests/functional/network/v2/test_network_segment_range.py (limited to 'openstackclient/tests/functional') diff --git a/openstackclient/tests/functional/network/v2/test_network_segment_range.py b/openstackclient/tests/functional/network/v2/test_network_segment_range.py new file mode 100644 index 00000000..95402dcb --- /dev/null +++ b/openstackclient/tests/functional/network/v2/test_network_segment_range.py @@ -0,0 +1,145 @@ +# Copyright (c) 2019, Intel Corporation. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +import json +import uuid + +from openstackclient.tests.functional.network.v2 import common + + +class NetworkSegmentRangeTests(common.NetworkTests): + """Functional tests for network segment range""" + + def setUp(self): + super(NetworkSegmentRangeTests, self).setUp() + # Nothing in this class works with Nova Network + if not self.haz_network: + self.skipTest("No Network service present") + self.PROJECT_NAME = uuid.uuid4().hex + + def test_network_segment_range_create_delete(self): + # Make a project + project_id = json.loads(self.openstack( + 'project create -f json ' + self.PROJECT_NAME))['id'] + name = uuid.uuid4().hex + json_output = json.loads(self.openstack( + ' network segment range create -f json ' + + '--private ' + + "--project " + self.PROJECT_NAME + " " + + '--network-type vxlan ' + + '--minimum 2018 ' + + '--maximum 2055 ' + + name + )) + self.assertEqual( + name, + json_output["name"], + ) + self.assertEqual( + project_id, + json_output["project_id"], + ) + + raw_output = self.openstack( + 'network segment range delete ' + name, + ) + self.assertOutput('', raw_output) + raw_output_project = self.openstack( + 'project delete ' + self.PROJECT_NAME) + self.assertEqual('', raw_output_project) + + def test_network_segment_range_list(self): + name = uuid.uuid4().hex + json_output = json.loads(self.openstack( + ' network segment range create -f json ' + + '--shared ' + + '--network-type geneve ' + + '--minimum 2018 ' + + '--maximum 2055 ' + + name + )) + network_segment_range_id = json_output.get('id') + network_segment_range_name = json_output.get('name') + self.addCleanup( + self.openstack, + 'network segment range delete ' + network_segment_range_id + ) + self.assertEqual( + name, + json_output["name"], + ) + + json_output = json.loads(self.openstack( + 'network segment list -f json' + )) + item_map = { + item.get('ID'): item.get('Name') for item in json_output + } + self.assertIn(network_segment_range_id, item_map.keys()) + self.assertIn(network_segment_range_name, item_map.values()) + + def test_network_segment_range_set_show(self): + project_id = json.loads(self.openstack( + 'project create -f json ' + self.PROJECT_NAME))['id'] + name = uuid.uuid4().hex + json_output = json.loads(self.openstack( + ' network segment range create -f json ' + + '--private ' + + "--project " + self.PROJECT_NAME + " " + + '--network-type geneve ' + + '--minimum 2018 ' + + '--maximum 2055 ' + + name + )) + self.addCleanup( + self.openstack, + 'network segment range delete ' + name + ) + self.assertEqual( + name, + json_output["name"], + ) + self.assertEqual( + project_id, + json_output["project_id"], + ) + + new_minimum = '2010' + new_maximum = '2060' + cmd_output = self.openstack( + 'network segment range set ' + + '--minimum ' + new_minimum + ' ' + + '--maximum ' + new_maximum + ' ' + + name + ) + self.assertOutput('', cmd_output) + + json_output = json.loads(self.openstack( + 'network segment range show -f json ' + + name + )) + self.assertEqual( + new_minimum, + json_output["minimum"], + ) + self.assertEqual( + new_maximum, + json_output["maximum"], + ) + + raw_output_project = self.openstack( + 'project delete ' + self.PROJECT_NAME) + self.assertEqual('', raw_output_project) -- cgit v1.2.1