Commit Graph

118 Commits (master)

Author SHA1 Message Date
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
2 years ago
Aija Jauntēva d26664e7f9 Fix virtual disks sharing same physical disks
`StartingLBA` needs to be passed when creating virtual disks
sharing same physicial disks. Otherwise, only the first virtual
disk creation succeeds and iDRAC job has status "Completed
with Errors".

Change-Id: I985a714636fb2036cca038ffa281c1b1e01ffd52
2 years ago
Monica Pardhi 9ebc4afc84 Fix for H755 RAID controller when convert to JBOD
When converting Dell EMC PERC H755 RAID controller physical
disks to non-RAID mode, RAID-0 virtual disks get created
for each physical disk and disks moved to 'Online' state.

This is different from other controllers supporting non-RAID
conversion and takes up physical disks that cannot be
later used for user intended RAID configuration. This change
excludes H755 RAID controller's physical disks when converting
to non-RAID mode and leaves disks in 'Ready' state.

Change-Id: Id6de320c8e8a9ca21fac277718c405c657f58a3a
2 years ago
Zuul bad642bb13 Merge "Provide last system inventory time" 3 years ago
Yogesh Ramachandra a4c819e304 Provide last system inventory time
This change provides the time system inventory was last performed
by the iDRAC. That is done during system restart and referred to as
Collect System Inventory on Restart (CSIOR). The value is represented
in yyyymmddHHMMSS format.

Change-Id: I73ff5eb517528afe56b5cf45a74fa5d5519db186
Closes-Bug: #1894938
3 years ago
Zuul ff76c8dd6a Merge "Add video enumeration to InventoryManagement" 3 years ago
Mudit d341ab4b3c Add video enumeration to InventoryManagement
Change-Id: Ia14ae67fea9d69ba27ebd43f6043b817f6cc5eff
Closes-Bug: #1894940
3 years ago
Christopher Dearborn 1aaaf93f7c Fix issue with reset_idrac on some servers
This patch increases the amount of time to sleep before checking to see
if the iDRAC is ready following a reset to 60 seconds. 30 seconds was
too short for some servers.

Change-Id: I9252a2d56b852f72efcf571bf7d8e70cbb7cd874
3 years ago
Zuul e902ced872 Merge "Remove deprecated change phys disk state results" 3 years ago
Christopher Dearborn fef6ffa789 Remove deprecated change phys disk state results
Remove the deprecated is_reboot_required and commit_required_ids keys
from the results returned by the change_physical_disk_state method.

Change-Id: I0899597d2aa82d8075ce1c6be33968d992b17c84
3 years ago
Sean McGinnis 1f2b0ed263
Use unittest.mock instead of third party mock
Now that we no longer support py27, we can use the standard library
unittest.mock module instead of the third party mock lib.

Change-Id: I1e30d77b7ca98c08ec8c42a18df863b202525418
Signed-off-by: Sean McGinnis <>
3 years ago
Rachit7194 05ff2ec7a3 Fix for read-only and unchanged attributes
This patch fixes the set_settings() in which if
any attribute is read-only and unchanged, it will be
considered as readonly attribute and not unchanged attribute.

Change-Id: I530f1c2f1b8d91f996b91fa0a5f0535ddcfa76e6
3 years ago
mpardhi23 c3bb9606aa Add the ability to manage RAID settings
This patch adds the ability to get and set the settings for RAID

Change-Id: Ifc63ca7d9a30378e75b160739b709a1264ffe550
3 years ago
Rachit7194 719a7d81f8 Added ``bus`` attribute to PhysicalDisks for NVMe drives
This patch adds `bus` attribute to PhysicalDisks so clients
can determine the PCI bus ID of NVMe drives.

Change-Id: I9b6b88826b9902a059e1bf537e51d9f97c9389ba
3 years ago
Rachit7194 01e7ca19ce Fix parsing for virtual disk RAIDStatus attribute
This patch changes the parsing of virtual disks so
that if the DCIM_VirutalDiskView.RAIDStatus attribute
is not present then DCIM_VirutalDiskView.RaidStatus
will be used instead.
This is needed due to the attribute being renamed in
LCC version 4.0.0

Change-Id: I4ca1b7f6df47ce808920b5e24ad0be6b76963917
3 years ago
Rachit7194 8394938d2f Fix for clear_foreign_config() unsupported on some controllers
iDRAC driver fails to clear foreign drives on some controllers
and returns  message_id ``STOR058`` which means controllers does
not support clear_foreign_config operation.

Change-Id: I7df2d30242e7a490dfdce04d7f6ce98c68e9f0ed
4 years ago
mpardhi23 ceef78a938 Take Lifecycle Controller out of recovery mode
This patch is to check if a node is in recovery mode and take it
out of recovery mode by setting LifecycleControllerState attribute
value to 'Enabled'.

