From d96c81ff7f3eeb94cca83313a5435c0131a9f951 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Thu, 3 Apr 2025 16:19:23 +0100 Subject: [PATCH] Refactor network fakes to sdk properties PART6 Included resources: router security_group security_group_rule Change-Id: I2423fc31d94f85aeefc7b0a205dfb38829417a29 --- openstackclient/network/v2/router.py | 2 +- openstackclient/network/v2/security_group.py | 9 +- .../network/v2/security_group_rule.py | 2 +- .../tests/unit/network/v2/fakes.py | 436 ++++++++---------- .../network/v2/test_floating_ip_network.py | 2 +- .../network/v2/test_l3_conntrack_helper.py | 4 +- .../tests/unit/network/v2/test_ndp_proxy.py | 4 +- .../unit/network/v2/test_network_agent.py | 44 +- .../unit/network/v2/test_network_rbac.py | 2 +- .../tests/unit/network/v2/test_port.py | 28 +- .../tests/unit/network/v2/test_router.py | 106 +++-- .../network/v2/test_security_group_network.py | 52 +-- .../v2/test_security_group_rule_network.py | 72 ++- 13 files changed, 353 insertions(+), 410 deletions(-) diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py index 0f6b622cdf..67e3de06fc 100644 --- a/openstackclient/network/v2/router.py +++ b/openstackclient/network/v2/router.py @@ -76,7 +76,7 @@ def _get_columns(item): } if hasattr(item, 'interfaces_info'): column_map['interfaces_info'] = 'interfaces_info' - invisible_columns = ['location'] + invisible_columns = ['location', 'tenant_id'] if item.is_ha is None: invisible_columns.append('is_ha') column_map.pop('is_ha') diff --git a/openstackclient/network/v2/security_group.py b/openstackclient/network/v2/security_group.py index 32b544fce1..ddf6c786ec 100644 --- a/openstackclient/network/v2/security_group.py +++ b/openstackclient/network/v2/security_group.py @@ -89,9 +89,8 @@ def _get_columns(item): # We still support Nova managed security groups, where we have tenant_id. column_map = { 'security_group_rules': 'rules', - 'tenant_id': 'project_id', } - hidden_columns = ['location'] + hidden_columns = ['location', 'tenant_id'] return utils.get_osc_show_columns_for_sdk_resource( item, column_map, hidden_columns ) @@ -186,7 +185,8 @@ class CreateSecurityGroup( parsed_args.name, description, ) - display_columns, property_columns = _get_columns(obj) + display_columns = ('description', 'id', 'name', 'project_id', 'rules') + property_columns = ('description', 'id', 'name', 'tenant_id', 'rules') data = utils.get_dict_properties( obj, property_columns, formatters=_formatters_compute ) @@ -420,7 +420,8 @@ class ShowSecurityGroup(common.NetworkAndComputeShowOne): def take_action_compute(self, client, parsed_args): obj = compute_v2.find_security_group(client, parsed_args.group) - display_columns, property_columns = _get_columns(obj) + display_columns = ('description', 'id', 'name', 'project_id', 'rules') + property_columns = ('description', 'id', 'name', 'tenant_id', 'rules') data = utils.get_dict_properties( obj, property_columns, formatters=_formatters_compute ) diff --git a/openstackclient/network/v2/security_group_rule.py b/openstackclient/network/v2/security_group_rule.py index 954ee4cbe7..4907fe66d3 100644 --- a/openstackclient/network/v2/security_group_rule.py +++ b/openstackclient/network/v2/security_group_rule.py @@ -30,7 +30,7 @@ LOG = logging.getLogger(__name__) def _get_columns(item): - hidden_columns = ['location', 'tenant_id'] + hidden_columns = ['location', 'name', 'tenant_id', 'tags'] return utils.get_osc_show_columns_for_sdk_resource( item, {}, hidden_columns ) diff --git a/openstackclient/tests/unit/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py index 1ae1a253b9..d58f6e190e 100644 --- a/openstackclient/tests/unit/network/v2/fakes.py +++ b/openstackclient/tests/unit/network/v2/fakes.py @@ -46,7 +46,9 @@ from openstack.network.v2 import ( from openstack.network.v2 import qos_policy as _qos_policy from openstack.network.v2 import qos_rule_type as _qos_rule_type from openstack.network.v2 import rbac_policy as network_rbac +from openstack.network.v2 import router as _router from openstack.network.v2 import security_group as _security_group +from openstack.network.v2 import security_group_rule as _security_group_rule from openstack.network.v2 import segment as _segment from openstack.network.v2 import service_profile as _service_profile from openstack.network.v2 import trunk as _trunk @@ -132,246 +134,6 @@ def create_one_extension(attrs=None): return extension -class FakeRouter: - """Fake one or more routers.""" - - @staticmethod - def create_one_router(attrs=None): - """Create a fake router. - - :param Dictionary attrs: - A dictionary with all attributes - :return: - A FakeResource object, with id, name, admin_state_up, - status, project_id - """ - attrs = attrs or {} - - # Set default attributes. - router_attrs = { - 'id': 'router-id-' + uuid.uuid4().hex, - 'name': 'router-name-' + uuid.uuid4().hex, - 'status': 'ACTIVE', - 'admin_state_up': True, - 'description': 'router-description-' + uuid.uuid4().hex, - 'distributed': False, - 'ha': False, - 'project_id': 'project-id-' + uuid.uuid4().hex, - 'routes': [], - 'external_gateway_info': {}, - 'availability_zone_hints': [], - 'availability_zones': [], - 'tags': [], - 'location': 'MUNCHMUNCHMUNCH', - } - - # Overwrite default attributes. - router_attrs.update(attrs) - - router = fakes.FakeResource( - info=copy.deepcopy(router_attrs), loaded=True - ) - - # Set attributes with special mapping in OpenStack SDK. - router.is_admin_state_up = router_attrs['admin_state_up'] - router.is_distributed = router_attrs['distributed'] - router.is_ha = router_attrs['ha'] - - return router - - @staticmethod - def create_routers(attrs=None, count=2): - """Create multiple fake routers. - - :param Dictionary attrs: - A dictionary with all attributes - :param int count: - The number of routers to fake - :return: - A list of FakeResource objects faking the routers - """ - routers = [] - for i in range(0, count): - routers.append(FakeRouter.create_one_router(attrs)) - - return routers - - @staticmethod - def get_routers(routers=None, count=2): - """Get an iterable Mock object with a list of faked routers. - - If routers list is provided, then initialize the Mock object with the - list. Otherwise create one. - - :param List routers: - A list of FakeResource objects faking routers - :param int count: - The number of routers to fake - :return: - An iterable Mock object with side_effect set to a list of faked - routers - """ - if routers is None: - routers = FakeRouter.create_routers(count) - return mock.Mock(side_effect=routers) - - -class FakeSecurityGroup: - """Fake one or more security groups.""" - - @staticmethod - def create_one_security_group(attrs=None): - """Create a fake security group. - - :param Dictionary attrs: - A dictionary with all attributes - :return: - A FakeResource object, with id, name, etc. - """ - attrs = attrs or {} - - # Set default attributes. - security_group_attrs = { - 'id': 'security-group-id-' + uuid.uuid4().hex, - 'name': 'security-group-name-' + uuid.uuid4().hex, - 'description': 'security-group-description-' + uuid.uuid4().hex, - 'stateful': True, - 'project_id': 'project-id-' + uuid.uuid4().hex, - 'security_group_rules': [], - 'tags': [], - 'location': 'MUNCHMUNCHMUNCH', - } - - # Overwrite default attributes. - security_group_attrs.update(attrs) - - security_group = fakes.FakeResource( - info=copy.deepcopy(security_group_attrs), loaded=True - ) - - return security_group - - @staticmethod - def create_security_groups(attrs=None, count=2): - """Create multiple fake security groups. - - :param Dictionary attrs: - A dictionary with all attributes - :param int count: - The number of security groups to fake - :return: - A list of FakeResource objects faking the security groups - """ - security_groups = [] - for i in range(0, count): - security_groups.append( - FakeSecurityGroup.create_one_security_group(attrs) - ) - - return security_groups - - @staticmethod - def get_security_groups(security_groups=None, count=2): - """Get an iterable Mock object with a list of faked security groups. - - If security groups list is provided, then initialize the Mock object - with the list. Otherwise create one. - - :param List security_groups: - A list of FakeResource objects faking security groups - :param int count: - The number of security groups to fake - :return: - An iterable Mock object with side_effect set to a list of faked - security groups - """ - if security_groups is None: - security_groups = FakeSecurityGroup.create_security_groups(count) - return mock.Mock(side_effect=security_groups) - - -class FakeSecurityGroupRule: - """Fake one or more security group rules.""" - - @staticmethod - def create_one_security_group_rule(attrs=None): - """Create a fake security group rule. - - :param Dictionary attrs: - A dictionary with all attributes - :return: - A FakeResource object, with id, etc. - """ - attrs = attrs or {} - - # Set default attributes. - security_group_rule_attrs = { - 'description': 'security-group-rule-description-' - + uuid.uuid4().hex, - 'direction': 'ingress', - 'ether_type': 'IPv4', - 'id': 'security-group-rule-id-' + uuid.uuid4().hex, - 'port_range_max': None, - 'port_range_min': None, - 'protocol': None, - 'remote_group_id': None, - 'remote_address_group_id': None, - 'remote_ip_prefix': '0.0.0.0/0', - 'security_group_id': 'security-group-id-' + uuid.uuid4().hex, - 'project_id': 'project-id-' + uuid.uuid4().hex, - 'location': 'MUNCHMUNCHMUNCH', - } - - # Overwrite default attributes. - security_group_rule_attrs.update(attrs) - - security_group_rule = fakes.FakeResource( - info=copy.deepcopy(security_group_rule_attrs), loaded=True - ) - - return security_group_rule - - @staticmethod - def create_security_group_rules(attrs=None, count=2): - """Create multiple fake security group rules. - - :param Dictionary attrs: - A dictionary with all attributes - :param int count: - The number of security group rules to fake - :return: - A list of FakeResource objects faking the security group rules - """ - security_group_rules = [] - for i in range(0, count): - security_group_rules.append( - FakeSecurityGroupRule.create_one_security_group_rule(attrs) - ) - - return security_group_rules - - @staticmethod - def get_security_group_rules(security_group_rules=None, count=2): - """Get an iterable Mock with a list of faked security group rules. - - If security group rules list is provided, then initialize the Mock - object with the list. Otherwise create one. - - :param List security_group_rules: - A list of FakeResource objects faking security group rules - :param int count: - The number of security group rules to fake - :return: - An iterable Mock object with side_effect set to a list of faked - security group rules - """ - if security_group_rules is None: - security_group_rules = ( - FakeSecurityGroupRule.create_security_group_rules(count) - ) - return mock.Mock(side_effect=security_group_rules) - - class FakeSubnet: """Fake one or more subnets.""" @@ -1631,20 +1393,32 @@ def get_network_rbacs(rbac_policies=None, count=2): def create_one_security_group(attrs=None): - """Create a security group.""" + """Create a fake security group. + + :param Dictionary attrs: + A dictionary with all attributes + :return: + A SecurityGroup object, with id, name, etc. + """ attrs = attrs or {} + # Set default attributes. security_group_attrs = { - 'name': 'security-group-name-' + uuid.uuid4().hex, 'id': 'security-group-id-' + uuid.uuid4().hex, - 'project_id': 'project-id-' + uuid.uuid4().hex, + 'name': 'security-group-name-' + uuid.uuid4().hex, 'description': 'security-group-description-' + uuid.uuid4().hex, + 'stateful': True, + 'project_id': 'project-id-' + uuid.uuid4().hex, + 'security_group_rules': [], + 'tags': [], 'location': 'MUNCHMUNCHMUNCH', } + # Overwrite default attributes. security_group_attrs.update(attrs) security_group = _security_group.SecurityGroup(**security_group_attrs) + security_group.tenant_id = None # unset deprecated opts return security_group @@ -1652,9 +1426,12 @@ def create_one_security_group(attrs=None): def create_security_groups(attrs=None, count=2): """Create multiple fake security groups. - :param dict attrs: A dictionary with all attributes - :param int count: The number of security groups to fake - :return: A list of fake SecurityGroup objects + :param Dictionary attrs: + A dictionary with all attributes + :param int count: + The number of security groups to fake + :return: + A list of SecurityGroup objects faking the security groups """ security_groups = [] for i in range(0, count): @@ -1663,6 +1440,99 @@ def create_security_groups(attrs=None, count=2): return security_groups +def get_security_groups(security_groups=None, count=2): + """Get an iterable Mock object with a list of faked security groups. + + If security groups list is provided, then initialize the Mock object + with the list. Otherwise create one. + + :param List security_groups: + A list of SecurityGroup objects faking security groups + :param int count: + The number of security groups to fake + :return: + An iterable Mock object with side_effect set to a list of faked + security groups + """ + if security_groups is None: + security_groups = create_security_groups(count) + return mock.Mock(side_effect=security_groups) + + +def create_one_security_group_rule(attrs=None): + """Create a fake security group rule. + + :param Dictionary attrs: + A dictionary with all attributes + :return: + A FakeResource object, with id, etc. + """ + attrs = attrs or {} + + # Set default attributes. + security_group_rule_attrs = { + 'description': 'security-group-rule-description-' + uuid.uuid4().hex, + 'direction': 'ingress', + 'ether_type': 'IPv4', + 'id': 'security-group-rule-id-' + uuid.uuid4().hex, + 'port_range_max': None, + 'port_range_min': None, + 'protocol': None, + 'remote_group_id': None, + 'remote_address_group_id': None, + 'remote_ip_prefix': '0.0.0.0/0', + 'security_group_id': 'security-group-id-' + uuid.uuid4().hex, + 'project_id': 'project-id-' + uuid.uuid4().hex, + 'location': 'MUNCHMUNCHMUNCH', + } + + # Overwrite default attributes. + security_group_rule_attrs.update(attrs) + + security_group_rule = _security_group_rule.SecurityGroupRule( + **security_group_rule_attrs + ) + security_group_rule.tenant_id = None # unset deprecated opts + + return security_group_rule + + +def create_security_group_rules(attrs=None, count=2): + """Create multiple fake security group rules. + + :param Dictionary attrs: + A dictionary with all attributes + :param int count: + The number of security group rules to fake + :return: + A list of SecurityGroupRule objects faking the security group rules + """ + security_group_rules = [] + for i in range(0, count): + security_group_rules.append(create_one_security_group_rule(attrs)) + + return security_group_rules + + +def get_security_group_rules(security_group_rules=None, count=2): + """Get an iterable Mock with a list of faked security group rules. + + If security group rules list is provided, then initialize the Mock + object with the list. Otherwise create one. + + :param List security_group_rules: + A list of SecurityGroupRule objects faking security group rules + :param int count: + The number of security group rules to fake + :return: + An iterable Mock object with side_effect set to a list of faked + security group rules + """ + if security_group_rules is None: + security_group_rules = create_security_group_rules(count) + return mock.Mock(side_effect=security_group_rules) + + def create_one_service_profile(attrs=None): """Create service profile.""" attrs = attrs or {} @@ -1902,6 +1772,80 @@ def create_qos_rule_types(attrs=None, count=2): return qos_rule_types +def create_one_router(attrs=None): + """Create a fake router. + + :param Dictionary attrs: + A dictionary with all attributes + :return: + A Router object, with id, name, admin_state_up, + status, project_id + """ + attrs = attrs or {} + + # Set default attributes. + router_attrs = { + 'id': 'router-id-' + uuid.uuid4().hex, + 'name': 'router-name-' + uuid.uuid4().hex, + 'status': 'ACTIVE', + 'is_admin_state_up': True, + 'description': 'router-description-' + uuid.uuid4().hex, + 'distributed': False, + 'ha': False, + 'project_id': 'project-id-' + uuid.uuid4().hex, + 'routes': [], + 'external_gateway_info': {}, + 'availability_zone_hints': [], + 'availability_zones': [], + 'tags': [], + 'location': 'MUNCHMUNCHMUNCH', + } + + # Overwrite default attributes. + router_attrs.update(attrs) + + router = _router.Router(**router_attrs) + router.tenant_id = None # unset deprecated opts + + return router + + +def create_routers(attrs=None, count=2): + """Create multiple fake routers. + + :param Dictionary attrs: + A dictionary with all attributes + :param int count: + The number of routers to fake + :return: + A list of Router objects faking the routers + """ + routers = [] + for i in range(0, count): + routers.append(create_one_router(attrs)) + + return routers + + +def get_routers(routers=None, count=2): + """Get an iterable Mock object with a list of faked routers. + + If routers list is provided, then initialize the Mock object with the + list. Otherwise create one. + + :param List routers: + A list of Router objects faking routers + :param int count: + The number of routers to fake + :return: + An iterable Mock object with side_effect set to a list of faked + routers + """ + if routers is None: + routers = create_routers(count) + return mock.Mock(side_effect=routers) + + def create_one_local_ip(attrs=None): """Create a fake local ip. diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py index 03d21cffce..d7d0b7799c 100644 --- a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py +++ b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py @@ -414,7 +414,7 @@ class TestListFloatingIPNetwork(TestFloatingIPNetwork): 'id': 'fake_port_id', } ) - fake_router = network_fakes.FakeRouter.create_one_router( + fake_router = network_fakes.create_one_router( { 'id': 'fake_router_id', } diff --git a/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py b/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py index c7aadf0bfe..b358024ffd 100644 --- a/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +++ b/openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py @@ -24,8 +24,8 @@ class TestConntrackHelper(network_fakes.TestNetworkV2): def setUp(self): super().setUp() - self.router = network_fakes.FakeRouter.create_one_router() - self.network_client.find_router = mock.Mock(return_value=self.router) + self.router = network_fakes.create_one_router() + self.network_client.find_router.return_value = self.router class TestCreateL3ConntrackHelper(TestConntrackHelper): diff --git a/openstackclient/tests/unit/network/v2/test_ndp_proxy.py b/openstackclient/tests/unit/network/v2/test_ndp_proxy.py index bcbc0ae7da..13d3f3d996 100644 --- a/openstackclient/tests/unit/network/v2/test_ndp_proxy.py +++ b/openstackclient/tests/unit/network/v2/test_ndp_proxy.py @@ -30,9 +30,7 @@ class TestNDPProxy(network_fakes.TestNetworkV2): # Get a shortcut to the DomainManager Mock self.domains_mock = self.identity_client.domains - self.router = network_fakes.FakeRouter.create_one_router( - {'id': 'fake-router-id'} - ) + self.router = network_fakes.create_one_router({'id': 'fake-router-id'}) self.network_client.find_router = mock.Mock(return_value=self.router) self.port = network_fakes.create_one_port() self.network_client.find_port = mock.Mock(return_value=self.port) diff --git a/openstackclient/tests/unit/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py index 15bacae581..bd79950d52 100644 --- a/openstackclient/tests/unit/network/v2/test_network_agent.py +++ b/openstackclient/tests/unit/network/v2/test_network_agent.py @@ -70,7 +70,7 @@ class TestAddNetworkToAgent(TestNetworkAgent): class TestAddRouterAgent(TestNetworkAgent): - _router = network_fakes.FakeRouter.create_one_router() + _router = network_fakes.create_one_router() _agent = network_fakes.create_one_network_agent() def setUp(self): @@ -219,30 +219,24 @@ class TestListNetworkAgent(TestNetworkAgent): def setUp(self): super().setUp() - self.network_client.agents = mock.Mock( - return_value=self.network_agents + + self.network_client.agents.return_value = self.network_agents + self.network_client.routers_hosting_l3_agents.return_value = ( + self.network_agents ) _testagent = network_fakes.create_one_network_agent() - self.network_client.get_agent = mock.Mock(return_value=_testagent) + self.network_client.get_agent.return_value = _testagent + self.network_client.get_agent.return_value = _testagent self._testnetwork = network_fakes.create_one_network() - self.network_client.find_network = mock.Mock( - return_value=self._testnetwork - ) - self.network_client.network_hosting_dhcp_agents = mock.Mock( - return_value=self.network_agents + self.network_client.find_network.return_value = self._testnetwork + self.network_client.network_hosting_dhcp_agents.return_value = ( + self.network_agents ) - self.network_client.get_agent = mock.Mock(return_value=_testagent) - - self._testrouter = network_fakes.FakeRouter.create_one_router() - self.network_client.find_router = mock.Mock( - return_value=self._testrouter - ) - self.network_client.routers_hosting_l3_agents = mock.Mock( - return_value=self.network_agents - ) + self._testrouter = network_fakes.create_one_router() + self.network_client.find_router.return_value = self._testrouter # Get the command object to test self.cmd = network_agent.ListNetworkAgent(self.app, None) @@ -323,15 +317,11 @@ class TestListNetworkAgent(TestNetworkAgent): ] verifylist = [('router', self._testrouter.id), ('long', False)] - attrs = { - self._testrouter, - } - parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.network_client.routers_hosting_l3_agents.assert_called_once_with( - *attrs + self._testrouter ) self.assertEqual(self.columns, columns) @@ -345,15 +335,11 @@ class TestListNetworkAgent(TestNetworkAgent): ] verifylist = [('router', self._testrouter.id), ('long', True)] - attrs = { - self._testrouter, - } - parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.network_client.routers_hosting_l3_agents.assert_called_once_with( - *attrs + self._testrouter ) # Add a column 'HA State' and corresponding data. @@ -422,7 +408,7 @@ class TestRemoveNetworkFromAgent(TestNetworkAgent): class TestRemoveRouterAgent(TestNetworkAgent): - _router = network_fakes.FakeRouter.create_one_router() + _router = network_fakes.create_one_router() _agent = network_fakes.create_one_network_agent() def setUp(self): diff --git a/openstackclient/tests/unit/network/v2/test_network_rbac.py b/openstackclient/tests/unit/network/v2/test_network_rbac.py index 29b3147e19..816e932371 100644 --- a/openstackclient/tests/unit/network/v2/test_network_rbac.py +++ b/openstackclient/tests/unit/network/v2/test_network_rbac.py @@ -35,7 +35,7 @@ class TestNetworkRBAC(network_fakes.TestNetworkV2): class TestCreateNetworkRBAC(TestNetworkRBAC): network_object = network_fakes.create_one_network() qos_object = network_fakes.create_one_qos_policy() - sg_object = network_fakes.FakeSecurityGroup.create_one_security_group() + sg_object = network_fakes.create_one_security_group() as_object = network_fakes.create_one_address_scope() snp_object = network_fakes.FakeSubnetPool.create_one_subnet_pool() ag_object = network_fakes.create_one_address_group() diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py index 2127e7885a..5e48e311e8 100644 --- a/openstackclient/tests/unit/network/v2/test_port.py +++ b/openstackclient/tests/unit/network/v2/test_port.py @@ -320,7 +320,7 @@ class TestCreatePort(TestPort): self.assertCountEqual(self.data, data) def test_create_with_security_group(self): - secgroup = network_fakes.FakeSecurityGroup.create_one_security_group() + secgroup = network_fakes.create_one_security_group() self.network_client.find_security_group = mock.Mock( return_value=secgroup ) @@ -391,8 +391,8 @@ class TestCreatePort(TestPort): self.assertCountEqual(self.data, data) def test_create_with_security_groups(self): - sg_1 = network_fakes.FakeSecurityGroup.create_one_security_group() - sg_2 = network_fakes.FakeSecurityGroup.create_one_security_group() + sg_1 = network_fakes.create_one_security_group() + sg_2 = network_fakes.create_one_security_group() self.network_client.find_security_group = mock.Mock( side_effect=[sg_1, sg_2] ) @@ -1325,7 +1325,7 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort): super().setUp() self.network_client.ports = mock.Mock(return_value=self._ports) - fake_router = network_fakes.FakeRouter.create_one_router( + fake_router = network_fakes.create_one_router( { 'id': 'fake-router-id', } @@ -2096,7 +2096,7 @@ class TestSetPort(TestPort): self.assertIsNone(result) def test_set_port_security_group(self): - sg = network_fakes.FakeSecurityGroup.create_one_security_group() + sg = network_fakes.create_one_security_group() self.network_client.find_security_group = mock.Mock(return_value=sg) arglist = [ '--security-group', @@ -2119,9 +2119,9 @@ class TestSetPort(TestPort): self.assertIsNone(result) def test_set_port_security_group_append(self): - sg_1 = network_fakes.FakeSecurityGroup.create_one_security_group() - sg_2 = network_fakes.FakeSecurityGroup.create_one_security_group() - sg_3 = network_fakes.FakeSecurityGroup.create_one_security_group() + sg_1 = network_fakes.create_one_security_group() + sg_2 = network_fakes.create_one_security_group() + sg_3 = network_fakes.create_one_security_group() self.network_client.find_security_group = mock.Mock( side_effect=[sg_2, sg_3] ) @@ -2172,8 +2172,8 @@ class TestSetPort(TestPort): self.assertIsNone(result) def test_set_port_security_group_replace(self): - sg1 = network_fakes.FakeSecurityGroup.create_one_security_group() - sg2 = network_fakes.FakeSecurityGroup.create_one_security_group() + sg1 = network_fakes.create_one_security_group() + sg2 = network_fakes.create_one_security_group() _testport = network_fakes.create_one_port( {'security_group_ids': [sg1.id]} ) @@ -2821,8 +2821,8 @@ class TestUnsetPort(TestPort): ) def test_unset_security_group(self): - _fake_sg1 = network_fakes.FakeSecurityGroup.create_one_security_group() - _fake_sg2 = network_fakes.FakeSecurityGroup.create_one_security_group() + _fake_sg1 = network_fakes.create_one_security_group() + _fake_sg2 = network_fakes.create_one_security_group() _fake_port = network_fakes.create_one_port( {'security_group_ids': [_fake_sg1.id, _fake_sg2.id]} ) @@ -2849,8 +2849,8 @@ class TestUnsetPort(TestPort): self.assertIsNone(result) def test_unset_port_security_group_not_existent(self): - _fake_sg1 = network_fakes.FakeSecurityGroup.create_one_security_group() - _fake_sg2 = network_fakes.FakeSecurityGroup.create_one_security_group() + _fake_sg1 = network_fakes.create_one_security_group() + _fake_sg2 = network_fakes.create_one_security_group() _fake_port = network_fakes.create_one_port( {'security_group_ids': [_fake_sg1.id]} ) diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py index 286f577263..3536583305 100644 --- a/openstackclient/tests/unit/network/v2/test_router.py +++ b/openstackclient/tests/unit/network/v2/test_router.py @@ -34,9 +34,7 @@ class TestAddPortToRouter(TestRouter): '''Add port to Router''' _port = network_fakes.create_one_port() - _router = network_fakes.FakeRouter.create_one_router( - attrs={'port': _port.id} - ) + _router = network_fakes.create_one_router(attrs={'port': _port.id}) def setUp(self): super().setUp() @@ -84,9 +82,7 @@ class TestAddSubnetToRouter(TestRouter): '''Add subnet to Router''' _subnet = network_fakes.FakeSubnet.create_one_subnet() - _router = network_fakes.FakeRouter.create_one_router( - attrs={'subnet': _subnet.id} - ) + _router = network_fakes.create_one_router(attrs={'subnet': _subnet.id}) def setUp(self): super().setUp() @@ -129,38 +125,48 @@ class TestAddSubnetToRouter(TestRouter): class TestCreateRouter(TestRouter): # The new router created. - new_router = network_fakes.FakeRouter.create_one_router() + new_router = network_fakes.create_one_router() _extensions = {'fake': network_fakes.create_one_extension()} columns = ( 'admin_state_up', 'availability_zone_hints', 'availability_zones', + 'created_at', 'description', 'distributed', + 'enable_ndp_proxy', 'external_gateway_info', + 'flavor_id', 'ha', 'id', 'name', 'project_id', + 'revision_number', 'routes', 'status', 'tags', + 'updated_at', ) data = ( - router.AdminStateColumn(new_router.admin_state_up), + router.AdminStateColumn(new_router.is_admin_state_up), format_columns.ListColumn(new_router.availability_zone_hints), format_columns.ListColumn(new_router.availability_zones), + new_router.created_at, new_router.description, - new_router.distributed, + new_router.is_distributed, + new_router.enable_ndp_proxy, router.RouterInfoColumn(new_router.external_gateway_info), - new_router.ha, + new_router.flavor_id, + new_router.is_ha, new_router.id, new_router.name, new_router.project_id, + new_router.revision_number, router.RoutesColumn(new_router.routes), new_router.status, format_columns.ListColumn(new_router.tags), + new_router.updated_at, ) def setUp(self): @@ -614,14 +620,14 @@ class TestCreateRouter(TestRouter): class TestDeleteRouter(TestRouter): # The routers to delete. - _routers = network_fakes.FakeRouter.create_routers(count=2) + _routers = network_fakes.create_routers(count=2) def setUp(self): super().setUp() self.network_client.delete_router = mock.Mock(return_value=None) - self.network_client.find_router = network_fakes.FakeRouter.get_routers( + self.network_client.find_router = network_fakes.get_routers( self._routers ) @@ -696,7 +702,7 @@ class TestDeleteRouter(TestRouter): class TestListRouter(TestRouter): # The routers going to be listed up. - routers = network_fakes.FakeRouter.create_routers(count=3) + routers = network_fakes.create_routers(count=3) extensions = network_fakes.create_one_extension() columns = ( @@ -727,10 +733,10 @@ class TestListRouter(TestRouter): r.id, r.name, r.status, - router.AdminStateColumn(r.admin_state_up), + router.AdminStateColumn(r.is_admin_state_up), r.project_id, - r.distributed, - r.ha, + r.is_distributed, + r.is_ha, ) ) @@ -813,7 +819,7 @@ class TestListRouter(TestRouter): self.assertCountEqual(self.data, list(data)) def test_router_list_no_ha_no_distributed(self): - _routers = network_fakes.FakeRouter.create_routers( + _routers = network_fakes.create_routers( {'ha': None, 'distributed': None}, count=3 ) @@ -1033,9 +1039,7 @@ class TestRemovePortFromRouter(TestRouter): '''Remove port from a Router''' _port = network_fakes.create_one_port() - _router = network_fakes.FakeRouter.create_one_router( - attrs={'port': _port.id} - ) + _router = network_fakes.create_one_router(attrs={'port': _port.id}) def setUp(self): super().setUp() @@ -1080,9 +1084,7 @@ class TestRemoveSubnetFromRouter(TestRouter): '''Remove subnet from Router''' _subnet = network_fakes.FakeSubnet.create_one_subnet() - _router = network_fakes.FakeRouter.create_one_router( - attrs={'subnet': _subnet.id} - ) + _router = network_fakes.create_one_router(attrs={'subnet': _subnet.id}) def setUp(self): super().setUp() @@ -1123,7 +1125,7 @@ class TestRemoveSubnetFromRouter(TestRouter): class TestAddExtraRoutesToRouter(TestRouter): - _router = network_fakes.FakeRouter.create_one_router() + _router = network_fakes.create_one_router() def setUp(self): super().setUp() @@ -1212,7 +1214,7 @@ class TestAddExtraRoutesToRouter(TestRouter): class TestRemoveExtraRoutesFromRouter(TestRouter): - _router = network_fakes.FakeRouter.create_one_router() + _router = network_fakes.create_one_router() def setUp(self): super().setUp() @@ -1307,7 +1309,7 @@ class TestSetRouter(TestRouter): _subnet = network_fakes.FakeSubnet.create_one_subnet( attrs={'network_id': _network.id} ) - _router = network_fakes.FakeRouter.create_one_router( + _router = network_fakes.create_one_router( attrs={'routes': [_default_route], 'tags': ['green', 'red']} ) _extensions = {'fake': network_fakes.create_one_extension()} @@ -1454,7 +1456,7 @@ class TestSetRouter(TestRouter): self.assertIsNone(result) def test_set_route_overwrite_route(self): - _testrouter = network_fakes.FakeRouter.create_one_router( + _testrouter = network_fakes.create_one_router( {'routes': [{"destination": "10.0.0.2", "nexthop": "1.1.1.1"}]} ) self.network_client.find_router = mock.Mock(return_value=_testrouter) @@ -1753,7 +1755,7 @@ class TestSetRouter(TestRouter): self.network_client.find_qos_policy = mock.Mock( return_value=qos_policy ) - router = network_fakes.FakeRouter.create_one_router() + router = network_fakes.create_one_router() self.network_client.find_router = mock.Mock(return_value=router) arglist = [ "--qos-policy", @@ -1775,7 +1777,7 @@ class TestSetRouter(TestRouter): self.network_client.find_qos_policy = mock.Mock( return_value=qos_policy ) - router = network_fakes.FakeRouter.create_one_router() + router = network_fakes.create_one_router() self.network_client.find_router = mock.Mock(return_value=router) arglist = [ "--no-qos-policy", @@ -1793,7 +1795,7 @@ class TestSetRouter(TestRouter): class TestShowRouter(TestRouter): # The router to set. - _router = network_fakes.FakeRouter.create_one_router() + _router = network_fakes.create_one_router() _port = network_fakes.create_one_port( {'device_owner': 'network:router_interface', 'device_id': _router.id} ) @@ -1813,33 +1815,43 @@ class TestShowRouter(TestRouter): 'admin_state_up', 'availability_zone_hints', 'availability_zones', + 'created_at', 'description', 'distributed', + 'enable_ndp_proxy', 'external_gateway_info', + 'flavor_id', 'ha', 'id', 'interfaces_info', 'name', 'project_id', + 'revision_number', 'routes', 'status', 'tags', + 'updated_at', ) data = ( - router.AdminStateColumn(_router.admin_state_up), + router.AdminStateColumn(_router.is_admin_state_up), format_columns.ListColumn(_router.availability_zone_hints), format_columns.ListColumn(_router.availability_zones), + _router.created_at, _router.description, - _router.distributed, + _router.is_distributed, + _router.enable_ndp_proxy, router.RouterInfoColumn(_router.external_gateway_info), - _router.ha, + _router.flavor_id, + _router.is_ha, _router.id, router.RouterInfoColumn(_router.interfaces_info), _router.name, _router.project_id, + _router.revision_number, router.RoutesColumn(_router.routes), _router.status, format_columns.ListColumn(_router.tags), + _router.updated_at, ) def setUp(self): @@ -1884,7 +1896,7 @@ class TestShowRouter(TestRouter): self.assertCountEqual(self.data, data) def test_show_no_ha_no_distributed(self): - _router = network_fakes.FakeRouter.create_one_router( + _router = network_fakes.create_one_router( {'ha': None, 'distributed': None} ) @@ -1905,7 +1917,7 @@ class TestShowRouter(TestRouter): self.assertNotIn("is_ha", columns) def test_show_no_extra_route_extension(self): - _router = network_fakes.FakeRouter.create_one_router({'routes': None}) + _router = network_fakes.create_one_router({'routes': None}) arglist = [ _router.name, @@ -1929,7 +1941,7 @@ class TestUnsetRouter(TestRouter): super().setUp() self.fake_network = network_fakes.create_one_network() self.fake_qos_policy = network_fakes.create_one_qos_policy() - self._testrouter = network_fakes.FakeRouter.create_one_router( + self._testrouter = network_fakes.create_one_router( { 'routes': [ { @@ -2100,7 +2112,7 @@ class TestUnsetRouter(TestRouter): self.network_client.find_qos_policy = mock.Mock( return_value=qos_policy ) - router = network_fakes.FakeRouter.create_one_router() + router = network_fakes.create_one_router() self.network_client.find_router = mock.Mock(return_value=router) arglist = [ "--qos-policy", @@ -2120,7 +2132,7 @@ class TestUnsetRouter(TestRouter): self.network_client.find_qos_policy = mock.Mock( return_value=qos_policy ) - router = network_fakes.FakeRouter.create_one_router( + router = network_fakes.create_one_router( {"external_gateway_info": {"network_id": "fake-id"}} ) self.network_client.find_router = mock.Mock(return_value=router) @@ -2145,7 +2157,7 @@ class TestGatewayOps(TestRouter): self._network = network_fakes.create_one_network() self._networks.append(self._network) - self._router = network_fakes.FakeRouter.create_one_router( + self._router = network_fakes.create_one_router( { 'external_gateway_info': { 'network_id': self._network.id, @@ -2189,16 +2201,21 @@ class TestCreateMultipleGateways(TestGatewayOps): 'admin_state_up', 'availability_zone_hints', 'availability_zones', + 'created_at', 'description', 'distributed', + 'enable_ndp_proxy', 'external_gateway_info', + 'flavor_id', 'ha', 'id', 'name', 'project_id', + 'revision_number', 'routes', 'status', 'tags', + 'updated_at', ) def setUp(self): @@ -2215,19 +2232,24 @@ class TestCreateMultipleGateways(TestGatewayOps): ) self._data = ( - router.AdminStateColumn(self._router.admin_state_up), + router.AdminStateColumn(self._router.is_admin_state_up), format_columns.ListColumn(self._router.availability_zone_hints), format_columns.ListColumn(self._router.availability_zones), + self._router.created_at, self._router.description, - self._router.distributed, + self._router.is_distributed, + self._router.enable_ndp_proxy, router.RouterInfoColumn(self._router.external_gateway_info), - self._router.ha, + self._router.flavor_id, + self._router.is_ha, self._router.id, self._router.name, self._router.project_id, + self._router.revision_number, router.RoutesColumn(self._router.routes), self._router.status, format_columns.ListColumn(self._router.tags), + self._router.updated_at, ) self.cmd = router.CreateRouter(self.app, None) diff --git a/openstackclient/tests/unit/network/v2/test_security_group_network.py b/openstackclient/tests/unit/network/v2/test_security_group_network.py index 9619b29637..62b87642c0 100644 --- a/openstackclient/tests/unit/network/v2/test_security_group_network.py +++ b/openstackclient/tests/unit/network/v2/test_security_group_network.py @@ -36,28 +36,32 @@ class TestCreateSecurityGroupNetwork(TestSecurityGroupNetwork): project = identity_fakes.FakeProject.create_one_project() domain = identity_fakes.FakeDomain.create_one_domain() # The security group to be created. - _security_group = ( - network_fakes.FakeSecurityGroup.create_one_security_group() - ) + _security_group = network_fakes.create_one_security_group() columns = ( + 'created_at', 'description', 'id', 'name', 'project_id', + 'revision_number', 'rules', 'stateful', 'tags', + 'updated_at', ) data = ( + _security_group.created_at, _security_group.description, _security_group.id, _security_group.name, _security_group.project_id, + _security_group.revision_number, security_group.NetworkSecurityGroupRulesColumn([]), _security_group.stateful, _security_group.tags, + _security_group.updated_at, ) def setUp(self): @@ -163,7 +167,7 @@ class TestCreateSecurityGroupNetwork(TestSecurityGroupNetwork): else: self.assertFalse(self.network_client.set_tags.called) self.assertEqual(self.columns, columns) - self.assertCountEqual(self.data, data) + self.assertEqual(self.data, data) def test_create_with_tags(self): self._test_create_with_tag(add_tags=True) @@ -174,7 +178,7 @@ class TestCreateSecurityGroupNetwork(TestSecurityGroupNetwork): class TestDeleteSecurityGroupNetwork(TestSecurityGroupNetwork): # The security groups to be deleted. - _security_groups = network_fakes.FakeSecurityGroup.create_security_groups() + _security_groups = network_fakes.create_security_groups() def setUp(self): super().setUp() @@ -184,9 +188,7 @@ class TestDeleteSecurityGroupNetwork(TestSecurityGroupNetwork): ) self.network_client.find_security_group = ( - network_fakes.FakeSecurityGroup.get_security_groups( - self._security_groups - ) + network_fakes.get_security_groups(self._security_groups) ) # Get the command object to test @@ -264,9 +266,7 @@ class TestDeleteSecurityGroupNetwork(TestSecurityGroupNetwork): class TestListSecurityGroupNetwork(TestSecurityGroupNetwork): # The security group to be listed. - _security_groups = network_fakes.FakeSecurityGroup.create_security_groups( - count=3 - ) + _security_groups = network_fakes.create_security_groups(count=3) columns = ( 'ID', @@ -412,10 +412,8 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork): class TestSetSecurityGroupNetwork(TestSecurityGroupNetwork): # The security group to be set. - _security_group = ( - network_fakes.FakeSecurityGroup.create_one_security_group( - attrs={'tags': ['green', 'red']} - ) + _security_group = network_fakes.create_one_security_group( + attrs={'tags': ['green', 'red']} ) def setUp(self): @@ -515,37 +513,39 @@ class TestSetSecurityGroupNetwork(TestSecurityGroupNetwork): class TestShowSecurityGroupNetwork(TestSecurityGroupNetwork): # The security group rule to be shown with the group. - _security_group_rule = ( - network_fakes.FakeSecurityGroupRule.create_one_security_group_rule() - ) + _security_group_rule = network_fakes.create_one_security_group_rule() # The security group to be shown. - _security_group = ( - network_fakes.FakeSecurityGroup.create_one_security_group( - attrs={'security_group_rules': [_security_group_rule._info]} - ) + _security_group = network_fakes.create_one_security_group( + attrs={'security_group_rules': [dict(_security_group_rule)]} ) columns = ( + 'created_at', 'description', 'id', 'name', 'project_id', + 'revision_number', 'rules', 'stateful', 'tags', + 'updated_at', ) data = ( + _security_group.created_at, _security_group.description, _security_group.id, _security_group.name, _security_group.project_id, + _security_group.revision_number, security_group.NetworkSecurityGroupRulesColumn( - [_security_group_rule._info] + [dict(_security_group_rule)] ), _security_group.stateful, _security_group.tags, + _security_group.updated_at, ) def setUp(self): @@ -583,10 +583,8 @@ class TestShowSecurityGroupNetwork(TestSecurityGroupNetwork): class TestUnsetSecurityGroupNetwork(TestSecurityGroupNetwork): # The security group to be unset. - _security_group = ( - network_fakes.FakeSecurityGroup.create_one_security_group( - attrs={'tags': ['green', 'red']} - ) + _security_group = network_fakes.create_one_security_group( + attrs={'tags': ['green', 'red']} ) def setUp(self): diff --git a/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py b/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py index c9018db5c4..34cf12e017 100644 --- a/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +++ b/openstackclient/tests/unit/network/v2/test_security_group_rule_network.py @@ -40,14 +40,13 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): _security_group_rule = None # The security group that will contain the rule created. - _security_group = ( - network_fakes.FakeSecurityGroup.create_one_security_group() - ) + _security_group = network_fakes.create_one_security_group() # The address group to be used in security group rules _address_group = network_fakes.create_one_address_group() expected_columns = ( + 'created_at', 'description', 'direction', 'ether_type', @@ -59,21 +58,22 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): 'remote_address_group_id', 'remote_group_id', 'remote_ip_prefix', + 'revision_number', 'security_group_id', + 'updated_at', ) expected_data = None def _setup_security_group_rule(self, attrs=None): self._security_group_rule = ( - network_fakes.FakeSecurityGroupRule.create_one_security_group_rule( - attrs - ) + network_fakes.create_one_security_group_rule(attrs) ) self.network_client.create_security_group_rule = mock.Mock( return_value=self._security_group_rule ) self.expected_data = ( + self._security_group_rule.created_at, self._security_group_rule.description, self._security_group_rule.direction, self._security_group_rule.ether_type, @@ -85,7 +85,9 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): self._security_group_rule.remote_address_group_id, self._security_group_rule.remote_group_id, self._security_group_rule.remote_ip_prefix, + self._security_group_rule.revision_number, self._security_group_rule.security_group_id, + self._security_group_rule.updated_at, ) def setUp(self): @@ -963,11 +965,7 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): class TestDeleteSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): # The security group rules to be deleted. - _security_group_rules = ( - network_fakes.FakeSecurityGroupRule.create_security_group_rules( - count=2 - ) - ) + _security_group_rules = network_fakes.create_security_group_rules(count=2) def setUp(self): super().setUp() @@ -977,9 +975,7 @@ class TestDeleteSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): ) self.network_client.find_security_group_rule = ( - network_fakes.FakeSecurityGroupRule.get_security_group_rules( - self._security_group_rules - ) + network_fakes.get_security_group_rules(self._security_group_rules) ) # Get the command object to test @@ -1057,33 +1053,27 @@ class TestDeleteSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): # The security group to hold the rules. - _security_group = ( - network_fakes.FakeSecurityGroup.create_one_security_group() - ) + _security_group = network_fakes.create_one_security_group() # The security group rule to be listed. - _security_group_rule_tcp = ( - network_fakes.FakeSecurityGroupRule.create_one_security_group_rule( - { - 'protocol': 'tcp', - 'port_range_max': 80, - 'port_range_min': 80, - 'security_group_id': _security_group.id, - } - ) + _security_group_rule_tcp = network_fakes.create_one_security_group_rule( + { + 'protocol': 'tcp', + 'port_range_max': 80, + 'port_range_min': 80, + 'security_group_id': _security_group.id, + } ) - _security_group_rule_icmp = ( - network_fakes.FakeSecurityGroupRule.create_one_security_group_rule( - { - 'protocol': 'icmp', - 'remote_ip_prefix': '10.0.2.0/24', - 'security_group_id': _security_group.id, - } - ) + _security_group_rule_icmp = network_fakes.create_one_security_group_rule( + { + 'protocol': 'icmp', + 'remote_ip_prefix': '10.0.2.0/24', + 'security_group_id': _security_group.id, + } ) _security_group.security_group_rules = [ - _security_group_rule_tcp._info, - _security_group_rule_icmp._info, + dict(_security_group_rule_tcp), + dict(_security_group_rule_icmp), ] _security_group_rules = [ _security_group_rule_tcp, @@ -1264,11 +1254,10 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): class TestShowSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): # The security group rule to be shown. - _security_group_rule = ( - network_fakes.FakeSecurityGroupRule.create_one_security_group_rule() - ) + _security_group_rule = network_fakes.create_one_security_group_rule() columns = ( + 'created_at', 'description', 'direction', 'ether_type', @@ -1280,10 +1269,13 @@ class TestShowSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): 'remote_address_group_id', 'remote_group_id', 'remote_ip_prefix', + 'revision_number', 'security_group_id', + 'updated_at', ) data = ( + _security_group_rule.created_at, _security_group_rule.description, _security_group_rule.direction, _security_group_rule.ether_type, @@ -1295,7 +1287,9 @@ class TestShowSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork): _security_group_rule.remote_address_group_id, _security_group_rule.remote_group_id, _security_group_rule.remote_ip_prefix, + _security_group_rule.revision_number, _security_group_rule.security_group_id, + _security_group_rule.updated_at, ) def setUp(self):