def test_serialize(self):
        # Tests the serialize function result against known result

        try:
            storage = Storage('30303437-3034-4D32-3230-313133364752',
                              self.server_hardware_types)
        except Exception as e:
            self.fail("Failed to instantiate Storage class."
                      " Error: {}".format(e))

        try:
            result = json.loads(storage.serialize())
        except Exception as e:
            self.fail("Failed to serialize. Error: ".format(e))

        self.assertEqual(self.storage_mockup, result)
Пример #2
0
def get_storage(uuid):
    """Get the Redfish Storage for a given UUID.

        Return Storage Redfish JSON for a given hardware UUID.
        Logs exception of any error and return abort(500)
        Internal Server Error.

        Returns:
            JSON: Redfish json with Storage
            When hardware or hardware type is not found calls abort(404)

        Exceptions:
            Logs the exception and call abort(500)

    """
    try:
        server_hardware = g.oneview_client.server_hardware. \
            get(uuid)

        sht_uri = server_hardware['serverHardwareTypeUri']
        server_hardware_type = \
            g.oneview_client.server_hardware_types.get(sht_uri)

        st = Storage(uuid, server_hardware_type)

        json_str = st.serialize()

        return Response(
            response=json_str,
            status=status.HTTP_200_OK,
            mimetype="application/json")
    except HPOneViewException as e:
        if e.oneview_response['errorCode'] == "RESOURCE_NOT_FOUND":
            if e.msg.find("server-hardware-types") >= 0:
                logging.warning(
                    'Server hardware type ID {} not found'.
                    format(server_hardware['serverHardwareTypeUri']))
                abort(
                    status.HTTP_404_NOT_FOUND,
                    "Server hardware types not found")
            else:
                logging.warning(
                    'Server hardware UUID {} not found'.
                    format(uuid))
                abort(
                    status.HTTP_404_NOT_FOUND,
                    "Server hardware not found")
        elif e.msg.find("server-hardware-types") >= 0:
            logging.exception(
                'OneView Exception while looking for server hardware type'
                ' {}'.format(e)
            )
            abort(status.HTTP_500_INTERNAL_SERVER_ERROR)
        elif e.msg.find("server-hardware") >= 0:
            logging.exception(
                'OneView Exception while looking for '
                'server hardware: {}'.format(e)
            )
            abort(status.HTTP_500_INTERNAL_SERVER_ERROR)
        else:
            logging.exception('Unexpected OneView Exception: {}'.format(e))
            abort(status.HTTP_500_INTERNAL_SERVER_ERROR)
    except Exception as e:
        # In case of error print exception and abort
        logging.exception('Unexpected error: {}'.format(e))
        return abort(status.HTTP_500_INTERNAL_SERVER_ERROR)