def __init__(self, oneview_resource, firmware_version):
        """Manager constructor

            Populates self.redfish with some hardcoded Manager
            values and with the response from OneView.

            Args:
                oneview_resource: A dict for ServerHardware or Enclosure
        """

        super().__init__(self.SCHEMA_NAME)

        self.redfish["@odata.type"] = "#Manager.v1_3_1.Manager"
        self.redfish["Id"] = oneview_resource['uuid']
        self.redfish["Description"] = None
        self.redfish["FirmwareVersion"] = firmware_version
        self.redfish["Status"] = collections.OrderedDict()
        self.redfish["Status"]["State"] = \
            status_mapping.get_redfish_state(oneview_resource["status"])
        self.redfish["Status"]["Health"] = \
            status_mapping.get_redfish_health(oneview_resource["status"])
        self.redfish["@odata.context"] = \
            "/redfish/v1/$metadata#Manager.Manager"
        self.redfish["@odata.id"] = \
            "/redfish/v1/Managers/" + oneview_resource['uuid']
    def __init__(self, oneview_resource):
        """Chassis constructor

        Populates self.redfish with common value between Enclosure,
         Rack and Blade.

        Args:
            oneview_resource: An object some oneview_resource (ServerHardware,
            Enclosure or Rack) to create the Redfish JSON.
        """

        super().__init__(self.SCHEMA_NAME)

        self.redfish["@odata.type"] = "#Chassis.v1_5_0.Chassis"
        self.redfish["Id"] = oneview_resource["uuid"]
        self.redfish["Name"] = oneview_resource["name"]
        self.redfish["Manufacturer"] = "HPE"
        self.redfish["SerialNumber"] = oneview_resource["serialNumber"]
        self.redfish["PartNumber"] = oneview_resource["partNumber"]
        self.redfish["Status"] = collections.OrderedDict()
        self.redfish["Status"]["State"] = \
            status_mapping.get_redfish_state(oneview_resource["status"])
        self.redfish["Status"]["Health"] = \
            status_mapping.get_redfish_health(oneview_resource["status"])
        self.redfish["Links"] = collections.OrderedDict()
        self.redfish["@odata.context"] = \
            "/redfish/v1/$metadata#Chassis.Chassis"
        self.redfish["@odata.id"] = \
            "/redfish/v1/Chassis/" + oneview_resource['uuid']
        self.redfish["Thermal"] = collections.OrderedDict()
        self.redfish["Thermal"]["@odata.id"] = \
            "/redfish/v1/Chassis/" + oneview_resource['uuid'] + "/Thermal"
Exemple #3
0
    def __init__(self, server_hardware):
        """ResourceBlock ComputerSystem constructor

            Populates self.redfish with the contents of server hardware dict.

            Args:
                server_hardware: server hardware dict from OneView
        """
        super().__init__(self.SCHEMA_NAME)

        self.server_hardware = server_hardware

        self.redfish["@odata.type"] = "#ComputerSystem.v1_4_0.ComputerSystem"
        self.redfish["Id"] = server_hardware["uuid"]
        self.redfish["Name"] = server_hardware["name"]
        self.redfish["SystemType"] = "Physical"
        self.redfish["Manufacturer"] = "HPE"
        self.redfish["Model"] = server_hardware["model"]
        self.redfish["SerialNumber"] = server_hardware["serialNumber"]
        self.redfish["Status"] = collections.OrderedDict()
        self.redfish["Status"]["State"] = \
            status_mapping.get_redfish_state(server_hardware["status"])
        self.redfish["Status"]["Health"] = \
            status_mapping.get_redfish_health(server_hardware["status"])

        self.redfish["PowerState"] = server_hardware["powerState"]
        self.redfish["BiosVersion"] = server_hardware["romVersion"]

        self.redfish["ProcessorSummary"] = collections.OrderedDict()
        self.redfish["ProcessorSummary"]['Count'] = \
            server_hardware["processorCount"]
        self.redfish["ProcessorSummary"]["Model"] = \
            server_hardware["processorType"]

        self.redfish["MemorySummary"] = collections.OrderedDict()
        self.redfish["MemorySummary"]["TotalSystemMemoryGiB"] = \
            server_hardware["memoryMb"] / 1024

        self.fill_links()

        self.redfish["@odata.context"] = \
            "/redfish/v1/$metadata#ComputerSystem.ComputerSystem"
        self.redfish["@odata.id"] = \
            "/redfish/v1/CompositionService/ResourceBlocks/" \
            + server_hardware["uuid"] \
            + "/ComputerSystem/" \
            + server_hardware["serialNumber"]

        self._validate()
