def test_add_a_list_of_ethernet_networks(self, mock_ethnet_get, mock_uplink_update): ethernet_to_add = [ 'eth1', 'eth2', ] uplink_to_update = { 'networkUris': [ '/rest/ethernet-networks/134dcf5e-0d8e-441c-b00d-e1dd6a067188', '/rest/ethernet-networks/5f14bf27-f839-4e9f-9ec8-9f0e0b413939', ] } eth1 = self._ethernet_networks eth2 = EthernetNetworks(self.connection) eth1.data = { 'name': 'eth1', 'uri': '/rest/ethernet-networks/134dcf5e-0d8e-441c-b00d-e1dd6a067188' } eth2.data = { 'name': 'eth2', 'uri': '/rest/ethernet-networks/5f14bf27-f839-4e9f-9ec8-9f0e0b413939' } result_get_enet = [eth1, eth2] mock_ethnet_get.side_effect = result_get_enet self._uplink_sets.add_ethernet_networks(ethernet_to_add) mock_uplink_update.assert_called_once_with(uplink_to_update)
def ethernet_networks(self): """ Gets the EthernetNetworks API client. Returns: EthernetNetworks: """ return EthernetNetworks(self.__connection)
def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host, 800) self._uplink_sets = UplinkSets(self.connection) self._uplink_sets.data = { 'uri': '/rest/ul-inksets/ad28cf21-8b15-4f92-bdcf-51cb2042db32' } self._ethernet_networks = EthernetNetworks(self.connection)
def __init__(self, connection, data=None): super(UplinkSets, self).__init__(connection, data) self._ethernet_networks = EthernetNetworks(connection)
class UplinkSets(Resource): """ Uplink Sets API client. """ URI = '/rest/uplink-sets' DEFAULT_VALUES = { '200': {"type": "uplink-setV3"}, '300': {"type": "uplink-setV300"}, '500': {"type": "uplink-setV300"}, '600': {"type": "uplink-setV4"}, '800': {"type": "uplink-setV4"}, '1000': {"type": "uplink-setV5"}, '1200': {"type": "uplink-setV6"}, '1600': {"type": "uplink-setV7"}, '1800': {"type": "uplink-setV7"} } def __init__(self, connection, data=None): super(UplinkSets, self).__init__(connection, data) self._ethernet_networks = EthernetNetworks(connection) @ensure_resource_client def get_ethernet_networks(self): """ Gets a list of associated ethernet networks of an uplink set. Args: id_or_uri: Can be either the uplink set id or the uplink set uri. Returns: list: Associated ethernet networks. """ network_uris = self.data.get('networkUris') networks = [] if network_uris: for uri in network_uris: networks.append(self._ethernet_networks.get_by_uri(uri)) return networks @ensure_resource_client def add_ethernet_networks(self, ethernet_names): """ Adds existing ethernet networks to an uplink set. Args: id_or_uri: Can be either the uplink set id or the uplink set uri. ethernet_name: Could be either one or more ethernet network names. Returns: dict: The updated uplink set. """ self.__set_ethernet_uris(ethernet_names, operation="add") return self.data @ensure_resource_client def remove_ethernet_networks(self, ethernet_names): """ Remove existing ethernet networks of an uplink set. Args: id_or_uri: Can be either the uplink set id or the uplink set uri. ethernet_id_or_uris: Could be either one or more ethernet network id or ethernet network uri. Returns: dict: The updated uplink set. """ self.__set_ethernet_uris(ethernet_names, operation="remove") return self.data def __set_ethernet_uris(self, ethernet_names, operation="add"): """Updates network uris.""" if not isinstance(ethernet_names, list): ethernet_names = [ethernet_names] associated_enets = self.data.get('networkUris', []) ethernet_uris = [] for i, enet in enumerate(ethernet_names): enet_exists = self._ethernet_networks.get_by_name(enet) if enet_exists: ethernet_uris.append(enet_exists.data['uri']) else: raise HPEOneViewResourceNotFound("Ethernet: {} does not exist".foramt(enet)) if operation == "remove": enets_to_update = sorted(list(set(associated_enets) - set(ethernet_uris))) elif operation == "add": enets_to_update = sorted(list(set(associated_enets).union(set(ethernet_uris)))) else: raise ValueError("Value {} is not supported as operation. The supported values are: ['add', 'remove']") if set(enets_to_update) != set(associated_enets): updated_network = {'networkUris': enets_to_update} self.update(updated_network)
def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host, 800) self._ethernet_networks = EthernetNetworks(self.connection)
class EthernetNetworksTest(TestCase): def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host, 800) self._ethernet_networks = EthernetNetworks(self.connection) @mock.patch.object(ResourceHelper, 'get_all') def test_get_all_called_once(self, mock_get_all): filter = 'name=TestName' sort = 'name:ascending' self._ethernet_networks.get_all(2, 500, filter, sort) mock_get_all.assert_called_once_with(count=500, filter=filter, sort=sort, start=2) @mock.patch.object(ResourceHelper, 'create') def test_create_should_use_given_values(self, mock_create): resource = { 'vlanId': 10, 'name': 'OneViewSDK Test Ethernet Network', "ethernetNetworkType": "Tagged", "purpose": "Management", "connectionTemplateUri": None, "smartLink": False, "privateNetwork": False } resource_rest_call = resource.copy() resource_rest_call['type'] = 'ethernet-networkV4' mock_create.return_value = {} self._ethernet_networks.create(resource, timeout=12) mock_create.assert_called_once_with(resource_rest_call, None, 12, None, False) @mock.patch.object(ResourceHelper, 'create') @mock.patch.object(Resource, 'get_all') def test_create_bulk(self, mock_get_all, mock_create): resource = { 'vlanIdRange': '1-10', 'purpose': 'General', 'namePrefix': 'TestNetwork', 'smartLink': False, 'privateNetwork': False, 'bandwidth': { 'maximumBandwidth': 10000, 'typicalBandwidth': 2000 } } resource_rest_call = resource.copy() resource_rest_call['type'] = 'bulk-ethernet-networkV1' mock_create.return_value = {} mock_get_all.return_value = [] self._ethernet_networks.create_bulk(resource, 27) mock_create.assert_called_once_with(resource_rest_call, uri='/rest/ethernet-networks/bulk', timeout=27) mock_get_all.assert_called_once_with( filter='"\'name\' matches \'TestNetwork\\_%\'"', sort='vlanId:ascending') @mock.patch.object(Resource, 'update') def test_update_should_use_given_values(self, mock_update): resource = { 'name': 'OneViewSDK Test Ethernet Network', 'smartLink': False, 'connectionTemplateUri': None, 'vlanId': None, 'privateNetwork': True, 'ethernetNetworkType': 'Untagged', 'purpose': 'General' } resource_rest_call = resource.copy() mock_update.return_value = {} self._ethernet_networks.update(resource, timeout=60) mock_update.assert_called_once_with(resource_rest_call, timeout=60) @mock.patch.object(Resource, 'update') def test_update_should_use_default_values(self, mock_update): resource = { 'name': 'OneViewSDK Test Ethernet Network', } mock_update.return_value = {} self._ethernet_networks.update(resource) mock_update.assert_called_once_with(resource) @mock.patch.object(Resource, 'delete') def test_delete_called_once(self, mock_delete): id = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' self._ethernet_networks.delete(id, force=False, timeout=-1) mock_delete.assert_called_once_with(id, force=False, timeout=-1) @mock.patch.object(Resource, 'get_by') def test_get_by_called_once(self, mock_get_by): self._ethernet_networks.get_by('name', 'OneViewSDK Test Ethernet Network') mock_get_by.assert_called_once_with( 'name', 'OneViewSDK Test Ethernet Network') @mock.patch.object(ResourceHelper, 'do_get') def test_get_associated_uplink_groups_uri_called_once_with_uri( self, mock_get): self._ethernet_networks.data = { "name": "name", "uri": "/rest/ethernet-networks/3518be0e-17c1-4189-8f81-83f3724f6155" } self._ethernet_networks.get_associated_uplink_groups() uri = '/rest/ethernet-networks/3518be0e-17c1-4189-8f81-83f3724f6155/associatedUplinkGroups' mock_get.assert_called_once_with(uri) @mock.patch.object(ResourceHelper, 'do_get') def test_get_associated_profiles_called_once_with_uri(self, mock_get): self._ethernet_networks.data = { "name": "name", "uri": "/rest/ethernet-networks/3518be0e-17c1-4189-8f81-83f3724f6155" } self._ethernet_networks.get_associated_profiles() uri = '/rest/ethernet-networks/3518be0e-17c1-4189-8f81-83f3724f6155/associatedProfiles' mock_get.assert_called_once_with(uri) def __mock_enet_gel_all(self): return [ { 'name': 'TestNetwork_1', 'vlanId': 1 }, { 'name': 'TestNetwork_2', 'vlanId': 2 }, { 'name': 'TestNetwork_3', 'vlanId': 3 }, { 'name': 'TestNetwork_4', 'vlanId': 4 }, { 'name': 'TestNetwork_5', 'vlanId': 5 }, { 'name': 'TestNetwork_5', 'vlanId': 6 }, { 'name': 'TestNetwork_7', 'vlanId': 7 }, { 'name': 'TestNetwork_8', 'vlanId': 8 }, { 'name': 'TestNetwork_9', 'vlanId': 9 }, { 'name': 'TestNetwork_10', 'vlanId': 10 }, ] @mock.patch.object(EthernetNetworks, 'get_all') def test_get_bulk_with_one_range(self, mock_get_all): mock_get_all.return_value = self.__mock_enet_gel_all() expected_result = [ { 'name': 'TestNetwork_1', 'vlanId': 1 }, { 'name': 'TestNetwork_2', 'vlanId': 2 }, { 'name': 'TestNetwork_3', 'vlanId': 3 }, { 'name': 'TestNetwork_4', 'vlanId': 4 }, ] result = self._ethernet_networks.get_range('TestNetwork', '1-4') self.assertEqual(result, expected_result) @mock.patch.object(EthernetNetworks, 'get_all') def test_get_bulk_with_one_value(self, mock_get_all): mock_get_all.return_value = self.__mock_enet_gel_all() expected_result = [ { 'name': 'TestNetwork_1', 'vlanId': 1 }, { 'name': 'TestNetwork_2', 'vlanId': 2 }, ] result = self._ethernet_networks.get_range('TestNetwork', '2') self.assertEqual(result, expected_result) @mock.patch.object(EthernetNetworks, 'get_all') def test_get_bulk_with_one_value_and_one_range(self, mock_get_all): mock_get_all.return_value = self.__mock_enet_gel_all() expected_result = [ { 'name': 'TestNetwork_2', 'vlanId': 2 }, { 'name': 'TestNetwork_9', 'vlanId': 9 }, { 'name': 'TestNetwork_10', 'vlanId': 10 }, ] result = self._ethernet_networks.get_range('TestNetwork', '2, 9-10') self.assertEqual(result, expected_result) @mock.patch.object(EthernetNetworks, 'get_all') def test_get_bulk_with_multiple_values(self, mock_get_all): mock_get_all.return_value = self.__mock_enet_gel_all() expected_result = [ { 'name': 'TestNetwork_9', 'vlanId': 9 }, { 'name': 'TestNetwork_10', 'vlanId': 10 }, ] result = self._ethernet_networks.get_range('TestNetwork', '9,10') self.assertEqual(result, expected_result) @mock.patch.object(EthernetNetworks, 'get_all') def test_get_bulk_with_multiple_ranges(self, mock_get_all): mock_get_all.return_value = self.__mock_enet_gel_all() expected_result = [ { 'name': 'TestNetwork_5', 'vlanId': 6 }, { 'name': 'TestNetwork_7', 'vlanId': 7 }, { 'name': 'TestNetwork_9', 'vlanId': 9 }, { 'name': 'TestNetwork_10', 'vlanId': 10 }, ] result = self._ethernet_networks.get_range('TestNetwork', '6-7,9-10') self.assertEqual(result, expected_result) @mock.patch.object(ResourcePatchMixin, 'patch_request') @mock.patch.object(Resource, 'get_by') def test_patch_should_use_user_defined_values(self, mock_get_by, mock_patch): mock_patch.return_value = {} self._ethernet_networks.data = { "name": "test name", "uri": "/rest/test" } self._ethernet_networks.patch('replace', '/scopeUris', ['/rest/fake/scope123'], 1) mock_patch.assert_called_once_with('/rest/test', body=[{ u'path': '/scopeUris', u'value': ['/rest/fake/scope123'], u'op': 'replace' }], custom_headers=1, timeout=-1) def test_dissociate_values_or_ranges_with_one_value(self): expected_result = [1, 2, 3, 4, 5] result = self._ethernet_networks.dissociate_values_or_ranges('5') self.assertEqual(result, expected_result) def test_dissociate_values_or_ranges_with_multiple_values(self): expected_result = [6, 7, 9] result = self._ethernet_networks.dissociate_values_or_ranges('6,7,9') self.assertEqual(result, expected_result) def test_dissociate_values_or_ranges_with_one_range(self): expected_result = [6, 7] result = self._ethernet_networks.dissociate_values_or_ranges('6-7') self.assertEqual(result, expected_result) def test_dissociate_values_or_ranges_with_multiple_ranges(self): expected_result = [6, 7, 9, 10] result = self._ethernet_networks.dissociate_values_or_ranges( '6-7,9-10') self.assertEqual(result, expected_result) @mock.patch.object(ResourceHelper, 'create') @mock.patch.object(Resource, 'get_all') def test_delete_bulk(self, mock_get_all, mock_create): resource = { "networkUris": [ "/rest/ethernet-networks/e2f0031b-52bd-4223-9ac1-d91cb519d548", "/rest/ethernet-networks/f2f0031b-52bd-4223-9ac1-d91cb519d549", "/rest/ethernet-networks/02f0031b-52bd-4223-9ac1-d91cb519d54a" ] } resource_rest_call = resource.copy() mock_create.return_value = {} mock_get_all.return_value = [] self._ethernet_networks.delete_bulk(resource, 27) mock_create.assert_called_once_with( resource_rest_call, uri='/rest/ethernet-networks/bulk-delete', timeout=27)