python-dracclient/dracclient/tests/utils.py
Sagar Nanda 1488d904e2 Set iDRACCard attributes as nullable
The iDRACCard attribute GroupID is empty for 15th Generation servers,
e.g., Dell EMC PowerEdge R750 and R650, which triggered the error
"attribute GroupID is not nullable".

A similar error message has been observed when processing the
iDRACCardInteger attributes LowerBound and UpperBound read
from a PowerEdge XE2420 server.

This change sets those attributes as nullable.

Change-Id: If34d96fab4249f466f63b3740d1ff5eb68012462
2021-12-15 13:05:14 +00:00

329 lines
10 KiB
Python

#
# 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.
import os
from dracclient.resources import uris
FAKE_ENDPOINT = {
'host': '1.2.3.4',
'port': '443',
'path': '/wsman',
'protocol': 'https',
'username': 'admin',
'password': 's3cr3t'
}
def load_wsman_xml(name):
"""Helper function to load a WSMan XML response from a file."""
with open(os.path.join(os.path.dirname(__file__), 'wsman_mocks',
'%s.xml' % name), 'r') as f:
xml_body = f.read()
return xml_body
WSManEnumerations = {
'context': [
load_wsman_xml('wsman-enum_context-1'),
load_wsman_xml('wsman-enum_context-2'),
load_wsman_xml('wsman-enum_context-3'),
load_wsman_xml('wsman-enum_context-4'),
]
}
BIOSEnumerations = {
uris.DCIM_BIOSEnumeration: {
'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: {
'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')
},
uris.DCIM_ComputerSystem: {
'ok': load_wsman_xml('computer_system-enum-ok')
},
}
BIOSInvocations = {
uris.DCIM_ComputerSystem: {
'RequestStateChange': {
'ok': load_wsman_xml(
'computer_system-invoke-request_state_change-ok'),
'error': load_wsman_xml(
'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: {
'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'),
}
}
}
InventoryEnumerations = {
uris.DCIM_CPUView: {
'ok': load_wsman_xml('cpu_view-enum-ok'),
'missing_flags': load_wsman_xml('cpu_view-enum-missing_flags'),
'empty_flag': load_wsman_xml('cpu_view-enum-empty_flag'),
},
uris.DCIM_MemoryView: {
'ok': load_wsman_xml('memory_view-enum-ok')
},
uris.DCIM_NICView: {
'ok': load_wsman_xml('nic_view-enum-ok')
},
uris.DCIM_VideoView: {
'ok': load_wsman_xml('video_view-enum-ok'),
}
}
JobEnumerations = {
uris.DCIM_LifecycleJob: {
'ok': load_wsman_xml('lifecycle_job-enum-ok'),
'not_found': load_wsman_xml('lifecycle_job-enum-not_found'),
},
}
JobInvocations = {
uris.DCIM_BIOSService: {
'CreateTargetedConfigJob': {
'ok': load_wsman_xml(
'bios_service-invoke-create_targeted_config_job-ok'),
'error': load_wsman_xml(
'bios_service-invoke-create_targeted_config_job-error'),
},
'DeletePendingConfiguration': {
'ok': load_wsman_xml(
'bios_service-invoke-delete_pending_configuration-ok'),
'error': load_wsman_xml(
'bios_service-invoke-delete_pending_configuration-error'),
},
},
uris.DCIM_LCService: {
'CreateConfigJob': {
'ok': load_wsman_xml(
'lc_service-invoke-create_config_job-ok'),
'error': load_wsman_xml(
'lc_service-invoke-create_config_job-error'),
},
}
}
JobService = {
uris.DCIM_JobService: {
'DeleteJobQueue': {
'ok': load_wsman_xml(
'job_service-delete-job-id-ok'),
'error': load_wsman_xml(
'job_service-delete-job-id-error'),
}
}
}
iDracCardEnumerations = {
uris.DCIM_iDRACCardEnumeration: {
'ok': load_wsman_xml('idraccard_enumeration-enum-ok')
},
uris.DCIM_iDRACCardString: {
'ok': load_wsman_xml('idraccard_string-enum-ok'),
'nil_group_id': load_wsman_xml(
'idraccard_string-enum-nil-group-id')
},
uris.DCIM_iDRACCardInteger: {
'ok': load_wsman_xml('idraccard_integer-enum-ok'),
'nil_lower_bound': load_wsman_xml(
'idraccard_integer-enum-nil-lower-bound'),
'nil_upper_bound': load_wsman_xml(
'idraccard_integer-enum-nil-upper-bound')
},
}
iDracCardInvocations = {
uris.DCIM_iDRACCardService: {
'SetAttributes': {
'ok': load_wsman_xml(
'idrac_service-invoke-set_attributes-ok')
},
'iDRACReset': {
'ok': load_wsman_xml(
'idrac_service-reset-ok'),
'error': load_wsman_xml(
'idrac_service-reset-error')
}
}
}
LifecycleControllerEnumerations = {
uris.DCIM_SystemView: {
'ok': load_wsman_xml('system_view-enum-ok')
},
uris.DCIM_LCEnumeration: {
'ok': load_wsman_xml('lc_enumeration-enum-ok')
},
uris.DCIM_LCString: {
'ok': load_wsman_xml('lc_string-enum-ok')
}
}
LifecycleControllerInvocations = {
uris.DCIM_LCService: {
'GetRemoteServicesAPIStatus': {
'is_ready': load_wsman_xml('lc_getremoteservicesapistatus_ready'),
'is_not_ready': load_wsman_xml(
'lc_getremoteservicesapistatus_not_ready'),
'is_recovery': load_wsman_xml(
'lc_getremoteservicesapistatus_recovery'),
},
'SetAttributes': {
'ok': load_wsman_xml(
'lc_service-invoke-set_attributes-ok'),
'error': load_wsman_xml(
'lc_service-invoke-set_attributes-error'),
}
}
}
NICEnumerations = {
uris.DCIM_NICEnumeration: {
'ok': load_wsman_xml('nic_enumeration-enum-ok'),
},
uris.DCIM_NICString: {
'ok': load_wsman_xml('nic_string-enum-ok'),
# this duplicates the LinkStatus from nic_enumeration-enum-ok
'colliding': load_wsman_xml('nic_string-enum-colliding'),
},
uris.DCIM_NICInteger: {
'ok': load_wsman_xml('nic_integer-enum-ok')
},
}
NICInvocations = {
uris.DCIM_NICService: {
'SetAttributes': {
'ok': load_wsman_xml(
'nic_service-invoke-set_attributes-ok'),
'error': load_wsman_xml(
'nic_service-invoke-set_attributes-error'),
}
},
}
RAIDEnumerations = {
uris.DCIM_ControllerView: {
'ok': load_wsman_xml('controller_view-enum-ok')
},
uris.DCIM_PhysicalDiskView: {
'ok': load_wsman_xml('physical_disk_view-enum-ok')
},
uris.DCIM_VirtualDiskView: {
'Raid_Status_ok': load_wsman_xml(
'virtual_disk_view-enum-with-raid-status-ok'),
'ok': load_wsman_xml('virtual_disk_view-enum-ok')
},
uris.DCIM_RAIDEnumeration: {
'ok': load_wsman_xml('raid_enumeration-enum-ok')
},
uris.DCIM_RAIDString: {
'ok': load_wsman_xml('raid_string-enum-ok')
},
uris.DCIM_RAIDInteger: {
'ok': load_wsman_xml('raid_integer-enum-ok')
}
}
RAIDInvocations = {
uris.DCIM_RAIDService: {
'CreateVirtualDisk': {
'ok': load_wsman_xml(
'raid_service-invoke-create_virtual_disk-ok'),
'error': load_wsman_xml(
'raid_service-invoke-create_virtual_disk-error'),
},
'DeleteVirtualDisk': {
'ok': load_wsman_xml(
'raid_service-invoke-delete_virtual_disk-ok'),
'error': load_wsman_xml(
'raid_service-invoke-delete_virtual_disk-error'),
},
'ConvertToRAID': {
'ok': load_wsman_xml(
'raid_service-invoke-convert_physical_disks-ok'),
'error': load_wsman_xml(
'raid_service-invoke-convert_physical_disks-error'),
},
'ResetConfig': {
'ok': load_wsman_xml(
'raid_service-invoke-reset_raid_config-ok'),
'error': load_wsman_xml(
'raid_service-invoke-reset_raid_config-error'),
},
'ClearForeignConfig': {
'ok': load_wsman_xml(
'raid_service-invoke-clear_foreign_config-ok'),
'no_foreign_drive': load_wsman_xml(
'raid_service-invoke-clear_foreign_config-no_foreign_drive'),
'invalid_controller_id': load_wsman_xml(
'raid_service-invoke-clear_foreign_config-invalid_controller'),
'foreign_drive_operation_not_supported': load_wsman_xml(
'raid_service-invoke-clear_foreign_config-not_supported'),
},
'SetAttributes': {
'ok': load_wsman_xml(
'raid_service-invoke-set_attributes-ok'),
'error': load_wsman_xml(
'raid_service-invoke-set_attributes-error'),
}
}
}
SystemEnumerations = {
uris.DCIM_SystemEnumeration: {
'ok': load_wsman_xml('system_enumeration-enum-ok'),
},
uris.DCIM_SystemString: {
'ok': load_wsman_xml('system_string-enum-ok'),
},
uris.DCIM_SystemInteger: {
'ok': load_wsman_xml('system_integer-enum-ok'),
}
}