def test_parse_driver_info_missing_extra(self):
     self.node.extra = {}
     try:
         common.parse_driver_info(self.node)
         self.fail()
     except exception.MissingParameterValue as e:
         self.assertEqual("Missing the following OneView data in " "node's extra: server_hardware_uri.", str(e))
Ejemplo n.º 2
0
 def test_parse_driver_info_missing_extra(self):
     self.node.extra = {}
     try:
         common.parse_driver_info(self.node)
         self.fail()
     except exception.MissingParameterValue as e:
         self.assertEqual(
             "Missing the following OneView data in "
             "node\'s extra: server_hardware_uri.", str(e))
    def setUp(self):
        super(OneViewManagementDriverTestCase, self).setUp()
        self.config(manager_url="https://1.2.3.4", group="oneview")
        self.config(username="******", group="oneview")
        self.config(password="******", group="oneview")

        self.mock_verify_oneview_version_obj = mock.patch.object(
            oneview_client, "verify_oneview_version", autospec=True, return_value=120
        )
        self.mock_verify_oneview_version = self.mock_verify_oneview_version_obj.start()
        self.addCleanup(self.mock_verify_oneview_version_obj.stop)
        self.mock_check_oneview_status_obj = mock.patch.object(
            oneview_client, "check_oneview_status", autospec=True, return_value=200
        )
        self.mock_check_oneview_status = self.mock_check_oneview_status_obj.start()
        self.addCleanup(self.mock_check_oneview_status_obj.stop)

        mgr_utils.mock_the_extension_manager(driver="fake_oneview")
        self.driver = driver_factory.get_driver("fake_oneview")

        self.node = obj_utils.create_test_node(
            self.context,
            driver="fake_oneview",
            properties=PROPERTIES_DICT,
            extra=EXTRA_DICT,
            driver_info=DRIVER_INFO_DICT,
            instance_info=INSTANCE_INFO_DICT,
        )
        self.info = common.parse_driver_info(self.node)
Ejemplo n.º 4
0
    def setUp(self):
        super(OneViewPowerDriverTestCase, self).setUp()
        self.config(manager_url='https://1.2.3.4', group='oneview')
        self.config(username='******', group='oneview')
        self.config(password='******', group='oneview')

        self.mock_verify_oneview_version_obj = mock.patch.object(
            oneview_client,
            'verify_oneview_version',
            autospec=True,
            return_value=120)
        self.mock_verify_oneview_version = (
            self.mock_verify_oneview_version_obj.start())
        self.addCleanup(self.mock_verify_oneview_version_obj.stop)
        self.mock_check_oneview_status_obj = mock.patch.object(
            oneview_client,
            'check_oneview_status',
            autospec=True,
            return_value=200)
        self.mock_check_oneview_status = (
            self.mock_check_oneview_status_obj.start())
        self.addCleanup(self.mock_check_oneview_status_obj.stop)

        mgr_utils.mock_the_extension_manager(driver="fake_oneview")
        self.driver = driver_factory.get_driver("fake_oneview")

        self.node = obj_utils.create_test_node(
            self.context,
            driver='fake_oneview',
            properties=PROPERTIES_DICT,
            extra=EXTRA_DICT,
            driver_info=DRIVER_INFO_DICT,
            instance_info=INSTANCE_INFO_DICT)
        self.info = common.parse_driver_info(self.node)
Ejemplo n.º 5
0
    def test_parse_driver_info_missing_properties(self):
        self.node.properties = {
            "cpu_arch": "x86_64",
            "cpus": "8",
            "local_gb": "10",
            "memory_mb": "4096",
            "capabilities": "enclosure_group_uri:fake_eg_uri"
        }

        try:
            common.parse_driver_info(self.node)
            self.fail()
        except exception.MissingParameterValue as e:
            self.assertEqual(
                "Missing the following OneView data in "
                "node\'s properties/capabilities: "
                "server_hardware_type_uri.", str(e))
    def test_parse_driver_info_missing_properties(self):
        self.node.properties = {
            "cpu_arch": "x86_64",
            "cpus": "8",
            "local_gb": "10",
            "memory_mb": "4096",
            "capabilities": "enclosure_group_uri:fake_eg_uri",
        }

        try:
            common.parse_driver_info(self.node)
            self.fail()
        except exception.MissingParameterValue as e:
            self.assertEqual(
                "Missing the following OneView data in " "node's properties/capabilities: " "server_hardware_type_uri.",
                str(e),
            )
    def test_parse_driver_info(self):
        complete_node = self.node
        expected_node_info = {
            "server_hardware_uri": "fake_sh_uri",
            "server_hardware_type_uri": "fake_sht_uri",
            "enclosure_group_uri": "fake_eg_uri",
            "server_profile_template_uri": "fake_spt_uri",
        }

        self.assertEqual(expected_node_info, common.parse_driver_info(complete_node))
