Add support for BIOS configuration
Change-Id: I574696e460f08cececc47a69b5c2b090a6cd44a2
This commit is contained in:
parent
31711e9444
commit
da78c87db2
@ -49,6 +49,7 @@ class DRACClient(object):
|
|||||||
self._job_mgmt = job.JobManagement(self.client)
|
self._job_mgmt = job.JobManagement(self.client)
|
||||||
self._power_mgmt = bios.PowerManagement(self.client)
|
self._power_mgmt = bios.PowerManagement(self.client)
|
||||||
self._boot_mgmt = bios.BootManagement(self.client)
|
self._boot_mgmt = bios.BootManagement(self.client)
|
||||||
|
self._bios_cfg = bios.BIOSConfiguration(self.client)
|
||||||
|
|
||||||
def get_power_state(self):
|
def get_power_state(self):
|
||||||
"""Returns the current power state of the node
|
"""Returns the current power state of the node
|
||||||
@ -116,6 +117,41 @@ class DRACClient(object):
|
|||||||
return self._boot_mgmt.change_boot_device_order(boot_mode,
|
return self._boot_mgmt.change_boot_device_order(boot_mode,
|
||||||
boot_device_list)
|
boot_device_list)
|
||||||
|
|
||||||
|
def list_bios_settings(self):
|
||||||
|
"""List the BIOS configuration settings
|
||||||
|
|
||||||
|
:returns: a dictionary with the BIOS settings using its name as the
|
||||||
|
key. The attributes are either BIOSEnumerableAttribute,
|
||||||
|
BIOSStringAttribute or BIOSIntegerAttribute objects.
|
||||||
|
:raises: WSManRequestFailure on request failures
|
||||||
|
:raises: WSManInvalidResponse when receiving invalid response
|
||||||
|
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||||
|
interface
|
||||||
|
"""
|
||||||
|
return self._bios_cfg.list_bios_settings()
|
||||||
|
|
||||||
|
def set_bios_settings(self, settings):
|
||||||
|
"""Sets the BIOS configuration
|
||||||
|
|
||||||
|
To be more precise, it sets the pending_value parameter for each of the
|
||||||
|
attributes passed in. For the values to be applied, a config job must
|
||||||
|
be created and the node must be rebooted.
|
||||||
|
|
||||||
|
:param: settings: a dictionary containing the proposed values, with
|
||||||
|
each key being the name of attribute and the
|
||||||
|
value being the proposed value.
|
||||||
|
:returns: a dictionary containing the commit_needed key with a boolean
|
||||||
|
value indicating whether a config job must be created for the
|
||||||
|
values to be applied.
|
||||||
|
: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
|
||||||
|
:raises: InvalidParameterValue on invalid BIOS attribute
|
||||||
|
"""
|
||||||
|
return self._bios_cfg.set_bios_settings(settings)
|
||||||
|
|
||||||
def list_jobs(self, only_unfinished=False):
|
def list_jobs(self, only_unfinished=False):
|
||||||
"""Returns a list of jobs from the job queue
|
"""Returns a list of jobs from the job queue
|
||||||
|
|
||||||
@ -208,9 +244,11 @@ class DRACClient(object):
|
|||||||
resource_uri, cim_creation_class_name, cim_name, target,
|
resource_uri, cim_creation_class_name, cim_name, target,
|
||||||
cim_system_creation_class_name, cim_system_name)
|
cim_system_creation_class_name, cim_system_name)
|
||||||
|
|
||||||
def commit_pending_bios_changes(self):
|
def commit_pending_bios_changes(self, reboot=False):
|
||||||
"""Applies all pending changes on the BIOS by creating a config job
|
"""Applies all pending changes on the BIOS by creating a config job
|
||||||
|
|
||||||
|
:param: reboot: indicates whether a RebootJob should be also be
|
||||||
|
created or not
|
||||||
:returns: id of the created job
|
:returns: id of the created job
|
||||||
:raises: WSManRequestFailure on request failures
|
:raises: WSManRequestFailure on request failures
|
||||||
:raises: WSManInvalidResponse when receiving invalid response
|
:raises: WSManInvalidResponse when receiving invalid response
|
||||||
@ -221,7 +259,8 @@ class DRACClient(object):
|
|||||||
return self._job_mgmt.create_config_job(
|
return self._job_mgmt.create_config_job(
|
||||||
resource_uri=uris.DCIM_BIOSService,
|
resource_uri=uris.DCIM_BIOSService,
|
||||||
cim_creation_class_name='DCIM_BIOSService',
|
cim_creation_class_name='DCIM_BIOSService',
|
||||||
cim_name='DCIM:BIOSService', target=self.BIOS_DEVICE_FQDD)
|
cim_name='DCIM:BIOSService', target=self.BIOS_DEVICE_FQDD,
|
||||||
|
reboot=reboot)
|
||||||
|
|
||||||
def abandon_pending_bios_changes(self):
|
def abandon_pending_bios_changes(self):
|
||||||
"""Deletes all pending changes on the BIOS
|
"""Deletes all pending changes on the BIOS
|
||||||
|
@ -12,12 +12,17 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
from dracclient import constants
|
from dracclient import constants
|
||||||
from dracclient import exceptions
|
from dracclient import exceptions
|
||||||
from dracclient.resources import lifecycle_controller
|
from dracclient.resources import lifecycle_controller
|
||||||
from dracclient.resources import uris
|
from dracclient.resources import uris
|
||||||
from dracclient import utils
|
from dracclient import utils
|
||||||
|
from dracclient import wsman
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
POWER_STATES = {
|
POWER_STATES = {
|
||||||
'2': constants.POWER_ON,
|
'2': constants.POWER_ON,
|
||||||
@ -43,11 +48,10 @@ LC_CONTROLLER_VERSION_12G = (2, 0, 0)
|
|||||||
BootMode = collections.namedtuple('BootMode', ['id', 'name', 'is_current',
|
BootMode = collections.namedtuple('BootMode', ['id', 'name', 'is_current',
|
||||||
'is_next'])
|
'is_next'])
|
||||||
|
|
||||||
BootDevice = collections.namedtuple('BootDevice',
|
BootDevice = collections.namedtuple(
|
||||||
['id', 'boot_mode',
|
'BootDevice',
|
||||||
'current_assigned_sequence',
|
['id', 'boot_mode', 'current_assigned_sequence',
|
||||||
'pending_assigned_sequence',
|
'pending_assigned_sequence', 'bios_boot_string'])
|
||||||
'bios_boot_string'])
|
|
||||||
|
|
||||||
|
|
||||||
class PowerManagement(object):
|
class PowerManagement(object):
|
||||||
@ -252,3 +256,329 @@ class BootManagement(object):
|
|||||||
return utils.get_wsman_resource_attr(drac_boot_device,
|
return utils.get_wsman_resource_attr(drac_boot_device,
|
||||||
uris.DCIM_BootSourceSetting,
|
uris.DCIM_BootSourceSetting,
|
||||||
attr_name)
|
attr_name)
|
||||||
|
|
||||||
|
|
||||||
|
class BIOSAttribute(object):
|
||||||
|
"""Generic BIOS attribute class"""
|
||||||
|
|
||||||
|
def __init__(self, name, current_value, pending_value, read_only):
|
||||||
|
"""Creates BIOSAttribute object
|
||||||
|
|
||||||
|
:param name: name of the BIOS attribute
|
||||||
|
:param current_value: current value of the BIOS attribute
|
||||||
|
:param pending_value: pending value of the BIOS attribute, reflecting
|
||||||
|
an unprocessed change (eg. config job not completed)
|
||||||
|
:param read_only: indicates whether this BIOS attribute can be changed
|
||||||
|
"""
|
||||||
|
self.name = name
|
||||||
|
self.current_value = current_value
|
||||||
|
self.pending_value = pending_value
|
||||||
|
self.read_only = read_only
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.__dict__ == other.__dict__
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse(cls, namespace, bios_attr_xml):
|
||||||
|
"""Parses XML and creates BIOSAttribute object"""
|
||||||
|
|
||||||
|
name = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, namespace, 'AttributeName')
|
||||||
|
current_value = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, namespace, 'CurrentValue', nullable=True)
|
||||||
|
pending_value = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, namespace, 'PendingValue', nullable=True)
|
||||||
|
read_only = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, namespace, 'IsReadOnly')
|
||||||
|
|
||||||
|
return cls(name, current_value, pending_value, (read_only == 'true'))
|
||||||
|
|
||||||
|
|
||||||
|
class BIOSEnumerableAttribute(BIOSAttribute):
|
||||||
|
"""Enumerable BIOS attribute class"""
|
||||||
|
|
||||||
|
namespace = uris.DCIM_BIOSEnumeration
|
||||||
|
|
||||||
|
def __init__(self, name, current_value, pending_value, read_only,
|
||||||
|
possible_values):
|
||||||
|
"""Creates BIOSEnumerableAttribute object
|
||||||
|
|
||||||
|
:param name: name of the BIOS attribute
|
||||||
|
:param current_value: current value of the BIOS attribute
|
||||||
|
:param pending_value: pending value of the BIOS attribute, reflecting
|
||||||
|
an unprocessed change (eg. config job not completed)
|
||||||
|
:param read_only: indicates whether this BIOS attribute can be changed
|
||||||
|
:param possible_values: list containing the allowed values for the BIOS
|
||||||
|
attribute
|
||||||
|
"""
|
||||||
|
super(BIOSEnumerableAttribute, self).__init__(name, current_value,
|
||||||
|
pending_value, read_only)
|
||||||
|
self.possible_values = possible_values
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse(cls, bios_attr_xml):
|
||||||
|
"""Parses XML and creates BIOSEnumerableAttribute object"""
|
||||||
|
|
||||||
|
bios_attr = BIOSAttribute.parse(cls.namespace, bios_attr_xml)
|
||||||
|
possible_values = [attr.text for attr
|
||||||
|
in utils.find_xml(bios_attr_xml, 'PossibleValues',
|
||||||
|
cls.namespace, find_all=True)]
|
||||||
|
|
||||||
|
return cls(bios_attr.name, bios_attr.current_value,
|
||||||
|
bios_attr.pending_value, bios_attr.read_only,
|
||||||
|
possible_values)
|
||||||
|
|
||||||
|
def validate(self, new_value):
|
||||||
|
"""Validates new value"""
|
||||||
|
|
||||||
|
if str(new_value) not in self.possible_values:
|
||||||
|
msg = ("Attribute '%(attr)s' cannot be set to value '%(val)s'."
|
||||||
|
" It must be in %(possible_values)r.") % {
|
||||||
|
'attr': self.name,
|
||||||
|
'val': new_value,
|
||||||
|
'possible_values': self.possible_values}
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
class BIOSStringAttribute(BIOSAttribute):
|
||||||
|
"""String BIOS attribute class"""
|
||||||
|
|
||||||
|
namespace = uris.DCIM_BIOSString
|
||||||
|
|
||||||
|
def __init__(self, name, current_value, pending_value, read_only,
|
||||||
|
min_length, max_length, pcre_regex):
|
||||||
|
"""Creates BIOSStringAttribute object
|
||||||
|
|
||||||
|
:param name: name of the BIOS attribute
|
||||||
|
:param current_value: current value of the BIOS attribute
|
||||||
|
:param pending_value: pending value of the BIOS attribute, reflecting
|
||||||
|
an unprocessed change (eg. config job not completed)
|
||||||
|
:param read_only: indicates whether this BIOS attribute can be changed
|
||||||
|
:param min_length: minimum length of the string
|
||||||
|
:param max_length: maximum length of the string
|
||||||
|
:param pcre_regex: is a PCRE compatible regular expression that the
|
||||||
|
string must match
|
||||||
|
"""
|
||||||
|
super(BIOSStringAttribute, self).__init__(name, current_value,
|
||||||
|
pending_value, read_only)
|
||||||
|
self.min_length = min_length
|
||||||
|
self.max_length = max_length
|
||||||
|
self.pcre_regex = pcre_regex
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse(cls, bios_attr_xml):
|
||||||
|
"""Parses XML and creates BIOSStringAttribute object"""
|
||||||
|
|
||||||
|
bios_attr = BIOSAttribute.parse(cls.namespace, bios_attr_xml)
|
||||||
|
min_length = int(utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, cls.namespace, 'MinLength'))
|
||||||
|
max_length = int(utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, cls.namespace, 'MaxLength'))
|
||||||
|
pcre_regex = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, cls.namespace, 'ValueExpression', nullable=True)
|
||||||
|
|
||||||
|
return cls(bios_attr.name, bios_attr.current_value,
|
||||||
|
bios_attr.pending_value, bios_attr.read_only,
|
||||||
|
min_length, max_length, pcre_regex)
|
||||||
|
|
||||||
|
def validate(self, new_value):
|
||||||
|
"""Validates new value"""
|
||||||
|
|
||||||
|
if self.pcre_regex is not None:
|
||||||
|
regex = re.compile(self.pcre_regex)
|
||||||
|
if regex.search(str(new_value)) is None:
|
||||||
|
msg = ("Attribute '%(attr)s' cannot be set to value '%(val)s.'"
|
||||||
|
" It must match regex '%(re)s'.") % {
|
||||||
|
'attr': self.name,
|
||||||
|
'val': new_value,
|
||||||
|
're': self.pcre_regex}
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
class BIOSIntegerAttribute(BIOSAttribute):
|
||||||
|
"""Integer BIOS attribute class"""
|
||||||
|
|
||||||
|
namespace = uris.DCIM_BIOSInteger
|
||||||
|
|
||||||
|
def __init__(self, name, current_value, pending_value, read_only,
|
||||||
|
lower_bound, upper_bound):
|
||||||
|
"""Creates BIOSIntegerAttribute object
|
||||||
|
|
||||||
|
:param name: name of the BIOS attribute
|
||||||
|
:param current_value: current value of the BIOS attribute
|
||||||
|
:param pending_value: pending value of the BIOS attribute, reflecting
|
||||||
|
an unprocessed change (eg. config job not completed)
|
||||||
|
:param read_only: indicates whether this BIOS attribute can be changed
|
||||||
|
:param lower_bound: minimum value for the BIOS attribute
|
||||||
|
:param upper_bound: maximum value for the BOIS attribute
|
||||||
|
"""
|
||||||
|
super(BIOSIntegerAttribute, self).__init__(name, current_value,
|
||||||
|
pending_value, read_only)
|
||||||
|
self.lower_bound = lower_bound
|
||||||
|
self.upper_bound = upper_bound
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse(cls, bios_attr_xml):
|
||||||
|
"""Parses XML and creates BIOSIntegerAttribute object"""
|
||||||
|
|
||||||
|
bios_attr = BIOSAttribute.parse(cls.namespace, bios_attr_xml)
|
||||||
|
lower_bound = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, cls.namespace, 'LowerBound')
|
||||||
|
upper_bound = utils.get_wsman_resource_attr(
|
||||||
|
bios_attr_xml, cls.namespace, 'UpperBound')
|
||||||
|
|
||||||
|
if bios_attr.current_value:
|
||||||
|
bios_attr.current_value = int(bios_attr.current_value)
|
||||||
|
if bios_attr.pending_value:
|
||||||
|
bios_attr.pending_value = int(bios_attr.pending_value)
|
||||||
|
|
||||||
|
return cls(bios_attr.name, bios_attr.current_value,
|
||||||
|
bios_attr.pending_value, bios_attr.read_only,
|
||||||
|
int(lower_bound), int(upper_bound))
|
||||||
|
|
||||||
|
def validate(self, new_value):
|
||||||
|
"""Validates new value"""
|
||||||
|
|
||||||
|
val = int(new_value)
|
||||||
|
if val < self.lower_bound or val > self.upper_bound:
|
||||||
|
msg = ('Attribute %(attr)s cannot be set to value %(val)d.'
|
||||||
|
' It must be between %(lower)d and %(upper)d.') % {
|
||||||
|
'attr': self.name,
|
||||||
|
'val': new_value,
|
||||||
|
'lower': self.lower_bound,
|
||||||
|
'upper': self.upper_bound}
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
class BIOSConfiguration(object):
|
||||||
|
|
||||||
|
def __init__(self, client):
|
||||||
|
"""Creates BIOSConfiguration object
|
||||||
|
|
||||||
|
:param client: an instance of WSManClient
|
||||||
|
"""
|
||||||
|
self.client = client
|
||||||
|
|
||||||
|
def list_bios_settings(self):
|
||||||
|
"""List the BIOS configuration settings
|
||||||
|
|
||||||
|
:returns: a dictionary with the BIOS settings using its name as the
|
||||||
|
key. The attributes are either BIOSEnumerableAttribute,
|
||||||
|
BIOSStringAttribute or BIOSIntegerAttribute objects.
|
||||||
|
:raises: WSManRequestFailure on request failures
|
||||||
|
:raises: WSManInvalidResponse when receiving invalid response
|
||||||
|
:raises: DRACOperationFailed on error reported back by the DRAC
|
||||||
|
interface
|
||||||
|
"""
|
||||||
|
|
||||||
|
result = {}
|
||||||
|
namespaces = [(uris.DCIM_BIOSEnumeration, BIOSEnumerableAttribute),
|
||||||
|
(uris.DCIM_BIOSString, BIOSStringAttribute),
|
||||||
|
(uris.DCIM_BIOSInteger, BIOSIntegerAttribute)]
|
||||||
|
for (namespace, attr_cls) in namespaces:
|
||||||
|
attribs = self._get_config(namespace, attr_cls)
|
||||||
|
if not set(result).isdisjoint(set(attribs)):
|
||||||
|
raise exceptions.DRACOperationFailed(
|
||||||
|
drac_messages=('Colliding attributes %r' % (
|
||||||
|
set(result) & set(attribs))))
|
||||||
|
result.update(attribs)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _get_config(self, resource, attr_cls):
|
||||||
|
result = {}
|
||||||
|
|
||||||
|
doc = self.client.enumerate(resource)
|
||||||
|
items = doc.find('.//{%s}Items' % wsman.NS_WSMAN)
|
||||||
|
|
||||||
|
for item in items:
|
||||||
|
attribute = attr_cls.parse(item)
|
||||||
|
result[attribute.name] = attribute
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def set_bios_settings(self, new_settings):
|
||||||
|
"""Sets the BIOS configuration
|
||||||
|
|
||||||
|
To be more precise, it sets the pending_value parameter for each of the
|
||||||
|
attributes passed in. For the values to be applied, a config job must
|
||||||
|
be created and the node must be rebooted.
|
||||||
|
|
||||||
|
:param: new_settings: a dictionary containing the proposed values, with
|
||||||
|
each key being the name of attribute and the
|
||||||
|
value being the proposed value.
|
||||||
|
:returns: a dictionary containing the commit_needed key with a boolean
|
||||||
|
value indicating whether a config job must be created for the
|
||||||
|
values to be applied.
|
||||||
|
: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
|
||||||
|
:raises: InvalidParameterValue on invalid BIOS attribute
|
||||||
|
"""
|
||||||
|
|
||||||
|
current_settings = self.list_bios_settings()
|
||||||
|
unknown_keys = set(new_settings) - set(current_settings)
|
||||||
|
if unknown_keys:
|
||||||
|
msg = ('Unknown BIOS attributes found: %(unknown_keys)r' %
|
||||||
|
{'unknown_keys': unknown_keys})
|
||||||
|
raise exceptions.InvalidParameterValue(reason=msg)
|
||||||
|
|
||||||
|
read_only_keys = []
|
||||||
|
unchanged_attribs = []
|
||||||
|
invalid_attribs_msgs = []
|
||||||
|
attrib_names = []
|
||||||
|
candidates = set(new_settings)
|
||||||
|
|
||||||
|
for attr in candidates:
|
||||||
|
if str(new_settings[attr]) == str(
|
||||||
|
current_settings[attr].current_value):
|
||||||
|
unchanged_attribs.append(attr)
|
||||||
|
elif current_settings[attr].read_only:
|
||||||
|
read_only_keys.append(attr)
|
||||||
|
else:
|
||||||
|
validation_msg = current_settings[attr].validate(
|
||||||
|
new_settings[attr])
|
||||||
|
if validation_msg is None:
|
||||||
|
attrib_names.append(attr)
|
||||||
|
else:
|
||||||
|
invalid_attribs_msgs.append(validation_msg)
|
||||||
|
|
||||||
|
if unchanged_attribs:
|
||||||
|
LOG.warn('Ignoring unchanged BIOS attributes: %r' %
|
||||||
|
unchanged_attribs)
|
||||||
|
|
||||||
|
if invalid_attribs_msgs or read_only_keys:
|
||||||
|
if read_only_keys:
|
||||||
|
read_only_msg = ['Cannot set read-only BIOS attributes: %r.'
|
||||||
|
% read_only_keys]
|
||||||
|
else:
|
||||||
|
read_only_msg = []
|
||||||
|
|
||||||
|
drac_messages = '\n'.join(invalid_attribs_msgs + read_only_msg)
|
||||||
|
raise exceptions.DRACOperationFailed(
|
||||||
|
drac_messages=drac_messages)
|
||||||
|
|
||||||
|
if not attrib_names:
|
||||||
|
return {'commit_required': False}
|
||||||
|
|
||||||
|
selectors = {'CreationClassName': 'DCIM_BIOSService',
|
||||||
|
'Name': 'DCIM:BIOSService',
|
||||||
|
'SystemCreationClassName': 'DCIM_ComputerSystem',
|
||||||
|
'SystemName': 'DCIM:ComputerSystem'}
|
||||||
|
properties = {'Target': 'BIOS.Setup.1-1',
|
||||||
|
'AttributeName': attrib_names,
|
||||||
|
'AttributeValue': [new_settings[attr] for attr
|
||||||
|
in attrib_names]}
|
||||||
|
doc = self.client.invoke(uris.DCIM_BIOSService, 'SetAttributes',
|
||||||
|
selectors, properties)
|
||||||
|
|
||||||
|
# Checking for RebootRequired attribute in the response, which
|
||||||
|
# indicates whether we need to create a config job and then reboot, so
|
||||||
|
# that the Lifecycle controller can commit the BIOS config changes that
|
||||||
|
# have been proposed.
|
||||||
|
reboot_required = utils.find_xml(doc, 'RebootRequired',
|
||||||
|
uris.DCIM_BIOSService)
|
||||||
|
commit_required = (reboot_required.text == 'Yes')
|
||||||
|
|
||||||
|
return {'commit_required': commit_required}
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
import lxml.etree
|
import lxml.etree
|
||||||
import mock
|
import mock
|
||||||
import requests_mock
|
import requests_mock
|
||||||
@ -189,6 +191,210 @@ class ClientBootManagementTestCase(base.BaseTest):
|
|||||||
self.drac_client.change_boot_device_order, 'IPL', 'foo')
|
self.drac_client.change_boot_device_order, 'IPL', 'foo')
|
||||||
|
|
||||||
|
|
||||||
|
class ClientBIOSConfigurationTestCase(base.BaseTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(ClientBIOSConfigurationTestCase, self).setUp()
|
||||||
|
self.drac_client = dracclient.client.DRACClient(
|
||||||
|
**test_utils.FAKE_ENDPOINT)
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_list_bios_settings(self, mock_requests):
|
||||||
|
expected_enum_attr = bios.BIOSEnumerableAttribute(
|
||||||
|
name='MemTest',
|
||||||
|
read_only=False,
|
||||||
|
current_value='Disabled',
|
||||||
|
pending_value=None,
|
||||||
|
possible_values=['Enabled', 'Disabled'])
|
||||||
|
expected_string_attr = bios.BIOSStringAttribute(
|
||||||
|
name='SystemModelName',
|
||||||
|
read_only=True,
|
||||||
|
current_value='PowerEdge R320',
|
||||||
|
pending_value=None,
|
||||||
|
min_length=0,
|
||||||
|
max_length=32,
|
||||||
|
pcre_regex=None)
|
||||||
|
expected_integer_attr = bios.BIOSIntegerAttribute(
|
||||||
|
name='Proc1NumCores',
|
||||||
|
read_only=True,
|
||||||
|
current_value=8,
|
||||||
|
pending_value=None,
|
||||||
|
lower_bound=0,
|
||||||
|
upper_bound=65535)
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
bios_settings = self.drac_client.list_bios_settings()
|
||||||
|
|
||||||
|
self.assertEqual(103, len(bios_settings))
|
||||||
|
# enumerable attribute
|
||||||
|
self.assertIn('MemTest', bios_settings)
|
||||||
|
self.assertEqual(expected_enum_attr, bios_settings['MemTest'])
|
||||||
|
# string attribute
|
||||||
|
self.assertIn('SystemModelName', bios_settings)
|
||||||
|
self.assertEqual(expected_string_attr,
|
||||||
|
bios_settings['SystemModelName'])
|
||||||
|
# integer attribute
|
||||||
|
self.assertIn('Proc1NumCores', bios_settings)
|
||||||
|
self.assertEqual(expected_integer_attr, bios_settings['Proc1NumCores'])
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_list_bios_settings_with_colliding_attrs(self, mock_requests):
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['colliding']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
self.assertRaises(exceptions.DRACOperationFailed,
|
||||||
|
self.drac_client.list_bios_settings)
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
@mock.patch.object(dracclient.client.WSManClient, 'invoke',
|
||||||
|
spec_set=True, autospec=True)
|
||||||
|
def test_set_bios_settings(self, mock_requests, mock_invoke):
|
||||||
|
expected_selectors = {'CreationClassName': 'DCIM_BIOSService',
|
||||||
|
'SystemName': 'DCIM:ComputerSystem',
|
||||||
|
'Name': 'DCIM:BIOSService',
|
||||||
|
'SystemCreationClassName': 'DCIM_ComputerSystem'}
|
||||||
|
expected_properties = {'Target': 'BIOS.Setup.1-1',
|
||||||
|
'AttributeName': ['ProcVirtualization'],
|
||||||
|
'AttributeValue': ['Disabled']}
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
mock_invoke.return_value = lxml.etree.fromstring(
|
||||||
|
test_utils.BIOSInvocations[uris.DCIM_BIOSService][
|
||||||
|
'SetAttributes']['ok'])
|
||||||
|
|
||||||
|
result = self.drac_client.set_bios_settings(
|
||||||
|
{'ProcVirtualization': 'Disabled'})
|
||||||
|
|
||||||
|
self.assertEqual({'commit_required': True}, result)
|
||||||
|
mock_invoke.assert_called_once_with(
|
||||||
|
mock.ANY, uris.DCIM_BIOSService, 'SetAttributes',
|
||||||
|
expected_selectors, expected_properties)
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_error(self, mock_requests):
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']},
|
||||||
|
{'text': test_utils.BIOSInvocations[
|
||||||
|
uris.DCIM_BIOSService]['SetAttributes']['error']}])
|
||||||
|
|
||||||
|
self.assertRaises(exceptions.DRACOperationFailed,
|
||||||
|
self.drac_client.set_bios_settings,
|
||||||
|
{'ProcVirtualization': 'Disabled'})
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_with_unknown_attr(self, mock_requests):
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
self.assertRaises(exceptions.InvalidParameterValue,
|
||||||
|
self.drac_client.set_bios_settings, {'foo': 'bar'})
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_with_unchanged_attr(self, mock_requests):
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
result = self.drac_client.set_bios_settings(
|
||||||
|
{'ProcVirtualization': 'Enabled'})
|
||||||
|
|
||||||
|
self.assertEqual({'commit_required': False}, result)
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_with_readonly_attr(self, mock_requests):
|
||||||
|
expected_message = ("Cannot set read-only BIOS attributes: "
|
||||||
|
"['Proc1NumCores'].")
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
self.assertRaisesRegexp(
|
||||||
|
exceptions.DRACOperationFailed, re.escape(expected_message),
|
||||||
|
self.drac_client.set_bios_settings, {'Proc1NumCores': 42})
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_with_incorrect_enum_value(self, mock_requests):
|
||||||
|
expected_message = ("Attribute 'MemTest' cannot be set to value "
|
||||||
|
"'foo'. It must be in ['Enabled', 'Disabled'].")
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
self.assertRaisesRegexp(
|
||||||
|
exceptions.DRACOperationFailed, re.escape(expected_message),
|
||||||
|
self.drac_client.set_bios_settings, {'MemTest': 'foo'})
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_with_incorrect_regexp(self, mock_requests):
|
||||||
|
expected_message = ("Attribute 'SystemModelName' cannot be set to "
|
||||||
|
"value 'bar.' It must match regex 'foo'.")
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['regexp']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['ok']}])
|
||||||
|
|
||||||
|
self.assertRaisesRegexp(
|
||||||
|
exceptions.DRACOperationFailed, re.escape(expected_message),
|
||||||
|
self.drac_client.set_bios_settings, {'SystemModelName': 'bar'})
|
||||||
|
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
def test_set_bios_settings_with_out_of_bounds_value(self, mock_requests):
|
||||||
|
expected_message = ('Attribute Proc1NumCores cannot be set to value '
|
||||||
|
'-42. It must be between 0 and 65535.')
|
||||||
|
mock_requests.post('https://1.2.3.4:443/wsman', [
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSEnumeration]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSString]['ok']},
|
||||||
|
{'text': test_utils.BIOSEnumerations[
|
||||||
|
uris.DCIM_BIOSInteger]['mutable']}])
|
||||||
|
|
||||||
|
self.assertRaisesRegexp(
|
||||||
|
exceptions.DRACOperationFailed, re.escape(expected_message),
|
||||||
|
self.drac_client.set_bios_settings, {'Proc1NumCores': -42})
|
||||||
|
|
||||||
|
|
||||||
class ClientJobManagementTestCase(base.BaseTest):
|
class ClientJobManagementTestCase(base.BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -383,7 +589,18 @@ class ClientBIOSChangesTestCase(base.BaseTest):
|
|||||||
mock_create_config_job.assert_called_once_with(
|
mock_create_config_job.assert_called_once_with(
|
||||||
mock.ANY, resource_uri=uris.DCIM_BIOSService,
|
mock.ANY, resource_uri=uris.DCIM_BIOSService,
|
||||||
cim_creation_class_name='DCIM_BIOSService',
|
cim_creation_class_name='DCIM_BIOSService',
|
||||||
cim_name='DCIM:BIOSService', target='BIOS.Setup.1-1')
|
cim_name='DCIM:BIOSService', target='BIOS.Setup.1-1', reboot=False)
|
||||||
|
|
||||||
|
@mock.patch.object(dracclient.resources.job.JobManagement,
|
||||||
|
'create_config_job', spec_set=True, autospec=True)
|
||||||
|
def test_commit_pending_bios_changes_with_reboot(self,
|
||||||
|
mock_create_config_job):
|
||||||
|
self.drac_client.commit_pending_bios_changes(reboot=True)
|
||||||
|
|
||||||
|
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', reboot=True)
|
||||||
|
|
||||||
@mock.patch.object(dracclient.resources.job.JobManagement,
|
@mock.patch.object(dracclient.resources.job.JobManagement,
|
||||||
'delete_pending_config', spec_set=True, autospec=True)
|
'delete_pending_config', spec_set=True, autospec=True)
|
||||||
|
@ -44,8 +44,17 @@ WSManEnumerations = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BIOSEnumerations = {
|
BIOSEnumerations = {
|
||||||
uris.DCIM_ComputerSystem: {
|
uris.DCIM_BIOSEnumeration: {
|
||||||
'ok': load_wsman_xml('computer_system-enum-ok')
|
'ok': load_wsman_xml('bios_enumeration-enum-ok')
|
||||||
|
},
|
||||||
|
uris.DCIM_BIOSInteger: {
|
||||||
|
'mutable': load_wsman_xml('bios_integer-enum-mutable'),
|
||||||
|
'ok': load_wsman_xml('bios_integer-enum-ok')
|
||||||
|
},
|
||||||
|
uris.DCIM_BIOSString: {
|
||||||
|
'colliding': load_wsman_xml('bios_string-enum-colliding'),
|
||||||
|
'ok': load_wsman_xml('bios_string-enum-ok'),
|
||||||
|
'regexp': load_wsman_xml('bios_string-enum-regexp')
|
||||||
},
|
},
|
||||||
uris.DCIM_BootConfigSetting: {
|
uris.DCIM_BootConfigSetting: {
|
||||||
'ok': load_wsman_xml('boot_config_setting-enum-ok')
|
'ok': load_wsman_xml('boot_config_setting-enum-ok')
|
||||||
@ -53,7 +62,10 @@ BIOSEnumerations = {
|
|||||||
uris.DCIM_BootSourceSetting: {
|
uris.DCIM_BootSourceSetting: {
|
||||||
'ok': load_wsman_xml('boot_source_setting-enum-ok'),
|
'ok': load_wsman_xml('boot_source_setting-enum-ok'),
|
||||||
'ok-11g': load_wsman_xml('boot_source_setting-enum-ok-11g')
|
'ok-11g': load_wsman_xml('boot_source_setting-enum-ok-11g')
|
||||||
}
|
},
|
||||||
|
uris.DCIM_ComputerSystem: {
|
||||||
|
'ok': load_wsman_xml('computer_system-enum-ok')
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
BIOSInvocations = {
|
BIOSInvocations = {
|
||||||
@ -65,6 +77,14 @@ BIOSInvocations = {
|
|||||||
'computer_system-invoke-request_state_change-error'),
|
'computer_system-invoke-request_state_change-error'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
uris.DCIM_BIOSService: {
|
||||||
|
'SetAttributes': {
|
||||||
|
'ok': load_wsman_xml(
|
||||||
|
'bios_service-invoke-set_attributes-ok'),
|
||||||
|
'error': load_wsman_xml(
|
||||||
|
'bios_service-invoke-set_attributes-error'),
|
||||||
|
}
|
||||||
|
},
|
||||||
uris.DCIM_BootConfigSetting: {
|
uris.DCIM_BootConfigSetting: {
|
||||||
'ChangeBootOrderByInstanceID': {
|
'ChangeBootOrderByInstanceID': {
|
||||||
'ok': load_wsman_xml(
|
'ok': load_wsman_xml(
|
||||||
|
1495
dracclient/tests/wsman_mocks/bios_enumeration-enum-ok.xml
Normal file
1495
dracclient/tests/wsman_mocks/bios_enumeration-enum-ok.xml
Normal file
File diff suppressed because it is too large
Load Diff
36
dracclient/tests/wsman_mocks/bios_integer-enum-mutable.xml
Normal file
36
dracclient/tests/wsman_mocks/bios_integer-enum-mutable.xml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSInteger"
|
||||||
|
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"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<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:382b3463-6ab7-4998-85d5-0ac3f4d3044d</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:319dc294-2213-1213-8eeb-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<wsen:EnumerateResponse>
|
||||||
|
<wsman:Items>
|
||||||
|
<n1:DCIM_BIOSInteger>
|
||||||
|
<n1:AttributeDisplayName>Number of Cores</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc1NumCores</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>8</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>446</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc1NumCores</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>false</n1:IsReadOnly>
|
||||||
|
<n1:LowerBound>0</n1:LowerBound>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:UpperBound>65535</n1:UpperBound>
|
||||||
|
</n1:DCIM_BIOSInteger>
|
||||||
|
</wsman:Items>
|
||||||
|
<wsen:EnumerationContext/>
|
||||||
|
<wsman:EndOfSequence/>
|
||||||
|
</wsen:EnumerateResponse>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
56
dracclient/tests/wsman_mocks/bios_integer-enum-ok.xml
Normal file
56
dracclient/tests/wsman_mocks/bios_integer-enum-ok.xml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSInteger"
|
||||||
|
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"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<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:382b3463-6ab7-4998-85d5-0ac3f4d3044d</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:319dc294-2213-1213-8eeb-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<wsen:EnumerateResponse>
|
||||||
|
<wsman:Items>
|
||||||
|
<n1:DCIM_BIOSInteger>
|
||||||
|
<n1:AttributeDisplayName>Number of Cores</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc1NumCores</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>8</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>446</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc1NumCores</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:LowerBound>0</n1:LowerBound>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:UpperBound>65535</n1:UpperBound>
|
||||||
|
</n1:DCIM_BIOSInteger>
|
||||||
|
<n1:DCIM_BIOSInteger>
|
||||||
|
<n1:AttributeDisplayName>User Defined Delay (60s to 240s)</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>AcPwrRcvryUserDelay</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>60</n1:CurrentValue>
|
||||||
|
<n1:Dependency><![CDATA[
|
||||||
|
<Dep>
|
||||||
|
<AttrLev Op="OR">
|
||||||
|
<ROIf Name="AcPwrRcvry">Off</ROIf>
|
||||||
|
<ROIf Name="AcPwrRcvryDelay" Op="NOT">User</ROIf></AttrLev>
|
||||||
|
</Dep>]]></n1:Dependency>
|
||||||
|
<n1:DisplayOrder>1431</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Security</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysSecurity</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:AcPwrRcvryUserDelay</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:LowerBound>60</n1:LowerBound>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:UpperBound>240</n1:UpperBound>
|
||||||
|
</n1:DCIM_BIOSInteger>
|
||||||
|
</wsman:Items>
|
||||||
|
<wsen:EnumerationContext/>
|
||||||
|
<wsman:EndOfSequence/>
|
||||||
|
</wsen:EnumerateResponse>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
@ -0,0 +1,20 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSService"
|
||||||
|
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_BIOSService/SetAttributesResponse</wsa:Action>
|
||||||
|
<wsa:RelatesTo>uuid:f06dfc6d-b102-43d8-a61e-722b7ec8b7b2</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:2bfaa9a2-223c-123c-8f55-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<n1:SetAttributes_OUTPUT>
|
||||||
|
<n1:Message>Invalid AttributeValue for AttributeName ProcVirtualization</n1:Message>
|
||||||
|
<n1:MessageArguments>ProcVirtualization</n1:MessageArguments>
|
||||||
|
<n1:MessageID>BIOS014</n1:MessageID>
|
||||||
|
<n1:RebootRequired>Yes</n1:RebootRequired>
|
||||||
|
<n1:ReturnValue>2</n1:ReturnValue>
|
||||||
|
<n1:SetResult>Set PendingValue</n1:SetResult>
|
||||||
|
</n1:SetAttributes_OUTPUT>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
@ -0,0 +1,19 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSService"
|
||||||
|
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_BIOSService/SetAttributesResponse</wsa:Action>
|
||||||
|
<wsa:RelatesTo>uuid:9ffdced1-8f2e-441c-a42a-e6c56d9859c8</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:d139ff73-223b-123b-8f47-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<n1:SetAttributes_OUTPUT>
|
||||||
|
<n1:Message>The command was successful.</n1:Message>
|
||||||
|
<n1:MessageID>BIOS001</n1:MessageID>
|
||||||
|
<n1:RebootRequired>Yes</n1:RebootRequired>
|
||||||
|
<n1:ReturnValue>0</n1:ReturnValue>
|
||||||
|
<n1:SetResult>Set PendingValue</n1:SetResult>
|
||||||
|
</n1:SetAttributes_OUTPUT>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
53
dracclient/tests/wsman_mocks/bios_string-enum-colliding.xml
Normal file
53
dracclient/tests/wsman_mocks/bios_string-enum-colliding.xml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSString"
|
||||||
|
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"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<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:1d8b3e77-8919-4459-8f06-2d63284c15c1</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:31707306-2213-1213-8ee9-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<wsen:EnumerateResponse>
|
||||||
|
<wsman:Items>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Memory Testing</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>MemTest</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>PowerEdge R320</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>200</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemModelName</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>32</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Memory Operating Mode</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>MemOpMode</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>2.3.3</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>201</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemBiosVersion</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>48</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
</wsman:Items>
|
||||||
|
<wsen:EnumerationContext/>
|
||||||
|
<wsman:EndOfSequence/>
|
||||||
|
</wsen:EnumerateResponse>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
581
dracclient/tests/wsman_mocks/bios_string-enum-ok.xml
Normal file
581
dracclient/tests/wsman_mocks/bios_string-enum-ok.xml
Normal file
@ -0,0 +1,581 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSString"
|
||||||
|
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"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<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:1d8b3e77-8919-4459-8f06-2d63284c15c1</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:31707306-2213-1213-8ee9-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<wsen:EnumerateResponse>
|
||||||
|
<wsman:Items>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Model Name</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SystemModelName</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>PowerEdge R320</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>200</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemModelName</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>32</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System BIOS Version</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SystemBiosVersion</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>2.3.3</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>201</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemBiosVersion</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>48</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Service Tag</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SystemServiceTag</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>JLR7Q22</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>202</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemServiceTag</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Manufacturer</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SystemManufacturer</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Dell Inc.</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>204</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemManufacturer</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>32</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Manufacturer Contact Information</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SysMfrContactInfo</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>www.dell.com</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>205</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SysMfrContactInfo</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>32</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System CPLD Version</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SystemCpldVersion</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>104</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>206</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemCpldVersion</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>8</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Memory Size</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SysMemSize</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>32.0 GB</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>300</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Memory Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>MemSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SysMemSize</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Memory Type</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SysMemType</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>ECC DDR3</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>301</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Memory Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>MemSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SysMemType</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Memory Speed</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SysMemSpeed</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>1600 MHz</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>302</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Memory Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>MemSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SysMemSpeed</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Memory Voltage</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SysMemVolt</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>1.35V</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>303</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Memory Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>MemSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SysMemVolt</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>8</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Video Memory</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>VideoMem</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>16 MB</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>304</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Memory Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>MemSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:VideoMem</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Processor 64-bit Support</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc64bit</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Yes</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>435</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc64bit</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>4</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Processor Core Speed</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>ProcCoreSpeed</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>1.90 GHz</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>436</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:ProcCoreSpeed</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Family-Model-Stepping</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc1Id</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>06-3E-4</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>442</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc1Id</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>8</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Brand</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc1Brand</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>[Intel(R) Xeon(R) CPU E5-2440 v2 @ 1.90GHz ]</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>443</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc1Brand</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>80</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Level 2 Cache</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc1L2Cache</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>8x256 KB</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>444</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc1L2Cache</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Level 3 Cache</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>Proc1L3Cache</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>20 MB</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>445</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Processor Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>ProcSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:Proc1L3Cache</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>16</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Model</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortAModel</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>507</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortAModel</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>40</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Drive Type</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortADriveType</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown Device</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>508</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortADriveType</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Capacity</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortACapacity</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>N/A</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>509</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortACapacity</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>18</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Model</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortBModel</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>513</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortBModel</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>40</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Drive Type</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortBDriveType</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown Device</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>514</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortBDriveType</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Capacity</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortBCapacity</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>N/A</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>515</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortBCapacity</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>18</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Model</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortCModel</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>519</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortCModel</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>40</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Drive Type</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortCDriveType</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown Device</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>520</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortCDriveType</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Capacity</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortCCapacity</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>N/A</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>521</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortCCapacity</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>18</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Model</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortDModel</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>525</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortDModel</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>40</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Drive Type</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortDDriveType</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown Device</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>526</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortDDriveType</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Capacity</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortDCapacity</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>N/A</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>527</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortDCapacity</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>18</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Model</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortEModel</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>HL-DT-ST DVD-ROM DU90N </n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>531</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortEModel</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>40</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Drive Type</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortEDriveType</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Optical Drive</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>532</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortEDriveType</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Capacity</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SataPortECapacity</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>N/A</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>533</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>SATA Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SataSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SataPortECapacity</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>18</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Intel(R) AES-NI</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>AesNi</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Enabled</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>1400</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Security</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysSecurity</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:AesNi</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>20</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>TPM Status</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>TpmStatus</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>Unknown</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>1413</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Security</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysSecurity</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:TpmStatus</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>true</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>24</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression xsi:nil="true"/>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>Asset Tag</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>AssetTag</n1:AttributeName>
|
||||||
|
<n1:CurrentValue xsi:nil="true"/>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>1504</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>Miscellaneous Settings</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>MiscSettings</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:AssetTag</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>false</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>30</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression>^[ -~]{0,30}$</n1:ValueExpression>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
</wsman:Items>
|
||||||
|
<wsen:EnumerationContext/>
|
||||||
|
<wsman:EndOfSequence/>
|
||||||
|
</wsen:EnumerateResponse>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
37
dracclient/tests/wsman_mocks/bios_string-enum-regexp.xml
Normal file
37
dracclient/tests/wsman_mocks/bios_string-enum-regexp.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<s:Envelope xmlns:n1="http://schemas.dell.com/wbem/wscim/1/cim-schema/2/DCIM_BIOSString"
|
||||||
|
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"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<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:1d8b3e77-8919-4459-8f06-2d63284c15c1</wsa:RelatesTo>
|
||||||
|
<wsa:MessageID>uuid:31707306-2213-1213-8ee9-a36fc6fe83b0</wsa:MessageID>
|
||||||
|
</s:Header>
|
||||||
|
<s:Body>
|
||||||
|
<wsen:EnumerateResponse>
|
||||||
|
<wsman:Items>
|
||||||
|
<n1:DCIM_BIOSString>
|
||||||
|
<n1:AttributeDisplayName>System Model Name</n1:AttributeDisplayName>
|
||||||
|
<n1:AttributeName>SystemModelName</n1:AttributeName>
|
||||||
|
<n1:CurrentValue>PowerEdge R320</n1:CurrentValue>
|
||||||
|
<n1:Dependency xsi:nil="true"/>
|
||||||
|
<n1:DisplayOrder>200</n1:DisplayOrder>
|
||||||
|
<n1:FQDD>BIOS.Setup.1-1</n1:FQDD>
|
||||||
|
<n1:GroupDisplayName>System Information</n1:GroupDisplayName>
|
||||||
|
<n1:GroupID>SysInformation</n1:GroupID>
|
||||||
|
<n1:InstanceID>BIOS.Setup.1-1:SystemModelName</n1:InstanceID>
|
||||||
|
<n1:IsReadOnly>false</n1:IsReadOnly>
|
||||||
|
<n1:MaxLength>32</n1:MaxLength>
|
||||||
|
<n1:MinLength>0</n1:MinLength>
|
||||||
|
<n1:PendingValue xsi:nil="true"/>
|
||||||
|
<n1:ValueExpression>foo</n1:ValueExpression>
|
||||||
|
</n1:DCIM_BIOSString>
|
||||||
|
</wsman:Items>
|
||||||
|
<wsen:EnumerationContext/>
|
||||||
|
<wsman:EndOfSequence/>
|
||||||
|
</wsen:EnumerateResponse>
|
||||||
|
</s:Body>
|
||||||
|
</s:Envelope>
|
@ -15,6 +15,8 @@
|
|||||||
Common functionalities shared between different DRAC modules.
|
Common functionalities shared between different DRAC modules.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
NS_XMLSchema_Instance = 'http://www.w3.org/2001/XMLSchema-instance'
|
||||||
|
|
||||||
# ReturnValue constants
|
# ReturnValue constants
|
||||||
RET_SUCCESS = '0'
|
RET_SUCCESS = '0'
|
||||||
RET_ERROR = '2'
|
RET_ERROR = '2'
|
||||||
@ -42,7 +44,22 @@ def find_xml(doc, item, namespace, find_all=False):
|
|||||||
return doc.find(query)
|
return doc.find(query)
|
||||||
|
|
||||||
|
|
||||||
def get_wsman_resource_attr(doc, resource_uri, attr_name):
|
def get_wsman_resource_attr(doc, resource_uri, attr_name, nullable=False):
|
||||||
"""Find an attribute of a resource in an ElementTree object"""
|
"""Find an attribute of a resource in an ElementTree object.
|
||||||
|
|
||||||
return find_xml(doc, attr_name, resource_uri).text.strip()
|
:param doc: the element tree object.
|
||||||
|
:param resource_uri: the resource URI of the namespace.
|
||||||
|
:param attr_name: the name of the attribute.
|
||||||
|
:param: nullable: enables checking if the element contains an
|
||||||
|
XMLSchema-instance namespaced nil attribute that has a
|
||||||
|
value of True. In this case, it will return None.
|
||||||
|
:returns: value of the attribute
|
||||||
|
"""
|
||||||
|
item = find_xml(doc, attr_name, resource_uri)
|
||||||
|
|
||||||
|
if not nullable:
|
||||||
|
return item.text.strip()
|
||||||
|
else:
|
||||||
|
nil_attr = item.attrib.get('{%s}nil' % NS_XMLSchema_Instance)
|
||||||
|
if nil_attr != 'true':
|
||||||
|
return item.text.strip()
|
||||||
|
Loading…
Reference in New Issue
Block a user