Add boot management
Change-Id: I51d712a24948726e7c7c03530cf8fd7953f5f190
This commit is contained in:
parent
400f9317ba
commit
31711e9444
@ -20,6 +20,8 @@ import logging
|
||||
from dracclient import exceptions
|
||||
from dracclient.resources import bios
|
||||
from dracclient.resources import job
|
||||
from dracclient.resources import lifecycle_controller
|
||||
from dracclient.resources import uris
|
||||
from dracclient import utils
|
||||
from dracclient import wsman
|
||||
|
||||
@ -29,6 +31,8 @@ LOG = logging.getLogger(__name__)
|
||||
class DRACClient(object):
|
||||
"""Client for managing DRAC nodes"""
|
||||
|
||||
BIOS_DEVICE_FQDD = 'BIOS.Setup.1-1'
|
||||
|
||||
def __init__(self, host, username, password, port=443, path='/wsman',
|
||||
protocol='https'):
|
||||
"""Creates client object
|
||||
@ -44,6 +48,7 @@ class DRACClient(object):
|
||||
protocol)
|
||||
self._job_mgmt = job.JobManagement(self.client)
|
||||
self._power_mgmt = bios.PowerManagement(self.client)
|
||||
self._boot_mgmt = bios.BootManagement(self.client)
|
||||
|
||||
def get_power_state(self):
|
||||
"""Returns the current power state of the node
|
||||
@ -71,6 +76,46 @@ class DRACClient(object):
|
||||
"""
|
||||
self._power_mgmt.set_power_state(target_state)
|
||||
|
||||
def list_boot_modes(self):
|
||||
"""Returns the list of boot modes
|
||||
|
||||
:returns: list of BootMode objects
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
"""
|
||||
return self._boot_mgmt.list_boot_modes()
|
||||
|
||||
def list_boot_devices(self):
|
||||
"""Returns the list of boot devices
|
||||
|
||||
:returns: a dictionary with the boot modes and the list of associated
|
||||
BootDevice objects, ordered by the pending_assigned_sequence
|
||||
property
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
"""
|
||||
return self._boot_mgmt.list_boot_devices()
|
||||
|
||||
def change_boot_device_order(self, boot_mode, boot_device_list):
|
||||
"""Changes the boot device sequence for a boot mode
|
||||
|
||||
:param boot_mode: boot mode for which the boot device list is to be
|
||||
changed
|
||||
:param boot_device_list: a list of boot device ids in an order
|
||||
representing the desired boot sequence
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
:raises: DRACUnexpectedReturnValue on return value mismatch
|
||||
"""
|
||||
return self._boot_mgmt.change_boot_device_order(boot_mode,
|
||||
boot_device_list)
|
||||
|
||||
def list_jobs(self, only_unfinished=False):
|
||||
"""Returns a list of jobs from the job queue
|
||||
|
||||
@ -163,6 +208,47 @@ class DRACClient(object):
|
||||
resource_uri, cim_creation_class_name, cim_name, target,
|
||||
cim_system_creation_class_name, cim_system_name)
|
||||
|
||||
def commit_pending_bios_changes(self):
|
||||
"""Applies all pending changes on the BIOS by creating a config job
|
||||
|
||||
:returns: id of the created job
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
:raises: DRACUnexpectedReturnValue on return value mismatch
|
||||
"""
|
||||
return self._job_mgmt.create_config_job(
|
||||
resource_uri=uris.DCIM_BIOSService,
|
||||
cim_creation_class_name='DCIM_BIOSService',
|
||||
cim_name='DCIM:BIOSService', target=self.BIOS_DEVICE_FQDD)
|
||||
|
||||
def abandon_pending_bios_changes(self):
|
||||
"""Deletes all pending changes on the BIOS
|
||||
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
:raises: DRACUnexpectedReturnValue on return value mismatch
|
||||
"""
|
||||
self._job_mgmt.delete_pending_config(
|
||||
resource_uri=uris.DCIM_BIOSService,
|
||||
cim_creation_class_name='DCIM_BIOSService',
|
||||
cim_name='DCIM:BIOSService', target=self.BIOS_DEVICE_FQDD)
|
||||
|
||||
def get_lifecycle_controller_version(self):
|
||||
"""Returns the Lifecycle controller version
|
||||
|
||||
:returns: Lifecycle controller version as a tuple of integers
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
"""
|
||||
return lifecycle_controller.LifecycleControllerManagement(
|
||||
self.client).get_version()
|
||||
|
||||
|
||||
class WSManClient(wsman.Client):
|
||||
"""Wrapper for wsman.Client with return value checking"""
|
||||
|
@ -11,8 +11,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import collections
|
||||
|
||||
from dracclient import constants
|
||||
from dracclient import exceptions
|
||||
from dracclient.resources import lifecycle_controller
|
||||
from dracclient.resources import uris
|
||||
from dracclient import utils
|
||||
|
||||
@ -24,6 +27,28 @@ POWER_STATES = {
|
||||
|
||||
REVERSE_POWER_STATES = dict((v, k) for (k, v) in POWER_STATES.items())
|
||||
|
||||
BOOT_MODE_IS_CURRENT = {
|
||||
'1': True,
|
||||
'2': False
|
||||
}
|
||||
|
||||
BOOT_MODE_IS_NEXT = {
|
||||
'1': True, # is next
|
||||
'2': False, # is not next
|
||||
'3': True # is next for single use (one time boot only)
|
||||
}
|
||||
|
||||
LC_CONTROLLER_VERSION_12G = (2, 0, 0)
|
||||
|
||||
BootMode = collections.namedtuple('BootMode', ['id', 'name', 'is_current',
|
||||
'is_next'])
|
||||
|
||||
BootDevice = collections.namedtuple('BootDevice',
|
||||
['id', 'boot_mode',
|
||||
'current_assigned_sequence',
|
||||
'pending_assigned_sequence',
|
||||
'bios_boot_string'])
|
||||
|
||||
|
||||
class PowerManagement(object):
|
||||
|
||||
@ -82,3 +107,148 @@ class PowerManagement(object):
|
||||
|
||||
self.client.invoke(uris.DCIM_ComputerSystem, 'RequestStateChange',
|
||||
selectors, properties)
|
||||
|
||||
|
||||
class BootManagement(object):
|
||||
|
||||
def __init__(self, client):
|
||||
"""Creates BootManagement object
|
||||
|
||||
:param client: an instance of WSManClient
|
||||
"""
|
||||
self.client = client
|
||||
|
||||
def list_boot_modes(self):
|
||||
"""Returns the list of boot modes
|
||||
|
||||
:returns: list of BootMode objects
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
"""
|
||||
|
||||
doc = self.client.enumerate(uris.DCIM_BootConfigSetting)
|
||||
|
||||
drac_boot_modes = utils.find_xml(doc, 'DCIM_BootConfigSetting',
|
||||
uris.DCIM_BootConfigSetting,
|
||||
find_all=True)
|
||||
|
||||
return [self._parse_drac_boot_mode(drac_boot_mode)
|
||||
for drac_boot_mode in drac_boot_modes]
|
||||
|
||||
def list_boot_devices(self):
|
||||
"""Returns the list of boot devices
|
||||
|
||||
:returns: a dictionary with the boot modes and the list of associated
|
||||
BootDevice objects, ordered by the pending_assigned_sequence
|
||||
property
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
"""
|
||||
|
||||
doc = self.client.enumerate(uris.DCIM_BootSourceSetting)
|
||||
|
||||
drac_boot_devices = utils.find_xml(doc, 'DCIM_BootSourceSetting',
|
||||
uris.DCIM_BootSourceSetting,
|
||||
find_all=True)
|
||||
try:
|
||||
boot_devices = [self._parse_drac_boot_device(drac_boot_device)
|
||||
for drac_boot_device in drac_boot_devices]
|
||||
except AttributeError:
|
||||
# DRAC 11g doesn't have the BootSourceType attribute on the
|
||||
# DCIM_BootSourceSetting resource
|
||||
controller_version = (
|
||||
lifecycle_controller.LifecycleControllerManagement(
|
||||
self.client).get_version())
|
||||
|
||||
if controller_version < LC_CONTROLLER_VERSION_12G:
|
||||
boot_devices = [
|
||||
self._parse_drac_boot_device_11g(drac_boot_device)
|
||||
for drac_boot_device in drac_boot_devices]
|
||||
else:
|
||||
raise
|
||||
|
||||
# group devices by boot mode
|
||||
boot_devices_per_mode = {device.boot_mode: []
|
||||
for device in boot_devices}
|
||||
for device in boot_devices:
|
||||
boot_devices_per_mode[device.boot_mode].append(device)
|
||||
|
||||
# sort the device list by pending assigned seqeuence
|
||||
for mode in boot_devices_per_mode.keys():
|
||||
boot_devices_per_mode[mode].sort(
|
||||
key=lambda device: device.pending_assigned_sequence)
|
||||
|
||||
return boot_devices_per_mode
|
||||
|
||||
def change_boot_device_order(self, boot_mode, boot_device_list):
|
||||
"""Changes the boot device sequence for a boot mode
|
||||
|
||||
:param boot_mode: boot mode for which the boot device list is to be
|
||||
changed
|
||||
:param boot_device_list: a list of boot device ids in an order
|
||||
representing the desired boot sequence
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
:raises: DRACUnexpectedReturnValue on return value mismatch
|
||||
"""
|
||||
|
||||
selectors = {'InstanceID': boot_mode}
|
||||
properties = {'source': boot_device_list}
|
||||
|
||||
self.client.invoke(uris.DCIM_BootConfigSetting,
|
||||
'ChangeBootOrderByInstanceID', selectors,
|
||||
properties, expected_return_value=utils.RET_SUCCESS)
|
||||
|
||||
def _parse_drac_boot_mode(self, drac_boot_mode):
|
||||
return BootMode(
|
||||
id=self._get_boot_mode_attr(drac_boot_mode, 'InstanceID'),
|
||||
name=self._get_boot_mode_attr(drac_boot_mode, 'ElementName'),
|
||||
is_current=BOOT_MODE_IS_CURRENT[self._get_boot_mode_attr(
|
||||
drac_boot_mode, 'IsCurrent')],
|
||||
is_next=BOOT_MODE_IS_NEXT[self._get_boot_mode_attr(
|
||||
drac_boot_mode, 'IsNext')])
|
||||
|
||||
def _get_boot_mode_attr(self, drac_boot_mode, attr_name):
|
||||
return utils.get_wsman_resource_attr(drac_boot_mode,
|
||||
uris.DCIM_BootConfigSetting,
|
||||
attr_name)
|
||||
|
||||
def _parse_drac_boot_device_common(self, drac_boot_device, instance_id,
|
||||
boot_mode):
|
||||
return BootDevice(
|
||||
id=instance_id,
|
||||
boot_mode=boot_mode,
|
||||
current_assigned_sequence=int(self._get_boot_device_attr(
|
||||
drac_boot_device, 'CurrentAssignedSequence')),
|
||||
pending_assigned_sequence=int(self._get_boot_device_attr(
|
||||
drac_boot_device, 'PendingAssignedSequence')),
|
||||
bios_boot_string=self._get_boot_device_attr(drac_boot_device,
|
||||
'BIOSBootString'))
|
||||
|
||||
def _parse_drac_boot_device(self, drac_boot_device):
|
||||
instance_id = self._get_boot_device_attr(drac_boot_device,
|
||||
'InstanceID')
|
||||
boot_mode = self._get_boot_device_attr(drac_boot_device,
|
||||
'BootSourceType')
|
||||
|
||||
return self._parse_drac_boot_device_common(drac_boot_device,
|
||||
instance_id, boot_mode)
|
||||
|
||||
def _parse_drac_boot_device_11g(self, drac_boot_device):
|
||||
instance_id = self._get_boot_device_attr(drac_boot_device,
|
||||
'InstanceID')
|
||||
boot_mode = instance_id.split(':')[0]
|
||||
|
||||
return self._parse_drac_boot_device_common(drac_boot_device,
|
||||
instance_id, boot_mode)
|
||||
|
||||
def _get_boot_device_attr(self, drac_boot_device, attr_name):
|
||||
return utils.get_wsman_resource_attr(drac_boot_device,
|
||||
uris.DCIM_BootSourceSetting,
|
||||
attr_name)
|
||||
|
44
dracclient/resources/lifecycle_controller.py
Normal file
44
dracclient/resources/lifecycle_controller.py
Normal file
@ -0,0 +1,44 @@
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from dracclient.resources import uris
|
||||
from dracclient import utils
|
||||
|
||||
|
||||
class LifecycleControllerManagement(object):
|
||||
|
||||
def __init__(self, client):
|
||||
"""Creates LifecycleControllerManagement object
|
||||
|
||||
:param client: an instance of WSManClient
|
||||
"""
|
||||
self.client = client
|
||||
|
||||
def get_version(self):
|
||||
"""Returns the Lifecycle controller version
|
||||
|
||||
:returns: Lifecycle controller version as a tuple of integers
|
||||
:raises: WSManRequestFailure on request failures
|
||||
:raises: WSManInvalidResponse when receiving invalid response
|
||||
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||
interface
|
||||
"""
|
||||
|
||||
filter_query = ('select LifecycleControllerVersion '
|
||||
'from DCIM_SystemView')
|
||||
doc = self.client.enumerate(uris.DCIM_SystemView,
|
||||
filter_query=filter_query)
|
||||
lc_version_str = utils.find_xml(doc, 'LifecycleControllerVersion',
|
||||
uris.DCIM_SystemView).text
|
||||
|
||||
return tuple(map(int, (lc_version_str.split('.'))))
|
@ -17,7 +17,9 @@ import requests_mock
|
||||
|
||||
import dracclient.client
|
||||
from dracclient import exceptions
|
||||
from dracclient.resources import bios
|
||||
import dracclient.resources.job
|
||||
from dracclient.resources import lifecycle_controller
|
||||
from dracclient.resources import uris
|
||||
from dracclient.tests import base
|
||||
from dracclient.tests import utils as test_utils
|
||||
@ -61,6 +63,132 @@ class ClientPowerManagementTestCase(base.BaseTest):
|
||||
self.drac_client.set_power_state, 'foo')
|
||||
|
||||
|
||||
class ClientBootManagementTestCase(base.BaseTest):
|
||||
|
||||
def setUp(self):
|
||||
super(ClientBootManagementTestCase, self).setUp()
|
||||
self.drac_client = dracclient.client.DRACClient(
|
||||
**test_utils.FAKE_ENDPOINT)
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_list_boot_modes(self, mock_requests):
|
||||
expected_boot_mode = bios.BootMode(id='IPL', name='BootSeq',
|
||||
is_current=True, is_next=True)
|
||||
mock_requests.post(
|
||||
'https://1.2.3.4:443/wsman',
|
||||
text=test_utils.BIOSEnumerations[
|
||||
uris.DCIM_BootConfigSetting]['ok'])
|
||||
|
||||
boot_modes = self.drac_client.list_boot_modes()
|
||||
|
||||
self.assertEqual(5, len(boot_modes))
|
||||
self.assertIn(expected_boot_mode, boot_modes)
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_list_boot_devices(self, mock_requests):
|
||||
expected_boot_device = bios.BootDevice(
|
||||
id=('IPL:BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1#'
|
||||
'fbeeb18f19fd4e768c941e66af4fc424'),
|
||||
boot_mode='IPL',
|
||||
pending_assigned_sequence=0,
|
||||
current_assigned_sequence=0,
|
||||
bios_boot_string=('Embedded NIC 1 Port 1 Partition 1: '
|
||||
'BRCM MBA Slot 0200 v16.4.3 BootSeq'))
|
||||
mock_requests.post(
|
||||
'https://1.2.3.4:443/wsman',
|
||||
text=test_utils.BIOSEnumerations[
|
||||
uris.DCIM_BootSourceSetting]['ok'])
|
||||
|
||||
boot_devices = self.drac_client.list_boot_devices()
|
||||
|
||||
self.assertEqual(3, len(boot_devices))
|
||||
self.assertIn('IPL', boot_devices)
|
||||
self.assertIn('BCV', boot_devices)
|
||||
self.assertIn('UEFI', boot_devices)
|
||||
self.assertEqual(3, len(boot_devices['IPL']))
|
||||
self.assertIn(expected_boot_device, boot_devices['IPL'])
|
||||
self.assertEqual(
|
||||
0, boot_devices['IPL'][0].pending_assigned_sequence)
|
||||
self.assertEqual(
|
||||
1, boot_devices['IPL'][1].pending_assigned_sequence)
|
||||
self.assertEqual(
|
||||
2, boot_devices['IPL'][2].pending_assigned_sequence)
|
||||
|
||||
@requests_mock.Mocker()
|
||||
@mock.patch.object(lifecycle_controller.LifecycleControllerManagement,
|
||||
'get_version', spec_set=True, autospec=True)
|
||||
def test_list_boot_devices_11g(self, mock_requests,
|
||||
mock_get_lifecycle_controller_version):
|
||||
expected_boot_device = bios.BootDevice(
|
||||
id=('IPL:NIC.Embedded.1-1:082927b7c62a9f52ef0d65a33416d76c'),
|
||||
boot_mode='IPL',
|
||||
pending_assigned_sequence=0,
|
||||
current_assigned_sequence=0,
|
||||
bios_boot_string=('Embedded NIC 1: '
|
||||
'BRCM MBA Slot 0200 v7.2.3 BootSeq'))
|
||||
|
||||
mock_requests.post(
|
||||
'https://1.2.3.4:443/wsman',
|
||||
text=test_utils.BIOSEnumerations[
|
||||
uris.DCIM_BootSourceSetting]['ok-11g'])
|
||||
mock_get_lifecycle_controller_version.return_value = (1, 0, 0)
|
||||
|
||||
boot_devices = self.drac_client.list_boot_devices()
|
||||
|
||||
self.assertEqual(3, len(boot_devices))
|
||||
self.assertIn('IPL', boot_devices)
|
||||
self.assertIn('BCV', boot_devices)
|
||||
self.assertIn('UEFI', boot_devices)
|
||||
self.assertEqual(3, len(boot_devices['IPL']))
|
||||
self.assertIn(expected_boot_device, boot_devices['IPL'])
|
||||
self.assertEqual(
|
||||
0, boot_devices['IPL'][0].pending_assigned_sequence)
|
||||
self.assertEqual(
|
||||
1, boot_devices['IPL'][1].pending_assigned_sequence)
|
||||
self.assertEqual(
|
||||
2, boot_devices['IPL'][2].pending_assigned_sequence)
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_change_boot_device_order(self, mock_requests):
|
||||
mock_requests.post(
|
||||
'https://1.2.3.4:443/wsman',
|
||||
text=test_utils.BIOSInvocations[
|
||||
uris.DCIM_BootConfigSetting][
|
||||
'ChangeBootOrderByInstanceID']['ok'])
|
||||
|
||||
self.assertIsNone(
|
||||
self.drac_client.change_boot_device_order('IPL', 'foo'))
|
||||
|
||||
@mock.patch.object(dracclient.client.WSManClient, 'invoke',
|
||||
spec_set=True, autospec=True)
|
||||
def test_change_boot_device_order_list(self, mock_invoke):
|
||||
expected_selectors = {'InstanceID': 'IPL'}
|
||||
expected_properties = {'source': ['foo', 'bar', 'baz']}
|
||||
mock_invoke.return_value = lxml.etree.fromstring(
|
||||
test_utils.BIOSInvocations[uris.DCIM_BootConfigSetting][
|
||||
'ChangeBootOrderByInstanceID']['ok'])
|
||||
|
||||
self.drac_client.change_boot_device_order('IPL',
|
||||
['foo', 'bar', 'baz'])
|
||||
|
||||
mock_invoke.assert_called_once_with(
|
||||
mock.ANY, uris.DCIM_BootConfigSetting,
|
||||
'ChangeBootOrderByInstanceID', expected_selectors,
|
||||
expected_properties, expected_return_value=utils.RET_SUCCESS)
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_change_boot_device_order_error(self, mock_requests):
|
||||
mock_requests.post(
|
||||
'https://1.2.3.4:443/wsman',
|
||||
text=test_utils.BIOSInvocations[
|
||||
uris.DCIM_BootConfigSetting][
|
||||
'ChangeBootOrderByInstanceID']['error'])
|
||||
|
||||
self.assertRaises(
|
||||
exceptions.DRACOperationFailed,
|
||||
self.drac_client.change_boot_device_order, 'IPL', 'foo')
|
||||
|
||||
|
||||
class ClientJobManagementTestCase(base.BaseTest):
|
||||
|
||||
def setUp(self):
|
||||
@ -240,6 +368,53 @@ class ClientJobManagementTestCase(base.BaseTest):
|
||||
cim_creation_class_name, cim_name, target)
|
||||
|
||||
|
||||
class ClientBIOSChangesTestCase(base.BaseTest):
|
||||
|
||||
def setUp(self):
|
||||
super(ClientBIOSChangesTestCase, self).setUp()
|
||||
self.drac_client = dracclient.client.DRACClient(
|
||||
**test_utils.FAKE_ENDPOINT)
|
||||
|
||||
@mock.patch.object(dracclient.resources.job.JobManagement,
|
||||
'create_config_job', spec_set=True, autospec=True)
|
||||
def test_commit_pending_bios_changes(self, mock_create_config_job):
|
||||
self.drac_client.commit_pending_bios_changes()
|
||||
|
||||
mock_create_config_job.assert_called_once_with(
|
||||
mock.ANY, resource_uri=uris.DCIM_BIOSService,
|
||||
cim_creation_class_name='DCIM_BIOSService',
|
||||
cim_name='DCIM:BIOSService', target='BIOS.Setup.1-1')
|
||||
|
||||
@mock.patch.object(dracclient.resources.job.JobManagement,
|
||||
'delete_pending_config', spec_set=True, autospec=True)
|
||||
def test_abandon_pending_bios_changes(self, mock_delete_pending_config):
|
||||
self.drac_client.abandon_pending_bios_changes()
|
||||
|
||||
mock_delete_pending_config.assert_called_once_with(
|
||||
mock.ANY, resource_uri=uris.DCIM_BIOSService,
|
||||
cim_creation_class_name='DCIM_BIOSService',
|
||||
cim_name='DCIM:BIOSService', target='BIOS.Setup.1-1')
|
||||
|
||||
|
||||
class ClientLifecycleControllerManagementTestCase(base.BaseTest):
|
||||
|
||||
def setUp(self):
|
||||
super(ClientLifecycleControllerManagementTestCase, self).setUp()
|
||||
self.drac_client = dracclient.client.DRACClient(
|
||||
**test_utils.FAKE_ENDPOINT)
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_get_lifecycle_controller_version(self, mock_requests):
|
||||
mock_requests.post(
|
||||
'https://1.2.3.4:443/wsman',
|
||||
text=test_utils.LifecycleControllerEnumerations[
|
||||
uris.DCIM_SystemView]['ok'])
|
||||
|
||||
version = self.drac_client.get_lifecycle_controller_version()
|
||||
|
||||
self.assertEqual((2, 1, 0), version)
|
||||
|
||||
|
||||
@requests_mock.Mocker()
|
||||
class WSManClientTestCase(base.BaseTest):
|
||||
|
||||
|
@ -47,6 +47,13 @@ BIOSEnumerations = {
|
||||
uris.DCIM_ComputerSystem: {
|
||||
'ok': load_wsman_xml('computer_system-enum-ok')
|
||||
},
|
||||
uris.DCIM_BootConfigSetting: {
|
||||
'ok': load_wsman_xml('boot_config_setting-enum-ok')
|
||||
},
|
||||
uris.DCIM_BootSourceSetting: {
|
||||
'ok': load_wsman_xml('boot_source_setting-enum-ok'),
|
||||
'ok-11g': load_wsman_xml('boot_source_setting-enum-ok-11g')
|
||||
}
|
||||
}
|
||||
|
||||
BIOSInvocations = {
|
||||
@ -58,6 +65,16 @@ BIOSInvocations = {
|
||||
'computer_system-invoke-request_state_change-error'),
|
||||
},
|
||||
},
|
||||
uris.DCIM_BootConfigSetting: {
|
||||
'ChangeBootOrderByInstanceID': {
|
||||
'ok': load_wsman_xml(
|
||||
'boot_config_setting-invoke-change_boot_order_by_instance_id-'
|
||||
'ok'),
|
||||
'error': load_wsman_xml(
|
||||
'boot_config_setting-invoke-change_boot_order_by_instance_id-'
|
||||
'error'),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JobEnumerations = {
|
||||
@ -83,3 +100,9 @@ JobInvocations = {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
LifecycleControllerEnumerations = {
|
||||
uris.DCIM_SystemView: {
|
||||
'ok': load_wsman_xml('system_view-enum-ok')
|
||||
},
|
||||
}
|
||||
|
54
dracclient/tests/wsman_mocks/boot_config_setting-enum-ok.xml
Normal file
54
dracclient/tests/wsman_mocks/boot_config_setting-enum-ok.xml
Normal file
@ -0,0 +1,54 @@
|
||||
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootConfigSetting"
|
||||
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
|
||||
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||
xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
|
||||
xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">
|
||||
<s:Header>
|
||||
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/EnumerateResponse</wsa:Action>
|
||||
<wsa:RelatesTo>uuid:0fa1f933-4c3c-480f-8a35-75035f9fbfad</wsa:RelatesTo>
|
||||
<wsa:MessageID>uuid:6fa24f5f-2170-1170-8ea5-a36fc6fe83b0</wsa:MessageID>
|
||||
</s:Header>
|
||||
<s:Body>
|
||||
<wsen:EnumerateResponse>
|
||||
<wsman:Items>
|
||||
<n1:DCIM_BootConfigSetting>
|
||||
<n1:ElementName>BootSeq</n1:ElementName>
|
||||
<n1:InstanceID>IPL</n1:InstanceID>
|
||||
<n1:IsCurrent>1</n1:IsCurrent>
|
||||
<n1:IsDefault>0</n1:IsDefault>
|
||||
<n1:IsNext>1</n1:IsNext>
|
||||
</n1:DCIM_BootConfigSetting>
|
||||
<n1:DCIM_BootConfigSetting>
|
||||
<n1:ElementName>HddSeq</n1:ElementName>
|
||||
<n1:InstanceID>BCV</n1:InstanceID>
|
||||
<n1:IsCurrent>2</n1:IsCurrent>
|
||||
<n1:IsDefault>0</n1:IsDefault>
|
||||
<n1:IsNext>2</n1:IsNext>
|
||||
</n1:DCIM_BootConfigSetting>
|
||||
<n1:DCIM_BootConfigSetting>
|
||||
<n1:ElementName>UefiBootSeq</n1:ElementName>
|
||||
<n1:InstanceID>UEFI</n1:InstanceID>
|
||||
<n1:IsCurrent>2</n1:IsCurrent>
|
||||
<n1:IsDefault>0</n1:IsDefault>
|
||||
<n1:IsNext>2</n1:IsNext>
|
||||
</n1:DCIM_BootConfigSetting>
|
||||
<n1:DCIM_BootConfigSetting>
|
||||
<n1:ElementName>OneTimeBootMode</n1:ElementName>
|
||||
<n1:InstanceID>OneTime</n1:InstanceID>
|
||||
<n1:IsCurrent>2</n1:IsCurrent>
|
||||
<n1:IsDefault>0</n1:IsDefault>
|
||||
<n1:IsNext>2</n1:IsNext>
|
||||
</n1:DCIM_BootConfigSetting>
|
||||
<n1:DCIM_BootConfigSetting>
|
||||
<n1:ElementName>vFlash Boot Configuration</n1:ElementName>
|
||||
<n1:InstanceID>vFlash</n1:InstanceID>
|
||||
<n1:IsCurrent>2</n1:IsCurrent>
|
||||
<n1:IsDefault>0</n1:IsDefault>
|
||||
<n1:IsNext>2</n1:IsNext>
|
||||
</n1:DCIM_BootConfigSetting>
|
||||
</wsman:Items>
|
||||
<wsman:EndOfSequence/>
|
||||
</wsen:EnumerateResponse>
|
||||
</s:Body>
|
||||
</s:Envelope>
|
@ -0,0 +1,17 @@
|
||||
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootConfigSetting"
|
||||
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
|
||||
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
|
||||
<s:Header>
|
||||
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsa:Action>http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootConfigSetting/ChangeBootOrderByInstanceIDResponse</wsa:Action>
|
||||
<wsa:RelatesTo>uuid:9c14b4d7-9d68-4240-a523-bfe733ec3c19</wsa:RelatesTo>
|
||||
<wsa:MessageID>uuid:072e2dd9-2188-1188-8ea8-a36fc6fe83b0</wsa:MessageID>
|
||||
</s:Header>
|
||||
<s:Body>
|
||||
<n1:ChangeBootOrderByInstanceID_OUTPUT>
|
||||
<n1:Message>Boot Source does not belong to specified Boot Configuration</n1:Message>
|
||||
<n1:MessageID>BOOT007</n1:MessageID>
|
||||
<n1:ReturnValue>2</n1:ReturnValue>
|
||||
</n1:ChangeBootOrderByInstanceID_OUTPUT>
|
||||
</s:Body>
|
||||
</s:Envelope>
|
@ -0,0 +1,17 @@
|
||||
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootConfigSetting"
|
||||
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
|
||||
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
|
||||
<s:Header>
|
||||
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsa:Action>http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootConfigSetting/ChangeBootOrderByInstanceIDResponse</wsa:Action>
|
||||
<wsa:RelatesTo>uuid:6489f08e-43f8-4616-9c8e-46502a0d297e</wsa:RelatesTo>
|
||||
<wsa:MessageID>uuid:14c20b22-2188-1188-8ead-a36fc6fe83b0</wsa:MessageID>
|
||||
</s:Header>
|
||||
<s:Body>
|
||||
<n1:ChangeBootOrderByInstanceID_OUTPUT>
|
||||
<n1:Message>The command was successful</n1:Message>
|
||||
<n1:MessageID>BOOT001</n1:MessageID>
|
||||
<n1:ReturnValue>0</n1:ReturnValue>
|
||||
</n1:ChangeBootOrderByInstanceID_OUTPUT>
|
||||
</s:Body>
|
||||
</s:Envelope>
|
@ -0,0 +1,85 @@
|
||||
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootSourceSetting"
|
||||
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
|
||||
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||
xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
|
||||
xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">
|
||||
<s:Header>
|
||||
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/EnumerateResponse</wsa:Action>
|
||||
<wsa:RelatesTo>uuid:307f8c7a-e08f-491c-906f-97917d12aca3</wsa:RelatesTo>
|
||||
<wsa:MessageID>uuid:a6d469c4-0340-1340-8003-96a61a2b2b84</wsa:MessageID>
|
||||
</s:Header>
|
||||
<s:Body>
|
||||
<wsen:EnumerateResponse>
|
||||
<wsman:Items>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded NIC 1: BRCM MBA Slot 0200 v7.2.3 BootSeq</n1:BIOSBootString>
|
||||
<n1:BootString>Embedded NIC 1: BRCM MBA Slot 0200 v7.2.3 BootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>0</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded NIC 1: BRCM MBA Slot 0200 v7.2.3 BootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>IPL:NIC.Embedded.1-1:082927b7c62a9f52ef0d65a33416d76c</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>0</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Hard drive C: BootSeq</n1:BIOSBootString>
|
||||
<n1:BootString>Hard drive C: BootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>1</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Hard drive C: BootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>IPL:HardDisk.List.1-1:c9203080df84781e2ca3d512883dee6f</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>1</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded SATA Port A Optical: SATA Optical Drive BootSeq</n1:BIOSBootString>
|
||||
<n1:BootString>Embedded SATA Port A Optical: SATA Optical Drive BootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>2</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded SATA Port A Optical: SATA Optical Drive BootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>IPL:Optical.SATAEmbedded.A-1:eb8aeb15796fb85f8e1447f0cfb8a68e</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>2</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Integrated SAS: #0100 ID0B LUN0 FUJITSU MBD2147RC HddSeq</n1:BIOSBootString>
|
||||
<n1:BootString>Integrated SAS: #0100 ID0B LUN0 FUJITSU MBD2147RC HddSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>0</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Integrated SAS: #0100 ID0B LUN0 FUJITSU MBD2147RC HddSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>2</n1:FailThroughSupported>
|
||||
<n1:InstanceID>BCV:RAID.Integrated.1-1:b0288ef62190fe49448c0c8bd58e3299</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>0</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded SATA Port A Optical: TEAC DVD-ROM DV-28SW UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootString>Embedded SATA Port A Optical: TEAC DVD-ROM DV-28SW UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>0</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded SATA Port A Optical: TEAC DVD-ROM DV-28SW UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:Optical.SATAEmbedded.A-1:f4517f4fe99654f4b3d1f2cf5ffa1236</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>0</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded NIC 1: Broadcom NetXtreme II Gigabit Ethernet (BCM5709) UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootString>Embedded NIC 1: Broadcom NetXtreme II Gigabit Ethernet (BCM5709) UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>1</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded NIC 1: Broadcom NetXtreme II Gigabit Ethernet (BCM5709) UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:NIC.Embedded.1-1:764aa69cc6ae153bf9aa038a0cf31bf2</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>1</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
</wsman:Items>
|
||||
<wsman:EndOfSequence/>
|
||||
</wsen:EnumerateResponse>
|
||||
</s:Body>
|
||||
</s:Envelope>
|
139
dracclient/tests/wsman_mocks/boot_source_setting-enum-ok.xml
Normal file
139
dracclient/tests/wsman_mocks/boot_source_setting-enum-ok.xml
Normal file
@ -0,0 +1,139 @@
|
||||
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BootSourceSetting"
|
||||
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
|
||||
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||
xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
|
||||
xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">
|
||||
<s:Header>
|
||||
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/EnumerateResponse</wsa:Action>
|
||||
<wsa:RelatesTo>uuid:8228360f-4368-4377-a020-7b86001ec6a2</wsa:RelatesTo>
|
||||
<wsa:MessageID>uuid:9daff045-2172-1172-8ea7-a36fc6fe83b0</wsa:MessageID>
|
||||
</s:Header>
|
||||
<s:Body>
|
||||
<wsen:EnumerateResponse>
|
||||
<wsman:Items>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded SATA Port Optical Drive E: HL-DT-ST DVD-ROM DU90N BootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>IPL</n1:BootSourceType>
|
||||
<n1:BootString>Embedded SATA Port Optical Drive E: HL-DT-ST DVD-ROM DU90N BootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>1</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded SATA Port Optical Drive E: HL-DT-ST DVD-ROM DU90N BootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>IPL:BIOS.Setup.1-1#BootSeq#Optical.SATAEmbedded.E-1#9cfba379c4a2890f7f419c75db47d605</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>1</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded NIC 1 Port 1 Partition 1: BRCM MBA Slot 0200 v16.4.3 BootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>IPL</n1:BootSourceType>
|
||||
<n1:BootString>Embedded NIC 1 Port 1 Partition 1: BRCM MBA Slot 0200 v16.4.3 BootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>0</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded NIC 1 Port 1 Partition 1: BRCM MBA Slot 0200 v16.4.3 BootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>IPL:BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1#fbeeb18f19fd4e768c941e66af4fc424</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>0</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Hard drive C: BootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>IPL</n1:BootSourceType>
|
||||
<n1:BootString>Hard drive C: BootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>2</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Hard drive C: BootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>IPL:BIOS.Setup.1-1#BootSeq#HardDisk.List.1-1#c9203080df84781e2ca3d512883dee6f</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>2</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Integrated RAID Controller 1: PERC H710 Mini(bus 01 dev 00) HddSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>BCV</n1:BootSourceType>
|
||||
<n1:BootString>Integrated RAID Controller 1: PERC H710 Mini(bus 01 dev 00) HddSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>0</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Integrated RAID Controller 1: PERC H710 Mini(bus 01 dev 00) HddSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>2</n1:FailThroughSupported>
|
||||
<n1:InstanceID>BCV:BIOS.Setup.1-1#HddSeq#RAID.Integrated.1-1#aa80b1ccc4782ee46ad0015e60b9f8bc</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>0</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded SATA Port Optical Drive E: HL-DT-ST DVD-ROM DU90N UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>UEFI</n1:BootSourceType>
|
||||
<n1:BootString>Embedded SATA Port Optical Drive E: HL-DT-ST DVD-ROM DU90N UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>0</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded SATA Port Optical Drive E: HL-DT-ST DVD-ROM DU90N UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:BIOS.Setup.1-1#UefiBootSeq#Optical.SATAEmbedded.E-1#e63a20057ae7c7a24a2dcfe561ab3059</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>0</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded NIC 1 Port 1 Partition 1: EFI Network 1 UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>UEFI</n1:BootSourceType>
|
||||
<n1:BootString>Embedded NIC 1 Port 1 Partition 1: EFI Network 1 UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>1</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>0</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded NIC 1 Port 1 Partition 1: EFI Network 1 UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:BIOS.Setup.1-1#UefiBootSeq#NIC.Embedded.1-1-1#4957070f0aa1fcff841e886b4011e6e5</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>1</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>0</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Embedded NIC 2 Port 1 Partition 1: EFI Network 2 UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>UEFI</n1:BootSourceType>
|
||||
<n1:BootString>Embedded NIC 2 Port 1 Partition 1: EFI Network 2 UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>2</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>0</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Embedded NIC 2 Port 1 Partition 1: EFI Network 2 UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:BIOS.Setup.1-1#UefiBootSeq#NIC.Embedded.2-1-1#236af982351f674f952c4db458fe40ab</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>2</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>0</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>NIC in Slot 2 Port 1 Partition 1: EFI Network 3 UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>UEFI</n1:BootSourceType>
|
||||
<n1:BootString>NIC in Slot 2 Port 1 Partition 1: EFI Network 3 UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>3</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>0</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>NIC in Slot 2 Port 1 Partition 1: EFI Network 3 UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:BIOS.Setup.1-1#UefiBootSeq#NIC.Slot.2-1-1#d4dcb3203b7a0e381ffa1c5df5873890</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>3</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>0</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>NIC in Slot 2 Port 2 Partition 1: EFI Network 4 UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>UEFI</n1:BootSourceType>
|
||||
<n1:BootString>NIC in Slot 2 Port 2 Partition 1: EFI Network 4 UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>4</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>0</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>NIC in Slot 2 Port 2 Partition 1: EFI Network 4 UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:BIOS.Setup.1-1#UefiBootSeq#NIC.Slot.2-2-1#f438b57a48e180b211662c463cd406b1</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>4</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>0</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
<n1:DCIM_BootSourceSetting>
|
||||
<n1:BIOSBootString>Unavailable: Windows Boot Manager UefiBootSeq</n1:BIOSBootString>
|
||||
<n1:BootSourceType>UEFI</n1:BootSourceType>
|
||||
<n1:BootString>Unavailable: Windows Boot Manager UefiBootSeq</n1:BootString>
|
||||
<n1:CurrentAssignedSequence>5</n1:CurrentAssignedSequence>
|
||||
<n1:CurrentEnabledStatus>1</n1:CurrentEnabledStatus>
|
||||
<n1:ElementName>Unavailable: Windows Boot Manager UefiBootSeq</n1:ElementName>
|
||||
<n1:FailThroughSupported>1</n1:FailThroughSupported>
|
||||
<n1:InstanceID>UEFI:BIOS.Setup.1-1#UefiBootSeq#Unknown.Unknown.6-1#f80cdb0ddd723411affd9b05852b3f4a</n1:InstanceID>
|
||||
<n1:PendingAssignedSequence>5</n1:PendingAssignedSequence>
|
||||
<n1:PendingEnabledStatus>1</n1:PendingEnabledStatus>
|
||||
</n1:DCIM_BootSourceSetting>
|
||||
</wsman:Items>
|
||||
<wsman:EndOfSequence/>
|
||||
</wsen:EnumerateResponse>
|
||||
</s:Body>
|
||||
</s:Envelope>
|
23
dracclient/tests/wsman_mocks/system_view-enum-ok.xml
Normal file
23
dracclient/tests/wsman_mocks/system_view-enum-ok.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_SystemView"
|
||||
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
|
||||
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||
xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
|
||||
xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">
|
||||
<s:Header>
|
||||
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/EnumerateResponse</wsa:Action>
|
||||
<wsa:RelatesTo>uuid:c4710f54-6fd5-4719-859c-7e69080b99e6</wsa:RelatesTo>
|
||||
<wsa:MessageID>uuid:3b67422f-215c-115c-8e9f-a36fc6fe83b0</wsa:MessageID>
|
||||
</s:Header>
|
||||
<s:Body>
|
||||
<wsen:EnumerateResponse>
|
||||
<wsman:Items>
|
||||
<n1:DCIM_SystemView>
|
||||
<n1:InstanceID>System.Embedded.1</n1:InstanceID>
|
||||
<n1:LifecycleControllerVersion>2.1.0</n1:LifecycleControllerVersion>
|
||||
</n1:DCIM_SystemView>
|
||||
</wsman:Items>
|
||||
<wsman:EndOfSequence/>
|
||||
</wsen:EnumerateResponse>
|
||||
</s:Body>
|
||||
</s:Envelope>
|
Loading…
Reference in New Issue
Block a user