165 Commits

Author SHA1 Message Date
digambar
1baaadf7f2 Add UUID to System object in python-dracclient
Change-Id: I322d07f425470c585db950ef27cd4b9364eff71c
2018-09-27 05:09:41 -05:00
uday344
3cb32a967a Removed deprecated disk,raid and job state
Change-Id: I63e7bc013386449db8cf50aec1d9e80fe9a2c570
2018-09-11 13:04:12 -05:00
Zuul
63e193a1c5 Merge "Fix CPU count returned by introspection in Ironic iDRAC driver" 1.5.0 2018-09-06 17:17:56 +00:00
jainprasuk1996
92e4ba4c2b Fix CPU count returned by introspection in Ironic iDRAC driver
Change-Id: Id8ff61f7f2fb2c24af64f38f6cf34e5b6d66182c
2018-09-06 06:49:16 -05:00
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
2018-08-23 15:34:57 -04:00
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
2018-08-13 16:55:16 -04:00
Zuul
01858e0d41 Merge "Add support for NIC configuration" 2018-08-11 12:57:23 +00:00
Zuul
589ee04c83 Merge "Added is_jbod_capable method to raid resource" 2018-08-11 12:50:53 +00:00
Zuul
ee12ec65e7 Merge "Delete Job API" 2018-08-11 12:50:53 +00:00
digambar
0960fba23a Add ability to retrieve system properties
Change-Id: I7ae6efb913895c86aab838481b6025c8a17a42ee
2018-08-10 05:34:28 -05:00
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 <richard.pioso@dell.com>
2018-08-08 09:21:28 -04:00
Zuul
e68dacb1d6 Merge "Add ability to schedule jobs" 2018-08-01 19:54:27 +00:00
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 <richard.pioso@dell.com>
2018-07-27 15:48:07 -04:00
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:
https://bugs.launchpad.net/python-dracclient/+bug/1779412

Closes-Bug: #1779412
Change-Id: I5003785dee922920dcdd95c8d7e2a26e0bf97a7d
2018-07-09 17:40:52 -04:00
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 <christopher.dearborn@dell.com>
Co-Authored-By: Richard G. Pioso <richard.pioso@dell.com>
Change-Id: Ia1f02fd2f8a25efa8bb924bd9d50394cbf5d2034
2018-07-06 15:27:46 -04:00
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 <Christopher.Dearborn@dell.com>
Change-Id: I62d8f92197faf6a6b4fe8a72da5c1a6a79d2af82
2018-06-29 11:20:09 -04:00
Christopher Dearborn
413bfce123 Adds support for Dell BOSS card RAID1 creation
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>
2018-06-19 14:34:16 -04:00
wangqi
a300f85654 Update links in README
Change the links http to https

Change-Id: I95ef797f5711742b3808a53decad409496277971
1.4.0
2018-05-17 09:51:07 +00:00
Zuul
a8ef5bfb6a Merge "Added support for PCIe drives" 2018-03-26 17:38:20 +00:00
Christopher Dearborn
521240195e Added support for PCIe drives
This patch adds support for PCIe drives.

Change-Id: Ib0a2f0f71d98c9945c1333db2f06584088e4e385
2018-03-23 13:39:43 -04:00
Christopher Dearborn
9ff2b02058 Fixed indentation in utils.list_settings
Fixed the indentation in utils.list_settings.

Change-Id: I198bc028537f78228a4899afd788e786c95f0ee6
2018-02-19 13:38:58 -05:00
Zuul
7626bcc857 Merge "Add ability to set iDRAC card settings" 2018-02-19 12:03:36 +00:00
Zuul
f015a18f0e Merge "Refactor list_bios_settings and set_bios_settings" 2018-02-19 12:01:46 +00:00
Zuul
0c168ee6ec Merge "Separate reboot required from commit required" 2018-02-19 11:58:45 +00:00
Christopher Dearborn
b327b0811f Add ability to set iDRAC card settings
This patch adds the ability to set iDRAC card settings.

Change-Id: I117e5ed0af1469dc316a30abcfa384d3c773ed1f
2018-02-08 10:13:35 -05:00
Christopher Dearborn
3b916aa5e4 Fixed link to the docs
This patch corrects the link to the docs.

Change-Id: Id7ff45d0197a283246d08c1bb6c01cafda0a270d
2018-01-30 17:42:13 -05:00
Christopher Dearborn
ee0ca6f1f6 Refactor list_bios_settings and set_bios_settings
This patch factors the code in list_bios_settings and set_bios_settings
out into utility methods that can be used by other code that has the
same functionality.