Ejemplo n.º 8
0
    def test_parse_driver_info(self):
        complete_node = self.node
        expected_node_info = {
            'server_hardware_uri': 'fake_sh_uri',
            'server_hardware_type_uri': 'fake_sht_uri',
            'enclosure_group_uri': 'fake_eg_uri',
            'server_profile_template_uri': 'fake_spt_uri',
        }

        self.assertEqual(expected_node_info,
                         common.parse_driver_info(complete_node))
    def get_boot_device(self, task):
        driver_info = common.parse_driver_info(task.node)
        node_has_server_profile = oneview_client.get_server_profile_from_hardware(driver_info)

        if not node_has_server_profile:
            raise exception.OperationNotPermitted(_("A Server Profile is not associated with the node."))

        boot_order = oneview_client.get_boot_order(driver_info)
        boot_device = {"boot_device": BOOT_DEVICE_OV_TO_GENERIC.get(boot_order[0]), "persistent": False}

        return boot_device
    def test_parse_driver_info_catch_invalid_spt(self):
        self.node.instance_info = {"capabilities": "server_profile_template_uri,fake_spt_uri"}

        expected_node_info = {
            "server_hardware_uri": "fake_sh_uri",
            "server_hardware_type_uri": "fake_sht_uri",
            "enclosure_group_uri": "fake_eg_uri",
            "server_profile_template_uri": "",
        }

        self.assertEqual(expected_node_info, common.parse_driver_info(self.node))
    def set_boot_device(self, task, device, persistent=False):
        driver_info = common.parse_driver_info(task.node)

        if device not in self.get_supported_boot_devices():
            raise exception.InvalidParameterValue(_("Invalid boot device %s specified.") % device)

        node_has_server_profile = oneview_client.get_server_profile_from_hardware(driver_info)
        if not node_has_server_profile:
            raise exception.OperationNotPermitted(_("A Server Profile is not associated with the node."))

        device_to_oneview = BOOT_DEVICE_MAPPING_TO_OV.get(device)
        oneview_client.set_boot_device(driver_info, device_to_oneview)
Ejemplo n.º 12
0
    def test_parse_driver_info_catch_invalid_spt(self):
        self.node.instance_info = {
            "capabilities": "server_profile_template_uri,fake_spt_uri"
        }

        expected_node_info = {
            'server_hardware_uri': 'fake_sh_uri',
            'server_hardware_type_uri': 'fake_sht_uri',
            'enclosure_group_uri': 'fake_eg_uri',
            'server_profile_template_uri': '',
        }

        self.assertEqual(expected_node_info,
                         common.parse_driver_info(self.node))
Ejemplo n.º 13
0
    def reboot(self, task):
        driver_info = common.parse_driver_info(task.node)
        oneview_client.power_off(driver_info)
        power_state = "PoweringOff"

        while power_state == "PoweringOff":
            LOG.debug("Node %(node_uuid)s is powering off",
                      {'node_uuid': task.node.uuid})
            power_state = oneview_client.get_node_power_state(driver_info)

        LOG.info(_LI("Node %(node_uuid)s power state is %(power_state)s"),
                 {'node_uuid': task.node.uuid, 'power_state': power_state})

        oneview_client.power_on(driver_info)
Ejemplo n.º 14
0
    def deploy(self, task):
        driver_info = common.parse_driver_info(task.node)
        server_profile_template_uri = driver_info.get(
            "server_profile_template_uri")

        LOG.debug(_('Cloning server profile %s on OneView'),
                  server_profile_template_uri)

        oneview_client.clone_and_assign(driver_info,
                                        server_profile_template_uri,
                                        task.node._instance_uuid)

        LOG.info(_('Server profile template %s cloned on Oneview'),
                 server_profile_template_uri)

        return super(OneViewDeploy, self).deploy(task)
Ejemplo n.º 15
0
    def set_power_state(self, task, power_state):
        driver_info = common.parse_driver_info(task.node)

        if power_state == states.POWER_ON:
            state = oneview_client.power_on(driver_info)
        elif power_state == states.POWER_OFF:
            state = oneview_client.power_off(driver_info)
        else:
            raise exception.InvalidParameterValue(
                _("set_power_state called with invalid power state %s.") %
                power_state)

        if state != power_state:
            raise exception.PowerStateFailure(pstate=power_state)

        task.node.power_state = power_state
Ejemplo n.º 16
0
    def deploy(self, task):
        driver_info = common.parse_driver_info(task.node)
        server_profile_template_uri = driver_info.get(
            "server_profile_template_uri")

        LOG.debug(_('Cloning server profile %s on OneView'),
                  server_profile_template_uri)

        oneview_client.clone_and_assign(driver_info,
                                        server_profile_template_uri,
                                        task.node._instance_uuid)

        LOG.info(_('Server profile template %s cloned on Oneview'),
                 server_profile_template_uri)

        return super(OneViewDeploy, self).deploy(task)