Exemple #4
0
    def __init__(self, uuid, server_hardware_type):
        """Storage constructor

            Populates self.redfish with the contents of server hardware type

            Args:
                server_hardware_type: Server hardware type
        """
        super().__init__(self.SCHEMA_NAME)

        drive_technologies = \
            server_hardware_type['storageCapabilities']['driveTechnologies']

        self.redfish["@odata.id"] = \
            "/redfish/v1/Systems/" + uuid + "/Storage/1"
        self.redfish["@odata.context"] = \
            "/redfish/v1/$metadata#Storage.Storage"
        self.redfish["@odata.type"] = "#Storage.v1_2_0.Storage"
        self.redfish["*****@*****.**"] = 1
        self.redfish["Id"] = "1"
        self.redfish["Name"] = "Storage Controller"
        self.redfish["Status"] = collections.OrderedDict()
        self.redfish["Status"]["State"] = \
            status_mapping.get_redfish_state("OK")
        self.redfish["Status"]["Health"] = \
            status_mapping.get_redfish_health("OK")
        self.redfish["StorageControllers"] = list()

        # adapter storage capabilities (if any)
        for adapter in server_hardware_type['adapters']:
            if adapter['storageCapabilities']:
                new_capability = collections.OrderedDict()
                new_capability["SupportedDeviceProtocols"] = sorted(
                    self.map_supported_device_protos(drive_technologies))
                self.redfish["StorageControllers"].append(new_capability)

        # internal storage capabilities
        storage_controllers = collections.OrderedDict()
        storage_controllers["Manufacturer"] = "HPE"
        storage_controllers["SupportedDeviceProtocols"] = \
            sorted(self.map_supported_device_protos(drive_technologies))
        self.redfish["StorageControllers"].append(storage_controllers)

        self._validate()
Exemple #5
0
    def test_mapping(self):
        """Test mapping OneView Status to Redfish Status.

            In this case self.server_hardware["status"] is equal to OK.
        """

        with open('oneview_redfish_toolkit/mockups/oneview/ServerHardware.json'
                  ) as f:
            server_hardware = json.load(f)

        redfish_state = \
            status_mapping.get_redfish_state(server_hardware["status"])

        self.assertEqual(redfish_state, "Enabled")

        redfish_health = \
            status_mapping.get_redfish_health(server_hardware["status"])

        self.assertEqual(redfish_health, "OK")
Exemple #6
0
    def __init__(self, server_hardware, server_hardware_types):
        """ComputerSystem constructor

            Populates self.redfish with the contents of ServerHardware and
            ServerHardwareTypes dicts.

            Args:
                server_hardware: ServerHardware dict from OneView
                server_hardware_types: ServerHardwareTypes dict from OneView
        """
        super().__init__(self.SCHEMA_NAME)

        self.server_hardware = server_hardware

        self.redfish["@odata.type"] = "#ComputerSystem.v1_4_0.ComputerSystem"
        self.redfish["Id"] = server_hardware["uuid"]
        self.redfish["Name"] = server_hardware["name"]
        self.redfish["SystemType"] = "Physical"
        self.redfish["Manufacturer"] = "HPE"
        self.redfish["Model"] = server_hardware["model"]
        self.redfish["SerialNumber"] = server_hardware["serialNumber"]
        self.redfish["Status"] = collections.OrderedDict()
        self.redfish["Status"]["State"] = \
            status_mapping.get_redfish_state(server_hardware["status"])
        self.redfish["Status"]["Health"] = \
            status_mapping.get_redfish_health(server_hardware["status"])
        self.redfish["PowerState"] = server_hardware["powerState"]
        self.redfish["Boot"] = collections.OrderedDict()
        self.redfish["Boot"]["BootSourceOverrideTarget@Redfish."
                             "AllowableValues"] = \
            self.map_boot(server_hardware_types['bootCapabilities'])
        self.redfish["BiosVersion"] = server_hardware["romVersion"]
        self.redfish["ProcessorSummary"] = collections.OrderedDict()
        self.redfish["ProcessorSummary"]['Count'] = \
            server_hardware["processorCount"]
        self.redfish["ProcessorSummary"]["Model"] = \
            server_hardware["processorType"]
        self.redfish["MemorySummary"] = collections.OrderedDict()
        self.redfish["MemorySummary"]["TotalSystemMemoryGiB"] = \
            server_hardware["memoryMb"] / 1024
        self.redfish["Storage"] = collections.OrderedDict()
        self.redfish["Storage"]["@odata.id"] = \
            self.BASE_URI + "/" + server_hardware['uuid'] + "/Storage"
        self.redfish["NetworkInterfaces"] = collections.OrderedDict()
        self.redfish["NetworkInterfaces"]["@odata.id"] = \
            self.BASE_URI + "/" + \
            server_hardware['uuid'] + \
            "/NetworkInterfaces"
        self.redfish["Links"] = collections.OrderedDict()
        self.redfish["Links"]["Chassis"] = list()
        self.redfish["Links"]["Chassis"].append(collections.OrderedDict())
        self.redfish["Links"]["Chassis"][0]["@odata.id"] = \
            "/redfish/v1/Chassis/" + server_hardware['uuid']
        self.redfish["Links"]["ManagedBy"] = list()
        self.redfish["Links"]["ManagedBy"].append(collections.OrderedDict())
        self.redfish["Links"]["ManagedBy"][0]["@odata.id"] = \
            "/redfish/v1/Managers/" + server_hardware['uuid']
        self.redfish["Actions"] = collections.OrderedDict()
        self.redfish["Actions"]["#ComputerSystem.Reset"] = \
            collections.OrderedDict()
        self.redfish["Actions"]["#ComputerSystem.Reset"]["target"] = \
            self.BASE_URI + "/" + \
            server_hardware["uuid"] + \
            "/Actions/ComputerSystem.Reset"
        self.redfish["Actions"]["#ComputerSystem.Reset"][
            "*****@*****.**"] = \
            ["On", "ForceOff", "GracefulShutdown", "GracefulRestart",
             "ForceRestart", "Nmi", "ForceOn", "PushPowerButton"]
        self.redfish["@odata.context"] = \
            "/redfish/v1/$metadata#ComputerSystem.ComputerSystem"
        self.redfish["@odata.id"] = self.BASE_URI + "/" \
            + server_hardware["uuid"]

        self._validate()