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 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)
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)
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))
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)
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 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)
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)
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
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)
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
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)
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 get_power_state(self, task): driver_info = common.parse_driver_info(task.node) return oneview_client.get_node_power_state(driver_info)
def validate(self, task): common.parse_driver_info(task.node) super(OneViewDeploy, self).validate(task)
def validate(self, task): common.parse_driver_info(task.node)
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