Ejemplo n.º 17
0
    def reboot(self, task):
        driver_info = common.parse_driver_info(task.node)
        oneview_client.power_off(driver_info)
        power_state = "PoweringOff"

        while power_state == "PoweringOff":
            LOG.debug("Node %(node_uuid)s is powering off",
                      {'node_uuid': task.node.uuid})
            power_state = oneview_client.get_node_power_state(driver_info)

        LOG.info(_LI("Node %(node_uuid)s power state is %(power_state)s"), {
            'node_uuid': task.node.uuid,
            'power_state': power_state
        })

        oneview_client.power_on(driver_info)
Ejemplo n.º 18
0
    def set_power_state(self, task, power_state):
        driver_info = common.parse_driver_info(task.node)

        if power_state == states.POWER_ON:
            state = oneview_client.power_on(driver_info)
        elif power_state == states.POWER_OFF:
            state = oneview_client.power_off(driver_info)
        else:
            raise exception.InvalidParameterValue(
                _("set_power_state called with invalid power state %s.")
                % power_state)

        if state != power_state:
            raise exception.PowerStateFailure(pstate=power_state)

        task.node.power_state = power_state
Ejemplo n.º 19
0
    def deploy(self, task):
        driver_info = common.parse_driver_info(task.node)
        server_profile_template_uri = driver_info.get(
            "server_profile_template_uri")

        LOG.debug(_('Cloning server profile template %s on OneView'),
                  server_profile_template_uri)

        oneview_client.clone_and_assign(driver_info,
                                        server_profile_template_uri,
                                        task.node._instance_uuid)

        LOG.info(_('Server profile template %s cloned on Oneview'),
                 server_profile_template_uri)

        manager_utils.node_power_action(task, states.REBOOT)

        return states.DEPLOYDONE
Ejemplo n.º 20
0
    def deploy(self, task):
        driver_info = common.parse_driver_info(task.node)
        server_profile_template_uri = driver_info.get(
            "server_profile_template_uri")

        LOG.debug(_('Cloning server profile template %s on OneView'),
                  server_profile_template_uri)

        oneview_client.clone_and_assign(driver_info,
                                        server_profile_template_uri,
                                        task.node._instance_uuid)

        LOG.info(_('Server profile template %s cloned on Oneview'),
                 server_profile_template_uri)

        manager_utils.node_power_action(task, states.REBOOT)

        return states.DEPLOYDONE
Ejemplo n.º 21
0
    def set_boot_device(self, task, device, persistent=False):
        driver_info = common.parse_driver_info(task.node)

        if device not in self.get_supported_boot_devices():
            raise exception.InvalidParameterValue(
                _("Invalid boot device %s specified.") % device)

        node_has_server_profile = (oneview_client
                                   .get_server_profile_from_hardware(
                                       driver_info
                                   )
                                   )
        if not node_has_server_profile:
            raise exception.OperationNotPermitted(
                _("A Server Profile is not associated with the node."))

        device_to_oneview = BOOT_DEVICE_MAPPING_TO_OV.get(device)
        oneview_client.set_boot_device(driver_info, device_to_oneview)
Ejemplo n.º 22
0
    def get_boot_device(self, task):
        driver_info = common.parse_driver_info(task.node)
        node_has_server_profile = (oneview_client
                                   .get_server_profile_from_hardware(
                                       driver_info
                                   )
                                   )

        if not node_has_server_profile:
            raise exception.OperationNotPermitted(
                _("A Server Profile is not associated with the node."))

        boot_order = oneview_client.get_boot_order(driver_info)
        boot_device = {
            'boot_device': BOOT_DEVICE_OV_TO_GENERIC.get(boot_order[0]),
            'persistent': False
        }

        return boot_device
Ejemplo n.º 23
0
 def get_power_state(self, task):
     driver_info = common.parse_driver_info(task.node)
     return oneview_client.get_node_power_state(driver_info)
Ejemplo n.º 24
0
 def validate(self, task):
     common.parse_driver_info(task.node)
     super(OneViewDeploy, self).validate(task)
Ejemplo n.º 25
0
 def validate(self, task):
     common.parse_driver_info(task.node)
Ejemplo n.º 26
0
 def tear_down(self, task):
     driver_info = common.parse_driver_info(task.node)
     manager_utils.node_power_action(task, states.POWER_OFF)
     oneview_client.unassign_and_delete(driver_info)
     return states.DELETED
Ejemplo n.º 27
0
 def validate(self, task):
     common.parse_driver_info(task.node)
     super(OneViewDeploy, self).validate(task)
Ejemplo n.º 28
0
 def validate(self, task):
     common.parse_driver_info(task.node)
Ejemplo n.º 29
0
 def tear_down(self, task):
     driver_info = common.parse_driver_info(task.node)
     manager_utils.node_power_action(task, states.POWER_OFF)
     oneview_client.unassign_and_delete(driver_info)
     return states.DELETED
Ejemplo n.º 30
0
 def get_power_state(self, task):
     driver_info = common.parse_driver_info(task.node)
     return oneview_client.get_node_power_state(driver_info)