def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host) self._enclosures = Enclosures(self.connection) self._enclosures.data = { 'uri': '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' }
def test_get_enclosure_env_config_not_found(self, get_map_appliances, get_map_resources, config_mock, get_env): """Tests EnclosureChassis with Enclosure env_config not found""" enclosure_obj = Enclosures(self.oneview_client, self.enclosure) config_mock.get_oneview_multiple_ips.return_value = ['10.0.0.1'] get_map_resources.return_value = OrderedDict({ "0000000000A66101": "10.0.0.1", }) get_map_appliances.return_value = self.map_appliance self.oneview_client.index_resources.get_all.return_value = \ [{"category": "enclosures"}] self.oneview_client.enclosures.get_by_id.return_value = enclosure_obj e = HPOneViewException({ 'errorCode': 'RESOURCE_NOT_FOUND', 'message': 'environmental configuration not found', }) Enclosures.get_environmental_configuration. \ side_effect = e response = self.client.get( "/redfish/v1/Chassis/0000000000A66101" ) self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code) self.assertEqual("application/json", response.mimetype)
def test_get_enclosure_chassis(self, get_map_appliances, get_map_resources,get_env): """"Tests EnclosureChassis with a known Enclosure""" get_env.return_value = self.enclosure_environment_configuration_mockup enclosure_obj = Enclosures(self.oneview_client, self.enclosure) get_map_resources.return_value = OrderedDict({ "0000000000A66101": "10.0.0.1", }) get_map_appliances.return_value = self.map_appliance self.oneview_client.index_resources.get_all.return_value = \ [{"category": "enclosures"}] self.oneview_client.enclosures.get_by_id.return_value = enclosure_obj Enclosures.get_environmental_configuration.return_value = \ get_env.return_value self.oneview_client.appliance_node_information.get_version.return_value = \ self.appliance_info # Get EnclosureChassis response = self.client.get( "/redfish/v1/Chassis/0000000000A66101" ) result = json.loads(response.data.decode("utf-8")) # Tests response self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual("application/json", response.mimetype) self.assertEqualMockup(self.enclosure_chassis_mockup, result) self.assertEqual( "{}{}".format("W/", self.enclosure["eTag"]), response.headers["ETag"])
def test_get_zone_when_external_storage_attached(self): """Tests get a Zone when the zone uuid is only template id""" api_client = self.oneview_client with open('oneview_redfish_toolkit/mockups/redfish/' 'ZoneWithExternalStorage.json') as f: zone_with_external_storage_mockup = json.load(f) enclosure_obj = Enclosures(self.oneview_client, self.enclosure) api_client.enclosures.get_by_id.return_value = enclosure_obj spt_obj = ServerProfileTemplate(self.oneview_client, self.server_profile_template) api_client.server_profile_templates.get_by_id.return_value = \ spt_obj api_client.server_hardware.get_all.return_value = \ self.server_hardware_list api_client.connection.get.side_effect = [ self.drive_encl_assoc, self.drives ] api_client.volumes.get_all.return_value = \ self.volumes response = self.client.get( "/redfish/v1/CompositionService/ResourceZones/" + self.spt_id + "-" + self.enclosure["uuid"]) result = json.loads(response.data.decode("utf-8")) self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual("application/json", response.mimetype) self.assertEqualMockup(zone_with_external_storage_mockup, result)
def enclosures(self): """ Gets the Enclosures API client. Returns: Enclosures: """ return Enclosures(self.__connection)
def test_get_zone_when_uuid_is_template_id_with_enclosure_id(self): """Tests get a Zone when the zone uuid is template id + enclosure id""" api_client = self.oneview_client with open( 'oneview_redfish_toolkit/mockups/redfish/Zone.json' ) as f: zone_mockup = json.load(f) enclosure_obj = Enclosures(self.oneview_client, self.enclosure) api_client.enclosures.get_by_id.return_value = enclosure_obj spt_obj = ServerProfileTemplate( self.oneview_client, self.server_profile_template) api_client.server_profile_templates.get_by_id.return_value = \ spt_obj api_client.server_hardware.get_all.return_value = \ self.server_hardware_list api_client.connection.get.side_effect = [ self.drive_encl_assoc, self.drives ] api_client.volumes.get_all.return_value = [] response = self.client.get( "/redfish/v1/CompositionService/ResourceZones/" + self.spt_id + "-" + self.enclosure["uuid"]) result = json.loads(response.data.decode("utf-8")) self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual("application/json", response.mimetype) self.assertEqualMockup(zone_mockup, result) api_client.enclosures.get_by_id.assert_called_with( self.enclosure["uuid"]) api_client.server_profile_templates.get_by_id.assert_called_with( self.spt_id) api_client.connection.get.assert_has_calls( [ call("/rest/index/associations/resources?parenturi=" + self.enclosure["uri"] + "&category=drive-enclosures"), call('/rest/index/resources?category=drives&count=10000' '&filter="driveEnclosureUri:' '/rest/drive-enclosures/SN123100"') ] ) api_client.server_hardware.get_all.assert_called_with( filter=[ "locationUri='/rest/enclosures/0000000000A66101'", "serverHardwareTypeUri='" + self.server_profile_template["serverHardwareTypeUri"] + "'" ])
def test_get_zone_when_drive_enclosures_assoc_is_empty(self): """Tests get a Zone when drive enclosures by enclosure is empty""" api_client = self.oneview_client with open( 'oneview_redfish_toolkit/mockups/redfish/' 'ZoneWithoutDrivesAssignedYet.json' ) as f: zone_without_drives_mockup = json.load(f) enclosure_obj = Enclosures(self.oneview_client, self.enclosure) api_client.enclosures.get_by_id.return_value = enclosure_obj spt_obj = ServerProfileTemplate( self.oneview_client, self.server_profile_template) api_client.server_profile_templates.get_by_id.return_value = \ spt_obj drive_encl_by_encl = copy.copy(self.drive_encl_assoc) drive_encl_by_encl["members"] = [] api_client.connection.get.side_effect = [ drive_encl_by_encl, self.drives ] api_client.server_hardware.get_all.return_value = \ self.server_hardware_list api_client.volumes.get_all.return_value = [] response = self.client.get( "/redfish/v1/CompositionService/ResourceZones/" + self.spt_id + "-" + self.enclosure["uuid"]) result = json.loads(response.data.decode("utf-8")) self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual("application/json", response.mimetype) self.assertEqualMockup(zone_without_drives_mockup, result) api_client.enclosures.get_by_id.assert_called_with( self.enclosure["uuid"]) api_client.server_profile_templates.get_by_id.assert_called_with( self.spt_id) api_client.connection.get.assert_has_calls([ call("/rest/index/associations/resources?parenturi=" + self.enclosure["uri"] + "&category=drive-enclosures") ]) api_client.server_hardware.get_all.assert_called_with( filter=[ "locationUri='/rest/enclosures/0000000000A66101'", "serverHardwareTypeUri='" + self.server_profile_template["serverHardwareTypeUri"] + "'" ])
def enclosures(self): """ Gets the Enclosures API client. Returns: Enclosures: """ if not self.__enclosures: self.__enclosures = Enclosures(self.__connection) return self.__enclosures
def test_get_enclosure_chassis_cached(self, get_map_appliances, get_map_resources, get_env): """"Tests EnclosureChassis with a known Enclosure""" enclosure_obj = Enclosures(self.oneview_client, self.enclosure) get_env.return_value = self.enclosure_environment_configuration_mockup get_map_resources.return_value = OrderedDict({ "0000000000A66101": "10.0.0.1", }) get_map_appliances.return_value = self.map_appliance self.oneview_client.index_resources.get_all.return_value = \ [{"category": "enclosures"}] self.oneview_client.enclosures.get_by_id.return_value = enclosure_obj Enclosures.get_environmental_configuration. \ return_value = get_env.return_value self.oneview_client.appliance_node_information.get_version.return_value = \ self.appliance_info uri = "/redfish/v1/Chassis/0000000000A66101" uuid = uri.split('/')[-1] # Get EnclosureChassis response = self.client.get(uri) result = json.loads(response.data.decode("utf-8")) # Tests response self.assertEqual(status.HTTP_200_OK, response.status_code) # Get cached EnclosureChassis response = self.client.get(uri) # Tests cached response self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual("application/json", response.mimetype) self.assertEqualMockup(self.enclosure_chassis_mockup, result) self.assertEqual( "{}{}".format("W/", self.enclosure["eTag"]), response.headers["ETag"]) # Check for cached calls self.oneview_client.index_resources.get_all.assert_called_once_with( filter='uuid=' + uuid ) assert self.oneview_client.enclosures.get.has_calls( [call(uuid), call(uuid)] ) self.assertTrue(category_resource.get_category_by_resource_id(uuid))
def test_enclosure_env_config_unexpected_error(self): """Tests EnclosureChassis env_config with an unexpected error""" enclosure_obj = Enclosures(self.oneview_client, self.enclosure) self.oneview_client.index_resources.get_all.return_value = \ [{"category": "enclosures"}] self.oneview_client.enclosures.get_by_id.return_value = enclosure_obj Enclosures.get_environmental_configuration. \ side_effect = Exception() response = self.client.get("/redfish/v1/Chassis/0000000000A66101") self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code) self.assertEqual("application/json", response.mimetype)
def test_get_enclosure_chassis_when_enclosure_does_not_belong_to_rack( self, get_map_appliances, get_map_resources, get_env): """"Tests EnclosureChassis when a Enclosure doesn't belong to a Rack""" encl_env_config_mockup = copy.deepcopy( self.enclosure_environment_configuration_mockup) encl_env_config_mockup['rackId'] = None encl_mockup = copy.deepcopy(self.enclosure_chassis_mockup) del encl_mockup['Links']['ContainedBy'] enclosure_obj = Enclosures(self.oneview_client, self.enclosure) get_map_resources.return_value = OrderedDict({ "0000000000A66101": "10.0.0.1", }) get_env.return_value = encl_env_config_mockup get_map_appliances.return_value = self.map_appliance self.oneview_client.index_resources.get_all.return_value = \ [{"category": "enclosures"}] self.oneview_client.enclosures.get_by_id.return_value = enclosure_obj Enclosures.get_environmental_configuration. \ return_value = get_env.return_value self.oneview_client.appliance_node_information.get_version.return_value = \ self.appliance_info # Get EnclosureChassis response = self.client.get( "/redfish/v1/Chassis/0000000000A66101" ) result = json.loads(response.data.decode("utf-8")) # Tests response self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual("application/json", response.mimetype) self.assertEqualMockup(encl_mockup, result) self.assertEqual( "{}{}".format("W/", self.enclosure["eTag"]), response.headers["ETag"])
class EnclosuresTest(TestCase): def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host) self._enclosures = Enclosures(self.connection) self._enclosures.data = {'uri': '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32'} @mock.patch.object(ResourceHelper, 'get_all') def test_get_all_called_once(self, mock_get_all): filter = 'name=TestName' sort = 'name:ascending' scope_uris = 'rest/scopes/cd237b60-09e2-45c4-829e-082e318a6d2a' self._enclosures.get_all(2, 500, filter, sort=sort, scope_uris=scope_uris) mock_get_all.assert_called_once_with(start=2, count=500, filter=filter, sort=sort, scope_uris=scope_uris) @mock.patch.object(ResourceHelper, 'get_all') def test_get_all_called_once_with_default_values(self, mock_get_all): self._enclosures.get_all(0, -1) mock_get_all.assert_called_once_with(count=-1, start=0, filter='', sort='', scope_uris='') @mock.patch.object(Resource, 'get_by') def test_get_by_called_once(self, mock_get_by): self._enclosures.get_by('name', 'OneViewSDK-Test-Enclosure') mock_get_by.assert_called_once_with('name', 'OneViewSDK-Test-Enclosure') @mock.patch.object(Enclosures, 'get_by_hostname') def test_get_by_hostname_called_one(self, mock_get_by_hostname): self._enclosures.get_by_hostname('host_name') mock_get_by_hostname.assert_called_once_with('host_name') @mock.patch.object(Enclosures, 'get_all') def test_get_by_hostname_return_with_no_host(self, mock_get_all): mock_get_all.return_value = [] actual_return = self._enclosures.get_by_hostname('host_name') expected_return = None self.assertEqual(actual_return, expected_return) @mock.patch.object(Enclosures, 'get_all') def test_get_by_hostname_return_with_primary_ip(self, mock_get_all): enclosure = {'activeOaPreferredIP': '1.1.1.1', "name": "En1"} mock_get_all.return_value = [enclosure] actual_return = self._enclosures.get_by_hostname('1.1.1.1') expected_return = enclosure self.assertEqual(actual_return.data, expected_return) @mock.patch.object(Enclosures, 'get_all') def test_get_by_hostname_return_with_standby_ip(self, mock_get_all): enclosure = {'standbyOaPreferredIP': '1.1.1.1', "name": "En1"} mock_get_all.return_value = [enclosure] actual_return = self._enclosures.get_by_hostname('1.1.1.1') expected_return = enclosure self.assertEqual(actual_return.data, expected_return) @mock.patch.object(Resource, 'create') def test_add_called_once(self, mock_create): information = { 'enclosureGroupUri': '/rest/enclosure-groups/id-enclosure-group' } mock_create.return_value = {} self._enclosures.add(information) mock_create.assert_called_once_with(data=information.copy(), timeout=-1) @mock.patch.object(Resource, 'get_by_uri') def test_get_with_uri_called_once(self, mock_get): uri = '/rest/enclosures/3518be0e-17c1-4189-8f81-83f3724f6155' self._enclosures.get_by_uri(uri) mock_get.assert_called_once_with(uri) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourcePatchMixin, 'patch_request') def test_patch_should_use_user_defined_values(self, mock_patch, ensure_resource_data): mock_patch.return_value = {} self._enclosures.patch('replace', '/name', 'new_name', timeout=1) print (self._enclosures.data) mock_patch.assert_called_once_with('/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32', body=[{u'path': '/name', u'value': 'new_name', u'op': 'replace'}], custom_headers=None, timeout=1) @mock.patch.object(Resource, 'delete') def test_remove_called_once(self, mock_delete): self._enclosures.remove(force=False) mock_delete.assert_called_once_with(force=False) @mock.patch.object(Resource, 'delete') def test_remove_called_once_with_force(self, mock_delete): self._enclosures.remove(force=True) mock_delete.assert_called_once_with(force=True) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceZeroBodyMixin, 'update_with_zero_body') def test_update_configuration_by_uri(self, mock_update_with_zero_body, ensure_resource_data): self._enclosures.update_configuration() uri = "{}/configuration".format(self._enclosures.data['uri']) mock_update_with_zero_body.assert_called_once_with(uri=uri, timeout=-1) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_get') def test_get_environmental_configuration_by_uri(self, mock_get, ensure_resource_data): uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' self._enclosures.get_environmental_configuration() mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_get') def test_get_environmental_configuration_by_id(self, mock_get, ensure_resource_data): uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' self._enclosures.get_environmental_configuration() mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_put') def test_update_environmental_configuration_by_uri(self, mock_put, ensure_resource_data): uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' configuration = {"calibratedMaxPower": 2500} configuration_rest_call = configuration.copy() self._enclosures.update_environmental_configuration(configuration, timeout=-1) mock_put.assert_called_once_with(uri_rest_call, configuration_rest_call, -1, None) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_put') def test_refresh_state_by_uri(self, mock_put, ensure_resource_data): uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/refreshState' configuration = {"refreshState": "RefreshPending"} configuration_rest_call = configuration.copy() self._enclosures.refresh_state(configuration) mock_put.assert_called_once_with(uri_rest_call, configuration_rest_call, -1, None) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_get') def test_get_script_by_uri(self, mock_get, ensure_resource_data): uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/script' self._enclosures.get_script() mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_get') def test_get_sso_by_uri(self, mock_get, ensure_resource_data): uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/sso?role=Active' self._enclosures.get_sso('Active') mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceUtilizationMixin, 'get_utilization') def test_get_utilization_with_all_args(self, mock_get_utilization): self._enclosures.get_utilization('09USE7335NW3', fields='AmbientTemperature,AveragePower,PeakPower', filter='startDate=2016-05-30T03:29:42.361Z', refresh=True, view='day') mock_get_utilization.assert_called_once_with('09USE7335NW3', fields='AmbientTemperature,AveragePower,PeakPower', filter='startDate=2016-05-30T03:29:42.361Z', refresh=True, view='day') @mock.patch.object(ResourceUtilizationMixin, 'get_utilization') def test_get_utilization_by_uri_with_defaults(self, mock_get): self._enclosures.get_utilization('/rest/enclosures/09USE7335NW3') mock_get.assert_called_once_with('/rest/enclosures/09USE7335NW3') @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_post') def test_generate_csr(self, mock_post, ensure_resource_data): bay_number = 1 uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/https/certificaterequest?bayNumber=%d' % (bay_number) csr_data = { 'type': 'CertificateDtoV2', 'organization': 'Acme Corp.', 'organizationalUnit': 'IT', 'locality': 'Townburgh', 'state': 'Mississippi', 'country': 'US', 'email': '*****@*****.**' } headers = {'Content-Type': 'application/json'} self._enclosures.generate_csr(csr_data, bay_number=bay_number) mock_post.assert_called_once_with(uri_rest_call, csr_data, -1, headers) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_get') def test_get_csr(self, mock_get, ensure_resource_data): bay_number = 1 uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/https/certificaterequest?bayNumber=%d' % (bay_number) self._enclosures.get_csr(bay_number=bay_number) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(Resource, 'ensure_resource_data') @mock.patch.object(ResourceHelper, 'do_put') def test_import_certificate(self, mock_put, ensure_resource_data): bay_number = 1 uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/https/certificaterequest?bayNumber=%d' % (bay_number) certificate_data = { 'type': 'CertificateDataV2', 'base64Data': '-----BEGIN CERTIFICATE----- encoded data here -----END CERTIFICATE-----' } headers = {'Content-Type': 'application/json'} self._enclosures.import_certificate(certificate_data, bay_number=bay_number) mock_put.assert_called_once_with(uri_rest_call, certificate_data, -1, headers)
def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host) self._enclosures = Enclosures(self.connection)
class EnclosuresTest(TestCase): def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host) self._enclosures = Enclosures(self.connection) @mock.patch.object(ResourceClient, 'get_all') def test_get_all_called_once(self, mock_get_all): filter = 'name=TestName' sort = 'name:ascending' self._enclosures.get_all(2, 500, filter, sort) mock_get_all.assert_called_once_with(2, 500, filter=filter, sort=sort) @mock.patch.object(ResourceClient, 'get_all') def test_get_all_called_once_with_default_values(self, mock_get_all): self._enclosures.get_all() mock_get_all.assert_called_once_with(0, -1, filter='', sort='') @mock.patch.object(ResourceClient, 'get_by') def test_get_by_called_once(self, mock_get_by): self._enclosures.get_by('name', 'OneViewSDK-Test-Enclosure') mock_get_by.assert_called_once_with('name', 'OneViewSDK-Test-Enclosure') @mock.patch.object(ResourceClient, 'create') def test_add_called_once(self, mock_create): information = { 'enclosureGroupUri': '/rest/enclosure-groups/id-enclosure-group' } mock_create.return_value = {} self._enclosures.add(information) mock_create.assert_called_once_with(information.copy(), timeout=-1) @mock.patch.object(ResourceClient, 'get') def test_get_called_once(self, mock_get): self._enclosures.get('3518be0e-17c1-4189-8f81-83f3724f6155') mock_get.assert_called_once_with('3518be0e-17c1-4189-8f81-83f3724f6155') @mock.patch.object(ResourceClient, 'get') def test_get_with_uri_called_once(self, mock_get): uri = '/rest/enclosures/3518be0e-17c1-4189-8f81-83f3724f6155' self._enclosures.get(uri) mock_get.assert_called_once_with(uri) @mock.patch.object(ResourceClient, 'patch') def test_patch_should_use_user_defined_values(self, mock_patch): mock_patch.return_value = {} self._enclosures.patch('123a53cz', 'replace', '/name', 'new_name', 1) mock_patch.assert_called_once_with('123a53cz', 'replace', '/name', 'new_name', timeout=1) @mock.patch.object(ResourceClient, 'delete') def test_remove_called_once(self, mock_delete): id = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' self._enclosures.remove(id, force=False) mock_delete.assert_called_once_with(id, force=False, timeout=-1) @mock.patch.object(ResourceClient, 'delete') def test_remove_called_once_with_force(self, mock_delete): id = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' self._enclosures.remove(id, force=True) mock_delete.assert_called_once_with(id, force=True, timeout=-1) @mock.patch.object(ResourceClient, 'update_with_zero_body') def test_update_configuration_by_uri(self, mock_update_with_zero_body): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/configuration' self._enclosures.update_configuration(uri_enclosure) mock_update_with_zero_body.assert_called_once_with(uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update_with_zero_body') def test_update_configuration_by_id(self, mock_update_with_zero_body): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/configuration' self._enclosures.update_configuration(id_enclosure) mock_update_with_zero_body.assert_called_once_with(uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'get') def test_get_environmental_configuration_by_uri(self, mock_get): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' self._enclosures.get_environmental_configuration(uri_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_environmental_configuration_by_id(self, mock_get): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' self._enclosures.get_environmental_configuration(id_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'update') def test_update_environmental_configuration_by_uri(self, mock_update): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' configuration = {"calibratedMaxPower": 2500} configuration_rest_call = configuration.copy() self._enclosures.update_environmental_configuration(uri_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update') def test_update_environmental_configuration_by_id(self, mock_update): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' configuration = {"calibratedMaxPower": 2500} configuration_rest_call = configuration.copy() self._enclosures.update_environmental_configuration(id_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update') def test_refresh_state_by_uri(self, mock_update): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/refreshState' configuration = {"refreshState": "RefreshPending"} configuration_rest_call = configuration.copy() self._enclosures.refresh_state(uri_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update') def test_refresh_state_by_id(self, mock_update): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/refreshState' configuration = {"refreshState": "RefreshPending"} configuration_rest_call = configuration.copy() self._enclosures.refresh_state(id_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'get') def test_get_script_by_uri(self, mock_get): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/script' self._enclosures.get_script(uri_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_script_by_id(self, mock_get): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/script' self._enclosures.get_script(id_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_sso_by_uri(self, mock_get): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/sso?role=Active' self._enclosures.get_sso(uri_enclosure, 'Active') mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_sso_by_id(self, mock_get): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/sso?role=Active' self._enclosures.get_sso(id_enclosure, 'Active') mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get_utilization') def test_get_utilization_with_all_args(self, mock_get_utilization): self._enclosures.get_utilization('09USE7335NW3', fields='AmbientTemperature,AveragePower,PeakPower', filter='startDate=2016-05-30T03:29:42.361Z', refresh=True, view='day') mock_get_utilization.assert_called_once_with('09USE7335NW3', fields='AmbientTemperature,AveragePower,PeakPower', filter='startDate=2016-05-30T03:29:42.361Z', refresh=True, view='day') @mock.patch.object(ResourceClient, 'get_utilization') def test_get_utilization_by_id_with_defaults(self, mock_get): self._enclosures.get_utilization('09USE7335NW3') mock_get.assert_called_once_with('09USE7335NW3', fields=None, filter=None, refresh=False, view=None) @mock.patch.object(ResourceClient, 'get_utilization') def test_get_utilization_by_uri_with_defaults(self, mock_get): self._enclosures.get_utilization('/rest/enclosures/09USE7335NW3') mock_get.assert_called_once_with('/rest/enclosures/09USE7335NW3', fields=None, filter=None, refresh=False, view=None)
class EnclosuresTest(TestCase): def setUp(self): self.host = '127.0.0.1' self.connection = connection(self.host) self._enclosures = Enclosures(self.connection) @mock.patch.object(ResourceClient, 'get_all') def test_get_all_called_once(self, mock_get_all): filter = 'name=TestName' sort = 'name:ascending' scope_uris = 'rest/scopes/cd237b60-09e2-45c4-829e-082e318a6d2a' self._enclosures.get_all(2, 500, filter, sort, scope_uris) mock_get_all.assert_called_once_with(2, 500, filter=filter, sort=sort, scope_uris=scope_uris) @mock.patch.object(ResourceClient, 'get_all') def test_get_all_called_once_with_default_values(self, mock_get_all): self._enclosures.get_all() mock_get_all.assert_called_once_with(0, -1, filter='', sort='', scope_uris='') @mock.patch.object(ResourceClient, 'get_by') def test_get_by_called_once(self, mock_get_by): self._enclosures.get_by('name', 'OneViewSDK-Test-Enclosure') mock_get_by.assert_called_once_with('name', 'OneViewSDK-Test-Enclosure') @mock.patch.object(ResourceClient, 'create') def test_add_called_once(self, mock_create): information = { 'enclosureGroupUri': '/rest/enclosure-groups/id-enclosure-group' } mock_create.return_value = {} self._enclosures.add(information) mock_create.assert_called_once_with(information.copy(), timeout=-1) @mock.patch.object(ResourceClient, 'get') def test_get_called_once(self, mock_get): self._enclosures.get('3518be0e-17c1-4189-8f81-83f3724f6155') mock_get.assert_called_once_with('3518be0e-17c1-4189-8f81-83f3724f6155') @mock.patch.object(ResourceClient, 'get') def test_get_with_uri_called_once(self, mock_get): uri = '/rest/enclosures/3518be0e-17c1-4189-8f81-83f3724f6155' self._enclosures.get(uri) mock_get.assert_called_once_with(uri) @mock.patch.object(ResourceClient, 'patch') def test_patch_should_use_user_defined_values(self, mock_patch): mock_patch.return_value = {} self._enclosures.patch('123a53cz', 'replace', '/name', 'new_name', 1) mock_patch.assert_called_once_with('123a53cz', 'replace', '/name', 'new_name', custom_headers={'If-Match': '*'}, timeout=1) @mock.patch.object(ResourceClient, 'delete') def test_remove_called_once(self, mock_delete): id = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' self._enclosures.remove(id, force=False) mock_delete.assert_called_once_with(id, force=False, timeout=-1) @mock.patch.object(ResourceClient, 'delete') def test_remove_called_once_with_force(self, mock_delete): id = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' self._enclosures.remove(id, force=True) mock_delete.assert_called_once_with(id, force=True, timeout=-1) @mock.patch.object(ResourceClient, 'update_with_zero_body') def test_update_configuration_by_uri(self, mock_update_with_zero_body): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/configuration' self._enclosures.update_configuration(uri_enclosure) mock_update_with_zero_body.assert_called_once_with(uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update_with_zero_body') def test_update_configuration_by_id(self, mock_update_with_zero_body): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/configuration' self._enclosures.update_configuration(id_enclosure) mock_update_with_zero_body.assert_called_once_with(uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'get') def test_get_environmental_configuration_by_uri(self, mock_get): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' self._enclosures.get_environmental_configuration(uri_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_environmental_configuration_by_id(self, mock_get): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' self._enclosures.get_environmental_configuration(id_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'update') def test_update_environmental_configuration_by_uri(self, mock_update): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' configuration = {"calibratedMaxPower": 2500} configuration_rest_call = configuration.copy() self._enclosures.update_environmental_configuration(uri_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update') def test_update_environmental_configuration_by_id(self, mock_update): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/environmentalConfiguration' configuration = {"calibratedMaxPower": 2500} configuration_rest_call = configuration.copy() self._enclosures.update_environmental_configuration(id_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update') def test_refresh_state_by_uri(self, mock_update): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/refreshState' configuration = {"refreshState": "RefreshPending"} configuration_rest_call = configuration.copy() self._enclosures.refresh_state(uri_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'update') def test_refresh_state_by_id(self, mock_update): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/refreshState' configuration = {"refreshState": "RefreshPending"} configuration_rest_call = configuration.copy() self._enclosures.refresh_state(id_enclosure, configuration) mock_update.assert_called_once_with(configuration_rest_call, uri=uri_rest_call, timeout=-1) @mock.patch.object(ResourceClient, 'get') def test_get_script_by_uri(self, mock_get): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/script' self._enclosures.get_script(uri_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_script_by_id(self, mock_get): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/script' self._enclosures.get_script(id_enclosure) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_sso_by_uri(self, mock_get): uri_enclosure = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/sso?role=Active' self._enclosures.get_sso(uri_enclosure, 'Active') mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get') def test_get_sso_by_id(self, mock_get): id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/sso?role=Active' self._enclosures.get_sso(id_enclosure, 'Active') mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'get_utilization') def test_get_utilization_with_all_args(self, mock_get_utilization): self._enclosures.get_utilization('09USE7335NW3', fields='AmbientTemperature,AveragePower,PeakPower', filter='startDate=2016-05-30T03:29:42.361Z', refresh=True, view='day') mock_get_utilization.assert_called_once_with('09USE7335NW3', fields='AmbientTemperature,AveragePower,PeakPower', filter='startDate=2016-05-30T03:29:42.361Z', refresh=True, view='day') @mock.patch.object(ResourceClient, 'get_utilization') def test_get_utilization_by_id_with_defaults(self, mock_get): self._enclosures.get_utilization('09USE7335NW3') mock_get.assert_called_once_with('09USE7335NW3', fields=None, filter=None, refresh=False, view=None) @mock.patch.object(ResourceClient, 'get_utilization') def test_get_utilization_by_uri_with_defaults(self, mock_get): self._enclosures.get_utilization('/rest/enclosures/09USE7335NW3') mock_get.assert_called_once_with('/rest/enclosures/09USE7335NW3', fields=None, filter=None, refresh=False, view=None) @mock.patch.object(ResourceClient, 'create') def test_generate_csr(self, mock_create): bay_number = 1 id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/https/certificaterequest?bayNumber=%d' % (bay_number) csr_data = { 'type': 'CertificateDtoV2', 'organization': 'Acme Corp.', 'organizationalUnit': 'IT', 'locality': 'Townburgh', 'state': 'Mississippi', 'country': 'US', 'email': '*****@*****.**' } headers = {'Content-Type': 'application/json'} self._enclosures.generate_csr(csr_data, id_enclosure, bay_number=bay_number) mock_create.assert_called_once_with(csr_data, uri=uri_rest_call, custom_headers=headers) @mock.patch.object(ResourceClient, 'get') def test_get_csr(self, mock_get): bay_number = 1 id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/https/certificaterequest?bayNumber=%d' % (bay_number) self._enclosures.get_csr(id_enclosure, bay_number=bay_number) mock_get.assert_called_once_with(uri_rest_call) @mock.patch.object(ResourceClient, 'update') def test_import_certificate(self, mock_update): bay_number = 1 id_enclosure = 'ad28cf21-8b15-4f92-bdcf-51cb2042db32' uri_rest_call = '/rest/enclosures/ad28cf21-8b15-4f92-bdcf-51cb2042db32/https/certificaterequest?bayNumber=%d' % (bay_number) certificate_data = { 'type': 'CertificateDataV2', 'base64Data': '-----BEGIN CERTIFICATE----- encoded data here -----END CERTIFICATE-----' } headers = {'Content-Type': 'application/json'} self._enclosures.import_certificate(certificate_data, id_enclosure, bay_number=bay_number) mock_update.assert_called_once_with(certificate_data, uri=uri_rest_call, custom_headers=headers)
def enclosures(self): if not self.__enclosures: self.__enclosures = Enclosures(self.__connection) return self.__enclosures