Change-Id: I310fc0cb1c8372b1391d085078686e616890eb6f
2018-01-23 11:29:57 -05:00
Christopher Dearborn
72ea2323e5 Separate reboot required from commit required
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
2018-01-22 09:36:53 -05:00
Christopher Dearborn
aca79f0e8c Allow invoke without checking the return value
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
2018-01-11 16:00:38 -05:00
Jenkins
5e9b27ee97 Merge "Report bus in controllers" 2017-10-10 16:21:53 +00:00
Christopher Dearborn
a93954ba34 Report SAS address in physical disks
This patch adds sas_address to the attributes reported for physical
disks.

Change-Id: Ic7046ead0b42c048303fe0e601c5d3e28e8e4216
2017-09-29 15:36:18 -04:00
Christopher Dearborn
4977b154ce Report bus in controllers
This patch adds bus to the attributes reported for controllers.

Change-Id: Id1f444f33862520dfd82d1dc23bf21c2e4e2e386
2017-09-29 10:29:32 -04:00
Christopher Dearborn
8f368ed3e1 Increased is-iDRAC-ready timeout
The current is-iDRAC-ready timeout is set to 24 iterations times a
delay of 10 seconds, or 4 minutes.  This timeout is too short for 12G
and 13G hardware as operations against the iDRAC will frequently
timeout if the iDRAC is not in a ready state.

This patch increases the number of iterations to 48, which bumps the
timeout up to 8 minutes.  This increased timeout is sufficient for the
iDRAC on 14G, 13G, and 12G hardware to become ready and therefore avoid
a timeout exception.

Change-Id: I9dc476d3c28475919404077875f04fd006d4464a
Closes-Bug: 1718277
1.3.1
2017-09-19 16:23:48 -04:00
Christopher Dearborn
8e49089db3 Add "Reboot Failed" as terminal job state for 14G
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
2017-08-01 13:44:32 -04:00
Richard Pioso
bcfe996deb Simplify wait_until_idrac_is_ready() calls
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
1.3.0
2017-07-28 18:58:26 -04:00
Richard Pioso
38d863e489 Simplify get Lifecycle Controller version
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
2017-07-27 10:37:20 -04:00
Richard Pioso
3207d9e1bc Enumerate operations can wait until iDRAC is ready
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
2017-07-25 17:27:42 -04:00
Richard Pioso
deed7d7c1c Invoke operations can wait until iDRAC is ready
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
2017-07-25 17:27:39 -04:00
Richard Pioso
c75969dd8d Parameterize iDRAC is ready retries at class level
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
2017-07-24 19:29:15 -04:00
Jenkins
bb3313de14 Merge "Refactor iDRAC is ready functionality" 2017-07-13 18:56:35 +00:00
Richard Pioso
10df06f6c3 Refactor iDRAC is ready functionality
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
2017-07-10 20:55:17 -04:00
Anish Bhatt
c9e33ccd4c Fetch system attributes
Change-Id: I323366268e359afbe0c7556e88cc6da936af8362
2017-07-06 14:42:34 -07:00
Jenkins
00c9fe4fde Merge "Remove support for py34" 2017-07-03 14:39:45 +00:00
Jenkins
e7122263c4 Merge "Fix immediate failure on SSL errors" 2017-06-16 21:48:48 +00:00
Vu Cong Tuan
c9e0e2fca4 Remove support for py34
The gating on python 3.4 is restricted to <= Mitaka. This is due to
the change from Ubuntu Trusty to Xenial, where only python3.5 is
available. There is no need to continue to keep these settings.

Change-Id: I72dd71f8f68b7459593b520ea42e9a8af6aaefba
2017-06-07 10:35:13 +07:00
Christopher Dearborn
d6edaac2a1 Fix immediate failure on SSL errors
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
2017-06-06 16:57:33 -04:00
Christopher Dearborn
39253bb272 Added ability to determine if an iDRAC is ready
This patch adds the ability to determine if an iDRAC is ready to accept
commands.

Change-Id: I929deada3dda7b09a6f29033fff89d9b0382aef8
Partial-Bug: 1691808
1.2.0
2017-05-30 16:42:02 -04:00
Christopher Dearborn
f49efaa1bf Get/Set power state fails
It's possible for iDRACs to get into a state where the Name element is
not returned when querying DCIM_ComputerSystem.  This results in the
get_power_state command failing against nodes with iDRACs in this
state.

This patch removes selecting on the Name element from get_power_state.
This makes get_power_state work against both nodes with iDRACs in this
state and iDRACs not in this state.

Change-Id: Ide2d69b695376c777e5c4ee847dd0e481474a09f
Closes-Bug: #1667088
1.1.1
2017-02-22 15:35:24 -05:00
Jenkins
d349af3ce6 Merge "Fix typo in BIOS code" 1.1.0 2017-02-15 09:54:12 +00:00
Anish Bhatt
19fc4c56e6 Fix typo in BIOS code
Change-Id: I1ea7afdf142e0e51d5201bd4e0cb622d7514d840
2017-02-14 09:50:31 -08:00