Modified list_lifecycle_settings() method to use
utils.list_settings() for retrieving lifecycle settings.

Change-Id: I4287f317b2413b70cd00fd4cf8aa69bff6ae5e2f
4 years ago
mpardhi23 bcce3bdc6b Check LCStatus instead of MessageID to determine if an iDRAC is ready
We are currently checking the MessageID to determine if an iDRAC
is ready. This patch is to check the value of LCStatus instead of
MessageID. If the value of LCStatus is "0", then the iDRAC is
considered ready.

Change-Id: I3426c226c4bb3cdcc95b98e9b203f100bb6777d5
4 years ago
Zuul a34705b1bb Merge "Add realtime support to drive conversion" 4 years ago
Christopher Dearborn ff312640d8 Add realtime support to drive conversion
This patch updates change_physical_disk_state() so that it returns the
actual results of drive conversion on each controller.  This allows the
caller to use the returned information for realtime drive conversion.

This patch also deprecates returning the is_reboot_required and
commit_required_ids keys in the dictionary.

Change-Id: I10f4a44660e70f0cd8efd0ca9e8e96cb46751a61
4 years ago
mpardhi23 8eec25c00d clear_foreign_config() succeeds if no foreign disk
When clear_foreign_config() does not detect a foreign disk, instead
of failing and raising an exception, it succeeds and returns a value
which informs the caller nothing further needs to be done.

Change-Id: I4cea95659db11747b1c8708e1dbe7cac53c0eaf9
4 years ago
Christopher Dearborn caff41164f Consider a BOSS card a RAID controller
This fixes the is_raid_controller method so that it returns true
for a BOSS controller in addition to normal RAID controllers.

Change-Id: Iedd3179b8b2b6e3815709cc1acfd6a3059e42399
4 years ago
mpardhi23 6857a6d000 Implement ResetConfig and ClearForeignConfig functionality
For raid deletion, existing delete_virtual_disk functionality is not
freeing up foreign drives and spares, so have added ResetConfig and
ClearForeignConfig functionality for freeing up foreign drives and

Change-Id: I76390dc4fcf8de2fe5aa3d660f77edcef4a4dec1
4 years ago
Zuul 64ce3e2424 Merge "Filter unprintable ASCII during enumeration" 4 years ago
Christopher Dearborn 95440920fd Filter unprintable ASCII during enumeration
When enumerating DCIM_ControllerView, the DriverVersion field may have
unprintable ASCII characters in it if the server has a BOSS card. In
the past, it was observed that this field could contain unprintable
non-ASCII characters, but unprintable ASCII characters have been
found in it as well.

This fix changes the filtering so that only printable ASCII
characters and the tab character pass the filter.

Closes-Bug: 1816194
Change-Id: If7274fed19fb763aa7c2e4adc3676a4e3c26aee0
4 years ago
Christopher Dearborn e204c367ab Fix iDRAC reset
The current code waits for 3 consecutive failed pings, each 10 seconds
apart to determine that an iDRAC has gone down during an iDRAC reset.
This is too long for some servers, as the iDRAC may come back up before
the 3rd ping failure.  This results in a failure to detect the iDRAC
going down, which causes a timeout on the reset.

This patch changes the code to wait for only 2 consecutive ping
failures, which is what our highly tested downstream code does.

Closes-Bug: 1816195
Change-Id: Iac21d5eb722834089cbe4a2e7e19370a951951f0
4 years ago
Zuul 45569a427f Merge "Add a real-time option when commit RAID creation/deletion in python-dracclient." 4 years ago
digambar 9069b1e416 Add a real-time option when commit RAID creation/deletion
in python-dracclient.

Change-Id: I3ada0e51235941620c9f27796da9790a182fb0e4
4 years ago
Zuul 82480155bf Merge "Fixes problem in is_boss_controller function" 4 years ago
David Paterson 5ec4f3dc1f Fixes problem in is_boss_controller function
We need to make sure we check model name of controller
starts with "BOSS"

Change-Id: I0b8608bad4ffc1f6c5bcf5ae36d9c0c76478260b
4 years ago
Rachit7194 e177d47521 Remove deprecated commit_required parameter from python-dracclient
Change-Id: Ic37afe82d6b98433ee60142ed3ee429c48de727d
4 years ago
David Paterson bef7a0a8ce Add change_physical_disk_state function to client
Build a list of controllers which had disks converted
to or from RAID/JBOD and inidicate if a reboot is required.

