This patch adds the ability to get and set the settings for RAID
settings.
Change-Id: Ifc63ca7d9a30378e75b160739b709a1264ffe550
(cherry picked from commit c3bb9606aa)
This patch adds `bus` attribute to PhysicalDisks so clients
can determine the PCI bus ID of NVMe drives.
Change-Id: I9b6b88826b9902a059e1bf537e51d9f97c9389ba
(cherry picked from commit 719a7d81f8)
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
(cherry picked from commit 01e7ca19ce)
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
(cherry picked from commit 8394938d2f)
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
(cherry picked from commit ceef78a938)
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
(cherry picked from commit ff312640d8)
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
(cherry picked from commit 8eec25c00d)
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
(cherry picked from commit caff41164f)
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
spares.
Change-Id: I76390dc4fcf8de2fe5aa3d660f77edcef4a4dec1
(cherry picked from commit 6857a6d000)
We need to make sure we check model name of controller
starts with "BOSS"
Change-Id: I0b8608bad4ffc1f6c5bcf5ae36d9c0c76478260b
(cherry picked from commit 5ec4f3dc1f)
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 <Christopher.Dearborn@dell.com>
Adds new function to reset the iDRAC and wait for it
to become operational again.
Change-Id: Ia8dc0b97e02fc5f2c4d39b6b6d90456c1cfc5b7a
Co-Authored-By: Christopher Dearborn <christopher.dearborn@dell.com>
Adds the ability to delete jobs from the iDRAC job queue.
Change-Id: I0e34cc850b968533782af45ef6e61206a3f04949
Co-Authored-By: Richard G. Pioso <richard.pioso@dell.com>
Adds APIs that support listing and setting NIC attributes
by name.
Change-Id: Ie836a3603b6bb49e3f296c10147d58ae745c3f6b
Co-Authored-By: Richard G. Pioso <richard.pioso@dell.com>
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:
https://bugs.launchpad.net/python-dracclient/+bug/1779412
Closes-Bug: #1779412
Change-Id: I5003785dee922920dcdd95c8d7e2a26e0bf97a7d
Adds an optional start time to allow configuration changes
to be scheduled for a future time.
Co-Authored-By: Christopher Dearborn <christopher.dearborn@dell.com>
Co-Authored-By: Richard G. Pioso <richard.pioso@dell.com>
Change-Id: Ia1f02fd2f8a25efa8bb924bd9d50394cbf5d2034
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 <Christopher.Dearborn@dell.com>
Change-Id: I62d8f92197faf6a6b4fe8a72da5c1a6a79d2af82
The Dell BOSS card requires that 0 be passed for the RAID 1 size_gb for
the RAID creation to be successful. This change causes the code to
treat a size of 0 as valid so the BOSS RAID 1 can be created.
Change-Id: Id149f6250318e6162a168d002671faa2b3a7989b
Task: #22082
Story: #2002536
Co-Authored-By: Digambar Patil <digambarpat@gmail.com>
This patch separates indicators for reboot required and commit required.
It does this by adding two new keys (is_reboot_required and
is_commit_required) to the dictionary returned by set/create/modify
operations while continuing to return the commit_required key for
backwards compatibility.
The commit_required key should be considered deprecated at this time and
it will be removed in a future patch.
The is_reboot_required key has an enumerated value that can have three
possible values: true, optional, and false. This allows the return of
optional for RAID operations that can return this value.
Change-Id: I70e52868f10bfafb30bbb38b85888bc4ec8e65ae
Closes-Bug: 1732549
Some versions of firmware for at least 13G hardware can return a
failure return value and a message indicating success on certain
invoke calls. This patch modifies invoke so that it can be used to
execute the invoke command and return the result without raising an
exception if the return value indicates a failure. This allows the
caller to inspect the returned message to determine success or failure.
Change-Id: I85a1d234d17ae601ed984109c8aa668aaf86eae2
In the 14G iDRAC 9, "Reboot Failed" has been added as a terminal job
state. This patch updates the job filter query in list_jobs so that
jobs with a status of "Reboot Failed" will now be considered a finished
job.
Change-Id: Icffb22da37f99f8b24fcab405be196eace436785
Closes-Bug: #1707911
This change simplifies the internal calls to
dracclient.client.WSManClient.wait_until_idrac_is_ready() by no longer
passing arguments. That makes the code cleaner and easier to understand.
It contains no functional change.
The arguments no longer need to be passed, because that function's
default parameter values are now None, which means use the values that
were provided when the WSManClient object was created. The default
values provided at creation are equal to the arguments that were being
explicitly passed.
Change-Id: I70237bb9eda49a98c55a452b7f534a1e720696bb
Related-Bug: #1697558
A Dell technical white paper [0], "Lifecycle Controller Integration --
Best Practices Guide", describes how to determine the Lifecycle
Controller version. See section 31.4, "Check Version of Lifecycle
Controller (LC)". It simply enumerates the DCIM_SystemView class. No
filter query is used to limit the items returned. And notably, that use
case does not require the LC remote service to be in a "ready" state.
That use case is implemented by the
dracclient.resource.lifecycle_controller.LifecycleControllerManagement.get_version()
method. It has used a filter query and waited for the integrated Dell
Remote Access Controller (iDRAC) to be ready. To align it with best
practices, this patch eliminates its use of a filter query and wait for
the iDRAC.
[0]
http://en.community.dell.com/techcenter/extras/m/white_papers/20442332
Change-Id: I9a499522b59f18282fc9a57227570f54e46dfd3e
Closes-Bug: #1697558
Web Services Management (WS-Management and WS-Man) Enumerate operations
can fail or return invalid results when issued to an integrated Dell
Remote Access Controller (iDRAC) whose Lifecycle Controller remote
service is not "ready". The following are examples of failures which
have been observed:
+ The result of Enumerate is an error.
+ Enumerate succeeds, but no items are returned when they are known to
exist.
+ Enumerate succeeds, but items for all those known to exist are not
returned.
A Dell technical white paper [0], "Lifecycle Controller Integration --
Best Practices Guide", states that for Lifecycle Controller firmware
1.5.0 and later "The Lifecycle Controller remote service must be in a
'ready' state before running any other WSMAN commands." That applies to
almost all of the workflows and use cases documented by that paper and
supported by this project, openstack/python-dracclient.
This patch defines a new method in class dracclient.client.WSManClient,
enumerate(). It extends its base class's implementation by adding a new
parameter that indicates whether or not it should wait until the iDRAC
is ready to accept commands before issuing the Enumerate command. When
it is true, that method waits until the iDRAC is ready before issuing
the command. Since almost all Enumerate operations require the iDRAC to
be ready, the new parameter's default value is 'True'.
[0]
http://en.community.dell.com/techcenter/extras/m/white_papers/20442332
Change-Id: Ied659a4ee45b1dd55cd3a420301d866d52c838fb
Partial-Bug: #1697558
Related-Bug: #1691808
Web Services Management (WS-Management and WS-Man) Invoke operations can
fail when issued to an integrated Dell Remote Access Controller (iDRAC)
whose Lifecycle Controller remote service is not "ready".
A Dell technical white paper [0], "Lifecycle Controller Integration --
Best Practices Guide", states that for Lifecycle Controller firmware
1.5.0 and later "The Lifecycle Controller remote service must be in a
'ready' state before running any other WSMAN commands." That applies to
almost all of the workflows and use cases documented by that paper and
supported by this project, openstack/python-dracclient. A notable
exception is the dracclient.client.WSManClient.is_idrac_ready() method,
which is a chicken and egg situation.
This patch adds a new parameter to the
dracclient.client.WSManClient.invoke() method that indicates whether or
not it should wait until the iDRAC is ready to accept commands before
issuing the Invoke command. When it is true, that method waits until the
iDRAC is ready before issuing the command. Since almost all Invoke
operations require the iDRAC to be ready, the new parameter's default
value is 'True'.
[0]
http://en.community.dell.com/techcenter/extras/m/white_papers/20442332
Change-Id: Ib5b9fb2a954579be40f47304c70157ab1f00d39c
Partial-Bug: #1697558
Related-Bug: #1691808
Web Services Management (WS-Management and WS-Man) requests/commands can
fail or return invalid results when issued to an integrated Dell Remote
Access Controller (iDRAC) whose Lifecycle Controller remote service is
not "ready". Specifically, that applies to the WS-Man Enumerate and
Invoke operations.
A Dell technical white paper [0], "Lifecycle Controller Integration --
Best Practices Guide", states that for Lifecycle Controller firmware
1.5.0 and later "The Lifecycle Controller remote service must be in a
'ready' state before running any other WSMAN commands." That applies to
almost all of the workflows and use cases documented by that paper and
supported by this project, openstack/python-dracclient. That document
describes how to determine the readiness of the Lifecycle Controller
remote service.
This patch parameterizes the iDRAC is ready retry behavior at the class
level. That makes it possible for consumers of this project, such as
project openstack/ironic, to configure it library API-wide.
Additionally, this patch improves the names of the parameters to class
__init__() methods that control the retry behavior on SSL errors, so
that they are not confused with those added by this patch. Finally, it
defines constants for the default values of the retry behavior on SSL
errors and iDRAC is ready retry parameters, and utilizes those new
constants.
[0]
http://en.community.dell.com/techcenter/extras/m/white_papers/20442332
Change-Id: Ie866466a8ddf587a24c6d25ab903ec7b24022ffd
Partial-Bug: #1697558
Related-Bug: #1691272
Related-Bug: #1691808
Web Services Management (WS-Management and WS-Man) requests/commands can
fail or return invalid results when issued to an Integrated Dell Remote
Access Controller (iDRAC) whose Lifecycle Controller remote service is
not "ready". Specifically, that applies to the WS-Man Enumerate and
Invoke operations.
A Dell technical white paper [0], "Lifecycle Controller Integration --
Best Practices Guide", states that for Lifecycle Controller firmware
1.5.0 and later "The Lifecycle Controller remote service must be in a
'ready' state before running any other WSMAN commands." That applies to
almost all of the workflows and use cases documented by that paper and
supported by this project, openstack/python-dracclient. That document
describes how to determine the readiness of the Lifecycle Controller
remote service. A project commit [1] implements that.
This refactors that patch in preparation for changing the internal
implementation of the project's APIs so that they follow that best
practice. The implementation of is_idrac_ready() and
wait_until_idrac_is_ready() have been relocated further down the call
stack, to the iDRAC specialization of the WS-Man client defined by class
dracclient.client.WSManClient. Those methods continue to be available
through the API provided by class dracclient.client.Client.
No changes have been made to this project's APIs nor to any functional
behavior.
[0]
http://en.community.dell.com/techcenter/extras/m/white_papers/20442332
[1]
39253bb272
Change-Id: I87996bbca129995f6c84848ebdb0c33cfedeea53
Partial-Bug: #1697558
Related-Bug: #1691808
This patch adds retry logic to communication with the iDRAC so that
intermittent SSLErrors or ConnectionErrrors will not cause an immediate
failure of the operation.
Change-Id: Idc56e961699702eca734cba1da5e56cac0ad4832
Closes-Bug: 1691272