Add boot management

Change-Id: I51d712a24948726e7c7c03530cf8fd7953f5f190
This commit is contained in:
Imre Farkas 2015-10-05 14:37:55 +02:00
parent 400f9317ba
commit 31711e9444
11 changed files with 833 additions and 0 deletions

View File

@ -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"""

View File

@ -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)

View 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('.'))))

View File

@ -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):

View File

@ -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')
},
}

View 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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View 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>

View 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>