The following steps allow the caller to retrieve a list of
controllers that have disks comverted to the specified
RAID status:
- Examine all disks in the system and filter out any that
are not attached to a RAID/BOSS controller.
- Inspect the controllers' disks to see if there are
disks that need to be converted. If a disk is already in
the desired status the disk is ignored, otherwise
it is converted. This function also handles failed or
unknown disk status appropriately and will raise exception(s)
where needed.
- Finally a dict is returned containing a list of controller
IDs for controllers whom had any of their disks converted,
and whether a reboot is required.

Typically the caller would then create a config job for the
list of controllers returned to finalize the RAID
configuration and reboot the node if necessary.

Change-Id: I5229f7699c9ca1d5b72a54b4ddcea6313b440836
Co-Authored-By: Christopher Dearborn <>
5 years ago
Zuul f823194b2e Merge "Adds ability to reset iDRAC" 5 years ago
Mark Beierl 88023841ef Adds ability to reset iDRAC
Adds new function to reset the iDRAC and wait for it
to become operational again.

Change-Id: Ia8dc0b97e02fc5f2c4d39b6b6d90456c1cfc5b7a
Co-Authored-By: Christopher Dearborn <>
5 years ago
digambar 1baaadf7f2 Add UUID to System object in python-dracclient
Change-Id: I322d07f425470c585db950ef27cd4b9364eff71c
5 years ago
uday344 3cb32a967a Removed deprecated disk,raid and job state
Change-Id: I63e7bc013386449db8cf50aec1d9e80fe9a2c570
5 years ago
Zuul 63e193a1c5 Merge "Fix CPU count returned by introspection in Ironic iDRAC driver" 5 years ago
jainprasuk1996 92e4ba4c2b Fix CPU count returned by introspection in Ironic iDRAC driver
Change-Id: Id8ff61f7f2fb2c24af64f38f6cf34e5b6d66182c
5 years ago
Mark Beierl 6599e7f814 Define constants for types of reboot job
Adds constants, instead of arbitrary strings, for specifying the type
of reboot job.

Change-Id: I4f404bdb158899b4d0f50f87a120a222f4bd5939
5 years ago
Christopher Dearborn 873a86e9c5 Increase default is ready retries
The current number of is ready retries does not work with DSS9000
hardware.  This change doubles the number of retries, which has proven
to work.

Change-Id: I5651acbb22be1cffb2a7f448db6a6975d27ad963
5 years ago
Zuul 01858e0d41 Merge "Add support for NIC configuration" 5 years ago
Zuul 589ee04c83 Merge "Added is_jbod_capable method to raid resource" 5 years ago
Zuul ee12ec65e7 Merge "Delete Job API" 5 years ago
digambar 0960fba23a Add ability to retrieve system properties
Change-Id: I7ae6efb913895c86aab838481b6025c8a17a42ee
5 years ago
Mark Beierl 96fa6965db Delete Job API
Adds the ability to delete jobs from the iDRAC job queue.

Change-Id: I0e34cc850b968533782af45ef6e61206a3f04949
Co-Authored-By: Richard G. Pioso <>
5 years ago
Zuul e68dacb1d6 Merge "Add ability to schedule jobs" 5 years ago
Mark Beierl 8836c0dedf Add support for NIC configuration
Adds APIs that support listing and setting NIC attributes
by name.

Change-Id: Ie836a3603b6bb49e3f296c10147d58ae745c3f6b
Co-Authored-By: Richard G. Pioso <>
5 years ago
Christopher Dearborn 0de8b41768 Filter out non-ASCII characters on invalid UTF8
When an enumerate is done, it is possible that the iDRAC may return
invalid UTF8 that contains non-ASCII characters.  This causes an
XMLSyntaxError to be thrown.  This fix detects that situation and
filters out all non-ASCII characters to bypass the error.

See the following bug for further details:

Closes-Bug: #1779412
Change-Id: I5003785dee922920dcdd95c8d7e2a26e0bf97a7d
5 years ago
Mark Beierl dcf4e2d280 Add ability to schedule jobs
Adds an optional start time to allow configuration changes
to be scheduled for a future time.

Co-Authored-By: Christopher Dearborn <>
Co-Authored-By: Richard G. Pioso <>
Change-Id: Ia1f02fd2f8a25efa8bb924bd9d50394cbf5d2034
5 years ago
David Paterson 1d203354a2 Added is_jbod_capable method to raid resource
Some RAID controllers support JBOD (passthrough) mode, while others do not.
This method determines if the passed RAID controller supports JBOD mode.
Note: that the controller must have at least one disk in the non-RAID or ready
state, or this method will be unable to determine if the RAID controller
supports JBOD mode, and an exception will be thrown.

Co-Authored-By: Christopher Dearborn <>
Change-Id: I62d8f92197faf6a6b4fe8a72da5c1a6a79d2af82
5 years ago