Пример #1
0
 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)
Пример #6
0
    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"] + "'"
            ])
Пример #7
0
    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"] + "'"
            ])
Пример #8
0
    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"])
Пример #12
0
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)
Пример #13
0
 def setUp(self):
     self.host = '127.0.0.1'
     self.connection = connection(self.host)
     self._enclosures = Enclosures(self.connection)
Пример #14
0
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)
Пример #15
0
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)
Пример #16
0
 def enclosures(self):
     if not self.__enclosures:
         self.__enclosures = Enclosures(self.__connection)
     return self.__enclosures