diff --git a/.coveragerc b/.coveragerc index 26af733..d4ee344 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,7 +1,8 @@ [run] branch = True source = redfish -omit = redfish/tests/*,redfish/openstack/* + redfish-client +omit = redfish/tests/*,redfish-client/tests/* [report] -ignore-errors = True +#ignore-errors = True diff --git a/.gitignore b/.gitignore index 85c24ea..30fe283 100644 --- a/.gitignore +++ b/.gitignore @@ -22,12 +22,14 @@ var/ *.egg-info/ .installed.cfg *.egg +AUTHORS +ChangeLog # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest -*.spec +#*.spec # Installer logs pip-log.txt @@ -41,6 +43,8 @@ htmlcov/ .cache nosetests.xml coverage.xml +redfish-client/tests/Dockerfile +redfish-client/tests/python-redfish.src.tar.gz # Translations *.mo @@ -53,4 +57,21 @@ coverage.xml docs/_build/ # PyBuilder -target/ \ No newline at end of file +target/ + +# Project-Builder.org 0.14.1 +pbdelivery/ +pbbuild/ + +# ctags +tags + +# Pydev +.project +.pydevproject +.settings/ +.metadata + +# Vim +*~ +*.sw? diff --git a/.gitreview b/.gitreview index 57dbaaa..3e357ea 100644 --- a/.gitreview +++ b/.gitreview @@ -1,4 +1,4 @@ [gerrit] -host=review.openstack.org +host=review.opendev.org port=29418 -project=stackforge/python-redfish.git +project=x/python-redfish.git diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000..bca991b --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,7 @@ +--- +- project: + templates: + - openstack-python-jobs + - openstack-python35-jobs + - openstack-python36-jobs + - openstack-python37-jobs diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 9b46494..63fc059 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1,16 +1,8 @@ -If you would like to contribute to the development of OpenStack, -you must follow the steps in this page: +If you would like to contribute to the development of this project, please consider reading https://wiki.openstack.org/wiki/How_To_Contribute. - http://docs.openstack.org/infra/manual/developers.html +Submit your issues to https://bugs.launchpad.net/python-redfish/+filebug. -Once those steps have been completed, changes to OpenStack -should be submitted for review via the Gerrit tool, following -the workflow documented at: +In order to submit a patch, git clone the project at https://github.com/openstack/python-redfish.git +Make your modifications and then make a git review for it which will be followed on https://review.openstack.org/#/q/project:openstack/python-redfish - http://docs.openstack.org/infra/manual/developers.html#development-workflow - -Pull requests submitted through GitHub will be ignored. - -Bugs should be filed on Launchpad, not GitHub: - - https://bugs.launchpad.net/python-redfish +You can also share and discuss on the mailing list as well at http://mondorescue.org/sympa/arc/python-redfish. diff --git a/HACKING.rst b/HACKING.rst index 00d2577..2c79c8b 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -1,4 +1,4 @@ python-redfish Style Commandments -=============================================== +================================= -Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/ +Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ diff --git a/LICENSE b/LICENSE index e06d208..8f71f43 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/README.rst b/README.rst index 86a0128..9b3eddd 100644 --- a/README.rst +++ b/README.rst @@ -1,57 +1,79 @@ -python-redfish -============== +The python-redfish project +========================== -This repository will be used to house the Redfish python library, a reference +This repository will be used to house the python-redfish library, a reference implementation to enable Python developers to communicate with the Redfish API (http://www.dmtf.org/standards/redfish). NOTE:: - DRAFT - WORK IN PROGRESS + STATUS: Work in progress, ready for proof of concept. - The current Redfish specification revision is 1.0.0 - Note that the mockup - is still at version 0.99.0a and may not reflect what the standard provides - fully + The current Redfish specification revision is 1.0.0 - Note that the mockup + is still at version 0.99.0a and may not reflect what the standard provides + fully. And please check the version before you use it. +Documentation +------------- + +The full documentation is available at +http://pythonhosted.org/python-redfish/installation.html Project Structure -------------------- +----------------- This project follows the same convention as OpenStack projects, eg. using pbr for build and test automation:: - doc/ # documentation - doc/source # the doc source files live here - doc/build/html # output of building any docs will go here - examples/ # any sample code using this library, eg. for education + doc/ # Documentation + doc/source # The doc source files live here + doc/build/html # Output of building any docs will go here + dmtf # Reference documents and mockup provided by the DMTF + examples/ # Any sample code using this library, eg. for education # should be put here - redfish/ # the redfish library - redfish/tests/ # python unit test suite + pbconf # Project builder file to build rpm/deb packages for + # distributions + redfish/ # The redfish library itself + redfish/tests/ # python-redfish unit test suite + redfish-client # Client tool to manage redfish devices Requirements ------------ -To use the enclosed examples, you will need Python 2.7 +To use the enclosed examples, you will need Python 2.7 or Python 3.4 (https://www.python.org/downloads/). Note that Python 2.7.9 enforces greater -SSL verification requiring server certificates be installed. Parameters to +SSL verification requiring server certificates be installed. Parameters to relax the requirements are available in the library, but these configurations are discouraged due to security. -Python requirements are listed in requirements.txt; additional requirements for +Python requirements are listed in requirements.txt. Additional requirements for running the unit test suite are listed in test-requirements.txt. -Developer setup ---------------- +Note: Running tests requires Docker engine. + +Note: The program was tested with Python 2.7.10 and 3.4.2 however it might work +as well with all Python 3 releases. + +Get the source code +------------------- + +The source code is available on github and can be retrieved using:: -To initialize a local development environment (eg, so you can run unit tests) -you should run the following commands:: + git clone https://github.com/openstack/python-redfish.git +Installation +------------ + +Please refer to the following link. + +http://pythonhosted.org/python-redfish/installation.html + +Contacts +-------- + +Distribution list: python-redfish@mondorescue.org Further References ------------------ -The data model documentation can be found here: - http://www.redfishspecification.org/redfish-data-model-and-schema/ - -The overall protocol documentation can be found here: - http://www.redfishspecification.org/ +Please look at `dmtf/README.rst `_ file. diff --git a/TAGGING b/TAGGING new file mode 100644 index 0000000..ea04b5a --- /dev/null +++ b/TAGGING @@ -0,0 +1,4 @@ +In order to publish automatically a new version to pypi, there is a need to tag correctly the commit before review: + +git tag -asm "Official version x.y.z" x.y.z +git review diff --git a/dmtf/DSP0266_1.0.1.pdf b/dmtf/DSP0266_1.0.1.pdf new file mode 100644 index 0000000..dd4c488 Binary files /dev/null and b/dmtf/DSP0266_1.0.1.pdf differ diff --git a/dmtf/DSP0266_1.0.2.pdf b/dmtf/DSP0266_1.0.2.pdf new file mode 100644 index 0000000..0917ffd Binary files /dev/null and b/dmtf/DSP0266_1.0.2.pdf differ diff --git a/dmtf/DSP0266_1.0.3.pdf b/dmtf/DSP0266_1.0.3.pdf new file mode 100644 index 0000000..9e9e85a Binary files /dev/null and b/dmtf/DSP0266_1.0.3.pdf differ diff --git a/dmtf/DSP0266_1.0.4.pdf b/dmtf/DSP0266_1.0.4.pdf new file mode 100644 index 0000000..58a876d Binary files /dev/null and b/dmtf/DSP0266_1.0.4.pdf differ diff --git a/dmtf/DSP0266_1.0.5.pdf b/dmtf/DSP0266_1.0.5.pdf new file mode 100644 index 0000000..359f1a1 Binary files /dev/null and b/dmtf/DSP0266_1.0.5.pdf differ diff --git a/dmtf/DSP0266_1.1.0.pdf b/dmtf/DSP0266_1.1.0.pdf new file mode 100644 index 0000000..b219a8d Binary files /dev/null and b/dmtf/DSP0266_1.1.0.pdf differ diff --git a/dmtf/DSP0266_1.2.0.pdf b/dmtf/DSP0266_1.2.0.pdf new file mode 100644 index 0000000..e7a47b1 Binary files /dev/null and b/dmtf/DSP0266_1.2.0.pdf differ diff --git a/dmtf/DSP0266_1.2.1.pdf b/dmtf/DSP0266_1.2.1.pdf new file mode 100644 index 0000000..6fb2001 Binary files /dev/null and b/dmtf/DSP0266_1.2.1.pdf differ diff --git a/dmtf/DSP0266_1.3.0.pdf b/dmtf/DSP0266_1.3.0.pdf new file mode 100644 index 0000000..0c511c8 Binary files /dev/null and b/dmtf/DSP0266_1.3.0.pdf differ diff --git a/dmtf/DSP0266_1.4.0.pdf b/dmtf/DSP0266_1.4.0.pdf new file mode 100644 index 0000000..2c0a38d Binary files /dev/null and b/dmtf/DSP0266_1.4.0.pdf differ diff --git a/dmtf/DSP0266_1.4.1.pdf b/dmtf/DSP0266_1.4.1.pdf new file mode 100644 index 0000000..8adfb27 Binary files /dev/null and b/dmtf/DSP0266_1.4.1.pdf differ diff --git a/dmtf/DSP0266_1.5.0.pdf b/dmtf/DSP0266_1.5.0.pdf new file mode 100644 index 0000000..0d793d9 Binary files /dev/null and b/dmtf/DSP0266_1.5.0.pdf differ diff --git a/dmtf/DSP0266_1.5.1.pdf b/dmtf/DSP0266_1.5.1.pdf new file mode 100644 index 0000000..fb91686 Binary files /dev/null and b/dmtf/DSP0266_1.5.1.pdf differ diff --git a/dmtf/DSP0266_1.6.0.pdf b/dmtf/DSP0266_1.6.0.pdf new file mode 100644 index 0000000..78ca871 Binary files /dev/null and b/dmtf/DSP0266_1.6.0.pdf differ diff --git a/dmtf/DSP0266_1.6.1.pdf b/dmtf/DSP0266_1.6.1.pdf new file mode 100644 index 0000000..e1a7749 Binary files /dev/null and b/dmtf/DSP0266_1.6.1.pdf differ diff --git a/dmtf/DSP2043_1.0.0.zip b/dmtf/DSP2043_1.0.0.zip new file mode 100644 index 0000000..247ba36 Binary files /dev/null and b/dmtf/DSP2043_1.0.0.zip differ diff --git a/dmtf/DSP2043_1.1.0.zip b/dmtf/DSP2043_1.1.0.zip new file mode 100644 index 0000000..90b351b Binary files /dev/null and b/dmtf/DSP2043_1.1.0.zip differ diff --git a/dmtf/DSP2043_1.2.0.zip b/dmtf/DSP2043_1.2.0.zip new file mode 100644 index 0000000..986e01b Binary files /dev/null and b/dmtf/DSP2043_1.2.0.zip differ diff --git a/dmtf/DSP8010_2016.1a.zip b/dmtf/DSP8010_2016.1a.zip new file mode 100644 index 0000000..7288d41 Binary files /dev/null and b/dmtf/DSP8010_2016.1a.zip differ diff --git a/dmtf/DSP8010_2016.2.zip b/dmtf/DSP8010_2016.2.zip new file mode 100644 index 0000000..29be266 Binary files /dev/null and b/dmtf/DSP8010_2016.2.zip differ diff --git a/dmtf/DSP8010_2016.3.zip b/dmtf/DSP8010_2016.3.zip new file mode 100644 index 0000000..487cf6e Binary files /dev/null and b/dmtf/DSP8010_2016.3.zip differ diff --git a/dmtf/DSP8010_2017.1.zip b/dmtf/DSP8010_2017.1.zip new file mode 100644 index 0000000..cccd05d Binary files /dev/null and b/dmtf/DSP8010_2017.1.zip differ diff --git a/dmtf/DSP8010_2018.1.zip b/dmtf/DSP8010_2018.1.zip new file mode 100644 index 0000000..2da3131 Binary files /dev/null and b/dmtf/DSP8010_2018.1.zip differ diff --git a/dmtf/DSP8010_2018.2.zip b/dmtf/DSP8010_2018.2.zip new file mode 100644 index 0000000..bcf4903 Binary files /dev/null and b/dmtf/DSP8010_2018.2.zip differ diff --git a/dmtf/DSP8011_1.0.0a.json b/dmtf/DSP8011_1.0.0a.json new file mode 100644 index 0000000..426fd2e --- /dev/null +++ b/dmtf/DSP8011_1.0.0a.json @@ -0,0 +1,465 @@ +{ + "@Redfish.Copyright": "Copyright © 2014-2015 Distributed Management Task Force, Inc. (DMTF). All rights reserved.", + "@odata.type": "#MessageRegistry.1.0.0.MessageRegistry", + "Id": "Base.1.0.0", + "Name": "Base Message Registry", + "Language": "en", + "Description": "This registry defines the base messages for Redfish", + "RegistryPrefix": "Base", + "RegistryVersion": "1.0.0", + "OwningEntity": "DMTF", + "Messages": { + "Success": { + "Description": "Indicates that all conditions of a successful operation have been met.", + "Message": "Successfully Completed Request", + "Severity": "OK", + "NumberOfArgs": 0, + "Resolution": "None" + }, + "GeneralError": { + "Description": "Indicates that a general error has occurred.", + "Message": "A general error has occurred. See ExtendedInfo for more information.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "See ExtendedInfo for more information." + }, + "Created": { + "Description": "Indicates that all conditions of a successful creation operation have been met.", + "Message": "The resource has been created successfully", + "Severity": "OK", + "NumberOfArgs": 0, + "Resolution": "None" + }, + "PropertyDuplicate": { + "Description": "Indicates that a duplicate property was included in the request body.", + "Message": "The property %1 was duplicated in the request.", + "Severity": "Warning", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Remove the duplicate property from the request body and resubmit the request if the operation failed." + }, + "PropertyUnknown": { + "Description": "Indicates that an unknown property was included in the request body.", + "Message": "The property %1 is not in the list of valid properties for the resource.", + "Severity": "Warning", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Remove the unknown property from the request body and resubmit the request if the operation failed." + }, + "PropertyValueTypeError": { + "Description": "Indicates that a property was given the wrong value type, such as when a number is supplied for a property that requires a string.", + "Message": "The value %1 for the property %2 is of a different type than the property can accept.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed." + }, + "PropertyValueFormatError": { + "Description": "Indicates that a property was given the correct value type but the value of that property was not supported. This includes value size/length exceeded.", + "Message": "The value %1 for the property %2 is of a different format than the property can accept.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed." + }, + "PropertyValueNotInList": { + "Description": "Indicates that a property was given the correct value type but the value of that property was not supported. This values not in an enumeration", + "Message": "The value %1 for the property %2 is not in the list of acceptable values.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Choose a value from the enumeration list that the implementation can support and resubmit the request if the operation failed." + }, + "PropertyNotWritable": { + "Description": "Indicates that a property was given a value in the request body, but the property is a readonly property.", + "Message": "The property %1 is a read only property and cannot be assigned a value.", + "Severity": "Warning", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Remove the property from the request body and resubmit the request if the operation failed." + }, + "PropertyMissing": { + "Description": "Indicates that a required property was not supplied as part of the request.", + "Message": "The property %1 is a required property and must be included in the request.", + "Severity": "Warning", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Ensure that the property is in the request body and has a valid value and resubmit the request if the operation failed." + }, + "MalformedJSON": { + "Description": "Indicates that the request body was malformed JSON. Could be duplicate, syntax error,etc.", + "Message": "The request body submitted was malformed JSON and could not be parsed by the receiving service.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Ensure that the request body is valid JSON and resubmit the request." + }, + "ActionNotSupported": { + "Description": "Indicates that the action supplied with the POST operation is not supported by the resource.", + "Message": "The action %1 is not supported by the resource.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "The action supplied cannot be resubmitted to the implementation. Perhaps the action was invalid, the wrong resource was the target or the implementation documentation may be of assistance." + }, + "ActionParameterMissing": { + "Description": "Indicates that the action requested was missing a parameter that is required to process the action.", + "Message": "The action %1 requires the parameter %2 to be present in the request body.", + "Severity": "Critical", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Supply the action with the required parameter in the request body when the request is resubmitted." + }, + "ActionParameterDuplicate": { + "Description": "Indicates that the action was supplied with a duplicated parameter in the request body.", + "Message": "The action %1 was submitted with more than one value for the parameter %2.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Resubmit the action with only one instance of the parameter in the request body if the operation failed." + }, + "ActionParameterUnknown": { + "Description": "Indicates that an action was submitted but a parameter supplied did not match any of the known parameters.", + "Message": "The action %1 was submitted with with the invalid parameter %2.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Correct the invalid parameter and resubmit the request if the operation failed." + }, + "ActionParameterValueTypeError": { + "Description": "Indicates that a parameter was given the wrong value type, such as when a number is supplied for a parameter that requires a string.", + "Message": "The value %1 for the parameter %2 in the action %3 is of a different type than the parameter can accept.", + "Severity": "Warning", + "NumberOfArgs": 3, + "ParamTypes": [ + "string", + "string", + "string" + ], + "Resolution": "Correct the value for the parameter in the request body and resubmit the request if the operation failed." + }, + "ActionParameterValueFormatError": { + "Description": "Indicates that a parameter was given the correct value type but the value of that parameter was not supported. This includes value size/length exceeded.", + "Message": "The value %1 for the parameter %2 in the action %3 is of a different format than the parameter can accept.", + "Severity": "Warning", + "NumberOfArgs": 3, + "ParamTypes": [ + "string", + "string", + "string" + ], + "Resolution": "Correct the value for the parameter in the request body and resubmit the request if the operation failed." + }, + "ActionParameterNotSupported": { + "Description": "Indicates that the parameter supplied for the action is not supported on the resource.", + "Message": "The parameter %1 for the action %2 is not supported on the target resource.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Remove the parameter supplied and resubmit the request if the operation failed." + }, + "QueryParameterValueTypeError": { + "Description": "Indicates that a query parameter was given the wrong value type, such as when a number is supplied for a query parameter that requires a string.", + "Message": "The value %1 for the query parameter %2 is of a different type than the parameter can accept.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Correct the value for the query parameter in the request and resubmit the request if the operation failed." + }, + "QueryParameterValueFormatError": { + "Description": "Indicates that a query parameter was given the correct value type but the value of that parameter was not supported. This includes value size/length exceeded.", + "Message": "The value %1 for the parameter %2 is of a different format than the parameter can accept.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Correct the value for the query parameter in the request and resubmit the request if the operation failed." + }, + "QueryParameterOutOfRange": { + "Description": "Indicates that a query parameter was supplied that is out of range for the given resource. This can happen with values that are too low or beyond that possible for the supplied resource, such as when a page is requested that is beyond the last page.", + "Message": "The value %1 for the query parameter %2 is out of range %3.", + "Severity": "Warning", + "NumberOfArgs": 3, + "ParamTypes": [ + "string", + "string", + "string" + ], + "Resolution": "Reduce the value for the query parameter to a value that is within range, such as a start or count value that is within bounds of the number of resources in a collection or a page that is within the range of valid pages." + }, + "QueryNotSupportedOnResource": { + "Description": "Indicates that query is not supported on the given resource, such as when a start/count query is attempted on a resource that is not a collection.", + "Message": "Querying is not supported on the requested resource.", + "Severity": "Warning", + "NumberOfArgs": 0, + "Resolution": "Remove the query parameters and resubmit the request if the operation failed." + }, + "QueryNotSupported": { + "Description": "Indicates that query is not supported on the implementation.", + "Message": "Querying is not supported by the implementation.", + "Severity": "Warning", + "NumberOfArgs": 0, + "Resolution": "Remove the query parameters and resubmit the request if the operation failed." + }, + "SessionLimitExceeded": { + "Description": "Indicates that a session establishment has been requested but the operation failed due to the number of simultaneous sessions exceeding the limit of the implementation.", + "Message": "The session establishment failed due to the number of simultaneous sessions exceeding the limit of the implementation.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Reduce the number of other sessions before trying to establish the session or increase the limit of simultaneous sessions (if supported)." + }, + "EventSubscriptionLimitExceeded": { + "Description": "Indicates that a event subscription establishment has been requested but the operation failed due to the number of simultaneous connection exceeding the limit of the implementation.", + "Message": "The event subscription failed due to the number of simultaneous subscriptions exceeding the limit of the implementation.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Reduce the number of other subscriptions before trying to establish the event subscription or increase the limit of simultaneous subscriptions (if supported)." + }, + "ResourceCannotBeDeleted": { + "Description": "Indicates that a delete operation was attempted on a resource that cannot be deleted.", + "Message": "The delete request failed because the resource requested cannot be deleted.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Do not attempt to delete a non-deletable resource." + }, + "ResourceInUse": { + "Description": "Indicates that a change was requested to a resource but the change was rejected due to the resource being in use or transition.", + "Message": "The change to the requested resource failed because the resource is in use or in transition.", + "Severity": "Warning", + "NumberOfArgs": 0, + "Resolution": "Remove the condition and resubmit the request if the operation failed." + }, + "ResourceAlreadyExists": { + "Description": "Indicates that a resource change or creation was attempted but that the operation cannot proceed because the resource already exists.", + "Message": "The requested resource already exists.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Do not repeat the create operation as the resource has already been created." + }, + "CreateFailedMissingReqProperties": { + "Description": "Indicates that a create was attempted on a resource but that properties that are required for the create operation were missing from the request.", + "Message": "The create operation failed because the required property %1 was missing from the request.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Correct the body to include the required property with a valid value and resubmit the request if the operation failed." + }, + "CreateLimitReachedForResource": { + "Description": "Indicates that no more resources can be created on the resource as it has reached its create limit.", + "Message": "The create operation failed because the resource has reached the limit of possible resources.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Either delete resources and resubmit the request if the operation failed or do not resubmit the request." + }, + "ServiceShuttingDown": { + "Description": "Indicates that the operation failed as the service is shutting down, such as when the service reboots.", + "Message": "The operation failed because the service is shutting down and can no longer take incoming requests.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "When the service becomes available, resubmit the request if the operation failed." + }, + "ServiceInUnknownState": { + "Description": "Indicates that the operation failed because the service is in an unknown state and cannot accept additional requests.", + "Message": "The operation failed because the service is in an unknown state and can no longer take incoming requests.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Restart the service and resubmit the request if the operation failed." + }, + "NoValidSession": { + "Description": "Indicates that the operation failed because a valid session is required in order to access any resources.", + "Message": "There is no valid session established with the implementation.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Establish as session before attempting any operations." + }, + "InsufficientPrivilege": { + "Description": "Indicates that the credentials associated with the established session do not have sufficient privileges for the requested operation", + "Message": "There are insufficient privileges for the account or credentials associated with the current session to perform the requested operation.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Either abandon the operation or change the associated access rights and resubmit the request if the operation failed." + }, + "AccountModified": { + "Description": "Indicates that the account was successfully modified.", + "Message": "The account was successfully modifed.", + "Severity": "OK", + "NumberOfArgs": 0, + "Resolution": "No resolution is required." + }, + "AccountNotModified": { + "Description": "Indicates that the modification requested for the account was not successful.", + "Message": "The account modification request failed.", + "Severity": "Warning", + "NumberOfArgs": 0, + "Resolution": "The modification may have failed due to permission issues or issues with the request body." + }, + "AccountRemoved": { + "Description": "Indicates that the account was successfully removed.", + "Message": "The account was successfully removed.", + "Severity": "OK", + "NumberOfArgs": 0, + "Resolution": "No resolution is required." + }, + "AccountForSessionNoLongerExists": { + "Description": "Indicates that the account for the session has been removed, thus the session has been removed as well.", + "Message": "The account for the current session has been removed, thus the current session has been removed as well.", + "Severity": "OK", + "NumberOfArgs": 0, + "Resolution": "Attempt to connect with a valid account." + }, + "InvalidObject": { + "Description": "Indicates that the object in question is invalid according to the implementation. Examples include a firmware update malformed URI.", + "Message": "The object at %1 is invalid.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Either the object is malformed or the URI is not correct. Correct the condition and resubmit the request if it failed." + }, + "InternalError": { + "Description": "Indicates that the request failed for an unknown internal error but that the service is still operational.", + "Message": "The request failed due to an internal service error. The service is still operational.", + "Severity": "Critical", + "NumberOfArgs": 0, + "Resolution": "Resubmit the request. If the problem persists, consider resetting the service." + }, + "UnrecognizedRequestBody": { + "Description": "Indicates that the service encountered an unrecognizable request body that could not even be interpreted as malformed JSON.", + "Message": "The service detected a malformed request body that it was unable to interpret.", + "Severity": "Warning", + "NumberOfArgs": 0, + "Resolution": "Correct the request body and resubmit the request if it failed." + }, + "ResourceMissingAtURI": { + "Description": "Indicates that the operation expected an image or other resource at the provided URI but none was found. Examples of this are in requests that require URIs like Firmware Update.", + "Message": "The resource at the URI %1 was not found.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Place a valid resource at thr URI or correct the URI and resubmit the request." + }, + "ResourceAtUriInUnknownFormat": { + "Description": "Indicates that the URI was valid but the resource or image at that URI was in a format not supported by the service.", + "Message": "The resource at %1 is in a format not recognized by the service.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Place an image or resource or file that is recognized by the service at the URI." + }, + "ResourceAtUriUnauthorized": { + "Description": "Indicates that the attempt to access the resource/file/image at the URI was unauthorized.", + "Message": "While accessing the resource at %1, the service received an authorization error %2.", + "Severity": "Critical", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Ensure that the appropriate access is provided for the service in order for it to access the URI." + }, + "CouldNotEstablishConnection": { + "Description": "Indicates that the attempt to access the resource/file/image at the URI was unsuccessful because a session could not be established.", + "Message": "The service failed to establish a connection with the URI %1.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Ensure that the URI contains a valid and reachable node name, protocol information and other URI components." + }, + "SourceDoesNotSupportProtocol": { + "Description": "Indicates that while attempting to access, connect to or transfer a resource/file/image from another location that the other end of the connection did not support the protocol", + "Message": "The other end of the connection at %1 does not support the specified protocol %2.", + "Severity": "Critical", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "Change protocols or URIs. " + }, + "AccessDenied": { + "Description": "Indicates that while attempting to access, connect to or transfer to/from another resource, the service was denied access.", + "Message": "While attempting to establish a connection to %1, the service was denied access.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Attempt to ensure that the URI is correct and that the service has the appropriate credentials." + }, + "ServiceTemporarilyUnavailable": { + "Description": "Indicates the service is temporarily unavailable.", + "Message": "The service is temporarily unavailable. Retry in %1 seconds.", + "Severity": "Critical", + "NumberOfArgs": 1, + "ParamTypes": [ + "string" + ], + "Resolution": "Wait for the indicated retry duration and retry the operation." + }, + "InvalidIndex": { + "Description": "The Index is not valid.", + "Message": "The Index %1 is not a valid offset into the array.", + "Severity": "Warning", + "NumberOfArgs": 1, + "ParamTypes": [ + "number" + ], + "Resolution": "Verify the index value provided is within the bounds of the array." + }, + "PropertyValueModified": { + "Description": "Indicates that a property was given the correct value type but the value of that property was modified. Examples are truncated or rounded values.", + "Message": "The property %1 was assigned the value %2 due to modification by the service.", + "Severity": "Warning", + "NumberOfArgs": 2, + "ParamTypes": [ + "string", + "string" + ], + "Resolution": "No resolution is required." + } + } +} diff --git a/dmtf/DSP8011_2017.1.zip b/dmtf/DSP8011_2017.1.zip new file mode 100644 index 0000000..3c56f1c Binary files /dev/null and b/dmtf/DSP8011_2017.1.zip differ diff --git a/dmtf/README.rst b/dmtf/README.rst index 9bf58c9..9113bf9 100644 --- a/dmtf/README.rst +++ b/dmtf/README.rst @@ -1,13 +1,26 @@ DMTF Redfish specification -------------------------- -This directory contains the current references from the DMTF on the Redfish -specification (1.0.0 at the time of the writing) +This directory contains the current references from the DMTF on the Redfish +specification (1.0.1 at the time of the writing) -In order to ease test, the DMTF has published a mockup environment to simulate -a Redfish based system so it is possible to write programs without real Redfish +The overall protocol documentation can be found online at: + http://www.dmtf.org/standards/redfish + +The specification can be found locally in DSP0266_1.0.1.pdf or online at: + http://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.0.1.pdf + +The data model documentation can be found locally in DSP8010_1.0.0.zip or online at: + http://redfish.dmtf.org/schemas/ + + +In order to ease test, the DMTF has published a mockup environment to simulate +a Redfish based system so it is possible to write programs without real Redfish compliant hardware platform. +Note: Mockup release is still 0.99.0a and so not aligned with specification release +number. + Docker container ---------------- diff --git a/dmtf/buildImage.sh b/dmtf/buildImage.sh deleted file mode 100755 index 633b886..0000000 --- a/dmtf/buildImage.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -# Build and tag images -docker rmi redfish-simulator -docker build -t "redfish-simulator" . -docker tag -f redfish-simulator:latest localhost:5000/redfish-simulator diff --git a/dmtf/mockup_0.99.0a/DSP2043_0.99.0a.zip b/dmtf/mockup_0.99.0a/DSP2043_0.99.0a.zip new file mode 100644 index 0000000..6720855 Binary files /dev/null and b/dmtf/mockup_0.99.0a/DSP2043_0.99.0a.zip differ diff --git a/dmtf/Dockerfile b/dmtf/mockup_0.99.0a/Dockerfile similarity index 62% rename from dmtf/Dockerfile rename to dmtf/mockup_0.99.0a/Dockerfile index fa32aab..ead4803 100644 --- a/dmtf/Dockerfile +++ b/dmtf/mockup_0.99.0a/Dockerfile @@ -1,13 +1,14 @@ # Invoke with docker run -p 8000:80 # Then use by browsing http://localhost:8000 -FROM ubuntu:15.04 -MAINTAINER bruno.cornec@hp.com +FROM ubuntu:16.04 +MAINTAINER bruno.cornec@hpe.com ENV DEBIAN_FRONTEND noninterative # Install deps for Redfish mockup RUN apt-get update -RUN apt-get -y install apache2 unzip sed +RUN apt-get -y install apache2 unzip sed patch vim EXPOSE 80 COPY redfish-setup.sh /tmp/redfish-setup.sh COPY DSP2043_0.99.0a.zip /tmp/DSP2043_0.99.0a.zip -RUN chmod 755 /tmp/redfish-setup.sh +COPY fix_manager_ei.patch /tmp/fix_manager_ei.patch +RUN chmod 755 /tmp/redfish-setup.sh CMD /tmp/redfish-setup.sh diff --git a/dmtf/mockup_0.99.0a/buildImage.sh b/dmtf/mockup_0.99.0a/buildImage.sh new file mode 100755 index 0000000..7aed7bb --- /dev/null +++ b/dmtf/mockup_0.99.0a/buildImage.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Build and tag images +docker rmi redfish-simulator_0.99.0a +docker build -t "redfish-simulator_0.99.0a" . diff --git a/dmtf/mockup_0.99.0a/fix_manager_ei.patch b/dmtf/mockup_0.99.0a/fix_manager_ei.patch new file mode 100644 index 0000000..4ec3d34 --- /dev/null +++ b/dmtf/mockup_0.99.0a/fix_manager_ei.patch @@ -0,0 +1,11 @@ +--- /var/www/html/redfish/Managers/1/EthernetInterfaces/1/index.html 2016-05-28 13:09:32.028645250 +0000 ++++ /var/www/html/redfish/Managers/1/EthernetInterfaces/1/index.html.patched 2016-05-28 13:21:19.826186341 +0000 +@@ -67,7 +67,7 @@ + ] + }, + "@Redfish.Settings": { +- "@odata.type": "#Settings.1.0.0.Settings" ++ "@odata.type": "#Settings.1.0.0.Settings", + "SettingsObject": { + "@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1/SD" + }, diff --git a/dmtf/redfish-setup.sh b/dmtf/mockup_0.99.0a/redfish-setup.sh similarity index 78% rename from dmtf/redfish-setup.sh rename to dmtf/mockup_0.99.0a/redfish-setup.sh index 967be07..aa7f884 100644 --- a/dmtf/redfish-setup.sh +++ b/dmtf/mockup_0.99.0a/redfish-setup.sh @@ -1,6 +1,7 @@ #!/bin/bash function start_apache { + [ -f "/run/apache2/apache2.pid" ] && rm -f "/run/apache2/apache2.pid" echo "Launching apache2 in foreground with /usr/sbin/apache2ctl -DFOREGROUND -k start" /usr/sbin/apache2ctl -DFOREGROUND -k start } @@ -22,6 +23,9 @@ ln -sf DSP2043_0.99.0a redfish cd redfish ln -sf . v1 cd .. +# Patch simulator to fix incorrect json +cd / +patch -p0 < /tmp/fix_manager_ei.patch ip a #sed -i -e 's/Listen 80/Listen 8000/' /etc/apache2/ports.conf start_apache diff --git a/dmtf/mockup_0.99.0a/run-redfish-simulator.sh b/dmtf/mockup_0.99.0a/run-redfish-simulator.sh new file mode 100755 index 0000000..db1a33c --- /dev/null +++ b/dmtf/mockup_0.99.0a/run-redfish-simulator.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +docker ps -a | grep -q "redfish-simulator_0.99.0a" +if [ "$?" -eq 0 ]; then + docker rm -f "redfish-simulator_0.99.0a" +fi +# The -p option needs to be after the run command. No warning is given if before but doesn't work +docker run -d -p 8000:80 --name "redfish-simulator_0.99.0a" redfish-simulator_0.99.0a:latest +echo "Launch your browser and load http://localhost:8000/redfish/v1" diff --git a/dmtf/mockup_1.1.0/DSP2043_1.1.0.zip b/dmtf/mockup_1.1.0/DSP2043_1.1.0.zip new file mode 100644 index 0000000..90b351b Binary files /dev/null and b/dmtf/mockup_1.1.0/DSP2043_1.1.0.zip differ diff --git a/dmtf/mockup_1.1.0/Dockerfile b/dmtf/mockup_1.1.0/Dockerfile new file mode 100644 index 0000000..da02108 --- /dev/null +++ b/dmtf/mockup_1.1.0/Dockerfile @@ -0,0 +1,15 @@ +FROM httpd:2.4 +MAINTAINER bruno.cornec@hpe.com +ENV DEBIAN_FRONTEND noninterative +# Install deps for Redfish mockup +RUN apt-get update +RUN apt-get -y install unzip sed vim lsof curl +EXPOSE 8001 8002 8003 8004 8005 8006 +COPY redfish-setup.sh /tmp/redfish-setup.sh +COPY DSP2043_1.1.0.zip /usr/local/apache2/htdocs/DSP2043_1.1.0.zip +RUN chmod 755 /tmp/redfish-setup.sh +RUN cd /usr/local/apache2/htdocs && unzip DSP2043_1.1.0.zip +RUN chmod -R og+rx /usr/local/apache2/htdocs/DSP2043_1.1.0 +COPY httpd.conf /usr/local/apache2/conf/httpd.conf +COPY httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf +CMD /tmp/redfish-setup.sh diff --git a/dmtf/mockup_1.1.0/buildImage.sh b/dmtf/mockup_1.1.0/buildImage.sh new file mode 100755 index 0000000..04f39b9 --- /dev/null +++ b/dmtf/mockup_1.1.0/buildImage.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Build and tag images +docker rmi redfish-simulator_1.1.0 +docker build -t "redfish-simulator_1.1.0" . diff --git a/dmtf/mockup_1.1.0/httpd-vhosts.conf b/dmtf/mockup_1.1.0/httpd-vhosts.conf new file mode 100644 index 0000000..24741d2 --- /dev/null +++ b/dmtf/mockup_1.1.0/httpd-vhosts.conf @@ -0,0 +1,86 @@ +# Virtual Hosts +# +# Required modules: mod_log_config + +# If you want to maintain multiple domains/hostnames on your +# machine you can setup VirtualHost containers for them. Most configurations +# use only name-based virtual hosts so the server doesn't need to worry about +# IP addresses. This is indicated by the asterisks in the directives below. +# +# Please see the documentation at +# +# for further details before you try to setup virtual hosts. +# +# You may use the command line option '-S' to verify your virtual host +# configuration. + +# +# VirtualHost example: +# Almost any Apache directive may go into a VirtualHost container. +# The first VirtualHost section is used for all requests that do not +# match a ServerName or ServerAlias in any block. +# + + DocumentRoot "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-bladed" + Alias "/redfish/v1" "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-bladed" + + Require all granted + + Options Indexes FollowSymLinks + ErrorLog "logs/8001-error_log" + CustomLog "logs/8001-access_log" common + + + + DocumentRoot "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-catfish" + Alias "/redfish/v1" "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-catfish" + + Require all granted + + Options Indexes FollowSymLinks + ErrorLog "logs/8002-error_log" + CustomLog "logs/8002-access_log" common + + + + DocumentRoot "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-localstorage" + Alias "/redfish/v1" "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-localstorage" + + Require all granted + + Options Indexes FollowSymLinks + ErrorLog "logs/8003-error_log" + CustomLog "logs/8003-access_log" common + + + + DocumentRoot "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-rackmount1" + Alias "/redfish/v1" "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-rackmount1" + + Require all granted + + Options Indexes FollowSymLinks + ErrorLog "logs/8004-error_log" + CustomLog "logs/8004-access_log" common + + + + DocumentRoot "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-sasfabric" + Alias "/redfish/v1" "/usr/local/apache2/htdocs/DSP2043_1.1.0/public-sasfabric" + + Require all granted + + Options Indexes FollowSymLinks + ErrorLog "logs/8005-error_log" + CustomLog "logs/8005-access_log" common + + + + DocumentRoot "/usr/local/apache2/htdocs/DSP2043_1.1.0" + + Require all granted + + Options Indexes FollowSymLinks + ErrorLog "logs/8006-error_log" + CustomLog "logs/8006-access_log" common + diff --git a/dmtf/mockup_1.1.0/httpd.conf b/dmtf/mockup_1.1.0/httpd.conf new file mode 100644 index 0000000..5700bdf --- /dev/null +++ b/dmtf/mockup_1.1.0/httpd.conf @@ -0,0 +1,550 @@ +# +# This is the main Apache HTTP server configuration file. It contains the +# configuration directives that give the server its instructions. +# See for detailed information. +# In particular, see +# +# for a discussion of each configuration directive. +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# +# Configuration and logfile names: If the filenames you specify for many +# of the server's control files begin with "/" (or "drive:/" for Win32), the +# server will use that explicit path. If the filenames do *not* begin +# with "/", the value of ServerRoot is prepended -- so "logs/access_log" +# with ServerRoot set to "/usr/local/apache2" will be interpreted by the +# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" +# will be interpreted as '/logs/access_log'. + +# +# ServerRoot: The top of the directory tree under which the server's +# configuration, error, and log files are kept. +# +# Do not add a slash at the end of the directory path. If you point +# ServerRoot at a non-local disk, be sure to specify a local disk on the +# Mutex directive, if file-based mutexes are used. If you wish to share the +# same ServerRoot for multiple httpd daemons, you will need to change at +# least PidFile. +# +ServerRoot "/usr/local/apache2" + +# +# Mutex: Allows you to set the mutex mechanism and mutex file directory +# for individual mutexes, or change the global defaults +# +# Uncomment and change the directory if mutexes are file-based and the default +# mutex file directory is not on a local disk or is not appropriate for some +# other reason. +# +# Mutex default:logs + +# +# Listen: Allows you to bind Apache to specific IP addresses and/or +# ports, instead of the default. See also the +# directive. +# +# Change this to Listen on specific IP addresses as shown below to +# prevent Apache from glomming onto all bound IP addresses. +# +#Listen 12.34.56.78:80 +Listen 8001 +Listen 8002 +Listen 8003 +Listen 8004 +Listen 8005 +Listen 8006 +# +# Dynamic Shared Object (DSO) Support +# +# To be able to use the functionality of a module which was built as a DSO you +# have to place corresponding `LoadModule' lines at this location so the +# directives contained in it are actually available _before_ they are used. +# Statically compiled modules (those listed by `httpd -l') do not need +# to be loaded here. +# +# Example: +# LoadModule foo_module modules/mod_foo.so +# +LoadModule authn_file_module modules/mod_authn_file.so +#LoadModule authn_dbm_module modules/mod_authn_dbm.so +#LoadModule authn_anon_module modules/mod_authn_anon.so +#LoadModule authn_dbd_module modules/mod_authn_dbd.so +#LoadModule authn_socache_module modules/mod_authn_socache.so +LoadModule authn_core_module modules/mod_authn_core.so +LoadModule authz_host_module modules/mod_authz_host.so +LoadModule authz_groupfile_module modules/mod_authz_groupfile.so +LoadModule authz_user_module modules/mod_authz_user.so +#LoadModule authz_dbm_module modules/mod_authz_dbm.so +#LoadModule authz_owner_module modules/mod_authz_owner.so +#LoadModule authz_dbd_module modules/mod_authz_dbd.so +LoadModule authz_core_module modules/mod_authz_core.so +#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so +#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so +LoadModule access_compat_module modules/mod_access_compat.so +LoadModule auth_basic_module modules/mod_auth_basic.so +#LoadModule auth_form_module modules/mod_auth_form.so +#LoadModule auth_digest_module modules/mod_auth_digest.so +#LoadModule allowmethods_module modules/mod_allowmethods.so +#LoadModule isapi_module modules/mod_isapi.so +#LoadModule file_cache_module modules/mod_file_cache.so +#LoadModule cache_module modules/mod_cache.so +#LoadModule cache_disk_module modules/mod_cache_disk.so +#LoadModule cache_socache_module modules/mod_cache_socache.so +#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so +#LoadModule socache_dbm_module modules/mod_socache_dbm.so +#LoadModule socache_memcache_module modules/mod_socache_memcache.so +#LoadModule watchdog_module modules/mod_watchdog.so +#LoadModule macro_module modules/mod_macro.so +#LoadModule dbd_module modules/mod_dbd.so +#LoadModule bucketeer_module modules/mod_bucketeer.so +#LoadModule dumpio_module modules/mod_dumpio.so +#LoadModule echo_module modules/mod_echo.so +#LoadModule example_hooks_module modules/mod_example_hooks.so +#LoadModule case_filter_module modules/mod_case_filter.so +#LoadModule case_filter_in_module modules/mod_case_filter_in.so +#LoadModule example_ipc_module modules/mod_example_ipc.so +#LoadModule buffer_module modules/mod_buffer.so +#LoadModule data_module modules/mod_data.so +#LoadModule ratelimit_module modules/mod_ratelimit.so +LoadModule reqtimeout_module modules/mod_reqtimeout.so +#LoadModule ext_filter_module modules/mod_ext_filter.so +#LoadModule request_module modules/mod_request.so +#LoadModule include_module modules/mod_include.so +LoadModule filter_module modules/mod_filter.so +#LoadModule reflector_module modules/mod_reflector.so +#LoadModule substitute_module modules/mod_substitute.so +#LoadModule sed_module modules/mod_sed.so +#LoadModule charset_lite_module modules/mod_charset_lite.so +#LoadModule deflate_module modules/mod_deflate.so +#LoadModule xml2enc_module modules/mod_xml2enc.so +#LoadModule proxy_html_module modules/mod_proxy_html.so +LoadModule mime_module modules/mod_mime.so +#LoadModule ldap_module modules/mod_ldap.so +LoadModule log_config_module modules/mod_log_config.so +#LoadModule log_debug_module modules/mod_log_debug.so +#LoadModule log_forensic_module modules/mod_log_forensic.so +#LoadModule logio_module modules/mod_logio.so +#LoadModule lua_module modules/mod_lua.so +LoadModule env_module modules/mod_env.so +#LoadModule mime_magic_module modules/mod_mime_magic.so +#LoadModule cern_meta_module modules/mod_cern_meta.so +#LoadModule expires_module modules/mod_expires.so +LoadModule headers_module modules/mod_headers.so +#LoadModule ident_module modules/mod_ident.so +#LoadModule usertrack_module modules/mod_usertrack.so +#LoadModule unique_id_module modules/mod_unique_id.so +LoadModule setenvif_module modules/mod_setenvif.so +LoadModule version_module modules/mod_version.so +#LoadModule remoteip_module modules/mod_remoteip.so +#LoadModule proxy_module modules/mod_proxy.so +#LoadModule proxy_connect_module modules/mod_proxy_connect.so +#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so +#LoadModule proxy_http_module modules/mod_proxy_http.so +#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so +#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so +#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so +#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so +#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so +#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so +#LoadModule proxy_express_module modules/mod_proxy_express.so +#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so +#LoadModule session_module modules/mod_session.so +#LoadModule session_cookie_module modules/mod_session_cookie.so +#LoadModule session_crypto_module modules/mod_session_crypto.so +#LoadModule session_dbd_module modules/mod_session_dbd.so +#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so +#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so +#LoadModule ssl_module modules/mod_ssl.so +#LoadModule optional_hook_export_module modules/mod_optional_hook_export.so +#LoadModule optional_hook_import_module modules/mod_optional_hook_import.so +#LoadModule optional_fn_import_module modules/mod_optional_fn_import.so +#LoadModule optional_fn_export_module modules/mod_optional_fn_export.so +#LoadModule dialup_module modules/mod_dialup.so +#LoadModule http2_module modules/mod_http2.so +#LoadModule proxy_http2_module modules/mod_proxy_http2.so +#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so +#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so +#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so +#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so +LoadModule unixd_module modules/mod_unixd.so +#LoadModule heartbeat_module modules/mod_heartbeat.so +#LoadModule heartmonitor_module modules/mod_heartmonitor.so +#LoadModule dav_module modules/mod_dav.so +LoadModule status_module modules/mod_status.so +LoadModule autoindex_module modules/mod_autoindex.so +#LoadModule asis_module modules/mod_asis.so +#LoadModule info_module modules/mod_info.so +#LoadModule suexec_module modules/mod_suexec.so + + #LoadModule cgid_module modules/mod_cgid.so + + + #LoadModule cgi_module modules/mod_cgi.so + +#LoadModule dav_fs_module modules/mod_dav_fs.so +#LoadModule dav_lock_module modules/mod_dav_lock.so +LoadModule vhost_alias_module modules/mod_vhost_alias.so +#LoadModule negotiation_module modules/mod_negotiation.so +LoadModule dir_module modules/mod_dir.so +#LoadModule imagemap_module modules/mod_imagemap.so +#LoadModule actions_module modules/mod_actions.so +#LoadModule speling_module modules/mod_speling.so +#LoadModule userdir_module modules/mod_userdir.so +LoadModule alias_module modules/mod_alias.so +#LoadModule rewrite_module modules/mod_rewrite.so +LoadModule mpm_event_module modules/mod_mpm_event.so +#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so +#LoadModule mpm_worker_module modules/mod_mpm_worker.so + + +# +# If you wish httpd to run as a different user or group, you must run +# httpd as root initially and it will switch. +# +# User/Group: The name (or #number) of the user/group to run httpd as. +# It is usually good practice to create a dedicated user and group for +# running httpd, as with most system services. +# +User daemon +Group daemon + + + +# 'Main' server configuration +# +# The directives in this section set up the values used by the 'main' +# server, which responds to any requests that aren't handled by a +# definition. These values also provide defaults for +# any containers you may define later in the file. +# +# All of these directives may appear inside containers, +# in which case these default settings will be overridden for the +# virtual host being defined. +# + +# +# ServerAdmin: Your address, where problems with the server should be +# e-mailed. This address appears on some server-generated pages, such +# as error documents. e.g. admin@your-domain.com +# +ServerAdmin you@example.com + +# +# ServerName gives the name and port that the server uses to identify itself. +# This can often be determined automatically, but we recommend you specify +# it explicitly to prevent problems during startup. +# +# If your host doesn't have a registered DNS name, enter its IP address here. +# +#ServerName www.example.com:80 + +# +# Deny access to the entirety of your server's filesystem. You must +# explicitly permit access to web content directories in other +# blocks below. +# + + AllowOverride none + Require all denied + + +# +# Note that from this point forward you must specifically allow +# particular features to be enabled - so if something's not working as +# you might expect, make sure that you have specifically enabled it +# below. +# + +# +# DocumentRoot: The directory out of which you will serve your +# documents. By default, all requests are taken from this directory, but +# symbolic links and aliases may be used to point to other locations. +# +#DocumentRoot "/usr/local/apache2/htdocs" +# +# # +# # Possible values for the Options directive are "None", "All", +# # or any combination of: +# # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews +# # +# # Note that "MultiViews" must be named *explicitly* --- "Options All" +# # doesn't give it to you. +# # +# # The Options directive is both complicated and important. Please see +# # http://httpd.apache.org/docs/2.4/mod/core.html#options +# # for more information. +# # +# Options Indexes FollowSymLinks +# +# # +# # AllowOverride controls what directives may be placed in .htaccess files. +# # It can be "All", "None", or any combination of the keywords: +# # AllowOverride FileInfo AuthConfig Limit +# # +# AllowOverride None +# +# # +# # Controls who can get stuff from this server. +# # +# Require all granted +# + +# +# DirectoryIndex: sets the file that Apache will serve if a directory +# is requested. +# + + DirectoryIndex index.html index.json + + +# +# The following lines prevent .htaccess and .htpasswd files from being +# viewed by Web clients. +# + + Require all denied + + +# +# ErrorLog: The location of the error log file. +# If you do not specify an ErrorLog directive within a +# container, error messages relating to that virtual host will be +# logged here. If you *do* define an error logfile for a +# container, that host's errors will be logged there and not here. +# +ErrorLog /proc/self/fd/2 + +# +# LogLevel: Control the number of messages logged to the error_log. +# Possible values include: debug, info, notice, warn, error, crit, +# alert, emerg. +# +LogLevel warn + + + # + # The following directives define some format nicknames for use with + # a CustomLog directive (see below). + # + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined + LogFormat "%h %l %u %t \"%r\" %>s %b" common + + + # You need to enable mod_logio.c to use %I and %O + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio + + + # + # The location and format of the access logfile (Common Logfile Format). + # If you do not define any access logfiles within a + # container, they will be logged here. Contrariwise, if you *do* + # define per- access logfiles, transactions will be + # logged therein and *not* in this file. + # + CustomLog /proc/self/fd/1 common + + # + # If you prefer a logfile with access, agent, and referer information + # (Combined Logfile Format) you can use the following directive. + # + #CustomLog "logs/access_log" combined + + + + # + # Redirect: Allows you to tell clients about documents that used to + # exist in your server's namespace, but do not anymore. The client + # will make a new request for the document at its new location. + # Example: + # Redirect permanent /foo http://www.example.com/bar + + # + # Alias: Maps web paths into filesystem paths and is used to + # access content that does not live under the DocumentRoot. + # Example: + # Alias /webpath /full/filesystem/path + # + # If you include a trailing / on /webpath then the server will + # require it to be present in the URL. You will also likely + # need to provide a section to allow access to + # the filesystem path. + + # + # ScriptAlias: This controls which directories contain server scripts. + # ScriptAliases are essentially the same as Aliases, except that + # documents in the target directory are treated as applications and + # run by the server when requested rather than as documents sent to the + # client. The same rules about trailing "/" apply to ScriptAlias + # directives as to Alias. + # + ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" + + + + + # + # ScriptSock: On threaded servers, designate the path to the UNIX + # socket used to communicate with the CGI daemon of mod_cgid. + # + #Scriptsock cgisock + + +# +# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased +# CGI directory exists, if you have that configured. +# + + AllowOverride None + Options None + Require all granted + + + + # + # Avoid passing HTTP_PROXY environment to CGI's on this or any proxied + # backend servers which have lingering "httpoxy" defects. + # 'Proxy' request header is undefined by the IETF, not listed by IANA + # + RequestHeader unset Proxy early + + + + # + # TypesConfig points to the file containing the list of mappings from + # filename extension to MIME-type. + # + TypesConfig conf/mime.types + + # + # AddType allows you to add to or override the MIME configuration + # file specified in TypesConfig for specific file types. + # + #AddType application/x-gzip .tgz + # + # AddEncoding allows you to have certain browsers uncompress + # information on the fly. Note: Not all browsers support this. + # + #AddEncoding x-compress .Z + #AddEncoding x-gzip .gz .tgz + # + # If the AddEncoding directives above are commented-out, then you + # probably should define those extensions to indicate media types: + # + AddType application/x-compress .Z + AddType application/x-gzip .gz .tgz + + # + # AddHandler allows you to map certain file extensions to "handlers": + # actions unrelated to filetype. These can be either built into the server + # or added with the Action directive (see below) + # + # To use CGI scripts outside of ScriptAliased directories: + # (You will also need to add "ExecCGI" to the "Options" directive.) + # + #AddHandler cgi-script .cgi + + # For type maps (negotiated resources): + #AddHandler type-map var + + # + # Filters allow you to process content before it is sent to the client. + # + # To parse .shtml files for server-side includes (SSI): + # (You will also need to add "Includes" to the "Options" directive.) + # + #AddType text/html .shtml + #AddOutputFilter INCLUDES .shtml + + +# +# The mod_mime_magic module allows the server to use various hints from the +# contents of the file itself to determine its type. The MIMEMagicFile +# directive tells the module where the hint definitions are located. +# +#MIMEMagicFile conf/magic + +# +# Customizable error responses come in three flavors: +# 1) plain text 2) local redirects 3) external redirects +# +# Some examples: +#ErrorDocument 500 "The server made a boo boo." +#ErrorDocument 404 /missing.html +#ErrorDocument 404 "/cgi-bin/missing_handler.pl" +#ErrorDocument 402 http://www.example.com/subscription_info.html +# + +# +# MaxRanges: Maximum number of Ranges in a request before +# returning the entire resource, or one of the special +# values 'default', 'none' or 'unlimited'. +# Default setting is to accept 200 Ranges. +#MaxRanges unlimited + +# +# EnableMMAP and EnableSendfile: On systems that support it, +# memory-mapping or the sendfile syscall may be used to deliver +# files. This usually improves server performance, but must +# be turned off when serving from networked-mounted +# filesystems or if support for these functions is otherwise +# broken on your system. +# Defaults: EnableMMAP On, EnableSendfile Off +# +#EnableMMAP off +#EnableSendfile on + +# Supplemental configuration +# +# The configuration files in the conf/extra/ directory can be +# included to add extra features or to modify the default configuration of +# the server, or you may simply copy their contents here and change as +# necessary. + +# Server-pool management (MPM specific) +#Include conf/extra/httpd-mpm.conf + +# Multi-language error messages +#Include conf/extra/httpd-multilang-errordoc.conf + +# Fancy directory listings +#Include conf/extra/httpd-autoindex.conf + +# Language settings +#Include conf/extra/httpd-languages.conf + +# User home directories +#Include conf/extra/httpd-userdir.conf + +# Real-time info on requests and configuration +#Include conf/extra/httpd-info.conf + +# Virtual hosts +Include conf/extra/httpd-vhosts.conf + +# Local access to the Apache HTTP Server Manual +#Include conf/extra/httpd-manual.conf + +# Distributed authoring and versioning (WebDAV) +#Include conf/extra/httpd-dav.conf + +# Various default settings +#Include conf/extra/httpd-default.conf + +# Configure mod_proxy_html to understand HTML4/XHTML1 + +Include conf/extra/proxy-html.conf + + +# Secure (SSL/TLS) connections +#Include conf/extra/httpd-ssl.conf +# +# Note: The following must must be present to support +# starting without SSL on platforms with no /dev/random equivalent +# but a statically compiled-in mod_ssl. +# + +SSLRandomSeed startup builtin +SSLRandomSeed connect builtin + diff --git a/dmtf/mockup_1.1.0/redfish-setup.sh b/dmtf/mockup_1.1.0/redfish-setup.sh new file mode 100644 index 0000000..f7fa5ac --- /dev/null +++ b/dmtf/mockup_1.1.0/redfish-setup.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +function start_apache { + [ -f "/usr/local/apache2/logs/httpd.pid" ] && rm -f "/usr/local/apache2/logs/httpd.pid" + echo "Launching apache2 in foreground with /usr/local/apache2/bin/apachectl -DFOREGROUND -k start" + /usr/local/apache2/bin/apachectl -DFOREGROUND -k start +} + +function stop_apache { + echo "Stopping apache2" + /usr/local/apache2/bin/apachectl stop +} + +# Trap to have a clean exit +trap stop_apache HUP INT QUIT KILL TERM + + +# Main +start_apache diff --git a/dmtf/mockup_1.1.0/run-redfish-simulator.sh b/dmtf/mockup_1.1.0/run-redfish-simulator.sh new file mode 100755 index 0000000..8225beb --- /dev/null +++ b/dmtf/mockup_1.1.0/run-redfish-simulator.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +docker ps -a | grep -q "redfish-simulator_1.1.0" +if [ "$?" -eq 0 ]; then + docker rm -f "redfish-simulator_1.1.0" +fi +# The -p option needs to be after the run command. No warning is given if before but doesn't work +docker run -d -p 8001:8001 -p 8002:8002 -p 8003:8003 -p 8004:8004 -p 8005:8005 -p 8006:8006 --name "redfish-simulator_1.1.0" redfish-simulator_1.1.0:latest +echo "Launch your browser and load http://localhost:8001/ to access public-bladed profile" +echo "Launch your browser and load http://localhost:8002/ to access public-catfish profile" +echo "Launch your browser and load http://localhost:8003/ to access public-localstorage profile" +echo "Launch your browser and load http://localhost:8004/ to access public-rackmount1 profile" +echo "Launch your browser and load http://localhost:8005/ to access public-sasfabric profile" +echo "Launch your browser and load http://localhost:8006/ to access documentation and all files" diff --git a/dmtf/moonshot_data_model_reference.html b/dmtf/moonshot_data_model_reference.html new file mode 100644 index 0000000..71f6a0f --- /dev/null +++ b/dmtf/moonshot_data_model_reference.html @@ -0,0 +1,29185 @@ + + + + + RESTful API Data Model Reference for Moonshot iLO Chassis Manager + + + +

RESTful API Data Model Reference For Moonshot Chassis Manager

+

Abstract

+

This document is a reference to the types, properties, and attributes in the RESTFul API for Moonshot Chassis Manager 1.51.

+ + + + + + + + + + + + +
+

HPE Part Number: 802725-003

+
+

Published: July 2016

+
+

+ Edition: 1

+
+ +

+ Copyright and Acknowledgements

+

+ © Copyright 2016 Hewlett Packard Enterprise Development LP

+

+ Confidential +computer software. Valid license from Hewlett Packard Enterprise required +for possession, use, +or copying. Consistent with FAR 12.211 and 12.212, +Commercial Computer Software, Computer Software Documentation, +and + Technical Data for Commercial Items are licensed to the U.S. Government +under vendor's standard commercial license.

+

+ The information contained +herein is subject to change without notice. The only warranties +for +Hewlett Packard Enterprise products and services are set forth in +the express warranty +statements accompanying such products and services. +Nothing herein should be construed as +constituting an additional warranty. +Hewlett Packard Enterprise shall not be liable for +technical or editorial +errors or omissions contained herein.

+

+ Acknowledgments

+

+ Microsoft®, Windows®, Windows® XP, Windows NT®, and Google Chrome® are U.S. registered + trademarks of Microsoft Corporation.

+

+ Java and Oracle are registered trademarks of Oracle and/or its affiliates.

+

+ UNIX® is a registered trademark of The Open Group.

+

+ Prerequisites and Audience

+

+ This paper assumes the reader is familiar with HTTP operations and RESTful web service + APIs. The reader should be familiar with JSON and UTF-8 encoding as well as HTTP + operations and headers. +

+

+ This paper is a reference and is intended to be used in conjunction with the paper + entitled "Managing HPE Servers Using the RESTful API."  + This other document is an introduction to using the RESTful API, while this document + provides detail on individual properties and messages.

+

+ First Things

+

+ HPE Moonshot running Chassis Manager 1.30 or later features a new management interface called + the “RESTful API.” The RESTful API is a RESTful Web Service API served by + iLO’s web server. If you are familiar with RESTful APIs, this should tell you much + about how the API works. In short, a RESTful API is an application programming interface + using the basic HTTP operations GET, PUT, POST, DELETE, and PATCH. Each HTTP operation + either submits or returns a “resource” in the form of UTF-8 encoded JSON. Just as + a Web application returns HTML to your browser, a REST interface returns data (in + the form of JSON) to your client over the same transport (HTTPS). +

+

+ All modern scripting languages make it very easy to write simple REST clients for + web services. Most, like Python can transform JSON into internal data structures + like dictionaries, allowing for easily access to data. This enables you to write + custom code directly to the API instead of using intermediate tools.

+

+ If you are not familiar with RESTful APIs, you should pause and do internet research + on the subject. This tutorial is intended to point out the things you must consider + when creating a proper client to interact with the RESTful API. +

+

+ Key Benefits of the RESTful API

+

+ This RESTful API will become the main management API for Moonshot. + Using this API you can take full inventory of the Moonshot enclosure, control + power and reset, configure settings, fetch event logs as well as + many other things.

+

+ This API follows the trend of the Internet in moving to a common pattern for new + software interfaces. Many web services in a variety of industries use REST APIs + because they are easily to implement, easy to consume, and offer scalability advantages + over previous technologies. HPE OneView, OpenStack, and many other server management + APIs are now REST APIs. Most HPE Management software offerings as well as the entire + Software Defined Data Center architecture is built upon REST APIs. +

+ +

+ Requirements for using the RESTful API

+

+ The RESTful API for iLO is available on Moonshot servers running iLO Chassis + Manager and does not require a license.

+

+ How to Use This Document

+

+ This document has three main sections.  +

+

+ The Resource Map documents the resources in the data model + including the URIs and types of the resources as well as the relationships + between resources. Not all implementations of the API will contain all the resources in this table and the model may expand in future versions of firmware.

+

+ The Data Model Type Reference contains a chapter for each + resource type and a section for each property + in each resource type. 

+

+ The Message Reference documents the MessageID values that may be returned in + ExtendedError responses to HTTP operations.

+

+ Resource Map

+

+ This section documents the resource map. + Not all resources will be present in all implementations and the resource model + may expand in future versions of the firmware.  The root resource is /rest/v1.

+

+   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
/rest/v1 + ServiceRoot + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/AccountService + AccountService + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/AccountService/Accounts + Collection + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/AccountService/Accounts/{item} + ManagerAccount + + HTTP Allow: + GET, PATCH, POST, DELETE
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item} + Chassis + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
+ HpMoonshotCartridgeLinkService + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/CartridgeLinks/Entries + Collection + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/CartridgeLinks/Entries/{item} + CartridgeLinkEntry + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Cartridges + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Cartridges/{item} + HpMoonshotCartridge + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Cartridges/{item}/Logs/IML + HpMoonshotLogService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Cartridges/{item}/PowerMetrics + MoonshotPowerMetrics + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Cartridges/{item}/ThermalMetrics + ThermalMetrics + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/ChassisFirmwareSummary + ChassisFirmwareSummary + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/ChassisSummary + ChassisSummary + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Logs/IML + HpMoonshotLogService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/PowerMetrics + MoonshotPowerMetrics + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Switches + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Switches/{item} + HpMoonshotSwitch + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Switches/{item}/Logs/IML + HpMoonshotLogService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Switches/{item}/PowerMetrics + MoonshotPowerMetrics + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/Switches/{item}/ThermalMetrics + ThermalMetrics + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Chassis/{item}/ThermalMetrics + ThermalMetrics + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/DirectoryService + DirectoryService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/DirectoryService/Groups + Collection + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/DirectoryService/Groups/{item} + ManagerGroup + + HTTP Allow: + GET, PATCH, POST, DELETE
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item} + Manager + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/DateTime + HpiLODateTime + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/LicenseService + Collection + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/LicenseService/{item} + HpiLOLicense + + HTTP Allow: + GET, DELETE
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/Logs/IML + HpMoonshotLogService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/NICs + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/NICs/{item} + EthernetNetworkInterface + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/NetworkService + ManagerNetworkService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/RepositoryService + ManagerRepositoryService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/SecurityService + HpSecurityService + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/SecurityService/HTTPSCert + HpHttpsCert + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/SecurityService/SecurityBanner + SecurityBanner + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/SerialService + ManagerSerial + + HTTP Allow: + GET, PATCH
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/SnmpService + SnmpService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Managers/{item}/UpdateService + ManagerUpdateService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Registries + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Registries/{item} + SchemaFile + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Schemas + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Schemas/{item} + SchemaFile + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Sessions + Collection + + HTTP Allow: + GET, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Sessions/{item} + Session + + HTTP Allow: + GET, DELETE
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Systems + Collection + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Systems/{item} + ComputerSystem + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/Systems/{item}/Logs/IML + HpMoonshotLogService + + HTTP Allow: + GET, PATCH, POST
Links to other resourcesto resource URIto resource Type
+

+
/rest/v1/SystemsSummary + SystemsSummary + + HTTP Allow: + GET
Links to other resourcesto resource URIto resource Type
+

+
+ + + +
+

+ Data Model Type Reference

+

+ This section documents each type of resource.  Note that more than one resource + may be of the same type.  Not all resource instances implement every + property specified in the definition.

+

+  

+ "AccountService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

This is the schema definition for the Account service. It represents the properties for this service and has links to the list of accounts.

+
+ +
+

+ "AccountService" defines the following properties: +

+

+ "Oem/Hp/AuthFailureLoggingThreshold" +

+
+

+ This property is a member of AccountService

+
This property enables you to view and configure logging criteria for failed authentications. A failed login log entry is recorded after the configured number of attempts. 0 = feature disabled; 1-3 and 5 are allowable values.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MinPasswordLength" +

+
+

+ This property is a member of AccountService

+
This property specifies the minimum number of characters allowed when a user password is set or changed. It must be a value from 0 to 39.
+
+
+ +
+

+
+
JSON type:
+
Integer + from 0 to 39. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"MinPasswordLength": <integer-value>}}}
+

+ The property "Oem/Hp/MinPasswordLength" on resource type AccountService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+
+

+ "CartridgeLinkEntry" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "CartridgeLinkEntry" defines the following properties: +

+

+ "Architecture" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeLinks[]/Architecture" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeLinks[]/LinkEnabled" +

+
+

+ This property is a member of CartridgeLinkEntry

+
This property is true if the link is enabled
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeLinks[]/Speed" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeLinks[]/Via" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LinkEnabled" +

+
+

+ This property is a member of CartridgeLinkEntry

+
This property is true if the link is enabled
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LinkFrom" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LinkTo" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Speed" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Via" +

+
+

+ This property is a member of CartridgeLinkEntry

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "Chassis" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

The schema definition for the Chassis resource represents the properties for physical components for any system. This object represents racks, rack mount servers, blades, standalone, modular systems, enclosures, and all other containers. The non-CPU/device-centric parts of the schema are accessed either directly or indirectly through this resource.

+
+ +
+

+ "Chassis" defines the following properties: +

+

+ "AssetTag" +

+
+

+ This property is a member of Chassis

+
The chassis user-assigned asset tag.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"AssetTag": "<string-value>"}
+

+ The property "AssetTag" on resource type Chassis may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "ChassisType" +

+
+

+ This property is a member of Chassis

+
This property indicates the physical form factor type of this resource.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Rack" +
+ "Blade" +
+ "Enclosure" +
+ "StandAlone" +
+ "RackMount" +
+ "Card" +
+ "Cartridge" +
+ "Row" +
+ "Pod" +
+ "Expansion" +
+ "Sidecar" +
+ "Zone" +
+ "Sled" +
+ "Shelf" +
+ "Other" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "IndicatorLED" +

+
+

+ This property is a member of Chassis

+
The chassis indicator LED that is used to identify the chassis. The user can manipulate this LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IndicatorLED": "Lit"}
+

+ The property "IndicatorLED" on resource type Chassis may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Manufacturer" +

+
+

+ This property is a member of Chassis

+
The chassis manufacturer.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Model" +

+
+

+ This property is a member of Chassis

+
The chassis model number.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/AutoPowerOn" +

+
+

+ This property is a member of Chassis

+
Auto Power On
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "On" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"AutoPowerOn": "Off"}}}
+

+ The property "Oem/Hp/AutoPowerOn" on resource type Chassis may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/BaseFru[]/MfgDateTime" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/BaseFru[]/ProductName" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/BaseFru[]/SparePartNumber" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/BayNumber" +

+
+

+ This property is a member of Chassis

+
Position of the chassis inside an enclosure.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ChassisManager[]/IP" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ChassisManager[]/MAC" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ChassisManager[]/SubnetMask" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/CliVersion" +

+
+

+ This property is a member of Chassis

+
CLI Version
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/ChassisFirmware/Current/VersionString" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/ChassisFirmwareFrontDisplayPLD/Current/VersionString" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/ChassisFirmwarePLD/Current/VersionString" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/ChassisManagementFirmware/Current/VersionString" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/ChassisManagementModulePLD/Current/VersionString" +

+
+

+ This property is a member of Chassis

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Images/Front/extref" +

+
+

+ This property is a member of Chassis

+
The URI of an external resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Images/Model/extref" +

+
+

+ This property is a member of Chassis

+
The URI of an external resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/GeographicLocation/RackName" +

+
+

+ This property is a member of Chassis

+
Name of the chassis enclosure.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/RackLdsPartNumber" +

+
+

+ This property is a member of Chassis

+
Part number of the chassis rack.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/RackLdsProductDescription" +

+
+

+ This property is a member of Chassis

+
Product description of the chassis rack.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/RackUHeight" +

+
+

+ This property is a member of Chassis

+
U height of the chassis rack.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/RackUUID" +

+
+

+ This property is a member of Chassis

+
UUID of the chassis rack.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/TagVersion" +

+
+

+ This property is a member of Chassis

+
Tag version of the chassis rack.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/ULocation" +

+
+

+ This property is a member of Chassis

+
U location of the chassis rack.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationInRack/UPosition" +

+
+

+ This property is a member of Chassis

+
U position of the chassis in the rack.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Location/LocationOfChassis/UUID" +

+
+

+ This property is a member of Chassis

+
Chassis UUID provided by SMBIOS.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Prompt" +

+
+

+ This property is a member of Chassis

+
CLI Prompt
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Prompt": "<string-value>"}}}
+

+ The property "Oem/Hp/Prompt" on resource type Chassis may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "PartNumber" +

+
+

+ This property is a member of Chassis

+
The chassis part number.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "SKU" +

+
+

+ This property is a member of Chassis

+
The chassis SKU.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SKU": "<string-value>"}
+

+ The property "SKU" on resource type Chassis may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SerialNumber" +

+
+

+ This property is a member of Chassis

+
The chassis serial number.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SerialNumber": "<string-value>"}
+

+ The property "SerialNumber" on resource type Chassis may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Status/Health" +

+
+

+ This property is a member of Chassis

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of Chassis

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of Chassis

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Version" +

+
+

+ This property is a member of Chassis

+
The chassis version.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+
+

+ POST Action "SetAssetTag" +

+
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

+ Parameter "AssetTag" +

+

+ "AssetTag" must be one of the following value(s): +

+
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "SetAssetTag", + "Target": "/Oem/Hp", + "AssetTag": ""} +
+

+ POST Action "AutoPowerOnControl" +

+
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

+ Parameter "ControlType" +

+

+ "ControlType" must be one of the following value(s): +

+ + + + + + + +
+ "On" +
+ "Off" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "AutoPowerOnControl", + "Target": "/Oem/Hp", + "ControlType": "On"} +
+

+ POST Action "SetChassisName" +

+
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

+ Parameter "ChassisName" +

+

+ "ChassisName" must be one of the following value(s): +

+
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "SetChassisName", + "Target": "/Oem/Hp", + "ChassisName": ""} +
+

+ POST Action "IndicatorLEDControl" +

+
+
+ +
+

+ Parameter "ControlType" +

+

+ "ControlType" must be one of the following value(s): +

+ + + + + + + +
+ "Lit" +
+ "Off" +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "IndicatorLEDControl", + "ControlType": "Lit", + "Target": "/Oem/Hp"} +
+

+ "ChassisFirmwareSummary" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ChassisFirmwareSummary" defines the following properties: +

+

+ "BayNumber" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeData/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeData/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeProgrammableLogicDevice/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeProgrammableLogicDevice/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeSatelliteFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeSatelliteFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeSystemMEROMFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeSystemMEROMFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeSystemROMFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/CartridgeSystemROMFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/MiscFW[]/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/MiscFW[]/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/RomFamily/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/FirmwareRevisions/RomFamily/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Cartridges[]/Model" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Presence" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/ChassisFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwareFrontDisplayPLD/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwareFrontDisplayPLD/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwarePLD/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwarePLD/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementModulePLD/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementModulePLD/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/FirmwareVersion" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This is the firmware version of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/Health" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/HealthRollUp" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/State" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/FirmwareRevisions/SwitchData/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchData/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchProgrammableLogicDevice/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchProgrammableLogicDevice/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchSatelliteFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchSatelliteFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchSystemROMFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/FirmwareRevisions/SwitchSystemROMFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Switches[]/Model" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Presence" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisFirmwareSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "ChassisSummary" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ChassisSummary" defines the following properties: +

+

+ "AssetTag" +

+
+

+ This property is a member of ChassisSummary

+
Asset Tag
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "AutoPowerOn" +

+
+

+ This property is a member of ChassisSummary

+
Auto Power On
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "On" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"AutoPowerOn": "Off"}
+

+ The property "AutoPowerOn" on resource type ChassisSummary may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "BayNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/AssetTag" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/AutoRev" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/CartridgeNodeCount" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + from 0 to 8. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/CartridgeType" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "CART_TYPE_RESERVED" +
+ "Compute" +
+ "Storage" +
+ "Graphic" +
+ "Switch (network)" +
+ "Display (video) cartridge" +
+ "Expansion" +
+ "Network" +
+ "FPGA" +
+ "Management" +
+ "CART_TYPE_UNKNOWN" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/FrontLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the chassis health LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Off" +
+ "Red" +
+ "Amber" +
+ "Green" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/HealthStatus" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/IndicatorLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the UID LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/InstantWattage" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Length" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Linked" +

+
+

+ This property is a member of ChassisSummary

+
The linked state of the cartridge.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Yes" +
+ "No" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/ManagementDevice/Address" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/ManagementDevice/JarFileName" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/ManagementDevice/RemoteConsoleCapability" +

+
+

+ This property is a member of ChassisSummary

+
This property is true if remote console is available
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/ManagementDevice/SessionID" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/ManagementStatus" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Manufacturer" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/MaxClockSpeedMHz" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/MaximumWattage" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Model" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/NumberOfCores" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Power" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "On" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Cartridges": [{"Power": "Off"}|null, ...]}
+

+ The property "Cartridges[]/Power" on resource type ChassisSummary may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Cartridges[]/Presence" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/ProcessorFamily" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/SKU" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/SerialNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Status/Health" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Status/HealthRollUp" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Status/State" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/SubsumedBy" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Cartridges[]/Width" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ChassisManager[]/IP" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ChassisManager[]/MAC" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ChassisManager[]/SubnetMask" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CliVersion" +

+
+

+ This property is a member of ChassisSummary

+
CLI Version
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/DepthInMm" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/HeightInMm" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/HeightInU" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/WidthInMm" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/CurrentReading" +

+
+

+ This property is a member of ChassisSummary

+
see legacy json 'health_fans' prop 'speed'
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/FanName" +

+
+

+ This property is a member of ChassisSummary

+
see legacy json 'health_fans' prop 'label'
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Oem/Hp/Location" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the component (i.e. CPU, Memory, and Storage) that the fan is being used to cool.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "System" +
+ "System Board" +
+ "I/O Board" +
+ "CPU" +
+ "Memory" +
+ "Storage" +
+ "Removable Media" +
+ "Power Supply" +
+ "Ambient" +
+ "Chassis" +
+ "Bridge Board" +
+ "Exhaust" +
+ "Processor Bay" +
+ "IO Bay" +
+ "Blade Slot" +
+ "Virtual" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/ProductName" +

+
+

+ This property is a member of ChassisSummary

+
see legacy json 'health_fans' prop 'label'
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Status/Health" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Status/HealthRollUp" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Status/State" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Units" +

+
+

+ This property is a member of ChassisSummary

+
hardcode to 'Percent'
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/ChassisFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwareFrontDisplayPLD/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwareFrontDisplayPLD/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwarePLD/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisFirmwarePLD/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementFirmware/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementFirmware/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementModulePLD/Firmware/Current/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Firmware/ChassisManagementModulePLD/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of ChassisSummary

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "HealthLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the chassis health LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Red" +
+ "Amber" +
+ "Green" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "HealthStatusCount/Critical" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "HealthStatusCount/OK" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "IndicatorLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the UID LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IndicatorLED": "Lit"}
+

+ The property "IndicatorLED" on resource type ChassisSummary may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Manufacturer" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Model" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerCapacityWatts" +

+
+

+ This property is a member of ChassisSummary

+
It is the total power supply capacity
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerConsumedWatts" +

+
+

+ This property is a member of ChassisSummary

+
This is the total power consumed in watts
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the chassis power LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Red" +
+ "Amber" +
+ "Green" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/ACInputStatus" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the type of fault present.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Failed" +
+ "OK" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/FirmwareVersion" +

+
+

+ This property is a member of ChassisSummary

+
This is the firmware version of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/LastPowerOutputWatts" +

+
+

+ This property is a member of ChassisSummary

+
This indicates the average power consumed in watts.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/LineInputVoltage" +

+
+

+ This property is a member of ChassisSummary

+
This is the instant input voltage at which the power supply is operating.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/LineInputVoltageType" +

+
+

+ This property is a member of ChassisSummary

+
Line voltage type can be lowline/midline/highline/-48VDC/420VDC/INVALID
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "ACLowLine" +
+ "ACMidLine" +
+ "ACHighLine" +
+ "DCNeg48V" +
+ "DC480V" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Model" +

+
+

+ This property is a member of ChassisSummary

+
This denotes the model number of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/PowerCapacityWatts" +

+
+

+ This property is a member of ChassisSummary

+
This indicates the power capacity in watts of the power supply
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/PowerSupplyType" +

+
+

+ This property is a member of ChassisSummary

+
The power supply type can be TREES/KHAN BLADE/PANDEMONIUM/BL-IRIS/SL-CARB2/SL-CARB/UNSUPPORTED
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "AC" +
+ "DC" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/SerialNumber" +

+
+

+ This property is a member of ChassisSummary

+
This denotes the serial number of the PS.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/SparePartNumber" +

+
+

+ This property is a member of ChassisSummary

+
This denotes the spare part number of the PS.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/Health" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/HealthRollUp" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/State" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowercapDescription" +

+
+

+ This property is a member of ChassisSummary

+
Powercap description.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowercapMode" +

+
+

+ This property is a member of ChassisSummary

+
Powercap Mode.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SKU" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SerialNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/Health" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/AutoRev" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/FrontLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the chassis health LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Off" +
+ "Red" +
+ "Amber" +
+ "Green" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/HealthStatus" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/IPv4" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/IPv6" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/IndicatorLED" +

+
+

+ This property is a member of ChassisSummary

+
This property is indicates the state of the UID LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/InstantWattage" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/MAC" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/ManagementStatus" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Manufacturer" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/MaximumWattage" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Model" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Power" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "On" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Switches": [{"Power": "Off"}|null, ...]}
+

+ The property "Switches[]/Power" on resource type ChassisSummary may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Switches[]/Presence" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/SKU" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/SerialNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/SlotOrBayNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Status/Health" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Status/HealthRollUp" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/Status/State" +

+
+

+ This property is a member of ChassisSummary

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/SwitchType" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/UUID" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/UplinkModule/Model" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/UplinkModule/SKU" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Switches[]/UplinkModule/SerialNumber" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UUID" +

+
+

+ This property is a member of ChassisSummary

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "ComputerSystem" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

The schema definition of a computer system and its properties. A computer system represents a physical or virtual machine and the local resources, such as memory, CPU, and other devices that can be accessed from that machine.

+
+ +
+

+ "ComputerSystem" defines the following properties: +

+

+ "AssetTag" +

+
+

+ This property is a member of ComputerSystem

+
A user-definable tag that is used to track this system for inventory or other client purposes.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"AssetTag": "<string-value>"}
+

+ The property "AssetTag" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Bios/Current/Date" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Bios/Current/Family" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Bios/Current/VersionString" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Boot/BootSourceOverrideEnabled" +

+
+

+ This property is a member of ComputerSystem

+
BootSourceOverrideTarget must be specified before BootSourceOverrideEnabled can be used.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Disabled" +
+ "Once" +
+ "Continuous" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Boot": {"BootSourceOverrideEnabled": "Once"}}
+

+ The property "Boot/BootSourceOverrideEnabled" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Boot/BootSourceOverrideTarget" +

+
+

+ This property is a member of ComputerSystem

+
The current boot source to be used at next boot instead of the normal boot device, if BootSourceOverrideEnabled is not Disabled.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "None" +
+ "PXE" +
+ "Floppy" +
+ "CD" +
+ "USB" +
+ "HDD" +
+ "BiosSetup" +
+ "Utilities" +
+ "Diags" +
+ "UefiShell" +
+ "UefiTarget" +
+ "M.2" +
+ "iSCSI" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Boot": {"BootSourceOverrideTarget": "BiosSetup"}}
+

+ The property "Boot/BootSourceOverrideTarget" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "HostCorrelation/HostFQDN" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "HostCorrelation/HostName" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "IndicatorLED" +

+
+

+ This property is a member of ComputerSystem

+
The state of the indicator LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IndicatorLED": "Lit"}
+

+ The property "IndicatorLED" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Manufacturer" +

+
+

+ This property is a member of ComputerSystem

+
The manufacturer or OEM of this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Memory/Status/Health" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Memory/Status/HealthRollUp" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Memory/Status/State" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Memory/TotalSystemMemoryGB" +

+
+

+ This property is a member of ComputerSystem

+
The total amount of memory in the system, measured in GB.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Model" +

+
+

+ This property is a member of ComputerSystem

+
The model information that the manufacturer uses to refer to this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/DiskDrives[]/CapacityGB" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/DiskDrives[]/DiskNumber" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/DiskDrives[]/Firmware" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/DiskDrives[]/Model" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/DiskDrives[]/SerialNumber" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/DiskDrives[]/Wear" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/AssetTag" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/Attributes" +

+
+

+ This property is a member of ComputerSystem

+
Bits 7-4: reserved, Bits 3-0: rank, Value=0 for unknown rank information.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/MemoryModules[]/CapacityGB" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/ClockSpeed" +

+
+

+ This property is a member of ComputerSystem

+
Identifies the configured clock speed to the memory device, in megahertz (MHz). If the value is 0, the speed is unknown.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/MemoryModules[]/DataWidth" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/DeviceSet" +

+
+

+ This property is a member of ComputerSystem

+
Identifies when the Memory Device is one of a set of Memory Devices that must be populated with all devices of the same type and size, and the set to which this device belongs. A value of 0 indicates that the device is not part of a set; a value of 255 indicates that the attribute is unknown.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/MemoryModules[]/FormFactor" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "REC_MEM_FF_RESERVED" +
+ "REC_MEM_FF_MASK" +
+ "SODIMM" +
+ "DIMM" +
+ "Embedded" +
+ "DODIMM" +
+ "Unknown" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/Manufacturer" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/MemoryBusSpeedMhz" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/MemoryType" +

+
+

+ This property is a member of ComputerSystem

+
The type of memory DIMM used in this system.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "DDR" +
+ "DDR2" +
+ "DDR3" +
+ "FBD2" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/PartNumber" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/SerialNumber" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/SizeMB" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/SlotOrBayNumber" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/Status/Health" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/Status/HealthRollUp" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/Status/State" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MemoryModules[]/TotalWidth" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/NICs[]/Manufacturer" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/NICs[]/MaximumSpeed" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/NICs[]/Topology" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/NodeOptions" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Object
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"NodeOptions": "<string-value>"}}}
+

+ The property "Oem/Hp/NodeOptions" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Options/BSC" +

+
+

+ This property is a member of ComputerSystem

+
BIOS Serial Console
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "enabled" +
+ "disabled" +
+ "DISABLE" +
+ "ENABLE" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Options": {"BSC": "DISABLE"}}}}
+

+ The property "Oem/Hp/Options/BSC" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Options/BootOnce" +

+
+

+ This property is a member of ComputerSystem

+
The current boot source to be used at next boot instead of the normal boot device
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "None" +
+ "HDD" +
+ "PXE" +
+ "iSCSI" +
+ "M.2" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Options": {"BootOnce": "PXE"}}}}
+

+ The property "Oem/Hp/Options/BootOnce" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Options/BootOnce" +

+
+

+ This property is a member of ComputerSystem

+
The current boot source to be used at next boot instead of the normal boot device
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "None" +
+ "HDD" +
+ "PXE" +
+ "iSCSI" +
+ "M.2" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Options": {"BootOrder": ["M.2","PXE"]}}}}
+

+

{"Oem": {"Hp": {"Options": {"BootOrder": ["HDD"]}}}}
+

+ The property "Oem/Hp/Options/BootOrder" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Options/CPU/ClockRate/CurrentFrequency" +

+
+

+ This property is a member of ComputerSystem

+
Current CPU clock rate
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Options": {"CPU": {"ClockRate": {"CurrentFrequency": "<string-value>"}}}}}}
+

+ The property "Oem/Hp/Options/CPU/ClockRate/CurrentFrequency" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Options/CPU/HyperThreading" +

+
+

+ This property is a member of ComputerSystem

+
Intel CPU HyperThreading
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "enabled" +
+ "disabled" +
+ "DISABLE" +
+ "ENABLE" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Options": {"CPU": {"HyperThreading": "DISABLE"}}}}}
+

+ The property "Oem/Hp/Options/CPU/HyperThreading" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Options/CPUOptions[]/DefaultValue" +

+
+

+ This property is a member of ComputerSystem

+
Defines the allowable values for this property on this resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Options/CPUOptions[]/OptionName" +

+
+

+ This property is a member of ComputerSystem

+
Defines the property name for which the following allowable values apply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Options/WOL" +

+
+

+ This property is a member of ComputerSystem

+
Wake On LAN
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Options": {"WOL": "<string-value>"}}}}
+

+ The property "Oem/Hp/Options/WOL" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/PowerOnDelay" +

+
+

+ This property is a member of ComputerSystem

+
Redundent with HpBios::PowerOnDelay
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Minimum" +
+ "15Sec" +
+ "30Sec" +
+ "45Sec" +
+ "60Sec" +
+ "RandomUpTo120Sec" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"PowerOnDelay": "45Sec"}}}
+

+ The property "Oem/Hp/PowerOnDelay" on resource type ComputerSystem may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/TrustedModules/FWVersion/Current/MajorVersion" +

+
+

+ This property is a member of ComputerSystem

+
The major version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TrustedModules/FWVersion/Current/MinorVersion" +

+
+

+ This property is a member of ComputerSystem

+
The minor version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TrustedModules/HardwareStatus" +

+
+

+ This property is a member of ComputerSystem

+
This property indicates the TPM or TM status.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "NotPresent" +
+ "Present" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TrustedModules/ModuleType" +

+
+

+ This property is a member of ComputerSystem

+
This property indicates the type of TPM or TM.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unspecified" +
+ "TPM1.2" +
+ "TPM2.0" +
+ "TM1.0" +
+ "Unknown" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TrustedModules/Status" +

+
+

+ This property is a member of ComputerSystem

+
This property indicates the TPM or TM status.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "NotPresent" +
+ "PresentEnabled" +
+ "PresentDisabled" +
+ "Unknown" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Power" +

+
+

+ This property is a member of ComputerSystem

+
The current power state of the system.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "On" +
+ "Off" +
+ "Unknown" +
+ "Reset" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Processors/Count" +

+
+

+ This property is a member of ComputerSystem

+
The number of processors in the system.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Processors/CurrentClockSpeedMHz" +

+
+

+ This property is a member of ComputerSystem

+
Processor Clock Speed in MHz
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Processors/MaxClockSpeedMHz" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Processors/NumberOfCores" +

+
+

+ This property is a member of ComputerSystem

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Processors/ProcessorFamily" +

+
+

+ This property is a member of ComputerSystem

+
This is the processor family for the processors in the system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SKU" +

+
+

+ This property is a member of ComputerSystem

+
SKU for this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "SerialNumber" +

+
+

+ This property is a member of ComputerSystem

+
The system serial number.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Status/Health" +

+
+

+ This property is a member of ComputerSystem

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SystemType" +

+
+

+ This property is a member of ComputerSystem

+
The type of computer system that this resource represents.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Physical" +
+ "Virtual" +
+ "OS" +
+ "PhysicallyPartitioned" +
+ "VirtuallyPartitioned" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UUID" +

+
+

+ This property is a member of ComputerSystem

+
The universal unique identifier for this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+
+

+ POST Action "Reset" +

+
+
+ +
+

+ Parameter "ResetType" +

+

+ "ResetType" must be one of the following value(s): +

+ + + + + + + + + + + + + + + + + + + +
+ "On" +
+ "Off" +
+ "Reset" +
+ "ColdReset" +
+ "Nmi" +
+ "GracefulShutdown" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "Reset", + "ResetType": "On"} +
+

+ POST Action "PowerButton" +

+
+
+ +
+

+ Parameter "PushType" +

+

+ "PushType" must be one of the following value(s): +

+ + + + + + + +
+ "Press" +
+ "PressAndHold" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "PowerButton", + "PushType": "Press"} +
+

+ "DirectoryService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

This is the schema definition for the Directory service. It represents the properties for this service and has links to the list of groups.

+
+ +
+

+ "DirectoryService" defines the following properties: +

+

+ "Oem/Hp/DirectoryServerAddress" +

+
+

+ This property is a member of DirectoryService

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DirectoryServerAddress": "<string-value>"}}}
+

+ The property "Oem/Hp/DirectoryServerAddress" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DirectoryServerLDAPPort" +

+
+

+ This property is a member of DirectoryService

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DirectoryServerLDAPPort": <integer-value>}}}
+

+ The property "Oem/Hp/DirectoryServerLDAPPort" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/KerberosEnabled" +

+
+

+ This property is a member of DirectoryService

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"KerberosEnabled": true}}}
+

+ The property "Oem/Hp/KerberosEnabled" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/KerberosKDCServerAddress" +

+
+

+ This property is a member of DirectoryService

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"KerberosKDCServerAddress": "<string-value>"}}}
+

+ The property "Oem/Hp/KerberosKDCServerAddress" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/KerberosKDCServerPort" +

+
+

+ This property is a member of DirectoryService

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"KerberosKDCServerPort": <integer-value>}}}
+

+ The property "Oem/Hp/KerberosKDCServerPort" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/KerberosKeytabFileExists" +

+
+

+ This property is a member of DirectoryService

+
Flag that indicates whether a Kerberos Keytab file exists.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/KerberosRealm" +

+
+

+ This property is a member of DirectoryService

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"KerberosRealm": "<string-value>"}}}
+

+ The property "Oem/Hp/KerberosRealm" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/KeytabEntries[]/KerberosRealm" +

+
+

+ This property is a member of DirectoryService

+
The descriptive name of the test.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/KeytabEntries[]/TestResult" +

+
+

+ This property is a member of DirectoryService

+
The results of running the test.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/LDAPDirectoryAuthenticationEnabled" +

+
+

+ This property is a member of DirectoryService

+
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"LDAPDirectoryAuthenticationEnabled": true}}}
+

+ The property "Oem/Hp/LDAPDirectoryAuthenticationEnabled" on resource type DirectoryService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/LocalLoginEnabled" +

+
+

+ This property is a member of DirectoryService

+
Flag that indicates whether local accounts are enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TestResults/TestInformation[]/TestName" +

+
+

+ This property is a member of DirectoryService

+
The descriptive name of the test.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TestResults/TestInformation[]/TestResult" +

+
+

+ This property is a member of DirectoryService

+
The results of running the test.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/TestResults/TestState" +

+
+

+ This property is a member of DirectoryService

+
This privilege enables a user to access one or more of the cartridges in the chassis.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "NotRunning" +
+ "InProgress" +
+ "Complete" +
+ "Aborting" +
+ "Aborted" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/links/UploadKerberosKeytab/extref" +

+
+

+ This property is a member of DirectoryService

+
The URI of an external resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "StartTest" +

+
Starts the LDAP test.
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

+ Parameter "UserName" +

+

+ "UserName" must be one of the following value(s): +

+
+

+ Parameter "UserPassword" +

+

+ "UserPassword" must be one of the following value(s): +

+
+

+ Parameter "AdminName" +

+

+ "AdminName" must be one of the following value(s): +

+
+

+ Parameter "AdminPassword" +

+

+ "AdminPassword" must be one of the following value(s): +

+
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "StartTest", + "Target": "/Oem/Hp", + "UserName": "", + "UserPassword": "", + "AdminName": "", + "AdminPassword": ""} +
+

+ POST Action "StopTest" +

+
Stops the LDAP test.
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "StopTest", + "Target": "/Oem/Hp"} +
+

+ "EthernetNetworkInterface" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

The schema definition of a simple Ethernet NIC resource.

+
+ +
+

+ "EthernetNetworkInterface" defines the following properties: +

+

+ "Autosense" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Autosense speed/duplex enabled or disabled. This property can be disabled only if the SpeedMbps and FullDuplex values are specified. This property is applicable only for a dedicated network port. This property can only be modified on a dedicated network port. It cannot be modified for blade servers.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Autosense": true}
+

+ The property "Autosense" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "FQDN" +

+
+

+ This property is a member of EthernetNetworkInterface

+
The complete, fully qualified domain name obtained by DNS for this NIC.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "FactoryMacAddress" +

+
+

+ This property is a member of EthernetNetworkInterface

+
This is the MAC address assigned to the NIC at the factory.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FullDuplex" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Connection duplex status. If Autosense is enabled, this property cannot be modified. This property is applicable only for a dedicated network port. This property can only be modified on a dedicated network port. It cannot be modified for blade servers.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"FullDuplex": true}
+

+ The property "FullDuplex" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "IPv4Addresses[]/Address" +

+
+

+ This property is a member of EthernetNetworkInterface

+
The IPv4 Address.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IPv4Addresses": [{"Address": "<string-value>"}|null, ...]}
+

+ The property "IPv4Addresses[]/Address" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "IPv4Addresses[]/AddressOrigin" +

+
+

+ This property is a member of EthernetNetworkInterface

+
How the address was determined.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "DHCP" +
+ "Static" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "IPv4Addresses[]/Gateway" +

+
+

+ This property is a member of EthernetNetworkInterface

+
The IPv4 gateway for this address.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IPv4Addresses": [{"Gateway": "<string-value>"}|null, ...]}
+

+ The property "IPv4Addresses[]/Gateway" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "IPv4Addresses[]/SubnetMask" +

+
+

+ This property is a member of EthernetNetworkInterface

+
The IPv4 Subnet mask.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IPv4Addresses": [{"SubnetMask": "<string-value>"}|null, ...]}
+

+ The property "IPv4Addresses[]/SubnetMask" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "MacAddress" +

+
+

+ This property is a member of EthernetNetworkInterface

+
The effective current MAC address. If the assignable MAC address is not supported, this is a read-only alias of FactoryMacAddress.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ConfigurationSettings" +

+
+

+ This property is a member of EthernetNetworkInterface

+
The state of the currently displayed configuration settings.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Current" +
+ "SomePendingReset" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/DHCPv4/Enabled" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether DHCPv4 is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"Enabled": true}}}}
+

+ The property "Oem/Hp/DHCPv4/Enabled" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DHCPv4/UseDNSServers" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to use DHCPv4-supplied DNS servers. Can only be enabled when DHCPv4 is also enabled; otherwise, this property will be set to false and will be read-only.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"UseDNSServers": true}}}}
+

+ The property "Oem/Hp/DHCPv4/UseDNSServers" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DHCPv4/UseDomainName" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to use a DHCPv4-supplied domain name. Can only be enabled when DHCPv4 is also enabled; otherwis,e this property will be set to false and will be read-only.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"UseDomainName": true}}}}
+

+ The property "Oem/Hp/DHCPv4/UseDomainName" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DHCPv4/UseGateway" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to use a DHCPv4-supplied gateway. Can only be enabled when DHCPv4 is also enabled; otherwise, this property will be set to false and will be read-only.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"UseGateway": true}}}}
+

+ The property "Oem/Hp/DHCPv4/UseGateway" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DHCPv4/UseNTPServers" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to use DHCPv4-supplied NTP servers. Can only be enabled when DHCPv4 is also enabled; otherwise, this property will be set to false and will be read-only.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"UseNTPServers": true}}}}
+

+ The property "Oem/Hp/DHCPv4/UseNTPServers" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DHCPv4/UseStaticRoutes" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to use DHCPv4-supplied static routes. Can only be enabled when DHCPv4 is also enabled; otherwise, this property will be set to false and will be read-only.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"UseStaticRoutes": true}}}}
+

+ The property "Oem/Hp/DHCPv4/UseStaticRoutes" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DHCPv4/UseWINSServers" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to use DHCPv4-supplied WINS servers. Can only be enabled when DHCPv4 is also enabled; otherwise, this property will be set to false and will be read-only.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DHCPv4": {"UseWINSServers": true}}}}
+

+ The property "Oem/Hp/DHCPv4/UseWINSServers" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DaisyChainEnabled" +

+
+

+ This property is a member of EthernetNetworkInterface

+
When enabled, the iLO CM Link Port can be used to daisy-chain the management port network to another iLO CM module.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DaisyChainEnabled": true}}}
+

+ The property "Oem/Hp/DaisyChainEnabled" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/DomainName" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Domain name of the management network to which this iLO belongs. This property can only be modified when iLO is not configured to use a DHCPv4 or DHCPv6 supplied domain name.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"DomainName": "<string-value>"}}}
+

+ The property "Oem/Hp/DomainName" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/HostName" +

+
+

+ This property is a member of EthernetNetworkInterface

+
iLO host name.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"HostName": "<string-value>"}}}
+

+ The property "Oem/Hp/HostName" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/IPv4/DDNSRegistration" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether DDNS registration is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"IPv4": {"DDNSRegistration": true}}}}
+

+ The property "Oem/Hp/IPv4/DDNSRegistration" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/IPv4/StaticRoutes[]/Address" +

+
+

+ This property is a member of EthernetNetworkInterface

+
This is a duplicate of Destination kept for compatibility with 1.30. It is now deprecated.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"IPv4": {"StaticRoutes": [{"Address": "<string-value>"}|null, ...]}}}}
+

+ The property "Oem/Hp/IPv4/StaticRoutes[]/Address" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/IPv4/StaticRoutes[]/Destination" +

+
+

+ This property is a member of EthernetNetworkInterface

+
An IPv4 static route subnet mask. Only writeable when use of DHCPv4-supplied static routes is disabled; otherwise this property is read-only indicating the value is provided by DHCPv4.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"IPv4": {"StaticRoutes": [{"Destination": "<string-value>"}|null, ...]}}}}
+

+ The property "Oem/Hp/IPv4/StaticRoutes[]/Destination" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/IPv4/StaticRoutes[]/Gateway" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Currently configured WINS servers in order of descending preference. Static values when not configured to use DHCPv4-supplied WINS servers; otherwise this property is read-only indicating the values are provided by DHCPv4.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"IPv4": {"StaticRoutes": [{"Gateway": "<string-value>"}|null, ...]}}}}
+

+ The property "Oem/Hp/IPv4/StaticRoutes[]/Gateway" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/IPv4/StaticRoutes[]/SubnetMask" +

+
+

+ This property is a member of EthernetNetworkInterface

+
An IPv4 static route gateway. Only writeable when use of DHCPv4-supplied static routes is disabled; otherwise this property is read-only indicating the value is provided by DHCPv4.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"IPv4": {"StaticRoutes": [{"SubnetMask": "<string-value>"}|null, ...]}}}}
+

+ The property "Oem/Hp/IPv4/StaticRoutes[]/SubnetMask" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/IPv4/WINSRegistration" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether WINS registration is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"IPv4": {"WINSRegistration": true}}}}
+

+ The property "Oem/Hp/IPv4/WINSRegistration" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/NICEnabled" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether this NIC is enabled or disabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/PingGatewayOnStartup" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Determines whether to ping the gateway on startup.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"PingGatewayOnStartup": true}}}
+

+ The property "Oem/Hp/PingGatewayOnStartup" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SpeedMbps" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Indicates the link speed of the ethernet interface. If Autosense is enabled, this property cannot be modified. This property can only be modified on a dedicated network port. It cannot be modified for blade servers.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SpeedMbps": <integer-value>}
+

+ The property "SpeedMbps" on resource type EthernetNetworkInterface may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Status/Health" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of EthernetNetworkInterface

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "HpHttpsCert" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

This is the schema definition for the X509 Certificate.

+
+ +
+

+ "HpHttpsCert" defines the following properties: +

+

+ "CertificateSigningRequest" +

+
+

+ This property is a member of HpHttpsCert

+
GenerateCSR action, wait few minutes (upto 10), perform GET operation, fills CSR. Contains a public and private key pair.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "X509CertificateInformation/Issuer" +

+
+

+ This property is a member of HpHttpsCert

+
The Certificate Authority that issued the certificate.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "X509CertificateInformation/SerialNumber" +

+
+

+ This property is a member of HpHttpsCert

+
The serial number that the Certificate Authority assigned to the certificate.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "X509CertificateInformation/Subject" +

+
+

+ This property is a member of HpHttpsCert

+
The entity to which the certificate was issued.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "X509CertificateInformation/ValidNotAfter" +

+
+

+ This property is a member of HpHttpsCert

+
The date on which the certificate validity period ends.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "X509CertificateInformation/ValidNotBefore" +

+
+

+ This property is a member of HpHttpsCert

+
The date on which the certificate validity period begins.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "GenerateCSR" +

+
+
+ +
+

+ Parameter "Country" +

+

+ "Country" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "State" +

+

+ "State" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "City" +

+

+ "City" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "OrgName" +

+

+ "OrgName" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "EmailAddress" +

+

+ "EmailAddress" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "OrgUnit" +

+

+ "OrgUnit" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "CommonName" +

+

+ "CommonName" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "GenerateCSR", + "Country": "<string>", + "State": "<string>", + "City": "<string>", + "OrgName": "<string>", + "EmailAddress": "<string>", + "OrgUnit": "<string>", + "CommonName": "<string>"} +
+

+ POST Action "ImportCertificate" +

+
Imports a Trusted Certificate and iLO is reset.
+
+ +
+

+ Parameter "Certificate" +

+

+ "Certificate" must be one of the following value(s): +

+ + + + +
+ "<text>" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "ImportCertificate", + "Certificate": "<text>"} +
+

+ "HpMoonshotCartridge" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "HpMoonshotCartridge" defines the following properties: +

+

+ "BayNumber" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/AssetTag" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"CartridgeInfo": {"AssetTag": "<string-value>"}}
+

+ The property "CartridgeInfo/AssetTag" on resource type HpMoonshotCartridge may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "CartridgeInfo/AutoRev" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/CartridgeNodeCount" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer + from 0 to 8. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/CartridgeType" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "CART_TYPE_RESERVED" +
+ "Compute" +
+ "Storage" +
+ "Graphic" +
+ "Switch (network)" +
+ "DSP" +
+ "Expansion" +
+ "Network" +
+ "FPGA" +
+ "Management" +
+ "CART_TYPE_UNKNOWN" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/HealthStatus" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/InstantWattage" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/Length" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/Linked" +

+
+

+ This property is a member of HpMoonshotCartridge

+
The linked state of the cartridge.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Yes" +
+ "No" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/ManagementStatus" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/MaximumWattage" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/MfgDateTime" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/WattageHistoryLevel[]/Counter" +

+
+

+ This property is a member of HpMoonshotCartridge

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/WattageHistoryLevel[]/Cumulator" +

+
+

+ This property is a member of HpMoonshotCartridge

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/WattageHistoryLevel[]/SampleType" +

+
+

+ This property is a member of HpMoonshotCartridge

+
Describes the sample type (time span and sample interval).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/WattageHistoryLevel[]/Samples[]/Wattage" +

+
+

+ This property is a member of HpMoonshotCartridge

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/WattageHistoryLevel[]/Samples[]/WattageInt" +

+
+

+ This property is a member of HpMoonshotCartridge

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "CartridgeInfo/Width" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ChassisType" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Rack" +
+ "Blade" +
+ "Enclosure" +
+ "StandAlone" +
+ "RackMount" +
+ "Card" +
+ "Cartridge" +
+ "Row" +
+ "Pod" +
+ "Expansion" +
+ "Sidecar" +
+ "Other" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/DepthInMm" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/HeightInMm" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/HeightInU" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/WidthInMm" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/CartridgeData/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/CartridgeProgrammableLogicDevice/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/CartridgeSatelliteFirmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/CartridgeSystemMEROMFirmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/CartridgeSystemROMFirmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/MiscFW[]/Firmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "FirmwareRevisions/MiscFW[]/Firmware/definitions/FWVersion/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
This string represents the version of the firmware image.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "FirmwareRevisions/RomFamily/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "IndicatorLED" +

+
+

+ This property is a member of HpMoonshotCartridge

+
This property is indicates the state of the UID LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IndicatorLED": "Lit"}
+

+ The property "IndicatorLED" on resource type HpMoonshotCartridge may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "ManagementDevice/Address" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ManagementDevice/JarFileName" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ManagementDevice/RemoteConsoleCapability" +

+
+

+ This property is a member of HpMoonshotCartridge

+
This property is true if remote console is available
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ManagementDevice/SessionID" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Manufacturer" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/AutoRev" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/CartridgeMezzData/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/MfgDateTime" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/Model" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/SKU" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/SerialNumber" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Mezzanine[]/SparePartNumber" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Model" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Power" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Off" +
+ "On" +
+ "Press" +
+ "PressAndHold" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Power": "Press"}
+

+ The property "Power" on resource type HpMoonshotCartridge may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SKU" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SKU": "<string-value>"}
+

+ The property "SKU" on resource type HpMoonshotCartridge may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SerialNumber" +

+
+

+ This property is a member of HpMoonshotCartridge

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SerialNumber": "<string-value>"}
+

+ The property "SerialNumber" on resource type HpMoonshotCartridge may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Status/Health" +

+
+

+ This property is a member of HpMoonshotCartridge

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of HpMoonshotCartridge

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of HpMoonshotCartridge

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "LinkControl" +

+
+
+ +
+

+ Parameter "ControlType" +

+

+ "ControlType" must be one of the following value(s): +

+ + + + + + + +
+ "On" +
+ "Off" +
+

+ Parameter "LinkedCartridge" +

+

+ "LinkedCartridge" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "LinkControl", + "ControlType": "On", + "LinkedCartridge": "<string>"} +
+

+ POST Action "IndicatorLEDControl" +

+
+
+ +
+

+ Parameter "ControlType" +

+

+ "ControlType" must be one of the following value(s): +

+ + + + + + + +
+ "Lit" +
+ "Off" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "IndicatorLEDControl", + "ControlType": "Lit"} +
+

+ POST Action "RemoteConsoleSession" +

+
+
+ +
+

+ Parameter "UserName" +

+

+ "UserName" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

+ Parameter "Type" +

+

+ "Type" must be one of the following value(s): +

+ + + + + + + +
+ "Create" +
+ "Delete" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "UserName": "<string>", + "Action": "RemoteConsoleSession", + "Type": "Create"} +
+

+ "HpMoonshotCartridgeLinkService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "HpMoonshotCartridgeLinkService" defines the following properties: +

+

+ "Status/Health" +

+
+

+ This property is a member of HpMoonshotCartridgeLinkService

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of HpMoonshotCartridgeLinkService

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of HpMoonshotCartridgeLinkService

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+ +
+ +

+ Parameter "LinkEnabled" +

+

+ "LinkEnabled" must be one of the following value(s): +

+ + + + + + + +
+ "On" +
+ "Off" +
+

+ Parameter "LinkTargets" +

+

+ "LinkTargets" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "ChangeLinks", + "LinkEnabled": "On", + "LinkTargets": "<string>"} +
+

+ "HpMoonshotLogService" Resource Type +

+

+ Resource Instances +

+ + + + + +

+ See Resource Map for more details. +

+

This resource represents the log service for the resource or service to which it is associated.

+
+ +
+

+ "HpMoonshotLogService" defines the following properties: +

+

+ "LogEntries[]/Class" +

+
+

+ This property is a member of HpMoonshotLogService

+
Class of log Entry.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Empty" +
+ "Environment" +
+ "Main Memory" +
+ "Cache" +
+ "CPU" +
+ "Host Bus" +
+ "EISA Bus" +
+ "PCI Bus" +
+ "EXp. Slot" +
+ "POST Message" +
+ "Power" +
+ "ASR" +
+ "OS" +
+ "Network" +
+ "SCSI" +
+ "Drive Array" +
+ "System Error" +
+ "Maintenance" +
+ "Rack Infrastructure" +
+ "iLO Chassis Manager" +
+ "System Revision" +
+ "XNC" +
+ "Smart Carrier" +
+ "Power Cap" +
+ "Error Report" +
+ "Unknown" +
+ "Reserved" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/Count" +

+
+

+ This property is a member of HpMoonshotLogService

+
Number of times a matching event has been logged
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/Created" +

+
+

+ This property is a member of HpMoonshotLogService

+
The time the log entry was created.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/EntryType" +

+
+

+ This property is a member of HpMoonshotLogService

+
Oem type (IML or iLO Log)
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Oem" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/Location" +

+
+

+ This property is a member of HpMoonshotLogService

+
Chassis or Cx or CxNy or SA|SB
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/OemRecordFormat" +

+
+

+ This property is a member of HpMoonshotLogService

+
IML or iLO Event Log
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Hp-IML" +
+ "Hp-iLOEventLog" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/RecordId" +

+
+

+ This property is a member of HpMoonshotLogService

+
equivalent to legacy json 'id' property
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/Severity" +

+
+

+ This property is a member of HpMoonshotLogService

+
OK = Informational - ask if problems mapping severitys, equivalent to legacy json 'severity' property
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Informational" +
+ "Repaired" +
+ "Caution" +
+ "Critical" +
+ "Unknown" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LogEntries[]/Updated" +

+
+

+ This property is a member of HpMoonshotLogService

+
The time the log entry was created.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "MaxNumberOfRecords" +

+
+

+ This property is a member of HpMoonshotLogService

+
The maximum number of log entries this service can have.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "OverWritePolicy" +

+
+

+ This property is a member of HpMoonshotLogService

+
The overwrite policy for this service that takes place when the log is full.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "WrapsWhenFull" +
+ "NeverOverwrites" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "ClearLog" +

+
+
+ +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "ClearLog"} +
+

+ POST Action "MarkRepaired" +

+
+
+ +
+

+ Parameter "RecordId" +

+

+ "RecordId" must be one of the following value(s): +

+ + + + +
+ An array of integer values +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "MarkRepaired", + "RecordId": [<"integer">]} +
+

+ POST Action "AddMaintenanceNote" +

+
+
+ +
+

+ Parameter "Message" +

+

+ "Message" must be one of the following value(s): +

+ + + + +
+ "<string>" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "AddMaintenanceNote", + "Message": "<string>"} +
+

+ "HpMoonshotSwitch" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "HpMoonshotSwitch" defines the following properties: +

+

+ "BayNumber" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/DepthInMm" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/HeightInMm" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/HeightInU" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Dimensions/WidthInMm" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/SwitchData/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/SwitchFirmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/SwitchProgrammableLogicDevice/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/SwitchSatelliteFirmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "FirmwareRevisions/SwitchSystemROMFirmware/Current/VersionString" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Images/Front/extref" +

+
+

+ This property is a member of HpMoonshotSwitch

+
The URI of an external resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Images/Model/extref" +

+
+

+ This property is a member of HpMoonshotSwitch

+
The URI of an external resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "IndicatorLED" +

+
+

+ This property is a member of HpMoonshotSwitch

+
This property is indicates the state of the UID LED.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "Lit" +
+ "Blinking" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IndicatorLED": "Lit"}
+

+ The property "IndicatorLED" on resource type HpMoonshotSwitch may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Manufacturer" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Model" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Power" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "On" +
+ "Off" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Power": "Off"}
+

+ The property "Power" on resource type HpMoonshotSwitch may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "RemoteManagementInterface/IPv4" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "RemoteManagementInterface/IPv6" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "RemoteManagementInterface/MAC" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SKU" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SKU": "<string-value>"}
+

+ The property "SKU" on resource type HpMoonshotSwitch may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SerialNumber" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SerialNumber": "<string-value>"}
+

+ The property "SerialNumber" on resource type HpMoonshotSwitch may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SparePartNumber" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/Health" +

+
+

+ This property is a member of HpMoonshotSwitch

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of HpMoonshotSwitch

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of HpMoonshotSwitch

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/AutoRev" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/HealthStatus" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/InstantWattage" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/ManagementStatus" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/MaximumWattage" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/MfgDateTime" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/SwitchType" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/UUID" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/WattageHistoryLevel[]/Counter" +

+
+

+ This property is a member of HpMoonshotSwitch

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/WattageHistoryLevel[]/Cumulator" +

+
+

+ This property is a member of HpMoonshotSwitch

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/WattageHistoryLevel[]/SampleType" +

+
+

+ This property is a member of HpMoonshotSwitch

+
Describes the sample type (time span and sample interval).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/WattageHistoryLevel[]/Samples[]/Wattage" +

+
+

+ This property is a member of HpMoonshotSwitch

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SwitchInfo/WattageHistoryLevel[]/Samples[]/WattageInt" +

+
+

+ This property is a member of HpMoonshotSwitch

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UplinkModule/Model" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UplinkModule/SKU" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UplinkModule/SerialNumber" +

+
+

+ This property is a member of HpMoonshotSwitch

+
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "IndicatorLEDControl" +

+
+
+ +
+

+ Parameter "ControlType" +

+

+ "ControlType" must be one of the following value(s): +

+ + + + + + + +
+ "Lit" +
+ "Off" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "IndicatorLEDControl", + "ControlType": "Lit"} +
+

+ POST Action "PowerControl" +

+
+
+ +
+

+ Parameter "ControlType" +

+

+ "ControlType" must be one of the following value(s): +

+ + + + + + + +
+ "On" +
+ "Off" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "PowerControl", + "ControlType": "On"} +
+

+ "HpSecurityService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "HpSecurityService" defines the following properties: +

+
+

+ "HpiLODateTime" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

The management processor date and time.

+
+ +
+

+ "HpiLODateTime" defines the following properties: +

+

+ "ConfigurationSettings" +

+
+

+ This property is a member of HpiLODateTime

+
The state of the currently displayed configuration settings.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Current" +
+ "SomePendingReset" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "DateTime" +

+
+

+ This property is a member of HpiLODateTime

+
The date and time used by management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "NTPEnabled" +

+
+

+ This property is a member of HpiLODateTime

+
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "NTPPollingPeriodSeconds" +

+
+

+ This property is a member of HpiLODateTime

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 60. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"NTPPollingPeriodSeconds": <integer-value>}
+

+ The property "NTPPollingPeriodSeconds" on resource type HpiLODateTime may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "TimeZone/Index" +

+
+

+ This property is a member of HpiLODateTime

+
The selected time zone index. To set a new time zone, specify a different time zone index.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"TimeZone": {"Index": <integer-value>}}
+

+ The property "TimeZone/Index" on resource type HpiLODateTime may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "TimeZone/Value" +

+
+

+ This property is a member of HpiLODateTime

+
The environment variable value.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "TimeZoneList[]/Index" +

+
+

+ This property is a member of HpiLODateTime

+
The time zone index.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "TimeZoneList[]/Value" +

+
+

+ This property is a member of HpiLODateTime

+
The environment variable value.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UpdateDateTime" +

+
+

+ This property is a member of HpiLODateTime

+
The date and time used by management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"UpdateDateTime": "<string-value>"}
+

+ The property "UpdateDateTime" on resource type HpiLODateTime may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "UseStaticNTPServers" +

+
+

+ This property is a member of HpiLODateTime

+
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "HpiLOLicense" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "HpiLOLicense" defines the following properties: +

+

+ "License" +

+
+

+ This property is a member of HpiLOLicense

+
The name of the license installed on this management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LicenseExpire" +

+
+

+ This property is a member of HpiLOLicense

+
The expiration information of the installed management processor license.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "LicenseKey" +

+
+

+ This property is a member of HpiLOLicense

+
The license key installed on this management processor. License keys are 25 characters in length and contain both letters and numbers.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"LicenseKey": "<string-value>"}
+

+ The property "LicenseKey" on resource type HpiLOLicense may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "LicenseType" +

+
+

+ This property is a member of HpiLOLicense

+
The type of license installed on this management processor.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unlicensed" +
+ "Evaluation" +
+ "Perpetual" +
+ "Subscription" +
+ "Internal" +
+ "Duration" +
+ "Expired" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "Manager" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

This is the schema definition for a manager. Examples of managers are BMCs, Enclosure Managers, Management Controllers and other subsystems assigned manageability functions.

+
+ +
+

+ "Manager" defines the following properties: +

+

+ "Firmware/Current/BuildNumber" +

+
+

+ This property is a member of Manager

+
Build or pass number of the installed firmware
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/BuildNumberString" +

+
+

+ This property is a member of Manager

+
Build or pass number, in string format, of the installed firmware
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/Date" +

+
+

+ This property is a member of Manager

+
Date when the firmware was built
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/DebugBuild" +

+
+

+ This property is a member of Manager

+
Indicates whether this is a debug build.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/MajorVersion" +

+
+

+ This property is a member of Manager

+
Major version of the installed firmware
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/MinorVersion" +

+
+

+ This property is a member of Manager

+
Minor version of the installed firmware
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/Time" +

+
+

+ This property is a member of Manager

+
Time when the firmware was built
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Firmware/Current/VersionString" +

+
+

+ This property is a member of Manager

+
Version and date of the installed firmware
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Model" +

+
+

+ This property is a member of Manager

+
Model name of the manager.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/Firmware/Backup/BuildNumber" +

+
+

+ This property is a member of Manager

+
The build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/BuildNumberString" +

+
+

+ This property is a member of Manager

+
The string version of the build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/Date" +

+
+

+ This property is a member of Manager

+
The build date of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/DebugBuild" +

+
+

+ This property is a member of Manager

+
True if the firmware is a debug build; False if it is not.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/Family" +

+
+

+ This property is a member of Manager

+
The family of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/MajorVersion" +

+
+

+ This property is a member of Manager

+
The major version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/MinorVersion" +

+
+

+ This property is a member of Manager

+
The minor version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/Time" +

+
+

+ This property is a member of Manager

+
The build time of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Backup/VersionString" +

+
+

+ This property is a member of Manager

+
The version string of the firmware. This value might be null if VersionString is unavailable.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/Firmware/Bootblock/BuildNumber" +

+
+

+ This property is a member of Manager

+
The build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/BuildNumberString" +

+
+

+ This property is a member of Manager

+
The string version of the build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/Date" +

+
+

+ This property is a member of Manager

+
The build date of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/DebugBuild" +

+
+

+ This property is a member of Manager

+
True if the firmware is a debug build; False if it is not.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/Family" +

+
+

+ This property is a member of Manager

+
The family of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/MajorVersion" +

+
+

+ This property is a member of Manager

+
The major version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/MinorVersion" +

+
+

+ This property is a member of Manager

+
The minor version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/Time" +

+
+

+ This property is a member of Manager

+
The build time of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Bootblock/VersionString" +

+
+

+ This property is a member of Manager

+
The version string of the firmware. This value might be null if VersionString is unavailable.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/Firmware/Current/BuildNumber" +

+
+

+ This property is a member of Manager

+
The build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/BuildNumberString" +

+
+

+ This property is a member of Manager

+
The string version of the build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/Date" +

+
+

+ This property is a member of Manager

+
The build date of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/DebugBuild" +

+
+

+ This property is a member of Manager

+
True if the firmware is a debug build; False if it is not.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/Family" +

+
+

+ This property is a member of Manager

+
The family of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/MajorVersion" +

+
+

+ This property is a member of Manager

+
The major version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/MinorVersion" +

+
+

+ This property is a member of Manager

+
The minor version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/Time" +

+
+

+ This property is a member of Manager

+
The build time of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Current/VersionString" +

+
+

+ This property is a member of Manager

+
The version string of the firmware. This value might be null if VersionString is unavailable.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/Firmware/Pending/BuildNumber" +

+
+

+ This property is a member of Manager

+
The build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/BuildNumberString" +

+
+

+ This property is a member of Manager

+
The string version of the build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/Date" +

+
+

+ This property is a member of Manager

+
The build date of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/DebugBuild" +

+
+

+ This property is a member of Manager

+
True if the firmware is a debug build; False if it is not.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/Family" +

+
+

+ This property is a member of Manager

+
The family of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/MajorVersion" +

+
+

+ This property is a member of Manager

+
The major version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/MinorVersion" +

+
+

+ This property is a member of Manager

+
The minor version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/Time" +

+
+

+ This property is a member of Manager

+
The build time of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/Pending/VersionString" +

+
+

+ This property is a member of Manager

+
The version string of the firmware. This value might be null if VersionString is unavailable.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/BuildNumber" +

+
+

+ This property is a member of Manager

+
The build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/BuildNumberString" +

+
+

+ This property is a member of Manager

+
The string version of the build number of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/Date" +

+
+

+ This property is a member of Manager

+
The build date of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/DebugBuild" +

+
+

+ This property is a member of Manager

+
True if the firmware is a debug build; False if it is not.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/Family" +

+
+

+ This property is a member of Manager

+
The family of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/MajorVersion" +

+
+

+ This property is a member of Manager

+
The major version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/MinorVersion" +

+
+

+ This property is a member of Manager

+
The minor version of the firmware.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/Time" +

+
+

+ This property is a member of Manager

+
The build time of the firmware.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Firmware/definitions/HpFWVersion/VersionString" +

+
+

+ This property is a member of Manager

+
The version string of the firmware. This value might be null if VersionString is unavailable.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/License/LicenseKey" +

+
+

+ This property is a member of Manager

+
The installed license key.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/License/LicenseString" +

+
+

+ This property is a member of Manager

+
Describes the type of license installed on management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/License/LicenseType" +

+
+

+ This property is a member of Manager

+
Indicates whether the license is Perpetual or Evaluation.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UUID" +

+
+

+ This property is a member of Manager

+
This is a universally unique identifier that software (for example, HP SIM) uses to uniquely identify this manager. The UUID is assigned when the system is manufactured.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+
+

+ POST Action "Reset" +

+
+
+ +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "Reset"} +
+

+ POST Action "SetFactoryDefaults" +

+
+
+ +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "SetFactoryDefaults"} +
+

+ "ManagerAccount" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ManagerAccount" defines the following properties: +

+

+ "Oem/Hp/LoginName" +

+
+

+ This property is a member of ManagerAccount

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"LoginName": "<string-value>"}}}
+

+ The property "Oem/Hp/LoginName" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/CartridgeAccessPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to access one or more of the cartridges in the chassis.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"CartridgeAccessPriv": "<string-value>"}}}}
+

+ The property "Oem/Hp/Privileges/CartridgeAccessPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/ChassisAccessPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to access properties in the chassis.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"ChassisAccessPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/ChassisAccessPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/LoginPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to log in to management processor. All local accounts have the login privilege. This privilege is added automatically if it is not specified.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"LoginPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/LoginPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/RemoteConsolePriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to remotely access the host system Remote Console, including video, keyboard, and mouse control.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"RemoteConsolePriv": true}}}}
+

+ The property "Oem/Hp/Privileges/RemoteConsolePriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/SwitchAccessPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to access one or more of the switches in the chassis.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"SwitchAccessPriv": "<string-value>"}}}}
+

+ The property "Oem/Hp/Privileges/SwitchAccessPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/UserConfigPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to add, edit, and delete local management processor user accounts. A user with this privilege can change privileges for all users.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"UserConfigPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/UserConfigPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/VirtualMediaPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to use the Virtual Media feature on the host system.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"VirtualMediaPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/VirtualMediaPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/VirtualPowerAndResetPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to power-cycle or reset the host system. These activities interrupt system availability. A user with this privilege can diagnose the system by using the Generate NMI to System button.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"VirtualPowerAndResetPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/VirtualPowerAndResetPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/iLOConfigPriv" +

+
+

+ This property is a member of ManagerAccount

+
This privilege enables a user to configure most management processor settings, including security settings, and to remotely update the management processor firmware. This privilege does not enable local user account administration.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"iLOConfigPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/iLOConfigPriv" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/SSHPublicKey" +

+
+

+ This property is a member of ManagerAccount

+
Indicates whether this user has an SSH Public Key.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/SSHPublicKeyHash" +

+
+

+ This property is a member of ManagerAccount

+
Value of SSH Public Key Hash (Fingerprint).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Oem/Hp/UserEnabled" +

+
+

+ This property is a member of ManagerAccount

+
Indicates whether this user is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"UserEnabled": true}}}
+

+ The property "Oem/Hp/UserEnabled" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/UserPrivilege" +

+
+

+ This property is a member of ManagerAccount

+
User privilege compatible with iLO CM CLI.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Administrator" +
+ "User" +
+ "Operator" +
+ "None" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"UserPrivilege": "Operator"}}}
+

+ The property "Oem/Hp/UserPrivilege" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Password" +

+
+

+ This property is a member of ManagerAccount

+
The password used to log in to the management processor. The maximum length for a password is 39 characters. The minimum length for a password is specified in the MinPasswordLength property of the AccountService schema.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Password": "<string-value>"}
+

+ The property "Password" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "UserName" +

+
+

+ This property is a member of ManagerAccount

+
The name used to log in to the management processor. The user name does not have to be the same as the login name. The maximum length for the user name is 39 characters. The user name must use printable characters.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"UserName": "<string-value>"}
+

+ The property "UserName" on resource type ManagerAccount may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+
+

+ POST Action "AddSSHPublicKey" +

+
+
+ +
+

+ Parameter "KeyData" +

+

+ "KeyData" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "AddSSHPublicKey", + "KeyData": "", + "Target": "/Oem/Hp"} +
+

+ POST Action "RemoveSSHPublicKey" +

+
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "RemoveSSHPublicKey", + "Target": "/Oem/Hp"} +
+

+ "ManagerGroup" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ManagerGroup" defines the following properties: +

+

+ "Oem/Hp/GroupName" +

+
+

+ This property is a member of ManagerGroup

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"GroupName": "<string-value>"}}}
+

+ The property "Oem/Hp/GroupName" on resource type ManagerGroup may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/GroupPrivilege" +

+
+

+ This property is a member of ManagerGroup

+
User privilege compatible with iLO CM CLI.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Administrator" +
+ "User" +
+ "Operator" +
+ "None" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"GroupPrivilege": "Operator"}}}
+

+ The property "Oem/Hp/GroupPrivilege" on resource type ManagerGroup may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/CartridgeAccessPriv" +

+
+

+ This property is a member of ManagerGroup

+
This privilege enables a user to access one or more of the cartridges in the chassis.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"CartridgeAccessPriv": "<string-value>"}}}}
+

+ The property "Oem/Hp/Privileges/CartridgeAccessPriv" on resource type ManagerGroup may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/ChassisAccessPriv" +

+
+

+ This property is a member of ManagerGroup

+
This privilege enables a user to access properties in the chassis.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"ChassisAccessPriv": true}}}}
+

+ The property "Oem/Hp/Privileges/ChassisAccessPriv" on resource type ManagerGroup may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/Privileges/SwitchAccessPriv" +

+
+

+ This property is a member of ManagerGroup

+
This privilege enables a user to access one or more of the switches in the chassis.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"Privileges": {"SwitchAccessPriv": "<string-value>"}}}}
+

+ The property "Oem/Hp/Privileges/SwitchAccessPriv" on resource type ManagerGroup may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/SID" +

+
+

+ This property is a member of ManagerGroup

+
Descriptive login name that helps to easily identify the owner of each user name. The login name does not have to be the same as the user name and must use printable characters. The maximum length for a user name is 39 characters.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"SID": "<string-value>"}}}
+

+ The property "Oem/Hp/SID" on resource type ManagerGroup may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+
+

+ "ManagerNetworkService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

This resource is used to obtain or modify the network services managed by this manager.

+
+ +
+

+ "ManagerNetworkService" defines the following properties: +

+

+ "FQDN" +

+
+

+ This property is a member of ManagerNetworkService

+
The fully-qualified domain name of the manager that is obtained by DNS and includes the host name and top-level domain name.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "HTTP/Enabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether HTTP is enabled or disabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "HTTP/Port" +

+
+

+ This property is a member of ManagerNetworkService

+
The HTTP port number.
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"HTTP": {"Port": <integer-value>}}
+

+ The property "HTTP/Port" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "HTTPS/Enabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether HTTPS/SSL is enabled or disabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "HTTPS/Port" +

+
+

+ This property is a member of ManagerNetworkService

+
The HTTPS/SSL port number.
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"HTTPS": {"Port": <integer-value>}}
+

+ The property "HTTPS/Port" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "HostName" +

+
+

+ This property is a member of ManagerNetworkService

+
The host name of the manager that is obtained by DNS and does not include any domain information.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"HostName": "<string-value>"}
+

+ The property "HostName" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "IPMI/Enabled" +

+
+

+ This property is a member of ManagerNetworkService

+
IPMI enable
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"IPMI": {"Enabled": true}}
+

+ The property "IPMI/Enabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "IPMI/Port" +

+
+

+ This property is a member of ManagerNetworkService

+
IPMI port number
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/AlertMailEmail" +

+
+

+ This property is a member of ManagerNetworkService

+
The destination email address for email alerts.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"AlertMailEmail": "<string-value>"}}}
+

+ The property "Oem/Hp/AlertMailEmail" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/AlertMailEnabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether AlertMail is enabled. This can be enabled only when the properties AlertMailEmail, AlertMailSenderDomain and AlertMailSMTPServer are set or not empty.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"AlertMailEnabled": true}}}
+

+ The property "Oem/Hp/AlertMailEnabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/AlertMailSMTPPort" +

+
+

+ This property is a member of ManagerNetworkService

+
The SMTP server port number.
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"AlertMailSMTPPort": <integer-value>}}}
+

+ The property "Oem/Hp/AlertMailSMTPPort" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/AlertMailSMTPServer" +

+
+

+ This property is a member of ManagerNetworkService

+
The IP address or DNS name of the SMTP server or the Mail Submission Agent (MSA).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"AlertMailSMTPServer": "<string-value>"}}}
+

+ The property "Oem/Hp/AlertMailSMTPServer" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/AlertMailSenderDomain" +

+
+

+ This property is a member of ManagerNetworkService

+
The domain name for the sender email address.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"AlertMailSenderDomain": "<string-value>"}}}
+

+ The property "Oem/Hp/AlertMailSenderDomain" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/ConfigurationSettings" +

+
+

+ This property is a member of ManagerNetworkService

+
State of the currently displayed configuration settings.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Current" +
+ "SomePendingReset" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/FederationEnabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether management processor federation management is enabled or disabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"FederationEnabled": true}}}
+

+ The property "Oem/Hp/FederationEnabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/FederationSupported" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether management processor federation is supported.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/HPSystemManagementHomepageAddress" +

+
+

+ This property is a member of ManagerNetworkService

+
The IP address or FQDN of the HP System Management Homepage (HP SMH) server.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"HPSystemManagementHomepageAddress": "<string-value>"}}}
+

+ The property "Oem/Hp/HPSystemManagementHomepageAddress" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/RemoteSyslogEnabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether Remote Syslog is enabled. When enabled, management processor sends notification messages to the specified Syslog server. This can be enabled only when the property RemoteSyslogServer is set or not empty.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"RemoteSyslogEnabled": true}}}
+

+ The property "Oem/Hp/RemoteSyslogEnabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/RemoteSyslogPort" +

+
+

+ This property is a member of ManagerNetworkService

+
The port number through which the Syslog server is listening.
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"RemoteSyslogPort": <integer-value>}}}
+

+ The property "Oem/Hp/RemoteSyslogPort" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/RemoteSyslogServer" +

+
+

+ This property is a member of ManagerNetworkService

+
The IP address, FQDN, IPv6 name, or short name of the server running the Syslog service.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"RemoteSyslogServer": "<string-value>"}}}
+

+ The property "Oem/Hp/RemoteSyslogServer" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/SNMPTrapPort" +

+
+

+ This property is a member of ManagerNetworkService

+
The SNMP trap port number.
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"SNMPTrapPort": <integer-value>}}}
+

+ The property "Oem/Hp/SNMPTrapPort" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/SerialOverLanLogging" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether Serial Over LAN (SOL) or Virtual Serial Port (VSP) logging is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"SerialOverLanLogging": true}}}
+

+ The property "Oem/Hp/SerialOverLanLogging" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/TFTPServerEnabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates whether TFTP server is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"TFTPServerEnabled": true}}}
+

+ The property "Oem/Hp/TFTPServerEnabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/XMLResponseEnabled" +

+
+

+ This property is a member of ManagerNetworkService

+
Determines whether management processor responds to anonymous XML discovery requests.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"XMLResponseEnabled": true}}}
+

+ The property "Oem/Hp/XMLResponseEnabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SSDP/Enabled" +

+
+

+ This property is a member of ManagerNetworkService

+
SSDP enable
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SSDP": {"Enabled": true}}
+

+ The property "SSDP/Enabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SSDP/NotifyMulticastIntervalSeconds" +

+
+

+ This property is a member of ManagerNetworkService

+
The time interval, in seconds, between transmissions of the multicast NOTIFY ALIVE message. A setting of 0 seconds disables this functionality. The recommended value is 600 seconds.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SSDP": {"NotifyMulticastIntervalSeconds": <integer-value>}}
+

+ The property "SSDP/NotifyMulticastIntervalSeconds" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SSDP/NotifyTTL" +

+
+

+ This property is a member of ManagerNetworkService

+
The Time-To-Live hop count used for multicast NOTIFY messages. The recommended value is 5.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SSDP": {"NotifyTTL": <integer-value>}}
+

+ The property "SSDP/NotifyTTL" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SSDP/Port" +

+
+

+ This property is a member of ManagerNetworkService

+
SSDP port number
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SSH/Enabled" +

+
+

+ This property is a member of ManagerNetworkService

+
SSH enable
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SSH": {"Enabled": true}}
+

+ The property "SSH/Enabled" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SSH/Port" +

+
+

+ This property is a member of ManagerNetworkService

+
SSH port number
+
+
+ +
+

+
+
JSON type:
+
Integer + from 1 to 65535. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SSH": {"Port": <integer-value>}}
+

+ The property "SSH/Port" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SessionTimeoutMinutes" +

+
+

+ This property is a member of ManagerNetworkService

+
The session timeout (minutes). A zero value indicates infinite timeout.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SessionTimeoutMinutes": <integer-value>}
+

+ The property "SessionTimeoutMinutes" on resource type ManagerNetworkService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Status/Health" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of ManagerNetworkService

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "TestAlertMail" +

+
Test AlertMail feature with current settings.
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "TestAlertMail", + "Target": "/Oem/Hp"} +
+

+ POST Action "TestRemoteSyslog" +

+
Test Remote Syslog feature with current settings.
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "TestRemoteSyslog", + "Target": "/Oem/Hp"} +
+

+ "ManagerRepositoryService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ManagerRepositoryService" defines the following properties: +

+

+ "Oem/Hp/Details" +

+
+

+ This property is a member of ManagerRepositoryService

+
see 1.51
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ImageType" +

+
+

+ This property is a member of ManagerRepositoryService

+
see 1.51
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/State" +

+
+

+ This property is a member of ManagerRepositoryService

+
see 1.51
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "RepositoryAddFromURI" +

+
+
+ +
+

+ Parameter "FirmwareURI" +

+

+ "FirmwareURI" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "RepositoryAddFromURI", + "FirmwareURI": "", + "Target": "/Oem/Hp"} +
+

+ POST Action "RemoveFromRepository" +

+
+
+ +
+

+ Parameter "FirmwareFileName" +

+

+ "FirmwareFileName" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "RemoveFromRepository", + "FirmwareFileName": "", + "Target": "/Oem/Hp"} +
+

+ POST Action "ScriptAddFromURI" +

+
+
+ +
+

+ Parameter "ScriptURI" +

+

+ "ScriptURI" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "ScriptAddFromURI", + "ScriptURI": "", + "Target": "/Oem/Hp"} +
+

+ POST Action "RemoveScriptFromRepository" +

+
+
+ +
+

+ Parameter "ScriptFileName" +

+

+ "ScriptFileName" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "RemoveScriptFromRepository", + "ScriptFileName": "", + "Target": "/Oem/Hp"} +
+

+ "ManagerSerial" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ManagerSerial" defines the following properties: +

+

+ "BaudRate" +

+
+

+ This property is a member of ManagerSerial

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "DataBits" +

+
+

+ This property is a member of ManagerSerial

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"DataBits": <integer-value>}
+

+ The property "DataBits" on resource type ManagerSerial may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Parity" +

+
+

+ This property is a member of ManagerSerial

+
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "None" +
+ "Even" +
+ "Odd" +
+ "Space" +
+ "Mark" +
+ "Unknown" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Parity": "Space"}
+

+ The property "Parity" on resource type ManagerSerial may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SerialEnabled" +

+
+

+ This property is a member of ManagerSerial

+
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "StopBits" +

+
+

+ This property is a member of ManagerSerial

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"StopBits": <integer-value>}
+

+ The property "StopBits" on resource type ManagerSerial may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+
+

+ "ManagerUpdateService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "ManagerUpdateService" defines the following properties: +

+

+ "Oem/Hp/CompletionInstructions" +

+
+

+ This property is a member of ManagerUpdateService

+
Completion instructions embedded in the binary flash file.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Details" +

+
+

+ This property is a member of ManagerUpdateService

+
Details about the current firmware flash status.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Flags" +

+
+

+ This property is a member of ManagerUpdateService

+
Other flags.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "NONE" +
+ "RESET_ILO" +
+ "REQUEST_SYSTEM_COLD_BOOT" +
+ "REQUEST_SYSTEM_WARM_BOOT" +
+ "DEFERRED_AUX_PWR_CYCLE" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ImageType" +

+
+

+ This property is a member of ManagerUpdateService

+
Firmware flash image type.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "NO_DEVICE" +
+ "ILO_DEVICE" +
+ "ILO_DEVICE_FIRMWARE" +
+ "ILO_DEVICE_LANGPK" +
+ "ILO_DEVICE_DEBUGGER" +
+ "BIOS_DEVICE" +
+ "SCD_DEVICE" +
+ "CPLD_DEVICE" +
+ "CARB_DEVICE" +
+ "PM_DEVICE" +
+ "UNKNOWN" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/ProgressPercent" +

+
+

+ This property is a member of ManagerUpdateService

+
Firmware flash progress.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/State" +

+
+

+ This property is a member of ManagerUpdateService

+
Current state of the firmware flash.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "IDLE" +
+ "UPLOADING" +
+ "PROGRESSING" +
+ "COMPLETED" +
+ "ERROR" +
+ "NOT AUTHORIZED" +
+ "NO ACTION" +
+ "PENDING" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UpdateStatus[]/CompletionStatus" +

+
+

+ This property is a member of ManagerUpdateService

+
Completion status of the firmware flash for this item.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UpdateStatus[]/ProgressPercent" +

+
+

+ This property is a member of ManagerUpdateService

+
Firmware flash progress.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UpdateStatus[]/SlotOrBayNumber" +

+
+

+ This property is a member of ManagerUpdateService

+
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 1. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UpdateStatus[]/State" +

+
+

+ This property is a member of ManagerUpdateService

+
Current state of the firmware flash.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "IDLE" +
+ "UPLOADING" +
+ "PROGRESSING" +
+ "COMPLETED" +
+ "ERROR" +
+ "NOT SELECTED FOR UPDATE" +
+ "EMPTY SLOT" +
+ "NOT AUTHORIZED" +
+ "NO ACTION" +
+ "PENDING" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/links/UpdateUri/extref" +

+
+

+ This property is a member of ManagerUpdateService

+
The URI of an external resource.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ POST Action "ClearUpdateStatus" +

+
+
+ +
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "ClearUpdateStatus", + "Target": "/Oem/Hp"} +
+

+ POST Action "InstallFromURI" +

+
+
+ +
+

+ Parameter "FirmwareURI" +

+

+ "FirmwareURI" must be one of the following value(s): +

+
+

+ Parameter "UpdateTargets" +

+

+ "UpdateTargets" must be one of the following value(s): +

+
+

+ Parameter "ForceUpdate" +

+

+ "ForceUpdate" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "InstallFromURI", + "FirmwareURI": "", + "UpdateTargets": "", + "ForceUpdate": , + "Target": "/Oem/Hp"} +
+

+ POST Action "InstallParameters" +

+
+
+ +
+

+ Parameter "FirmwareFileName" +

+

+ "FirmwareFileName" must be one of the following value(s): +

+
+

+ Parameter "UpdateTargets" +

+

+ "UpdateTargets" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "InstallParameters", + "FirmwareFileName": "", + "UpdateTargets": "", + "Target": "/Oem/Hp"} +
+

+ POST Action "InstallFromRepository" +

+
+
+ +
+

+ Parameter "FirmwareFileName" +

+

+ "FirmwareFileName" must be one of the following value(s): +

+
+

+ Parameter "UpdateTargets" +

+

+ "UpdateTargets" must be one of the following value(s): +

+
+

+ Parameter "ForceUpdate" +

+

+ "ForceUpdate" must be one of the following value(s): +

+
+

+ Parameter "Target" +

+

+ "Target" must be one of the following value(s): +

+ + + + +
+ "/Oem/Hp" +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "InstallFromRepository", + "FirmwareFileName": "", + "UpdateTargets": "", + "ForceUpdate": , + "Target": "/Oem/Hp"} +
+

+ "MoonshotPowerMetrics" Resource Type +

+

+ Resource Instances +

+ + + +

+ See Resource Map for more details. +

+

+
+ +
+

+ "MoonshotPowerMetrics" defines the following properties: +

+

+ "Oem/Hp/InstantWattage" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MaximumWattage" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/PowercapDescription" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Powercap description.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/PowercapMode" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Powercap Mode.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Oem": {"Hp": {"PowercapMode": <integer-value>}}}
+

+ The property "Oem/Hp/PowercapMode" on resource type MoonshotPowerMetrics may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Oem/Hp/WattageHistoryLevel[]/Counter" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/WattageHistoryLevel[]/Cumulator" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/WattageHistoryLevel[]/SampleType" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Describes the sample type (time span and sample interval).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/WattageHistoryLevel[]/Samples[]/Wattage" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/WattageHistoryLevel[]/Samples[]/WattageInt" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerAllocatedWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
This is the total power allocated to the chassis, in Watts.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerAvailableWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Amount of power not already budgeted and therefore available for additional allocation, in watts. (powerCapacity - powerAllocated). This indicates how much reserve power capacity is left.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerCapacityWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
This is the total power available to the chassis from all power supplies (adjusting for redundancy settings), in Watts.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerConsumedWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The latest observed power being drawn by this chassis, in Watts. The update interval may vary depending upon implementation but is usually measured in seconds.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerLimit/CorrectionInMs" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Time in milliseconds that it takes for the limiting process to react and correct the power consumption below the limit.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerLimit/LimitException" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Action that is taken if the power cannot be maintained below the LimitInWatts.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "NoAction" +
+ "HardPowerOff" +
+ "LogEventOnly" +
+ "Oem" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"PowerLimit": {"LimitException": "LogEventOnly"}}
+

+ The property "PowerLimit/LimitException" on resource type MoonshotPowerMetrics may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "PowerLimit/LimitInWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Power limit (also known as 'Power Cap') in Watts. Set to null to disable the power cap.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"PowerLimit": {"LimitInWatts": <integer-value>}}
+

+ The property "PowerLimit/LimitInWatts" on resource type MoonshotPowerMetrics may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "PowerMetrics/AverageConsumedWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Average power consumed during the interval specified by 'IntervalInMin'.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerMetrics/IntervalInMin" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The interval between power metric evaluation in minutes.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerMetrics/MaxConsumedWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Maximum power consumed during the interval specified by 'IntervalInMin'.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerMetrics/MinConsumedWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Minimum power consumed during the interval specified by 'IntervalInMin'.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerRequestedWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Potential power that the chassis is requesting, in Watts, which may be higher than the current level being consumed since requested power includes budget that the chassis has reserved for future use.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/ACInputStatus" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the type of fault present.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Failed" +
+ "OK" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/FirmwareVersion" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Firmware version of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/LastPowerOutputWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Average power consumed, in watts.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/LineInputVoltage" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Line input voltage at which the power supply is operating at this moment (in Volts).
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/LineInputVoltageType" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Line voltage type: ACLowLine, ACMidLine, ACHighLine, DCNeg48V, DC420V, or Unknown.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "ACLowLine" +
+ "ACMidLine" +
+ "ACHighLine" +
+ "DCNeg48V" +
+ "DC480V" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/Model" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Model name of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/Oem/Hp/AveragePowerOutputWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The latest observed average power being drawn by the power supply (Watts). This is usually updated every 10 seconds but the period can vary in some circumstances.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/BayNumber" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The power supply bay number.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/HotplugCapable" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
If true, this power supply (and power supply bay) is capable of being hot-plugged.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/MaxPowerOutputWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The latest observed maximum output power being drawn by the power supply (Watts). This is usually updated every 10 seconds but the period can vary in some circumstances.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/Mismatched" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
If true, this power supply is mismatched with others in the system.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/PowerSupplyStatus/State" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the known state of the resource.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "OK" +
+ "Degraded" +
+ "Failed" +
+ "OverVoltage" +
+ "OverCurrent" +
+ "OverTemperature" +
+ "ACPowerLost" +
+ "FanFailure" +
+ "WarningHighInputVoltage" +
+ "WarningLowInputVoltage" +
+ "WarningHighOutputVoltage" +
+ "WarningLowOutputVoltage" +
+ "WarningInletTemperature" +
+ "WarningInternalTemperature" +
+ "WarningHighAuxiliaryVoltage" +
+ "WarningLowAuxiliaryVoltage" +
+ "PowerSupplyMismatch" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/iPDU/IPAddress" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The IP address of the iPDU connected to this power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/Oem/Hp/iPDU/MacAddress" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The Ethernet MAC address of the iPDU connected to this power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/Oem/Hp/iPDU/Model" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The model number of the iPDU connected to this power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/iPDU/SerialNumber" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
The serial number of the iPDU connected to this power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/iPDU/iPDUStatus/State" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the known state of the resource.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "OK" +
+ "Degraded" +
+ "Failed" +
+ "OverVoltage" +
+ "OverCurrent" +
+ "OverTemperature" +
+ "ACPowerLost" +
+ "FanFailure" +
+ "WarningHighInputVoltage" +
+ "WarningLowInputVoltage" +
+ "WarningHighOutputVoltage" +
+ "WarningLowOutputVoltage" +
+ "WarningInletTemperature" +
+ "WarningInternalTemperature" +
+ "WarningHighAuxiliaryVoltage" +
+ "WarningLowAuxiliaryVoltage" +
+ "PowerSupplyMismatch" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Oem/Hp/iPDUCapable" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
If true, this power supply is capable of being connected to an iPDUs.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/PartNumber" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Part number of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/PowerCapacityWatts" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Power capacity of the power supply, in watts.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/PowerSupplyType" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Power supply type: AC, DC, or Unknown.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Unknown" +
+ "AC" +
+ "DC" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/SerialNumber" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Serial number of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/SparePartNumber" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Spare part number of the power supply.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "PowerSupplies[]/Status/Health" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/HealthRollUp" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "PowerSupplies[]/Status/State" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/Health" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/HealthRollUp" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Status/State" +

+
+

+ This property is a member of MoonshotPowerMetrics

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "SecurityBanner" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "SecurityBanner" defines the following properties: +

+

+ "LoginSecurityBannerEnabled" +

+
+

+ This property is a member of SecurityBanner

+
The login security banner message will be displayed on the management processor Login page.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"LoginSecurityBannerEnabled": true}
+

+ The property "LoginSecurityBannerEnabled" on resource type SecurityBanner may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SecurityMessage" +

+
+

+ This property is a member of SecurityBanner

+
The login security banner message that is displayed on the management processor Login page.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SecurityMessage": "<string-value>"}
+

+ The property "SecurityMessage" on resource type SecurityBanner may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+
+

+ "ServiceRoot" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

This object represents the HP RESTful API root service.

+
+ +
+

+ "ServiceRoot" defines the following properties: +

+

+ "Oem/Hp/Manager[]/Blade/BayNumber" +

+
+

+ This property is a member of ServiceRoot

+
Specifies the location of the blade in the enclosure.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/Blade/EnclosureName" +

+
+

+ This property is a member of ServiceRoot

+
Specifies the name of the enclosure in which the blade is present.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/Blade/RackName" +

+
+

+ This property is a member of ServiceRoot

+
Specifies the name of the rack in which the enclosure is present.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/DefaultLanguage" +

+
+

+ This property is a member of ServiceRoot

+
Default language used for the Web interface.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/FQDN" +

+
+

+ This property is a member of ServiceRoot

+
Fully qualified domain name of the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/HostName" +

+
+

+ This property is a member of ServiceRoot

+
The name of management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/Languages[]/Language" +

+
+

+ This property is a member of ServiceRoot

+
Specifies one of the languages supported by the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/Languages[]/TranslationName" +

+
+

+ This property is a member of ServiceRoot

+
Specifies one of the languages supported by the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/Languages[]/Version" +

+
+

+ This property is a member of ServiceRoot

+
Specifies the version of the management processor in the respective language.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/ManagerFirmwareVersion" +

+
+

+ This property is a member of ServiceRoot

+
The major and minor management processor version numbers.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/ManagerFirmwareVersionPass" +

+
+

+ This property is a member of ServiceRoot

+
The build or pass number of the management processor version.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Manager[]/ManagerType" +

+
+

+ This property is a member of ServiceRoot

+
The type of the service manager.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/CertCommonName" +

+
+

+ This property is a member of ServiceRoot

+
The name of the management processor as it appears in the digital certificate when a secure web GUI session is established to the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/KerberosEnabled" +

+
+

+ This property is a member of ServiceRoot

+
Specifies whether Kerberos login is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LDAPAuthLicenced" +

+
+

+ This property is a member of ServiceRoot

+
Specifies whether a valid license is installed for LDAP use.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LDAPEnabled" +

+
+

+ This property is a member of ServiceRoot

+
Specifies whether LDAP login is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LocalLoginEnabled" +

+
+

+ This property is a member of ServiceRoot

+
Specifies whether local users can log in.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LoginFailureDelay" +

+
+

+ This property is a member of ServiceRoot

+
The delay (seconds) when a management processor login attempt has failed.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LoginHint/Hint" +

+
+

+ This property is a member of ServiceRoot

+
The information on how to log in to the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LoginHint/HintPOSTData/Password" +

+
+

+ This property is a member of ServiceRoot

+
The password for logging in to the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/LoginHint/HintPOSTData/UserName" +

+
+

+ This property is a member of ServiceRoot

+
The user name for logging in to the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/SecurityMessage" +

+
+

+ This property is a member of ServiceRoot

+
The login security banner message that is displayed on the management processor Login page.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/SecurityOverride" +

+
+

+ This property is a member of ServiceRoot

+
Specifies whether the security override switch is enabled.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Sessions/ServerName" +

+
+

+ This property is a member of ServiceRoot

+
The name of the server that this management processor is managing.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "ServiceVersion" +

+
+

+ This property is a member of ServiceRoot

+
The web service version. This is different from the version of the data model.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "0.9.5" +
+ "0.91.0" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Time" +

+
+

+ This property is a member of ServiceRoot

+
The current web service time.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "UUID" +

+
+

+ This property is a member of ServiceRoot

+
Unique identifier for a service instance. This value should be an exact match of the UUID value returned in a 200OK from an SSDP M-SEARCH request during discovery.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+
+

+ "Session" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "Session" defines the following properties: +

+

+ "Oem/Hp/AccessTime" +

+
+

+ This property is a member of Session

+
User session last-access time
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/LoginTime" +

+
+

+ This property is a member of Session

+
User session login time
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/MySession" +

+
+

+ This property is a member of Session

+
Indicates whether this is a session I own.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/CartridgeAccessPriv" +

+
+

+ This property is a member of Session

+
This access privilege enables a user to see and modify cartridge(s).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/ChassisAccessPriv" +

+
+

+ This property is a member of Session

+
This access privilege enables a user to change Moonshot Chassis settings.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/LoginPriv" +

+
+

+ This property is a member of Session

+
This privilege enables a user to log in to the management processor. All local accounts have the login privilege. This privilege is added automatically if it is not specified.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/RemoteConsolePriv" +

+
+

+ This property is a member of Session

+
This privilege enables a user to remotely access the host system Remote Console, including video, keyboard, and mouse control.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/SwitchAccessPriv" +

+
+

+ This property is a member of Session

+
This access privilege enables a user to see and modify cartridge(s).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/UserConfigPriv" +

+
+

+ This property is a member of Session

+
This privilege enables a user to add, edit, and delete local management processor user accounts. A user with this privilege can change privileges for all users.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/VirtualMediaPriv" +

+
+

+ This property is a member of Session

+
This privilege enables a user to use the Virtual Media feature on the host system.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/VirtualPowerAndResetPriv" +

+
+

+ This property is a member of Session

+
This privilege enables a user to power-cycle or reset the host system. These activities interrupt system availability. A user with this privilege can diagnose the system by using the Generate NMI to System button.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/Privileges/iLOConfigPriv" +

+
+

+ This property is a member of Session

+
This privilege enables a user to configure most management processor settings, including security settings, and to remotely update the management processor firmware. This privilege does not enable local user account administration.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UserAccount" +

+
+

+ This property is a member of Session

+
Login details of the user
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UserDistinguishedName" +

+
+

+ This property is a member of Session

+
LDAP user is identified by its distinguished name (DN).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UserExpires" +

+
+

+ This property is a member of Session

+
User session expire time
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UserIP" +

+
+

+ This property is a member of Session

+
IP address of the user
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UserTag" +

+
+

+ This property is a member of Session

+
Session source
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Web UI" +
+ "RBSU" +
+ "Remote Console" +
+ "SSH" +
+ "IPMI/RMCP" +
+ "SM-CLP" +
+ "RIBCL" +
+ "Unknown" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Oem/Hp/UserType" +

+
+

+ This property is a member of Session

+
User type
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Local" +
+ "Directory" +
+ "Single Sign On" +
+ "Kerberos" +
+ "Trusted Key" +
+ "Security Override" +
+ "System" +
+ "Federation" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "UserName" +

+
+

+ This property is a member of Session

+
Name to use to log in to the management processor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+
+

+ "SnmpService" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "SnmpService" defines the following properties: +

+

+ "AlertCommunityString" +

+
+

+ This property is a member of SnmpService

+
The string of up to 216 characters that describes the alert community string.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"AlertCommunityString": "<string-value>"}
+

+ The property "AlertCommunityString" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "AlertsEnabled" +

+
+

+ This property is a member of SnmpService

+
The alert conditions that the management processor detects independently of the host operating system can be sent to specified SNMP alert destinations, such as HP SIM.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"AlertsEnabled": true}
+

+ The property "AlertsEnabled" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Contact" +

+
+

+ This property is a member of SnmpService

+
The string of up to 49 characters that specifies the system administrator or server owner. The string can include a name, email address, or phone number.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Contact": "<string-value>"}
+

+ The property "Contact" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Location" +

+
+

+ This property is a member of SnmpService

+
The string of up to 49 characters that specifies the physical location of the server.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Location": "<string-value>"}
+

+ The property "Location" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Mode" +

+
+

+ This property is a member of SnmpService

+
Agentless Management Mode (default): Use SNMP agents running on the management processor to manage the server. SNMP Pass-thru Mode: Use SNMP agents running on the host operating system to manage the server. This setting does not affect alerts.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Agentless" +
+ "Passthru" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Mode": "Passthru"}
+

+ The property "Mode" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "Role" +

+
+

+ This property is a member of SnmpService

+
The string of up to 64 characters that describes the server role or function.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"Role": "<string-value>"}
+

+ The property "Role" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "RoleDetail" +

+
+

+ This property is a member of SnmpService

+
The string of up to 512 characters that describes specific tasks that the server might perform.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"RoleDetail": "<string-value>"}
+

+ The property "RoleDetail" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SNMPv1Traps" +

+
+

+ This property is a member of SnmpService

+
When enabled, SNMPv1 traps are sent to the remote management systems configured in the SNMP Alert Destination(s) boxes.
+
+
+ +
+

+
+
JSON type:
+
+ Boolean ('true' or 'false') +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SNMPv1Traps": true}
+

+ The property "SNMPv1Traps" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "SNMPv3EngineID" +

+
+

+ This property is a member of SnmpService

+
The SNMPv3 Engine ID is the unique identifier of an SNMP engine that belongs to an SNMP agent entity. This value must be a hexadecimal string with an even number of 6 to 32 characters, excluding the first two characters, 0x (for example, 0x01020304abcdef).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"SNMPv3EngineID": "<string-value>"}
+

+ The property "SNMPv3EngineID" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+

+ "TrapSourceHostname" +

+
+

+ This property is a member of SnmpService

+
Determines the host name that is used in the SNMP-defined sysName variable when the management processor generates SNMP traps.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Manager" +
+ "System" +
+
+
+ +

HTTP Operations

+ + + + + + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
PATCH + This property may be PATCHed if the resource instance of this type supports PATCH in the HTTP Allow headers. +
+

PATCH Example

+

HTTP PATCH to resource with request JSON:

+
{"TrapSourceHostname": "System"}
+

+ The property "TrapSourceHostname" on resource type SnmpService may + not support PATCH of all values and may result in an HTTP 400 error with response of Type ExtendedError. + Multiple properties may be included in a single HTTP PATCH operation as long as the request is properly formatted JSON. To address an array entry other than the first, insert nulls as placeholders + on skipped array entries. +

+
+
+

+ POST Action "SendSNMPTestAlert" +

+
+
+ +
+

Example

+

HTTP POST to resource with request JSON:

+
+ { + "Action": "SendSNMPTestAlert"} +
+

+ "SystemsSummary" Resource Type +

+

+ Resource Instances +

+ +

+ See Resource Map for more details. +

+

+
+ +
+

+ "SystemsSummary" defines the following properties: +

+

+ "SystemsInChassis" +

+
+

+ This property is a member of SystemsSummary

+
The total number of systems (nodes) in the physical chassis.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "SystemsOnThisPage" +

+
+

+ This property is a member of SystemsSummary

+
The number of systems (nodes) presented on this page.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Health" +

+
+

+ This property is a member of SystemsSummary

+
OK
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Memory" +

+
+

+ This property is a member of SystemsSummary

+
32 GB
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Model" +

+
+

+ This property is a member of SystemsSummary

+
This is the model information that the manufacturer uses to refer to this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Systems[]/NodeOptions" +

+
+

+ This property is a member of SystemsSummary

+
+
+
+ +
+

+
+
JSON type:
+
Object
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Systems[]/Options/BSC" +

+
+

+ This property is a member of SystemsSummary

+
BIOS Serial Console
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "enabled" +
+ "disabled" +
+ "DISABLE" +
+ "ENABLE" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Options/BootOnce" +

+
+

+ This property is a member of SystemsSummary

+
The current boot source to be used at next boot instead of the normal boot device
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "None" +
+ "HDD" +
+ "PXE" +
+ "iSCSI" +
+ "M.2" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Options/CPU/ClockRate/CurrentFrequency" +

+
+

+ This property is a member of SystemsSummary

+
Current CPU clock rate
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Options/CPU/HyperThreading" +

+
+

+ This property is a member of SystemsSummary

+
Intel CPU HyperThreading
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "enabled" +
+ "disabled" +
+ "DISABLE" +
+ "ENABLE" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Options/WOL" +

+
+

+ This property is a member of SystemsSummary

+
Wake On LAN
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/Power" +

+
+

+ This property is a member of SystemsSummary

+
On/Off
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/ProcessorFamily" +

+
+

+ This property is a member of SystemsSummary

+
ARM Architecture
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/ProcessorManufacturer" +

+
+

+ This property is a member of SystemsSummary

+
AppliedMicro (APM)
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Systems[]/SKU" +

+
+

+ This property is a member of SystemsSummary

+
The manufacturer's SKU for this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Systems[]/SerialNumber" +

+
+

+ This property is a member of SystemsSummary

+
The serial number for this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Systems[]/UUID" +

+
+

+ This property is a member of SystemsSummary

+
The universal unique identifier for this system.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+
+

+ "ThermalMetrics" Resource Type +

+

+ Resource Instances +

+ + + +

+ See Resource Map for more details. +

+

The schema definition for the Thermal Metrics. It represents the properties for temperature and cooling.

+
+ +
+

+ "ThermalMetrics" defines the following properties: +

+

+ "Fans[]/CorrelatableID" +

+
+

+ This property is a member of ThermalMetrics

+
The CorrelatableID for this fan.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/CurrentReading" +

+
+

+ This property is a member of ThermalMetrics

+
The current speed of the fan.
+
+
+ +
+

+
+
JSON type:
+
Integer + greater than or equal to 0. +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/FanName" +

+
+

+ This property is a member of ThermalMetrics

+
The name of the fan sensor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/LowerThresholdCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Below normal range but not yet fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/LowerThresholdFatal" +

+
+

+ This property is a member of ThermalMetrics

+
Below normal range and is fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/LowerThresholdNonCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Below normal range.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/MaximumValue" +

+
+

+ This property is a member of ThermalMetrics

+
Maximum value for CurrentReading.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/MinimumValue" +

+
+

+ This property is a member of ThermalMetrics

+
Minimum value for CurrentReading.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/Oem/Hp/Location" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the component (i.e. CPU, Memory, and Storage) that the fan is being used to cool.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "System" +
+ "System Board" +
+ "I/O Board" +
+ "CPU" +
+ "Memory" +
+ "Storage" +
+ "Removable Media" +
+ "Power Supply" +
+ "Ambient" +
+ "Chassis" +
+ "Bridge Board" +
+ "Exhaust" +
+ "Processor Bay" +
+ "IO Bay" +
+ "Blade Slot" +
+ "Virtual" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/ProductName" +

+
+

+ This property is a member of ThermalMetrics

+
see legacy json 'health_fans' prop 'label'
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Status/Health" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Status/HealthRollUp" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Status/State" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Fans[]/Units" +

+
+

+ This property is a member of ThermalMetrics

+
Units for the CurrentReading.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "RPM" +
+ "Percent" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/UpperThresholdCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Above normal range but not yet fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/UpperThresholdFatal" +

+
+

+ This property is a member of ThermalMetrics

+
Above normal range and is fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Fans[]/UpperThresholdNonCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Above normal range.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/CorrelatableID" +

+
+

+ This property is a member of ThermalMetrics

+
The CorrelatableID for this temperature sensor.
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/CurrentReading" +

+
+

+ This property is a member of ThermalMetrics

+
The current reading of the temperature sensor.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/LowerThresholdCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Below normal range but not yet fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/LowerThresholdFatal" +

+
+

+ This property is a member of ThermalMetrics

+
Below normal range and is fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/LowerThresholdNonCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Below normal range.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/MaximumValue" +

+
+

+ This property is a member of ThermalMetrics

+
Maximum value for CurrentReading.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/MinimumValue" +

+
+

+ This property is a member of ThermalMetrics

+
Minimum value for CurrentReading.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/Number" +

+
+

+ This property is a member of ThermalMetrics

+
A numerical identifier to represent the temperature sensor.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/Status/Health" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the health state of this resource without considering its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+ "Error" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/Status/HealthRollUp" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the overall health state of this resource and its dependent resources.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "OK" +
+ "Warning" +
+ "Critical" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/Status/State" +

+
+

+ This property is a member of ThermalMetrics

+
Indicates the known state of this resource (for example, if the resource is enabled). Enabled indicates that the resource is available. Disabled indicates that the resource has been made unavailable intentionally, but it can be enabled. Offline indicates that the resource is unavailable intentionally and requires action to be made available. InTest indicates that the component is undergoing testing. Starting indicates that the resource is on its way to becoming available. Absent indicates that the resource is physically unavailable.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Critical" +
+ "Enabled" +
+ "Disabled" +
+ "Offline" +
+ "InTest" +
+ "Starting" +
+ "Absent" +
+ "Uninitialized" +
+ "OK" +
+ "Not Installed" +
+ "Failed" +
+ "Degraded" +
+ "Removed" +
+ "Redundant" +
+ "Not Redundant" +
+ "Insufficient to Operate" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/TemperatureHistoryLevel[]/Counter" +

+
+

+ This property is a member of ThermalMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/TemperatureHistoryLevel[]/Cumulator" +

+
+

+ This property is a member of ThermalMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/TemperatureHistoryLevel[]/SampleType" +

+
+

+ This property is a member of ThermalMetrics

+
Describes the sample type (time span and sample interval).
+
+
+ +
+

+
+
JSON type:
+
String
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/TemperatureHistoryLevel[]/Samples[]/Temperature" +

+
+

+ This property is a member of ThermalMetrics

+
The reset type to be performed.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. +
+
+

+ "Temperatures[]/Units" +

+
+

+ This property is a member of ThermalMetrics

+
The temperature sensor's units.
+
+
+ +
+

+
+
JSON type:
+
+ String containing one of the following supported values: + +
+ "Celsius" +
+ "Fahrenheit" +
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/UpperThresholdCritical" +

+
+

+ This property is a member of ThermalMetrics

+
Above normal range but not yet fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/UpperThresholdFatal" +

+
+

+ This property is a member of ThermalMetrics

+
Above normal range and is fatal.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+

+ "Temperatures[]/UpperThresholdNonCritical" +

+
+

+ This property is a member of ThermalMetrics

+
The noncritical temperature threshold.
+
+
+ +
+

+
+
JSON type:
+
Integer
+
+
+ +

HTTP Operations

+ + + + + +
GET + Rendered if supported by the implementation or omitted if not. + The value of this property may also be null if it is unavailable at the time of the request.
+
+
+ +
+

+ Message Reference

+

+ This section documents the MessageID values that may be returned in + ExtendedError responses to HTTP operations.

+

+  

Base.AccessDenied

While attempting to access, connect to, or transfer to/from another resource, the service was denied access.

Severity: Critical

Resolution: Verify that the URI is correct and that the service has the appropriate credentials.

Base.AccountForSessionNoLongerExists

The account for current session is removed and the current session is also removed.

Severity: OK

Resolution: Attempt to connect using a valid account.

Base.AccountModified

The account was modified successfully.

Severity: OK

Resolution: None.

Base.AccountNotModified

The request was unable to modify the account.

Severity: Warning

Resolution: If the operation did not complete, check the authorization or the request body for issues and resubmit the request.

Base.AccountRemoved

The account was removed successfully.

Severity: OK

Resolution: None.

Base.ActionNotSupported

The action supplied in the POST operation is not supported by the resource.

Severity: Critical

Resolution: The action was invalid or the wrong resource was the target. See the implementation documentation for assistance.

Base.ActionParameterDuplicate

The action was submitted with a duplicate parameter in the request body.

Severity: Warning

Resolution: Resubmit the action with only one instance of the parameter in the request body.

Base.ActionParameterMissing

The requested action is missing a parameter that is required to process the action.

Severity: Critical

Resolution: Resubmit the action with the required parameter in the request body.

Base.ActionParameterNotSupported

The action parameter is not supported on the target resource.

Severity: Warning

Resolution: If the operation did not complete, remove the parameter and resubmit the request.

Base.ActionParameterUnknown

An action was submitted, but a supplied parameter did not match any of the known parameters.

Severity: Warning

Resolution: If the operation did not complete, correct the invalid parameter and resubmit the request.

Base.ActionParameterValueFormatError

The value type is correct, but the format is not supported or the size/length is exceeded

Severity: Warning

Resolution: If the operation did not complete, correct the parameter value in the request body and resubmit the request.

Base.ActionParameterValueTypeError

The parameter contains an incorrect value type. For example, a number value for a string parameter type.

Severity: Warning

Resolution: If the operation did not complete, correct the parameter value in the request body and resubmit the request.

Base.CouldNotEstablishConnection

An attempt to access the resource, image, or file at the URI was unsuccessful because a session could not be established.

Severity: Critical

Resolution: Verify that the URI contains a valid and reachable node name, protocol information, and other URI components.

Base.CreateFailedMissingReqProperties

A create operation was attempted on a resource, but a required property was missing from the request.

Severity: Critical

Resolution: If the operation did not complete, include the required property with a valid value in the request body and resubmit the request.

Base.CreateLimitReachedForResource

No more resources can be created.

Severity: Critical

Resolution: If the operation did not complete, delete resources and resubmit the request.

Base.Created

The resource has been created successfully.

Severity: OK

Resolution: None

Base.EventSubscriptionLimitExceeded

The event subscription establishment has been requested, but the operation did not complete because the number of simultaneous subscriptions exceeded the maximum number allowed by the implementation.

Severity: Critical

Resolution: Before attempting to establish the event subscription, reduce the number of subscriptions or increase the maximum number of simultaneous subscriptions allowed (if supported).

Base.GroupForSessionNoLongerExists

The group for current session is removed and the current session is also removed.

Severity: OK

Resolution: Attempt to connect using a valid group.

Base.GroupModified

The group was modified successfully.

Severity: OK

Resolution: None.

Base.GroupNotModified

The request was unable to modify the group.

Severity: Warning

Resolution: If the operation did not complete, check the authorization or the request body for issues and resubmit the request.

Base.GroupRemoved

The group was removed successfully.

Severity: OK

Resolution: None.

Base.InsufficientPrivilege

The account or credentials associated with the current session are not authorized to perform the requested operation.

Severity: Critical

Resolution: Retry the operation with an authorized account or credentials.

Base.InternalError

The request did not complete due to an unknown internal error, but the service is still operational.

Severity: Critical

Resolution: Resubmit the request. If the problem persists, consider resetting the service.

Base.InvalidObject

The object is not valid.

Severity: Critical

Resolution: If the operation did not complete, the object is malformed or the URI is incorrect. Make the appropriate corrections and resubmit the request.

Base.MalformedJSON

The request body contains malformed JSON.

Severity: Critical

Resolution: Verify that the request body is valid JSON and resubmit the request.

Base.NoValidSession

The operation did not complete because a valid session is required in order to access resources.

Severity: Critical

Resolution: Establish a session before attempting any operations.

Base.PropertyDuplicate

A duplicate property is in the request body.

Severity: Warning

Resolution: If the operation did not complete, remove the duplicate property from the request body and resubmit the request.

Base.PropertyMissing

The request does not include a required property.

Severity: Warning

Resolution: If the operation did not complete, verify the property is in the request body and has a valid value.

Base.PropertyNotWritable

The request included a value for a read-only property.

Severity: Warning

Resolution: If the operation did not complete, remove the property from the request body and resubmit the request.

Base.PropertyUnknown

An unknown property is in the request body.

Severity: Warning

Resolution: If the operation did not complete, remove the unknown property from the request body and resubmit the request.

Base.PropertyValueFormatError

The value type is correct, but the format is not supported or the size/length is exceeded.

Severity: Warning

Resolution: If the operation did not complete, correct the property value in the request body and resubmit the request.

Base.PropertyValueNotInList

The value type is correct, but the value is not supported.

Severity: Warning

Resolution: If the operation did not complete, choose a value from the enumeration list and resubmit your request.

Base.PropertyValueTypeError

The property value contains an incorrect property type. For example, a number value for a string property type.

Severity: Warning

Resolution: If the operation did not complete, correct the property value in the request body and resubmit the request.

Base.QueryNotSupported

The query is not supported by the implementation.

Severity: Warning

Resolution: If the operation did not complete, remove the query parameter and resubmit the request.

Base.QueryNotSupportedOnResource

The query is not supported on the resource. For example, a start/count query is attempted on a resource that is not a collection.

Severity: Warning

Resolution: If the operation did not complete, remove the query parameters and resubmit the request.

Base.QueryParameterOutOfRange

The query parameter value is out of range for the resource. For example, a page is requested that is outside the valid page range.

Severity: Warning

Resolution: Specify a query parameter value that is within range. For example, a page that is within the valid range of pages.

Base.QueryParameterValueFormatError

The value type is correct, but the format is not supported or the size/length was exceeded.

Severity: Warning

Resolution: If the operation did not complete, correct the value for the query parameter in the request body and resubmit the request.

Base.QueryParameterValueTypeError

The query parameter contains an incorrect value type. For example, a number supplied for a query parameter that requires a string.

Severity: Warning

Resolution: If the operation did not complete, correct the value for the query parameter in the request body and resubmit the request.

Base.ResourceAlreadyExists

The create resource operation did not complete because the resource already exists.

Severity: Critical

Resolution: Do not attempt the create operation because the resource already exists.

Base.ResourceAtUriInUnknownFormat

The URI is valid, but the resource or image at that URI is in a format that is not supported by the service.

Severity: Critical

Resolution: Place a resource, image, or file that is supported by the service at the URI.

Base.ResourceAtUriUnauthorized

An attempt to access the resource, image, or file at the URI is unauthorized.

Severity: Critical

Resolution: Verify that the appropriate access is provided for the service to access the URI.

Base.ResourceCannotBeDeleted

A delete operation was attempted on a resource that cannot be deleted.

Severity: Critical

Resolution: Do not attempt to delete a resource that does not support the REST API DELETE operation.

Base.ResourceInUse

The request to change the resource was rejected because the resource was in use or in transition.

Severity: Warning

Resolution: If the operation did not complete, wait until the resource is free and resubmit the request.

Base.ResourceMissingAtURI

The operation expected an image or resource at the provided URI, but found none.

Severity: Critical

Resolution: Place a valid resource at the URI or correct the URI and resubmit the request.

Base.ServiceInUnknownState

The operation did not complete because the service is in an unknown state and cannot take incoming requests.

Severity: Critical

Resolution: If the operation did not complete, restart the service and resubmit the request.

Base.ServiceShuttingDown

The operation did not complete because the service is shutting down.

Severity: Critical

Resolution: If the operation did not complete, resubmit the request when the service is available.

Base.ServiceTemporarilyUnavailable

The service is temporarily unavailable.

Severity: Critical

Resolution: Wait for the indicated retry duration and retry the operation.

Base.SessionLimitExceeded

Session establishment has been requested, but the operation did not complete because the number of simultaneous sessions exceeded the maximum number allowed by the implementation.

Severity: Critical

Resolution: Before attempting to establish the session, reduce the number of sessions or increase the maximum number of simultaneous sessions allowed (if supported).

Base.SourceDoesNotSupportProtocol

While attempting to access, connect to, or transfer from another location, the other end of the connection did not support the specified protocol.

Severity: Critical

Resolution: Change protocols or URIs.

Base.Success

The operation completed successfully.

Severity: OK

Resolution: None

Base.UnrecognizedRequestBody

The service detected a request body with malformed JSON.

Severity: Warning

Resolution: If the operation did not complete, correct the request body and resubmit the request.

HpCommon.ArrayPropertyOutOfBound

The items in the array exceed the maximum number supported.

Severity: Warning

Resolution: Retry the operation using the correct number of items for the array.

HpCommon.ConditionalSuccess

A property value was successfully changed but the change may be reverted upon system reset.

Severity: Warning

Resolution: Check the "SettingsResult" messages after the system has reset for errors referring to the corresponding property.

HpCommon.InternalErrorWithParam

The operation was not successful due to an internal service error (shown), but the service is still operational.

Severity: Critical

Resolution: Retry the operation. If the problem persists, consider resetting the service.

HpCommon.InvalidConfigurationSpecified

The specified configuration is not valid.

Severity: Warning

Resolution: Correct the configuration, and then retry the operation.

HpCommon.PropertyValueExceedsMaxLength

The value for the property exceeds the maximum length.

Severity: Warning

Resolution: Correct the value for the property in the request body, and then retry the operation.

HpCommon.PropertyValueIncompatible

The value for the property is the correct type, but this value is incompatible with the current value of another property.

Severity: Warning

Resolution: Correct the value for the property in the request body, and then retry the operation.

HpCommon.PropertyValueOutOfRange

The value for the property is out of range.

Severity: Warning

Resolution: Correct the value for the property in the request body, and then retry the operation.

HpCommon.ResetInProgress

A device or service reset is in progress.

Severity: Warning

Resolution: Wait for device or service reset to complete, and then retry the operation.

HpCommon.ResetRequired

One or more properties were changed, but these changes will not take effect until the device or service is reset.

Severity: Warning

Resolution: To enable the changed properties, reset the device or service.

HpCommon.ResourceNotReadyRetry

The resource is present but is not ready to perform operations due to an internal condition such as initialization or reset.

Severity: Warning

Resolution: Retry the operation when the resource is ready.

HpCommon.SuccessFeedback

The operation completed successfully

Severity: OK

Resolution: None

HpCommon.TaskCreated

A task was created in response to the operation.

Severity: OK

Resolution: Perform an HTTP GET request on the supplied URI for task status.

HpCommon.UnsupportedHwConfiguration

A previously requested property value change was reverted because the current hardware configuration does not support it.

Severity: Warning

Resolution: Ensure that the system's hardware configuration supports the property value.

iLO.AHSDisabled

Modifying AHS properties is not possible with AHS disabled.

Severity: Warning

Resolution: Enable AHS, and then modify the AHS properties.

iLO.Accepted

Indicates that one or more properties were correctly changed, but may not be in effect yet.

Severity: OK

Resolution: None

iLO.ActionParameterValueNotInList

Indicates that the correct value type was supplied for the action parameter, but the value is not supported. (The value is not in the enumeration list.)

Severity: Warning

Resolution: Choose a value from the enumeration list and resubmit the request if the operation failed.

iLO.AlertMailDisabled

Modifying AlertMail properties is not possible with AlertMail disabled.

Severity: Warning

Resolution: Enable AlertMail, and then modify the AlertMail properties.

iLO.AlertMailTestFailed

The AlertMail Test Alert did not send successfully.

Severity: Warning

Resolution: Verify the test alert content and retry.

iLO.ArrayPropertyOutOfBound

The number of items in the array exceeds the maximum number supported.

Severity: Warning

Resolution: Retry the operation using the correct number of items for the array.

iLO.CannotRemoveLicense

Cannot remove iLO Standard/iLO Standard for BladeSystem license.

Severity: Warning

Resolution: None.

iLO.DemoLicenseKeyPreviouslyInstalled

A demo license was previously installed.

Severity: Warning

Resolution: None.

iLO.DeviceResetRequired

Indicates that one or more properties were correctly changed, but will not take effect until device is reset.

Severity: Warning

Resolution: Reset the device for the settings to take effect.

iLO.DiagsTestAlreadyRunning

A diagnostics self test is already running.

Severity: Warning

Resolution: Stop the running test and try again.

iLO.ESKMServersNotConfigured

Enterprise Secure Key Manager Servers are not configured.

Severity: OK

Resolution: None.

iLO.ETagTooLong

The supplied ETag is too long. The maximum supported ETag length is 63 bytes.

Severity: Warning

Resolution: Retry the operation using an ETag with a length of 63 bytes or less.

iLO.EmptyDNSName

DNS name is empty.

Severity: Warning

Resolution: Retry the request with a valid DNS name.

iLO.ErrorIntializingESKM

Failed to initialize ESKM.

Severity: Warning

Resolution: Check if Account Group, Local CA Certificate Name, Login Name and Password are correct and try again.

iLO.EventLogCleared

Event log cleared successfully.

Severity: OK

Resolution: None.

iLO.EventSubscriptionModified

The event subscription was modified successfully.

Severity: OK

Resolution: None.

iLO.EventSubscriptionRemoved

The event subscription was removed successfully.

Severity: OK

Resolution: None.

iLO.FailedToComplete

The operation failed to complete successfully

Severity: Critical

Resolution: None

iLO.FirmwareFlashAlreadyInProgress

A firmware upgrade operation is already in progress.

Severity: Warning

Resolution: Wait for the current firmware flash to complete, and then retry the operation.

iLO.GeneratingCertificate

Generating the X509 Certificate.

Severity: OK

Resolution: None.

iLO.ICRUNotSupported

ICRU feature or function is not supported on the system.

Severity: Warning

Resolution: None.

iLO.IPv6ConfigurationError

The specified IPv6 configuration caused an error.

Severity: Warning

Resolution: Resolve the indicated error in the configuration data.

iLO.ImportCertificateFailed

Failed importing Certificate.

Severity: Warning

Resolution: Retry the operation with proper Certificate information.

iLO.ImportSSOParamError

Not a valid parameter.

Severity: Warning

Resolution: Retry the request with valid parameters.

iLO.ImportSSOUriError

Not a valid Uri to import SSO certificate.

Severity: Warning

Resolution: Retry the request with valid URI.

iLO.IndicatorLedInvalidStateChange

The request to change the state of the Indicator LED cannot be granted because the current state is either Blinking or is Unknown.

Severity: Warning

Resolution: Please wait until the server has completed its reserved state.

iLO.InternalErrorWithParam

The operation was not successful due to an internal service error (shown), but the service is still operational.

Severity: Critical

Resolution: Retry the operation. If the problem persists, consider resetting the service.

iLO.InvalidConfigurationSpecified

The specified configuration is not valid.

Severity: Warning

Resolution: Correct the configuration, and then retry the operation.

iLO.InvalidConfigurationSpecifiedForFederation

iLO Federation Management cannot be supported in the current configuration.

Severity: Warning

Resolution: Review the iLO network settings or Onboard Administrator settings and refer to the iLO User Guide.

iLO.InvalidEngineID

EngineID should be a hexadecimal number starting with 0x (for example, 0x0102030405abcdef). The string length should be an even number, greater than or equal to 6 characters (excluding the "0x"), and less than or equal to 32 characters.

Severity: Warning

Resolution: Retry the operation using an EngineID within the specified parameters.

iLO.InvalidIndex

The Index is not valid.

Severity: Warning

Resolution: Adhere to the indexes supported in the self links.

iLO.InvalidLicenseKey

The license key is not valid.

Severity: Warning

Resolution: Retry the operation using a valid license key.

iLO.InvalidOperationForSystemState

The operation was not successful due to the current power state (for example, attempting to turn the power off when it is already off).

Severity: Warning

Resolution: Verify that the system is in the correct power state, and then retry the operation.

iLO.InvalidPassphraseLength

The passphrase must contain 8 to 49 characters.

Severity: Warning

Resolution: Correct the passphrase, and then retry the operation.

iLO.InvalidPasswordLength

The password length is not valid.

Severity: Critical

Resolution: Retry the operation using a corrected password.

iLO.InvalidPowerState

The power state is not valid.

Severity: Critical

Resolution: Retry the operation after correcting the power state.

iLO.LicenseKeyNotSupported

The use of a license key is not supported on this system.

Severity: Warning

Resolution: None.

iLO.LicenseKeyRequired

An iLO license key is required to use this operation or feature.

Severity: Warning

Resolution: Install a license key (Advanced or Scale Out) to use this feature.

iLO.LoginAttemptDelayed

The login was not successful, so the service enforces a delay before another login is allowed.

Severity: Warning

Resolution: Wait for the delay time to expire, and then retry the login.

iLO.LoginAttemptDelayedSeconds

The login was not successful, so the service enforces a delay before another login is allowed.

Severity: Warning

Resolution: None.

iLO.MaxProviders

The maximum number of providers are already registered.

Severity: Warning

Resolution: None.

iLO.MaxVirtualMediaConnectionEstablished

No more Virtual Media connections are available, because the maximum number of connections are already established.

Severity: Warning

Resolution: Close an established Virtual Media connection, and then retry creating or opening another connection.

iLO.MembistVariablesNotSupported

Membist variables are not supported on the system.

Severity: Warning

Resolution: None.

iLO.NoSNMPAlertDestinationsConfigured

No SNMP alert destinations are configured.

Severity: Warning

Resolution: Disable SNMP pass-thru, modify the property, and then re-enable SNMP pass-thru.

iLO.NoSamples

No power history samples are available.

Severity: OK

Resolution: To accumulate power history samples, power on the server, and then wait at least 5 minutes.

iLO.NoSpaceforDNSName

No space to store DNS name.

Severity: Warning

Resolution: Make sure SSO database has enough space to store DNS name.

iLO.NoVirtualMediaConnectionAvailable

No Virtual Media connections exist to perform the operation.

Severity: Warning

Resolution: Create or open a Virtual Media connection, and then retry the operation.

iLO.NotSupportedOnNIC

This property is not supported by the indicated network port.

Severity: Warning

Resolution: Do not specify this property on the indicated network port.

iLO.NotValidIPAddrOrDNS

The value for the property is not a valid IPv4/v6 address or DNS name.

Severity: Warning

Resolution: Correct the IPv4/v6 address or DNS name, and then retry the operation.

iLO.NotValidIPAddress

The value for the property is not a valid IP address.

Severity: Warning

Resolution: Use a valid IP address.

iLO.NotValidSubnetMask

The value for the property is not a valid subnet mask.

Severity: Warning

Resolution: Use a valid subnet mask.

iLO.PowerCapOACntrld

The enclosure Onboard Administrator is currently managing the power cap.

Severity: Warning

Resolution: Use Onboard Administrator to Manage the PowerCap

iLO.PowerValueBadParam

The power cap value is not valid.

Severity: Warning

Resolution: Retry the operation using a corrected value.

iLO.PowerValueInvalidCalibrationData

The request to set the power cap failed. Invalid power cap calibration data. The Power Cap feature is currently unavailable.

Severity: Warning

Resolution: Restart the server to retrieve calibration data from initial POST.

iLO.PowerValueNotOptimal

Power caps set for less than 50% of the difference between maximum and minimum power may become unreachable due to changes in the server. Power caps set for less than 20% are not recommended.

Severity: Warning

Resolution: Please provide an optimal value in integer considering the power cap range.

iLO.PowerValueUnAvailable

Advanced power capping is not currently available due to the system configuration or state.

Severity: Warning

Resolution: Change the system configuration or wait for the system to become fully initialized, and then retry the operation.

iLO.PowerValueUnSupported

Advanced power capping is not supported on this system.

Severity: Warning

Resolution: None.

iLO.PrimaryESKMServerAccessible

Only the primary ESKM server is accessible.

Severity: OK

Resolution: None.

iLO.PrimarySecondaryAddressesResolveToSameServer

Primary and secondary ESKM server addresses resolve to the same server.

Severity: OK

Resolution: None.

iLO.PrimarySecondaryESKMServersAccessible

Both primary and secondary ESKM servers are accessible.

Severity: OK

Resolution: None.

iLO.PropertyValueBadParam

The property value is not valid.

Severity: Warning

Resolution: Retry the operation using a corrected value.

iLO.PropertyValueExceedsMaxLength

The value for the property exceeds the maximum length.

Severity: Warning

Resolution: Correct the value for the property in the request body, and then retry the operation.

iLO.PropertyValueIncompatible

The value for the property is the correct type, but this value is incompatible with the current value of another property.

Severity: Warning

Resolution: Correct the value for the property in the request body, and then retry the operation.

iLO.PropertyValueOutOfRange

The value for the property is out of range.

Severity: Warning

Resolution: Correct the value for the property in the request body, and then retry the operation.

iLO.PropertyValueRequired

Indicates that a property was required but not specified.

Severity: Warning

Resolution: Include the required property in the request body and then retry the operation.

iLO.RepairNotSupported

IML event with this severity is not supported to be repaired. IML events with Critical or Warning severities can marked as repaired.

Severity: Warning

Resolution: Please do not try to repair IML events with severity other than Critical or Warning.

iLO.RequiredPropertyMissing

Indicates that a required property is not specified.

Severity: Warning

Resolution: Include the required property in the request body and then retry the operation.

iLO.ResetInProgress

An iLO reset is in progress.

Severity: Warning

Resolution: Wait for iLO reset to complete, and then retry the operation.

iLO.ResetRequired

One or more properties were changed, but these changes will not take effect until the iLO is reset.

Severity: Warning

Resolution: To enable the changed properties, reset the iLO.

iLO.ResourceBeingFlashed

The change to the requested resource failed because the resource is being flashed.

Severity: Warning

Resolution: Retry the operation when the firmware upgrade has completed.

iLO.ResourceInUseWithDetail

The change could not be made because the resource was in use or in a transitioning state.

Severity: Warning

Resolution: Retry the request.

iLO.ResourceTemporarilyUnavailable

The resource is temporarily unavailable because the firmware is being flashed.

Severity: Warning

Resolution: Retry the operation when the firmware upgrade has completed.

iLO.SMBIOSRecordNotFound

The SMBIOS record type is not found or is not supported on the system.

Severity: Warning

Resolution: Reset the system to update the SMBIOS records. If the problem persists then the SMBIOS record type is not supported.

iLO.SNMPAgentlessEnabled

Modifying SNMP properties is not possible while SNMP is configured in Agentless mode.

Severity: Warning

Resolution: Disable Agentless mode, modify the properties, and then re-enable Agentless mode.

iLO.SNMPAlertDisabled

The operation could not be completed because SNMP alerts are disabled.

Severity: Warning

Resolution: Enable SNMP alerts and retry the operation.

iLO.SNMPDisabled

Modifying SNMP properties is not possible with SNMP disabled.

Severity: Warning

Resolution: Enable SNMP, and then modify the SNMP properties.

iLO.SNMPPassthruEnabled

Modifying SNMP properties is not possible while SNMP is configured in pass-thru mode.

Severity: Warning

Resolution: Configure SNMP 'Agentless' mode, modify the property, and then re-configure SNMP for 'Passthru' mode.

iLO.SNMPTestAlertFailed

The SNMP Test Alert did not send successfully.

Severity: Warning

Resolution: Verify the test alert content and retry.

iLO.SSOCertficateEmpty

SSO Certificate is Empty.

Severity: Warning

Resolution: None.

iLO.SSOCertificateReadError

SSO Certificate Read Error.

Severity: Warning

Resolution: Retry the request with valid SSO certificate.

iLO.SSONoSpaceError

No space to store SSO certificate.

Severity: Warning

Resolution: Make sure SSO database has enough space to store SSO certificate.

iLO.SSORecordNotFound

SSO Record Not Found.

Severity: Warning

Resolution: None.

iLO.SecondaryESKMServerAccessible

Only the secondary ESKM server is accessible.

Severity: OK

Resolution: None.

iLO.SuccessFeedback

The operation completed successfully.

Severity: OK

Resolution: None

iLO.SyslogDisabled

Modifying Syslog properties is not possible with Syslog disabled.

Severity: Warning

Resolution: Enable Syslog, and then modify the Syslog properties.

iLO.SyslogFeatureDisabled

Remote Syslog feature is disabled.

Severity: Warning

Resolution: Enable remote syslog feature to send test syslog message.

iLO.SyslogFeatureMisconfigured

The Syslog feature is not configured correctly.

Severity: Warning

Resolution: Verify the syslog configuration and retry.

iLO.SyslogTestAlertFailed

The Syslog Test Alert did not send successfully.

Severity: Warning

Resolution: Verify the test alert content and retry.

iLO.SystemResetRequired

The system properties were correctly changed, but will not take effect until the system is reset.

Severity: Warning

Resolution: Reset system for the settings to take effect.

iLO.TokenRequired

Proper 'X-HPRESTFULAPI-AuthToken' authorization token not provided.

Severity: Critical

Resolution: Create proper 'X-HPRESTFULAPI-AuthToken' authorization token. Send token in using the proper HTTP header.

iLO.UnableModifyRights

Unable to modify user rights.

Severity: Warning

Resolution: None.

iLO.UnableToModifyDueToMissingComponent

The value for the property cannot be changed because a related hardware component is not installed.

Severity: Warning

Resolution: Install the hardware component and retry the operation.

iLO.UnableToModifyDuringSystemPOST

The value for the property cannot be changed while the computer system BIOS is in POST.

Severity: Warning

Resolution: After the computer system is either fully booted or powered off, retry the operation.

iLO.UnauthorizedLoginAttempt

The login was not successful, because the supplied credentials could not be authorized.

Severity: Warning

Resolution: Log in with authorized user name and password credentials.

iLO.UnsupportedOperation

This operation is not supported by RIS for the current system.

Severity: Warning

Resolution: None.

iLO.UnsupportedOperationInLegacyBootMode

This operation is not supported when the system Boot Mode is set to Legacy BIOS.

Severity: Warning

Resolution: Change the Boot Mode to UEFI and retry the operation.

iLO.UnsupportedOperationInSystemBIOS

This operation is not supported by the current version of the system BIOS.

Severity: Warning

Resolution: None.

iLO.UserAlreadyExist

The user or login user name already exists.

Severity: Warning

Resolution: Try a different user or login user name.

iLO.UserNameAlreadyExists

Duplicate SNMPv3 User.

Severity: Warning

Resolution: Enter a different name and try again.

+
+ + diff --git a/dmtf/run-redfish-simulator.sh b/dmtf/run-redfish-simulator.sh deleted file mode 100755 index 78697c6..0000000 --- a/dmtf/run-redfish-simulator.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Build the docker container first -docker build -t localhost:5000/redfish-simulator:latest . -# Th -p option needs to be after the run command. No warning is given if before but doesn't work -docker rm "redfish-simulator" -docker run -d -p 8000:80 --name "redfish-simulator" localhost:5000/redfish-simulator:latest -echo "Launch your browser and load http://localhost:8000/redfish/v1" diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..e4c5e88 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,177 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/python-redfish.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/python-redfish.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/python-redfish" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/python-redfish" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/README.rst b/doc/README.rst new file mode 100644 index 0000000..465fb89 --- /dev/null +++ b/doc/README.rst @@ -0,0 +1,19 @@ +python-redfish documentation +============================ + +This repository will be used to house the python Redfish documentation, + +Contacts +-------- + +Distribution list : python-redfish@mondorescue.org + + +References documents +-------------------- + +On top of the DMTF official documentation, you can find some useful documents at the following URLs: + +Firmware in the DC: Goodbye PXE/IPMI, welcome HTTP Boot and Redfish (Samer El-Haj-Mahmoud) +http://www.uefi.org/sites/default/files/resources/UEFI_Plugfest_May_2015_HTTP_Boot_Redfish_Samer_El-Haj_ver1.2.pdf + diff --git a/doc/requirements.txt b/doc/requirements.txt new file mode 100644 index 0000000..782c30e --- /dev/null +++ b/doc/requirements.txt @@ -0,0 +1,2 @@ +sphinx>=1.2.3,!=1.6.6,!=1.6.7,<2.0.0;python_version=='2.7' # BSD +sphinx!=1.6.6,!=1.6.7,!=2.1.0;python_version>='3.4' # BSD diff --git a/doc/source/classesdoc.rst b/doc/source/classesdoc.rst new file mode 100644 index 0000000..b209587 --- /dev/null +++ b/doc/source/classesdoc.rst @@ -0,0 +1,9 @@ +===================== +Classes documentation +===================== + +.. toctree:: + :maxdepth: 2 + + python-redfish_lib + redfish-client diff --git a/doc/source/conf.py b/doc/source/conf.py old mode 100755 new mode 100644 index 512d1fa..32a6a42 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,75 +1,335 @@ # -*- coding: utf-8 -*- -# 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 +# python-redfish documentation build configuration file, created by +# sphinx-quickstart on Wed Feb 10 19:41:20 2016. # -# 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. +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. -import os import sys +import os +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../..')) -# -- General configuration ---------------------------------------------------- +sys.path.insert(0, os.path.abspath('../../redfish-client')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. extensions = [ 'sphinx.ext.autodoc', - #'sphinx.ext.intersphinx', - 'oslosphinx' + 'sphinx.ext.viewcode', ] -# autodoc generation is a bit aggressive and a nuisance when doing heavy -# text edit cycles. -# execute "export SPHINX_DEBUG=1" in your terminal to disable +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' +# The encoding of source files. +#source_encoding = 'utf-8-sig' + # The master toctree document. master_doc = 'index' # General information about the project. project = u'python-redfish' -copyright = u'2013, OpenStack Foundation' +copyright = u'2015-now, Bruno Cornec, Vincent Misson, René Ribaud' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = 'PBVER' +# The full version, including alpha/beta/rc tags. +release = 'PBVER' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. -add_function_parentheses = True +#add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). -add_module_names = True +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' -# -- Options for HTML output -------------------------------------------------- +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None -# The theme to use for HTML and HTML Help pages. Major themes that come with -# Sphinx are currently 'default' and 'sphinxdoc'. -# html_theme_path = ["."] -# html_theme = '_theme' -# html_static_path = ['static'] +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None # Output file base name for HTML help builder. -htmlhelp_basename = '%sdoc' % project +htmlhelp_basename = 'python-redfishdoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + 'classoptions': ',openany,oneside', + 'babel': '\\usepackage[english]{babel}' + +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} # Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass -# [howto/manual]). +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). latex_documents = [ - ('index', - '%s.tex' % project, - u'%s Documentation' % project, - u'OpenStack Foundation', 'manual'), + ('index', 'python-redfish.tex', u'python-redfish Documentation', + u'Bruno Cornec, Vincent Misson, René Ribaud', 'manual'), ] -# Example configuration for intersphinx: refer to the Python standard library. -#intersphinx_mapping = {'http://docs.python.org/': None} +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'python-redfish', u'python-redfish Documentation', + [u'Bruno Cornec, Vincent Misson, René Ribaud'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'python-redfish', u'python-redfish Documentation', + u'Bruno Cornec, Vincent Misson, René Ribaud', 'python-redfish', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = u'python-redfish' +epub_author = u'Bruno Cornec, Vincent Misson, René Ribaud' +epub_publisher = u'Bruno Cornec, Vincent Misson, René Ribaud' +epub_copyright = u'2016, Bruno Cornec, Vincent Misson, René Ribaud' + +# The basename for the epub file. It defaults to the project name. +#epub_basename = u'python-redfish' + +# The HTML theme for the epub output. Since the default themes are not optimized +# for small screen space, using the same theme for HTML and epub output is +# usually not wise. This defaults to 'epub', a theme designed to save visual +# space. +#epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or en if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +#epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +#epub_tocscope = 'default' + +# Fix unsupported image types using the PIL. +#epub_fix_images = False + +# Scale large images. +#epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#epub_show_urls = 'inline' + +# If false, no index is generated. +#epub_use_index = True diff --git a/doc/source/develsetup.rst b/doc/source/develsetup.rst new file mode 100644 index 0000000..ef132ce --- /dev/null +++ b/doc/source/develsetup.rst @@ -0,0 +1,15 @@ +=============== +Developer setup +=============== + +#. Follow `get the source code `_ section to retrieve the sources. +#. Follow `using pip and virtualenv `_ section to create your environment. + +To setup a development environment, the DMTF has published a mockup environment +to simulate a Redfish based system so it is possible to write programs without +real Redfish compliant hardware platform. + +Please look at _`DMTF Documentation `_ for detailed steps. +for setting up the environment. + +You can start hacking the code now. diff --git a/doc/source/faq.rst b/doc/source/faq.rst new file mode 100644 index 0000000..3067024 --- /dev/null +++ b/doc/source/faq.rst @@ -0,0 +1,11 @@ +=== +FAQ +=== + +- Q1 : error in setup command: Invalid environment marker: (python_version < '3') + + This error is caused by an old setuptools version that does not understand "python_version < '3'". + Upgrade setuptools using:: + + pip install --upgrade setuptools + diff --git a/doc/source/further_ref.rst b/doc/source/further_ref.rst new file mode 100644 index 0000000..e0b2466 --- /dev/null +++ b/doc/source/further_ref.rst @@ -0,0 +1,3 @@ +:orphan: + +.. include:: ../../dmtf/README.rst diff --git a/doc/source/help.rst b/doc/source/help.rst new file mode 100644 index 0000000..db643ab --- /dev/null +++ b/doc/source/help.rst @@ -0,0 +1,11 @@ +============= +Help required +============= + +We need help on the following topic: + +- debian/ubuntu dependencies packaging. +- installation on distributions which are not Fedora or Mageia. +- documentation. + +Any contribution will be welcomed. diff --git a/doc/source/images/simulator.jpg b/doc/source/images/simulator.jpg new file mode 100644 index 0000000..6a47144 Binary files /dev/null and b/doc/source/images/simulator.jpg differ diff --git a/doc/source/index.rst b/doc/source/index.rst index c623c94..2de689e 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -14,7 +14,12 @@ Contents: readme installation usage + develsetup + testing + classesdoc contributing + faq + help Indices and tables ================== diff --git a/doc/source/installation.rst b/doc/source/installation.rst index 41ac939..4c7440d 100644 --- a/doc/source/installation.rst +++ b/doc/source/installation.rst @@ -2,11 +2,254 @@ Installation ============ -At the command line:: +The following instructions are ordered by ease of use, and our project recommendations. - $ pip install python-redfish -Or, if you have virtualenvwrapper installed:: +Using rpm packages +------------------ + +There is currently no official Linux distribution packages. + +The upstream project provides packages for a limited set of Linux distributions. + +There are available at ftp://ftp.project-builder.org + +As an example for Fedora 23 use the following: + +1. As root get the repo file:: + + cd /etc/yum.repos.d && wget ftp://ftp.project-builder.org/fedora/23/x86_64/python-redfish.repo + +2. Install using dnf:: + + dnf install python-redfish + + +.. + Using deb package + ----------------- + + This installation in not yet possible due to missing deb package dependencies. We are working on it. + + In the meantime we recommend to use `Using pip`_ or `Using pip and virtualenv`_. + + +Using pip and virtualenv +------------------------ + +1. Install virtualenv and virtualenvwrapper: + + Fedora 22:: + + dnf install python-virtualenv python-virtualenvwrapper + + Ubuntu 15.04:: + + apt-get install python-virtualenv virtualenvwrapper + +2. Source virtualenvwrapper.sh:: + + . /usr/bin/virtualenvwrapper.sh + + or:: + + . /usr/share/virtualenvwrapper/virtualenvwrapper.sh + +3. Create a redfish virtual environement:: + + mkvirtualenv redfish + +4. Install using pip:: + + pip install python-redfish + + All files are installed under your virtualenv. + + +Using pip +--------- +Use:: + + sudo pip install python-redfish + +Pip will install : + +1. The library and all dependencies into prefix/lib/pythonX.Y/site-packages directory +2. redfish-client conf file into prefix/etc/redfish-client.conf. + If prefix = '/usr' then force the configuration file to be in /etc + +3. Data files (templates) into prefix/share/redfish-client/templates + +Point 2 and 3 above need root access to your system. If you don't have root +access on your system, please follow `Using pip and virtualenv`_ section. + + +Using source code +----------------- + +#. Follow `get the source code `_ section to retrieve it. +#. Install from the source code using:: + + python setup.py install --prefix="/usr/local" + + +Building your own rpm packages +------------------------------ + +Inside the project tree there is a mechanism to build rpm packages for distributions. + +The mechanism is based on `project builder `_ tool. + +#. Follow `get the source code `_ section to retrieve it. +#. Download project builder for your distribution from ftp://ftp.project-builder.org. +#. Clone the project to your own github account. +#. Create a .pbrc with the following content, replace "/workspace/python/redfish" and "uggla" with your own directory and account:: + + $ cat .pbrc + pbdefdir python-redfish = $ENV{'HOME'}/workspace + pbconfdir python-redfish = $ENV{'HOME'}/workspace/python-redfish/pbconf + pbconfurl python-redfish = git+ssh://git@github.com:uggla/python-redfish.git + pburl python-redfish = git+ssh://git@github.com:uggla/python-redfish.git +#. Build the project:: + + pb -p python-redfish sbx2pkg + + or:: + + pb -p python-redfish sbx2pkg2ins +#. All packages (srpm/rpm) should be available into the build directory, then install the package using rpm:: + + rpm -Uvh python-redfish/build/RPMS/python-redfish-devel20160213182552.rpm + + +============================ +Inventory file configuration +============================ + +#. Verify redfish-client is working correclty:: + + redfish-client -h + +#. Create a default entry to use the mockup:: + + redfish-client config add default default http://localhost:8000/redfish/v1 + +#. Verify the entry is correctly registered:: + + redfish-client config showall + +Note: The inventory file is created in $HOME/.redfish + +=================== +Mockup installation +=================== + +#. Follow `get the source code `_ section to retrieve it. +#. Install docker using your distribution packages or the docker `procedure `_ (docker provides more recent packages): + +As an example for Fedora 23 use the following:: + + dnf install docker + systemctl enable docker.service + systemctl start docker.service + systemctl status docker.service + +#. Jump into the dmtf directory. +#. Run ./buildImage.sh and ./run-redfish-simulator.sh +#. Check that a container is running and listening on port 8000:: + + $ docker ps + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + 9943ff1d4d93 redfish-simulator:latest "/bin/sh -c /tmp/redf" 3 weeks ago Up 2 days 0.0.0.0:8000->80/tcp redfish-simulator +#. Try to connect using a navigator to http://localhost:8000 the following screen should apear. + + .. image:: images/simulator.jpg + +Note : in the above screenshot, firefox JSON-handle extension is used. If you want the same presentation install the extension and refresh the page. + +========================== +Testing against the mockup +========================== + +#. Follow `Inventory file configuration`_ and `Mockup installation`_ section. +#. Run the following command:: + + redfish-client manager getinfo + +The result should be like this:: + + $ redfish-client manager getinfo + Gathering data from manager, please wait... + + Redfish API version : 1.00 + Root Service + + Managers information : + ====================== + + Manager id 1: + UUID : 00000000-0000-0000-0000-000000000000 + Type : BMC + Firmware version : 1.00 + State : Enabled + Ethernet Interface : + This manager has no ethernet interface + Managed Chassis : + 1 + Managed System : + 1 + ---------------------------- + + Manager id 2: + UUID : 00000000-0000-0000-0000-000000000000 + Type : EnclosureManager + Firmware version : Not available + State : Enabled + Ethernet Interface : + This manager has no ethernet interface + Managed Chassis : + Enc1 + Managed System : + 2 + ---------------------------- + + Manager id 3: + UUID : 00000000-0000-0000-0000-000000000000 + Type : EnclosureManager + Firmware version : Not available + State : Enabled + Ethernet Interface : + This manager has no ethernet interface + Managed Chassis : + Enc1 + Managed System : + 2 + ---------------------------- + + + +============================ +Building local documentation +============================ + +Building the html documentation locally. + + +#. Follow `get the source code `_ section to retrieve it. +#. Jump in the doc directory:: + + cd doc +#. Build the html documentation:: + + make html + + +If you want to build the documentation in pdf. + +#. Get texlive full distribution, e.g. on Fedora 23:: + + dnf install texlive-scheme-full +#. Build the documentation:: + + make latexpdf - $ mkvirtualenv python-redfish - $ pip install python-redfish diff --git a/doc/source/python-redfish_classes/config.rst b/doc/source/python-redfish_classes/config.rst new file mode 100644 index 0000000..b704fdd --- /dev/null +++ b/doc/source/python-redfish_classes/config.rst @@ -0,0 +1,6 @@ +============ +config class +============ + +.. automodule:: redfish.config + :members: diff --git a/doc/source/python-redfish_classes/exception.rst b/doc/source/python-redfish_classes/exception.rst new file mode 100644 index 0000000..80dc554 --- /dev/null +++ b/doc/source/python-redfish_classes/exception.rst @@ -0,0 +1,6 @@ +=============== +exception class +=============== + +.. automodule:: redfish.exception + :members: diff --git a/doc/source/python-redfish_classes/main.rst b/doc/source/python-redfish_classes/main.rst new file mode 100644 index 0000000..2a6e1c3 --- /dev/null +++ b/doc/source/python-redfish_classes/main.rst @@ -0,0 +1,6 @@ +========== +main class +========== + +.. automodule:: redfish.main + :members: diff --git a/doc/source/python-redfish_classes/mapping.rst b/doc/source/python-redfish_classes/mapping.rst new file mode 100644 index 0000000..251252b --- /dev/null +++ b/doc/source/python-redfish_classes/mapping.rst @@ -0,0 +1,6 @@ +============= +mapping class +============= + +.. automodule:: redfish.mapping + :members: diff --git a/doc/source/python-redfish_classes/types.rst b/doc/source/python-redfish_classes/types.rst new file mode 100644 index 0000000..9191577 --- /dev/null +++ b/doc/source/python-redfish_classes/types.rst @@ -0,0 +1,6 @@ +=========== +types class +=========== + +.. automodule:: redfish.types + :members: diff --git a/doc/source/python-redfish_lib.rst b/doc/source/python-redfish_lib.rst new file mode 100644 index 0000000..4de9220 --- /dev/null +++ b/doc/source/python-redfish_lib.rst @@ -0,0 +1,8 @@ +====================== +python-redfish classes +====================== + +.. toctree:: + :glob: + + python-redfish_classes/* diff --git a/doc/source/redfish-client.rst b/doc/source/redfish-client.rst new file mode 100644 index 0000000..50547f9 --- /dev/null +++ b/doc/source/redfish-client.rst @@ -0,0 +1,7 @@ +====================== +redfish-client classes +====================== + +.. automodule:: rfclient + :members: + diff --git a/doc/source/testing.rst b/doc/source/testing.rst new file mode 100644 index 0000000..81ddc73 --- /dev/null +++ b/doc/source/testing.rst @@ -0,0 +1,33 @@ +============= +Running tests +============= + + +redfish module tests +-------------------- + +Tests are not functional for the redfish module yet. + +redfish-client tests +-------------------- + +#. Create your development environment following `Developer setup `_. +#. Install docker using the `procedure `_. +#. Ensure you can use docker with your current user. +#. Jump into the python-redfish directory containing the source code. +#. Depending of your distribution, you may have to upgrade setuptools:: + + pip install --upgrade setuptools + +#. Install required modules for testings:: + + pip install -t test-requirements.txt + +#. Run the test:: + + tox + + or:: + + py.test redfish-client + diff --git a/doc/source/usage.rst b/doc/source/usage.rst index e4b8cce..1f8d19f 100644 --- a/doc/source/usage.rst +++ b/doc/source/usage.rst @@ -2,6 +2,25 @@ Usage ======== -To use python-redfish in a project:: +Example using the mockup +------------------------ + +example/simple-simulator.py provide a simple library usage to interact with the +redfish mockup. + +Example using a proliant +------------------------ + +example/simple-proliant.py provide a simple library usage to interact with a HPE +ProLiant BL460C G9 server. However this example should work on any server supplier following redfish +standard. + +redfish-client usage +-------------------- + +The client usage can be display using:: + + redfish-client -h + +This is also available at http://pythonhosted.org/python-redfish/redfish-client.html. - import redfish diff --git a/examples/__init__.py b/examples/__init__.py index acef755..13c5e6a 100644 --- a/examples/__init__.py +++ b/examples/__init__.py @@ -1 +1,8 @@ -__author__ = 'deva' +# coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +__author__ = 'uggla' diff --git a/examples/redfish.conf b/examples/redfish.conf new file mode 100644 index 0000000..24cd951 --- /dev/null +++ b/examples/redfish.conf @@ -0,0 +1,9 @@ +{ + "Managers": { + "default": { + "url": "", + "login": "", + "password": "" + } + } +} diff --git a/examples/simple-proliant.py b/examples/simple-proliant.py new file mode 100644 index 0000000..03f807a --- /dev/null +++ b/examples/simple-proliant.py @@ -0,0 +1,108 @@ +# coding=utf-8 + +""" Simple example to use python-redfish on HPE Proliant servers """ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import str + +import os +import sys +import json +import redfish +standard_library.install_aliases() + + +# Get $HOME environment. +HOME = os.getenv('HOME') + +if HOME == '': + print("$HOME environment variable not set, please check your system") + sys.exit(1) + +try: + with open(HOME + "/.redfish/inventory") as json_data: + config = json.load(json_data) + json_data.close() +except IOError as e: + print("Please create a json configuration file") + print(e) + sys.exit(1) + +URL = config["Managers"]["default"]["url"] +USER_NAME = config["Managers"]["default"]["login"] +PASSWORD = config["Managers"]["default"]["password"] + +''' remote_mgmt is a redfish.RedfishConnection object ''' +try: + remote_mgmt = redfish.connect(URL, + USER_NAME, + PASSWORD, + simulator=False, + verify_cert=False) +except redfish.exception.RedfishException as e: + sys.stderr.write(str(e.message)) + sys.stderr.write(str(e.advices)) + sys.exit(1) + +print("Redfish API version : %s \n" % remote_mgmt.get_api_version()) + +# Uncomment following line to reset the blade !!! +# remote_mgmt.Systems.systems_dict["1"].reset_system() + +print("Bios version : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_bios_version())) +print("Serial Number : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_serial_number())) +print("Power State : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_powerstate())) +print("Parameter 'SystemType' : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_parameter("SystemType"))) + +print("Get bios parameters : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].bios.get_parameters())) +print("Get boot parameters : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].bios.boot.get_parameters())) + +# print("Get bios parameter 'AdminPhone' : {}\n".format( +# remote_mgmt.Systems.systems_dict["1"].bios.get_parameter("AdminPhone"))) +# print("Set bios parameter 'AdminPhone' to '' : {}\n".format( +# remote_mgmt.Systems.systems_dict["1"].bios.set_parameter("AdminPhone",""))) + + +# Boot server with script +# remote_mgmt.Systems.systems_dict["1"].bios.set_parameter("Dhcpv4","Enabled") + +remote_mgmt.Systems.systems_dict["1"].bios.set_parameter( + "PreBootNetwork", "Auto") +remote_mgmt.Systems.systems_dict["1"].bios.set_parameter( + "UefiShellStartup", "Enabled") +remote_mgmt.Systems.systems_dict["1"].bios.set_parameter( + "UefiShellStartupLocation", "NetworkLocation") +remote_mgmt.Systems.systems_dict["1"].bios.set_parameter( + "UefiShellStartupUrl", "http://10.3.222.88/deploy/startup.nsh") + +# remote_mgmt.Systems.systems_dict["1"].set_parameter_json( +# '{"Boot": {"BootSourceOverrideTarget": "UefiShell"}}') +# remote_mgmt.Systems.systems_dict["1"].set_parameter_json( +# '{"Boot": {"BootSourceOverrideEnabled" : "Continuous"}}') +# remote_mgmt.Systems.systems_dict["1"].set_parameter_json( +# '{"Boot": {"BootSourceOverrideEnabled" : "Once"}}') + +mySystem = remote_mgmt.Systems.systems_dict["1"] +mySystem.set_boot_source_override("None", "Disabled") +# Uncomment the next line to reset the server +# mySystem.reset_system() + + +print("Get manager firmware version : {}\n".format( + remote_mgmt.Managers.managers_dict["1"].get_firmware_version())) +print("Get system Bios version : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_bios_version())) + +# Reset of the system is required to apply the changes +# remote_mgmt.Systems.systems_dict["1"].reset_system() + +remote_mgmt.logout() diff --git a/examples/simple-simulator.py b/examples/simple-simulator.py new file mode 100644 index 0000000..311f30c --- /dev/null +++ b/examples/simple-simulator.py @@ -0,0 +1,62 @@ +# coding=utf-8 + +""" Simple example to use python-redfish with HPE simulator """ +# Works fine after the declaration of the default server with +# redfish-client config add default \ +# https://ilorestfulapiexplorer.ext.hpe.com/redfish/v1 + +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library + +# Import necessary libraries +import os +import sys +import json +import redfish +standard_library.install_aliases() + +# Get $HOME environment. +HOME = os.getenv('HOME') + +if HOME == '': + print("$HOME environment variable not set, please check your system") + sys.exit(1) + +try: + with open(HOME + "/.redfish/inventory") as json_data: + config = json.load(json_data) + json_data.close() +except IOError as e: + print("Please create a json configuration file") + print(e) + sys.exit(1) + +URL = config["Managers"]["default"]["url"] +USER_NAME = config["Managers"]["default"]["login"] +PASSWORD = config["Managers"]["default"]["password"] + +''' remoteMgmt is a redfish.RedfishConnection object ''' +try: + remote_mgmt = redfish.connect(URL, + USER_NAME, + PASSWORD, + simulator=True, + verify_cert=False, + enforceSSL=False) +except redfish.exception.RedfishException as e: + sys.stderr.write(e.message) + sys.stderr.write(e.advices) + sys.exit(1) + + +print("Redfish API version : {} \n".format(remote_mgmt.get_api_version())) +print("UUID : {} \n".format(remote_mgmt.Root.get_api_UUID())) +print("System 1 :\n") +print("Bios version : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_bios_version())) +print("System 2 :\n") +print("Serial Number : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_parameter("SerialNumber"))) diff --git a/examples/simple.py b/examples/simple.py deleted file mode 100644 index 91d34bd..0000000 --- a/examples/simple.py +++ /dev/null @@ -1,6 +0,0 @@ -from redfish import connection - -host = '127.0.0.1' -user_name = 'Admin' -password = 'password' -server = connection.RedfishConnection(host, user_name, password) \ No newline at end of file diff --git a/examples/walk-chassis.py b/examples/walk-chassis.py deleted file mode 100644 index 900cfe6..0000000 --- a/examples/walk-chassis.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python - -#import logging -import sys -from oslo_config import cfg -from oslo_log import log as logging - -import redfish - -# Sets up basic logging for this module -#log_root = logging.getLogger('redfish') -#log_root.addHandler(logging.StreamHandler(sys.stdout)) -#log_root.setLevel(logging.DEBUG) - -CONF = cfg.CONF -logging.set_defaults(['redfish=DEBUG']) -logging.register_options(CONF) -#logging.setup(CONF, "redfish") - -# Connect to a redfish API endpoint -host = 'http://localhost' -user_name = '' -password = '' - -# This returns a RedfishConnection object, which implements -# the low-level HTTP methods like GET, PUT, etc -connection = redfish.server.connect(host, user_name, password) - -# From this connection, we can get the Root resource. -# Note that the root resource is somewhat special - you create it from -# the connection, but you create other resources from the root resource. -# (You don't strictly have to do this, but it's simpler.) -root = connection.get_root() - -print("\n") -print("ROOT CONTROLLER") -print("===============") -print(root) - - -# The Root class has well-defined top-level resources, such as -# chassis, systems, managers, sessions, etc... -chassis = root.get_chassis() - -print("\n") -print("CHASSIS DATA") -print("============") -print(chassis) -print("\n") -print("WALKING CHASSIS") -print("\n") -print("CHASSIS contains %d items" % len(chassis)) -print("\n") -for item in chassis: - print("SYSTEM") - print("======") - print(item) - print("\n") diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..426a856 --- /dev/null +++ b/install.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Syntax: install.sh +set -x + +export python=$1 +export rootdir=$2 +export sitelib=$3 +export prefix=$4 +export pkg=$5 + +# Documentation installation only +echo $python | grep -q "/doc" +if [ $? -eq 0 ]; then + install -m 755 -d $rootdir/$python/$5/manual/html/_static + install -m 644 doc/build/singlehtml/*.html $rootdir/$python/$5/manual/html + install -m 644 doc/build/singlehtml/_static/* $rootdir/$python/$5/manual/html/_static + install -m 644 doc/build/latex/*.pdf $rootdir/$python/$5/manual/ + exit 0 +fi + +pyver=`$python --version 2>&1 | perl -p -e 's|.* ([2-3])\..*|$1|'` +$python setup.py install --skip-build --root=$rootdir --prefix=$prefix + +rm -rf $rootdir/$sitelib/redfish/old $rootdir/$prefix/share/doc/$5/html $rootdir/$prefix/share/doc/$5/*.pdf + +# Hardcoded for now to solve the delivery of the conf file still not correct with setup.py +install -d 755 $rootdir/etc +mv $rootdir/$prefix/etc/redfish-client.conf $rootdir/etc/redfish-client.conf +install -d 755 $rootdir/etc/bash_completion.d +install -m 644 redfish-client/etc/bash_completion.d/redfish-client.bash $rootdir/etc/bash_completion.d + +# Man pages installation +for i in 1; do + mkdir -p $rootdir/$prefix/share/man/man$i + for e in `ls doc/build/man/*.$i`; do + ne=`echo $e | perl -p -e 's|.*/([^/]*)\.'$i'|$1-py'$pyver.$i'|'` + install -m 644 $e $rootdir/$prefix/share/man/man$i/$ne + done +done diff --git a/openstack-common.conf b/openstack-common.conf deleted file mode 100644 index ca18656..0000000 --- a/openstack-common.conf +++ /dev/null @@ -1,6 +0,0 @@ -[DEFAULT] - -# The list of modules to copy from oslo-incubator.git - -# The base module to hold the copy of openstack.common -base=redfish diff --git a/pbconf/README.rst b/pbconf/README.rst new file mode 100644 index 0000000..6dfd8db --- /dev/null +++ b/pbconf/README.rst @@ -0,0 +1,60 @@ +Packaging the python-redfish project +==================================== + +Overview +-------- + +This docuemnt provides information with regards to the packagin of +python-redfish for Linux distributions. Currently the Linux distributions we +are supporting and packaging for are: + +- Mageia 5 +- Fedora 25 +- CentOS 7 +- OpenSUSE 42.2 +- Debian 8 +- Ubuntu 16.04 + +Requirements +------------ + +python-redfish uses a lot of python modules, not all of them having been +packaged for Linux distributions. The one missing the most being +python-tortilla, so we are providing versions for this pending distributions +doing it themselves. + +Status for supported distributions +---------------------------------- + +- Mageia + + There are many python modules missing for Mageia 5 that have been built and + made avaible alongside our packages through at + ftp://ftp.project-builder.org/mageia/5/x86_64 + All packages needed are part of the distribution starting with version 6. + +- Fedora + + Only two packages are missing on Fedora 25 python-simplejson 3.8.1 and + python-tortilla that are avaible alongside our packages through dnf at + ftp://ftp.project-builder.org/fedora/25/x86_64 + +- CentOS + + There are many python modules missing for CentOS 7 that have been built and + made avaible alongside our packages through at + ftp://ftp.project-builder.org/centos/7/x86_64 + +- OpenSUSE + + There are some python modules missing for OpenSUSE 42.2 that have been built + and made avaible alongside our packages through at + ftp://ftp.project-builder.org/opensuse/42.2/x86_64 + +- Debian + + TBD + +- Ubuntu + + TBD diff --git a/pbconf/announces3.sql b/pbconf/announces3.sql new file mode 100644 index 0000000..eedab1b Binary files /dev/null and b/pbconf/announces3.sql differ diff --git a/pbconf/mkctn b/pbconf/mkctn new file mode 100755 index 0000000..a0aaf0c --- /dev/null +++ b/pbconf/mkctn @@ -0,0 +1,21 @@ +#!/bin/bash +# +# Script to rebuild all packages for supported distros in containers using +# project-builder.org +# +PRJ=python-redfish +PKG=`pbgetparam -p $PRJ velist | sed 's/,/ /'` +if [ _"$1" != _"" ]; then + PKG=$* +fi +for i in $PKG; do + DISTRO=`echo $i | cut -d- -f1` + DISTROVER=`echo $i | cut -d- -f2` + + M=$DISTRO-$DISTROVER-x86_64 + + pb -p pb -T docker -m $M --stop-on-error newve -i ${DISTRO}:$DISTROVER + pb -p pb -T docker -m $M --stop-on-error setupve + pb -p $PRJ -T docker -m $M --stop-on-error sbx2prepve + pb -p $PRJ -T docker -m $M --stop-on-error build2ve +done diff --git a/pbconf/pbfilter/all.yml b/pbconf/pbfilter/all.yml new file mode 100644 index 0000000..cb930c2 --- /dev/null +++ b/pbconf/pbfilter/all.yml @@ -0,0 +1,74 @@ +--- +# +# $Id$ +# +# Filter for all files +# +# +# PBREPO is replaced by the root URL to access the repository +filter: + PBPACKAGER: $pb->{'packager'} + PBDATE: $pb->{'date'} + PBWITHPY3: 1 + PBTAG: $pb->{'tag'} + PBSHAREPATH: /usr/share/redfish-client + PBPKG: $pb->{'pkg'} + PBREV: $pb->{'rev'} + PBREALPKG: $pb->{'realpkg'} + PBEXTDIR: $pb->{'extdir'} + PBDESC: The Redfish API supports dialoging with a Redfish compliant$/system such as defined by http://www.redfishcertification.org + PBSUMMARY: Redfish python library + PBPYTHON3FILTER: perl -pi -e "s|configparser>=3.3.0; python_version < '3'|configparser>=3.3.0|" requirements.txt + PBCONFFILE: /etc/redfish-client.conf + PBREPO: $pb->{'repo'} + PBURL: https://review.openstack.org/#/q/project:openstack/python-redfish + PBSRC: src/%{name}-%{version}$pb->{'extdir'}.tar.gz + PBPROJ: $pb->{'proj'} + PBVER: $pb->{'ver'} + PBLOG: yes +# +# PBSRC is replaced by the source package location after the repo +# +# PBVER is replaced by the version ($pb->{'ver'} in code) +# +# PBDATE is replaced by the date ($pb->{'date'} in code) +# +# PBEXTDIR is replaced by the testdir extension if needed ($pb->{'extdir'} in code) +# +# PBPATCHSRC is replaced by the patches names if value is yes. Patches are located under the pbpatch dir of the pkg. +#filter PBPATCHSRC = yes +# +# PBPATCHCMD is replaced by the patches commands if value is yes +#filter PBPATCHCMD = yes +# +# PBMULTISRC is replaced by the sources names if value is yes. Sources are located under the pbsrc dir of the pkg. +#filter PBMULTISRC = yes +# +# PBTAG is replaced by the tag ($pb->{'tag'} in code) +# +# PBREV is replaced by the revision ($pb->{'rev'} in code) +# +# PBREALPKG is replaced by the package name ($pb->{'realpkg'} in code) +# +# PBPKG is replaced by the package name ($pb->{'pkg'} in code) +# +# PBPROJ is replaced by the project name ($pb->{'proj'} in code) +# +# PBPACKAGER is replaced by the packager name ($pb->{'packager'} in code) +# +# PBDESC contains the description of the package +# with a trailing , the variable can be multi-line. +# only the trailing 's will be removed, the leading spaces, +# trailing spaces, and newlines will remain except on the +# last line. You can use dollar slash as a way to introduce carriage +# return (perl syntax). +# You can use transform e.g. in rpm.pbf to adjust spaces +# +# PBSUMMARY contains a short single line description of the package +# +# PBURL contains the URL of the Web site of the project +# +# PBLOG is replaced by the changelog if value is yes +# and should be last as when used we need the %pb hash filled +# +# By default build for python3 diff --git a/pbconf/pbfilter/centos.yml b/pbconf/pbfilter/centos.yml new file mode 100644 index 0000000..d85f9ce --- /dev/null +++ b/pbconf/pbfilter/centos.yml @@ -0,0 +1,35 @@ +--- +# +# $Id$ +# +# Filter for rpm build +# +# +# PBGRP is replaced by the RPM group of apps +# Cf: http://fedoraproject.org/wiki/RPMGroups +#filter PBGRP = Applications/Archiving +# +# PBLIC is replaced by the license of the application +# Cf: http://fedoraproject.org/wiki/Licensing +#filter PBLIC = GPLv2+ +# +# PBDEP is replaced by the list of dependencies +#filter PBDEP = +# +# PBBDEP is replaced by the list of build dependencies +#filter PBBDEP = +# +# PBSUF is replaced by the package suffix ($pb->{'suf'} in code) +filter: + PBPYTHONDOCBDEP: python2-sphinx-theme-alabaster,python-snowballstemmer,texlive-multirow,texlive-upquote,texlive-wrapfig,texlive-threeparttable,texlive-titlesec,texlive-framed,,texlive-latex-bin,texlive-hyphen-base,texlive-cm,texlive-cmap,texlive-ec,texlive-fancyhdr,texlive-fancybox,texlive-mdwtools,texlive-parskip + PBPYTHON3BDEP: !!str "" + PB2PYTHON2BDEP: python-sphinx >= 1.2.3 + PBPYTHON3DEP: !!str "" + PBSUF: %{dist} + PBWITHPY3: 0 + PB2PYTHON3BDEP: python3-sphinx >= 1.2.3 +# +# PBOBS is replaced by the Obsolete line +#filter PBOBS = +# +# Needed as pb doesn't interpret spec macros diff --git a/pbconf/pbfilter/deb.yml b/pbconf/pbfilter/deb.yml new file mode 100644 index 0000000..3ba23c5 --- /dev/null +++ b/pbconf/pbfilter/deb.yml @@ -0,0 +1,25 @@ +--- +# +# $Id$ +# +# Filter for debian build +# +# PBGRP is replaced by the group of apps +filter: + PBGRP: utils +# +# PBLIC is replaced by the license of the application +# Cf: http://www.debian.org/legal/licenses/ + PBLIC: ASL 2.0 +# +# PBBDEP is replaced by the list of build dependencies + PBBDEP: python (>= 2.7), dh-python, python-all, python3-all, python-setuptools, python3-setuptools, python-dev, python-sphinx, python-pbr, python3-pbr, python-future, python3-future, python-simplejson, python3-simplejson, python-tortilla, python3-tortilla, python-docopt, python3-docopt,latexmk,texlive-latex-recommended,texlive-latex-extra,texlive-fonts-recommended + PBPYBUILD: --buildsystem=pybuild + PBDEP: python-docopt, python-tortilla, python-jinja2, python-pbr, python-simplejson, python-setuptools + PBDEP3: python3-docopt, python3-tortilla, python3-jinja2, python3-pbr, python3-simplejson, python3-setuptools + +# PBSUG is replaced by the list of suggestions +# PBSUG: +# +# PBREC is replaced by the list of recommandations +# PBREC: diff --git a/pbconf/pbfilter/debian.yml b/pbconf/pbfilter/debian.yml new file mode 100644 index 0000000..79c63c4 --- /dev/null +++ b/pbconf/pbfilter/debian.yml @@ -0,0 +1,13 @@ +--- +# +# $Id$ +# +# Filter for debian build +# +# PBDEBSTD is replaced by the Debian standard version +filter: + PBDEBSTD: 3.8.0 + PBDEBCOMP: 7 +# +# PBDEBCOMP is replaced by the Debian Compatibility value +# diff --git a/pbconf/pbfilter/fedora-30.yml b/pbconf/pbfilter/fedora-30.yml new file mode 100644 index 0000000..73f7a7c --- /dev/null +++ b/pbconf/pbfilter/fedora-30.yml @@ -0,0 +1,31 @@ +--- +# +# $Id$ +# +# Filter for rpm build +# +# +# PBGRP is replaced by the RPM group of apps +# Cf: http://fedoraproject.org/wiki/RPMGroups +#filter PBGRP = Applications/Archiving +# +# PBLIC is replaced by the license of the application +# Cf: http://fedoraproject.org/wiki/Licensing +#filter PBLIC = GPLv2+ +# +# PBDEP is replaced by the list of dependencies +#filter PBDEP = +# +# PBBDEP is replaced by the list of build dependencies +#filter PBBDEP = +# +# PBSUF is replaced by the package suffix ($pb->{'suf'} in code) +filter: + PBPYTHONDOCBDEP: texlive-multirow,texlive-upquote,texlive-wrapfig,texlive-threeparttable,texlive-titlesec,texlive-framed,texlive-capt-of,texlive-latex-bin,texlive-hyphen-base,texlive-cm,texlive-cmap,texlive-ec,texlive-langcode,texlive-babel-english,texlive-fancyhdr,texlive-fancybox,texlive-mdwtools,texlive-parskip,texlive-eqparbox,texlive-times,texlive-helvetic,texlive-courier,texlive-gsftopk-bin,texlive-dvips,texlive-mfware-bin,latexmk,texlive-fncychap,texlive-tabulary,texlive-needspace,texlive-helvetic,texlive-updmap-map,texlive-makeindex + PB2PYTHON2BDEP: python-sphinx >= 1.2.3 + PB2PYTHON3BDEP: python3-sphinx >= 1.2.3 + PBSUF: %{dist} +# +# PBOBS is replaced by the Obsolete line +#filter PBOBS = +# diff --git a/pbconf/pbfilter/fedora.yml b/pbconf/pbfilter/fedora.yml new file mode 100644 index 0000000..e28c981 --- /dev/null +++ b/pbconf/pbfilter/fedora.yml @@ -0,0 +1,31 @@ +--- +# +# $Id$ +# +# Filter for rpm build +# +# +# PBGRP is replaced by the RPM group of apps +# Cf: http://fedoraproject.org/wiki/RPMGroups +#filter PBGRP = Applications/Archiving +# +# PBLIC is replaced by the license of the application +# Cf: http://fedoraproject.org/wiki/Licensing +#filter PBLIC = GPLv2+ +# +# PBDEP is replaced by the list of dependencies +#filter PBDEP = +# +# PBBDEP is replaced by the list of build dependencies +#filter PBBDEP = +# +# PBSUF is replaced by the package suffix ($pb->{'suf'} in code) +filter: + PBPYTHONDOCBDEP: texlive-multirow,texlive-upquote,texlive-wrapfig,texlive-threeparttable,texlive-titlesec,texlive-framed,texlive-capt-of,texlive-latex-bin,texlive-hyphen-base,texlive-cm,texlive-cmap,texlive-ec,texlive-langcode,texlive-babel-english,texlive-fancyhdr,texlive-fancybox,texlive-mdwtools,texlive-parskip,texlive-eqparbox,texlive-times,texlive-helvetic,texlive-courier,texlive-gsftopk-bin,texlive-dvips,texlive-mfware-bin + PB2PYTHON2BDEP: python-sphinx >= 1.2.3 + PB2PYTHON3BDEP: python3-sphinx >= 1.2.3 + PBSUF: %{dist} +# +# PBOBS is replaced by the Obsolete line +#filter PBOBS = +# diff --git a/pbconf/pbfilter/md.yml b/pbconf/pbfilter/md.yml new file mode 100644 index 0000000..981c2ea --- /dev/null +++ b/pbconf/pbfilter/md.yml @@ -0,0 +1,13 @@ +--- +# Specific group for Mandriva for python-redfish +# Cf: http://wiki.mandriva.com/en/Development/Packaging/Groups +filter: + PBGRP: Development/Python + PB2PYTHON3BDEP: python3-pkg-resources >= 18,python3-sphinx >= 1.2.3 + PB2PYTHON2BDEP: python-pkg-resources >= 18,python-sphinx >= 1.2.3 + PBPYTHONDOCBDEP: texlive-dist +# +# PBLIC is replaced by the license of the application +# Cf: http://wiki.mandriva.com/en/Development/Packaging/Licenses +#filter PBLIC = GPL +# diff --git a/pbconf/pbfilter/novell.yml b/pbconf/pbfilter/novell.yml new file mode 100644 index 0000000..ce436f1 --- /dev/null +++ b/pbconf/pbfilter/novell.yml @@ -0,0 +1,9 @@ +--- +# Specific group for SuSE for python-redfish +# Cf: http://en.opensuse.org/SUSE_Package_Conventions/RPM_Groups +#filter PBGRP = Productivity/Archiving/Backup +# +# PBLIC is replaced by the license of the application +# Cf: http://en.opensuse.org/Packaging/SUSE_Package_Conventions/RPM_Style#1.6._License_Tag +#filter PBLIC = GPL +# diff --git a/pbconf/pbfilter/opensuse.yml b/pbconf/pbfilter/opensuse.yml new file mode 100644 index 0000000..a33cdfc --- /dev/null +++ b/pbconf/pbfilter/opensuse.yml @@ -0,0 +1,13 @@ +--- +# Specific group for OpenSUSE for python-redfish +filter: + PB2PYTHON3BDEP: python3-Sphinx >= 1.2.3,python3-Sphinx-latex,python3-colorclass,python3-formats + PBGRP: Development/Python + PBPYTHONDOCBDEP: texlive-latex-bin,texlive-cmap,texlive-fancyhdr,texlive-fancybox,texlive-mdwtools,texlive-parskip,texlive-babel-english,texlive-psnfss,texlive-fncychap,texlive-titlesec,texlive-tabulary,texlive-framed,texlive-fancyvrb,texlive-threeparttable,texlive-float,texlive-wrapfig,texlive-upquote,texlive-capt-of,texlive-multirow,texlive-eqparbox,texlive-metafont-bin,texlive-helvetic,texlive-courier,texlive-dvips,texlive-times + PBPYTHON2BDEP: make,python2-devel,python2-setuptools >= 18,python2-future >= 0.15.2,python2-docopt >= 0.6.2,python2-requests >= 2.9.1,python2-simplejson >= 3.8.1,python2-configparser >= 3.3.0,python2-sphinx_rtd_theme,python2-pbr >= 0.8,python-tortilla >= 0.4.1 + PB2PYTHON2BDEP: python2-Sphinx >= 1.2.3,python2-colorclass,python-formats + PBPYTHON3FILTER: perl -pi -e "s|configparser>=3.3.0; python_version < '3'|configparser>=3.3.0|" requirements.txt$/%define py3dir %{_builddir}/python3-%{name}-%{version}-%{release}$/%define __python3 /usr/bin/python3$/%define python3_version %{py3_ver} +# +# PBLIC is replaced by the license of the application +#filter PBLIC = GPL +# diff --git a/pbconf/pbfilter/rpm.yml b/pbconf/pbfilter/rpm.yml new file mode 100644 index 0000000..e39a0ec --- /dev/null +++ b/pbconf/pbfilter/rpm.yml @@ -0,0 +1,36 @@ +--- +# +# $Id$ +# +# Filter for rpm build +# +# +# PBGRP is replaced by the RPM group of apps +filter: + PBPYTHON3BDEP: python3-devel,python3-setuptools >= 18,python3-future >= 0.15.2,python3-docopt >= 0.6.2,python3-requests >= 2.9.1,python3-simplejson >= 3.8.1,python3-sphinx_rtd_theme,python3-pbr >= 0.8,python3-tortilla >= 0.4.1 + PBPYTHON2BDEP: make,python-devel,python2-setuptools >= 18,python-future >= 0.15.2,python-docopt >= 0.6.2,python-requests >= 2.9.1,python-simplejson >= 3.8.1,python-configparser >= 3.3.0,python-sphinx_rtd_theme,python-pbr >= 0.8,python-tortilla >= 0.4.1 + PBPYTHON3DEP: python3-docopt >= 0.6.2,python3-tortilla >= 0.4.1,python3-jinja2 >= 2.7.3,python3-simplejson >= 3.8.1,python3-requests >= 2.9.1,python3-future >= 0.15.2,python3-pbr >= 0.8,python3-pbr <= 2.0 + PBPYTHON2DEP: python-docopt >= 0.6.2,python-tortilla >= 0.4.1,python-jinja2 >= 2.7.3,python-simplejson >= 3.8.1,python-requests >= 2.9.1,python-configparser >= 3.3.0,python-future >= 0.15.2,python-pbr >= 0.8 + PBPYTHONDOCBDEP: texlive + PBPYTHON3PKG: python3-redfish + PBGRP: Applications/System + PBSUF: $pb->{'suf'} + PBLIC: ASL 2.0 +# +# PBLIC is replaced by the license of the application +# +# PBDEP is replaced by the list of dependencies +#filter PBDEP = +# +# PBBDEP is replaced by the list of build dependencies +# +# PBSUF is replaced by the package suffix ($pb->{'suf'} in code) +# +# PBOBS is replaced by the Obsolete line +#filter PBOBS = +# +# transform a variable from the key on the right to the key on the left using the perl expression +# after the input key name. Useful for taking multi-line documentation and removing trailing spaces +# or leading spaces. +#transform PBDESC = PBDESC_raw s/\s+\n/\n/go; +# diff --git a/pbconf/pbfilter/sles.yml b/pbconf/pbfilter/sles.yml new file mode 100644 index 0000000..9aab08f --- /dev/null +++ b/pbconf/pbfilter/sles.yml @@ -0,0 +1,14 @@ +--- +# Specific group for OpenSUSE for python-redfish +filter: + PBPYTHON2BDEP: make,python-devel,python2-setuptools >= 18,python2-future >= 0.15.2,python2-docopt >= 0.6.2,python2-requests >= 2.9.1,python2-simplejson >= 3.8.1,python-configparser >= 3.3.0,python2-sphinx_rtd_theme,python2-pbr >= 0.8,python2-tortilla >= 0.4.1 + PBPYTHON2DEP: python2-docopt >= 0.6.2,python2-tortilla >= 0.4.1,python2-jinja2 >= 2.7.3,python2-simplejson >= 3.8.1,python2-requests >= 2.9.1,python-configparser >= 3.3.0,python2-future >= 0.15.2,python2-pbr >= 0.8 + PB2PYTHON3BDEP: python3-Sphinx >= 1.2.3,python3-colorclass,python3-formats + PBGRP: Development/Python + PBPYTHONDOCBDEP: texlive-latex-bin,texlive-cmap,texlive-fancyhdr,texlive-fancybox,texlive-mdwtools,texlive-parskip,texlive-babel-english,texlive-psnfss,texlive-fncychap,texlive-titlesec,texlive-tabulary,texlive-framed,texlive-fancyvrb,texlive-threeparttable,texlive-float,texlive-wrapfig,texlive-upquote,texlive-capt-of,texlive-multirow,texlive-eqparbox,texlive-metafont-bin,texlive-helvetic,texlive-courier,texlive-dvips,texlive-times + PB2PYTHON2BDEP: python2-Sphinx >= 1.2.3,python2-colorclass,python2-formats + PBPYTHON3FILTER: perl -pi -e "s|configparser>=3.3.0; python_version < '3'|configparser>=3.3.0|" requirements.txt$/%define py3dir %{_builddir}/python3-%{name}-%{version}-%{release}$/%define __python3 /usr/bin/python3$/%define python3_version %{py3_ver} +# +# PBLIC is replaced by the license of the application +#filter PBLIC = GPL +# diff --git a/pbconf/pbfilter/ubuntu-12.04.yml b/pbconf/pbfilter/ubuntu-12.04.yml new file mode 100644 index 0000000..c9f8807 --- /dev/null +++ b/pbconf/pbfilter/ubuntu-12.04.yml @@ -0,0 +1,37 @@ +--- +# +# $Id$ +# +--- +# +# $Id$ +# +# Filter for ubuntu build +# + filter: +# PBDEBSTD is replaced by the Debian standard version + PBDEBSTD: 3.8.3 +# +# PBDEBCOMP is replaced by the Debian Compatibility value + PBDEBCOMP: 7 + +# PBGRP is replaced by the group of apps + PBGRP: utils + PBPYBUILD: !!str "" +# +# PBLIC is replaced by the license of the application +# Cf: http://www.debian.org/legal/licenses/ +# PBLIC: GPL +# +# PBDEP is replaced by the list of dependencies +# PBDEP: +# +# PBBDEP is replaced by the list of build dependencies + PBBDEP: python (>= 2.7), python-all, python-setuptools + PBBDEP3: python (>= 3.5), python3-all, python3-setuptools +# +# PBSUG is replaced by the list of suggestions +# PBSUG: +# +# PBREC is replaced by the list of recommandations +# PBREC: diff --git a/pbconf/pbfilter/ubuntu.yml b/pbconf/pbfilter/ubuntu.yml new file mode 100644 index 0000000..33a00f5 --- /dev/null +++ b/pbconf/pbfilter/ubuntu.yml @@ -0,0 +1,12 @@ +--- +# +# $Id$ +# +# Filter for ubuntu build +# +# PBDEBSTD is replaced by the Debian standard version + filter: + PBDEBSTD: 3.8.3 +# +# PBDEBCOMP is replaced by the Debian Compatibility value + PBDEBCOMP: 9 diff --git a/pbconf/python-redfish.yml b/pbconf/python-redfish.yml new file mode 100644 index 0000000..2e074fb --- /dev/null +++ b/pbconf/python-redfish.yml @@ -0,0 +1,165 @@ +--- +# +# Project Builder configuration file +# For project python-redfish +# +# $Id$ +# +# +# +# What is the project URL +# +#pburl python-redfish = svn://svn.python-redfish.org/python-redfish/devel +#pburl python-redfish = svn://svn+ssh.python-redfish.org/python-redfish/devel +#pburl python-redfish = cvs://cvs.python-redfish.org/python-redfish/devel +#pburl python-redfish = http://www.python-redfish.org/src/python-redfish-devel.tar.gz +#pburl python-redfish = ftp://ftp.python-redfish.org/src/python-redfish-devel.tar.gz +#pburl python-redfish = file:///src/python-redfish-devel.tar.gz +#pburl python-redfish = dir:///src/python-redfish-devel +pbprojurl: + python-redfish: git+https://review.openstack.org/p/openstack/python-redfish.git +# +# Repository +pbrepo: + python-redfish: ftp://ftp.mondorescue.org +pbml: + python-redfish: python-redfish@mondorescue.org +pbsmtp: + python-redfish: localhost +# For distro supporting it, which area is used +#projcomponent python-redfish = main +# +# Check whether project is well formed +# when downloading from ftp/http/... +# (containing already a directory with the project-version name) +pbwf: + python-redfish: 1 +# +# Do we check GPG keys +pbgpgcheck: + python-redfish: 1 +# +# +# Packager label +# +pbpackager: + python-redfish: Bruno Cornec +# +# +# For delivery to a machine by SSH (potentially the FTP server) +# Needs hostname, account and directory +# +sshhost: + python-redfish: www.project-builder.org +sshlogin: + python-redfish: account +sshdir: + python-redfish: /path/to/ftp +# +# +# +# For Virtual machines management +# Naming convention to follow: distribution name (as per ProjectBuilder::Distribution) +# followed by '-' and by release number +# followed by '-' and by architecture +# a .vmtype extension will be added to the resulting string +# a QEMU rhel-3-i286 here means that the VM will be named rhel-3-i386.qemu +# +vmlist: + python-redfish: rhel-6-i386,sles-11-i386,mageia-5-i386,rhel-6-x86_64,rhel-7-x86_64,sles-12-x86_64,sles-15-x86_64 +# +# +# Valid values for vmtype are +# qemu, (vmware, xen, ... TBD) +#vmtype python-redfish = qemu +# +# Hash for VM stuff on vmtype +#vmntp default = pool.ntp.org +# +# We suppose we can commmunicate with the VM through SSH +#vmhost python-redfish = localhost +#vmlogin python-redfish = pb +#vmport python-redfish = 2222 +# +# Timeout to wait when VM is launched/stopped +#vmtmout default = 120 +# +# per VMs needed paramaters +#vmopt python-redfish = -m 384 -daemonize +#vmpath python-redfish = /home/qemu +#vmsize python-redfish = 5G +# +# +# For Virtual environment management +# Naming convention to follow: distribution name (as per ProjectBuilder::Distribution) +# followed by '-' and by release number +# followed by '-' and by architecture +# a .vetype extension will be added to the resulting string +# a chroot rhel-3-i286 here means that the VE will be named rhel-3-i386.chroot +# +# +# Supported distribution for python-redfish +velist: + python-redfish: centos-6-x86_64,centos-7-x86_64,debian-8-x86_64,debian-9-x86_64,ubuntu-12.04-x86_64,ubuntu-14.04-x86_64,ubuntu-16.04-x86_64,ubuntu-17.10-x86_64,ubuntu-18.04-x86_64,ubuntu-18.10-x86_64,mageia-5-x86_64,mageia-6-x86_64,fedora-25-x86_64,fedora-26-x86_64,fedora-27-x86_64,fedora-28-x86_64,fedora-29-x86_64,opensuse-42.1-x86_64,opensuse-42.2-x86_64,opensuse-42.3-x86_64,opensuse-15.0-x86_64,opensuse-15.1-x86_64 +# +# VE params +vetype: + python-redfish: docker +#ventp default = pool.ntp.org +#velogin python-redfish = pb +#vepath python-redfish = /var/cache/rpmbootstrap +#rbsconf python-redfish = /etc/mock +#verebuild python-redfish = false +# +# +# Global version/tag for the project +# +projver: + python-redfish: 0.4.5 +projtag: + python-redfish: 1 +# +# Hash of valid version names +# +#version python-redfish = devel,stable +# +# Is it a test version or a production version +testver: + python-redfish: !!str "" + #python-redfish: true +# Which upper target dir for delivery +delivery: + #python-redfish: test + python-redfish: !!str "" +# +# Additional repository to add at build time +# addrepo centos-5-x86_64 = http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm,ftp://ftp.project-builder.org/centos/5/pb.repo +# addrepo centos-4-x86_64 = http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm,ftp://ftp.project-builder.org/centos/4/pb.repo +# This will allow usage of python-simplejson 1.8.1 +addbuildrepo: + du: ftp://ftp.project-builder.org/$pbos->{'name'}/$pbos->{'version'}/python-tortilla.sources.list + rpm: ftp://ftp.project-builder.org/$pbos->{'name'}/$pbos->{'version'}/$pbos->{'arch'}/python-tortilla.repo + md: !!str "" + centos: https://dl.fedoraproject.org/pub/epel/epel-release-latest-$pbos->{'version'}.noarch.rpm,ftp://ftp.project-builder.org/$pbos->{'name'}/$pbos->{'version'}/$pbos->{'arch'}/python-tortilla.repo + opensuse-42.2-x86_64: ftp://ftp.project-builder.org/opensuse/42.2/x86_64/pb.repo,http://download.opensuse.org/repositories/devel:languages:python3/openSUSE_Leap_42.2/devel:languages:python3.repo,http://download.opensuse.org/repositories/Virtualization:containers/openSUSE_Leap_42.2/Virtualization:containers.repo,http://download.opensuse.org/repositories/devel:languages:python/openSUSE_Leap_42.2/devel:languages:python.repo +# +# Adapt to your needs: +# Optional if you need to overwrite the global values above +# +#pkgver python-redfish = stable +#pkgtag python-redfish = 3 +# Hash of default package/package directory +defpkgdir: + python-redfish: . +# Hash of additional package/package directory +#extpkgdir minor-pkg = dir-minor-pkg +# +# List of files per pkg on which to apply filters +# Files are mentioned relatively to pbroot/defpkgdir +filteredfiles: + python-redfish: redfish-client/redfish-client,redfish-client/redfish-check-cartridge,doc/source/conf.py,redfish-client/etc/redfish-client.conf,install.sh +#supfiles python-redfish = python-redfish.init +# +# We use pbr to generate sources +pbpbr: + python-redfish: 1 diff --git a/pbconf/python-redfish/deb/changelog b/pbconf/python-redfish/deb/changelog new file mode 100644 index 0000000..9320d95 --- /dev/null +++ b/pbconf/python-redfish/deb/changelog @@ -0,0 +1 @@ +PBLOG diff --git a/pbconf/python-redfish/deb/compat b/pbconf/python-redfish/deb/compat new file mode 100644 index 0000000..53f13a4 --- /dev/null +++ b/pbconf/python-redfish/deb/compat @@ -0,0 +1 @@ +PBDEBCOMP diff --git a/pbconf/python-redfish/deb/control b/pbconf/python-redfish/deb/control new file mode 100644 index 0000000..b0496b5 --- /dev/null +++ b/pbconf/python-redfish/deb/control @@ -0,0 +1,49 @@ +Source: PBPKG +# http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections +Section: PBGRP +Priority: optional +Maintainer: PBPACKAGER +Build-Depends: debhelper (>= 4.2.20), PBBDEP +Standards-Version: PBDEBSTD +Vcs-Svn: https://review.openstack.org/p/openstack/PBPROJ.git +Vcs-Browser: https://review.openstack.org/p/openstack/PBPROJ.git +Homepage: PBURL + +Package: PBPKG +Architecture: all +# http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections +Section: PBGRP +Priority: optional +Depends: ${python:Depends}, PBDEP, python-redfish-data +X-Python-Version: >= 2.7 +Recommends: PBREC +Suggests: PBSUG +Description: PBSUMMARY + PBDESC + python2 version + . + +Package: python3-redfish +Architecture: all +# http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections +Section: PBGRP +Priority: optional +Depends: ${python3:Depends}, PBDEP3, python-redfish-data +X-Python3-Version: >= 3.5 +Recommends: PBREC +Suggests: PBSUG +Description: PBSUMMARY + PBDESC + python3 version + . + +Package: python-redfish-data +Architecture: all +# http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections +Section: PBGRP +Priority: optional +Description: PBSUMMARY + PBDESC + Data for PBPKG + . + diff --git a/pbconf/python-redfish/deb/copyright b/pbconf/python-redfish/deb/copyright new file mode 100644 index 0000000..ab672db --- /dev/null +++ b/pbconf/python-redfish/deb/copyright @@ -0,0 +1,27 @@ +This package is debianized by PBPACKAGER +`date` + +The current upstream source was downloaded from +PBREPO. + +Upstream Authors: Put their name here + +Copyright: + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + MA 02110-1301, USA. + +On Debian systems, the complete text of the GNU General +Public License can be found in /usr/share/common-licenses/GPL. + diff --git a/pbconf/python-redfish/deb/python-redfish-data.dirs b/pbconf/python-redfish/deb/python-redfish-data.dirs new file mode 100644 index 0000000..332c306 --- /dev/null +++ b/pbconf/python-redfish/deb/python-redfish-data.dirs @@ -0,0 +1,7 @@ +etc/ +etc/bash_completion.d/ +usr/share/redfish-client/ +usr/share/redfish-client/templateas/ +usr/share/doc/redfish-client/ +usr/share/doc/redfish-client/manual/ +usr/share/doc/redfish-client/manual/html diff --git a/pbconf/python-redfish/deb/python-redfish-data.install b/pbconf/python-redfish/deb/python-redfish-data.install new file mode 100644 index 0000000..d69a310 --- /dev/null +++ b/pbconf/python-redfish/deb/python-redfish-data.install @@ -0,0 +1,7 @@ +redfish-client/templates/* usr/share/python-redfish/templates/ +redfish-client/*.txt usr/share/python-redfish/ +redfish-client/etc/redfish-client.conf etc/ +./redfish-client/etc/bash_completion.d/redfish-client.bash etc/bash_completion.d/ +doc/build/singlehtml/_static/* usr/share/doc/python-redfish/manual/html/_static/ +doc/build/singlehtml/* usr/share/doc/python-redfish/manual/html/ +doc/build/latex/*.pdf usr/share/doc/python-redfish/manual/ diff --git a/redfish/tests/__init__.py b/pbconf/python-redfish/deb/python-redfish.dirs similarity index 100% rename from redfish/tests/__init__.py rename to pbconf/python-redfish/deb/python-redfish.dirs diff --git a/pbconf/python-redfish/deb/python-redfish.docs b/pbconf/python-redfish/deb/python-redfish.docs new file mode 100644 index 0000000..2dc73c7 --- /dev/null +++ b/pbconf/python-redfish/deb/python-redfish.docs @@ -0,0 +1,5 @@ +AUTHORS +LICENSE +README.rst +CONTRIBUTING.rst +HACKING.rst diff --git a/pbconf/python-redfish/deb/rules b/pbconf/python-redfish/deb/rules new file mode 100644 index 0000000..f797fd2 --- /dev/null +++ b/pbconf/python-redfish/deb/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +export PYBUILD_NAME=redfish +export DH_VERBOSE=1 +#export PYBUILD_DISABLE=install + +%: + dh $@ --with python2,python3,sphinxdoc --buildsystem=pybuild + cd doc ; make man ; make singlehtml ; make latexpdf + +PYPI_DESC = PBSUMMARY +DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^-]+).*,\1,p') + help2man = PYTHONPATH=${CURDIR} help2man -N --version-string=${DEB_UPSTREAM_VERSION} \ + -o $1 -n '$2' $(CURDIR)/debian/PBPKG/usr/bin/$(subst .1,,$1) diff --git a/pbconf/python-redfish/pbcl b/pbconf/python-redfish/pbcl new file mode 100644 index 0000000..390ce38 --- /dev/null +++ b/pbconf/python-redfish/pbcl @@ -0,0 +1,81 @@ +# $Id$ + +PYTHON-REDFISH CHANGES + +v0.4.4 (2019-10-30) +- Fix monitor_sleep default initialization +- Fix URLs referenced in doc + +v0.4.3 (2019-10-14) +- Adds a monitor command (Bruno Cornec) + +v0.4.2 (2019-10-08) +- Fix a link in doc and update develsetup (Madhuri Kumari) +- Adds bash auto-completion ((Bruno Cornec/René Ribaud) +- various small fixes (wangqi) +- fix tox python3 overrides (huang.zhiping) +- Fix Apache MPM issue (Valentin Boucher) +- Add doc/requirements.txt to docs tox environment (98k) +- Update new DMTF standards documents for 2019 (Bruno Cornec) +- Now uses pb 0.15 to build packages -> YAML conf (Bruno Cornec) +- Fix RPM dependencies by adding missing pbr and setuptools (Bruno Cornec) +- Fix example for simulator to work with the HPE ilorestfulapiexplorer (Bruno Cornec) +- Both Hpe and Hp should be considered for Oem entries (Bruno Cornec) +- Add a getserial command to redfish-client (Bruno Cornec) +- Add debian/ubuntu packages built with project-builder.org - tested with Ubuntu 18.04 (Bruno Cornec) +- OpenDev.org migration (OpenDev.org) +- Use Zuul v3 features (Bruno Cornec/Andreas Jaeger) +- Adds Gen-Z simulator support (Bruno Cornec) + +v0.4.1 (2017-03-08) +- Fix delivery to Pypi (Bruno Cornec/René Ribaud) +- Fix #1670722 to filter all scripts delivered (Bruno Cornec/René Ribaud) +- Recover a missing fix from (Zhang Yufei) + +v0.4 (2017-03-01) +- Adds redfish-client tests with Docker (not activated on gerrit) with multiple distributions (René Ribaud) +- Fix #1662225 Remove future module dependencies and Do not use pip in setup.py (René Ribaud) +- Update documentation to the fact python-redfish is an OpenStack project (Bruno Cornec) +- Adds Moonshot support (fixes for m510 and redfish-check-cartridge script) (René Ribaud) +- Adds support for Oem data structure (mandatiry ti get MAC address with some implementation as of now) (René Ribaud) +- Update DMTF docs (Bruno Cornec) +- Avoid TypeError after _replace when user post a str url and Fix wrong payload in set boot source (Zhang Yufei) +- This version provides packaging support for Mageia 5, Fedora 25, CentOS 7 and OpenSUSE 42.2 using project-builder.org 0.14.2+ with a new python-redfish-data package in order to share common content between python2 and python3 packages (Bruno Cornec) + +v0.3 (2016-04-30) +- First version usable for PoC (Team) +- Support for lots of Redfish configuration items added (René Ribaud) +- Support for OEM subtrees (René Ribaud) +- Use the correct headers for requests (René Ribaud) +- Examples reviewed to take advantage of these extensions (René Ribaud) +- Usage of jinja2 templates for redfish-client (René Ribaud) +- Updated client (René Ribaud) +- Usage of a $HOME/.redfish directory for storing configuration and logs (Bruno Cornec) +- Adds test with multiple docker containers (René Ribaud) +- Documentation review and extension (René Ribaud/Bruno Cornec) +- Update DMTF documentation to 1.0.1 (Bruno Cornec) +- First packages for Mageia 5 and Fedora 23 using project-builder.org py2 and py3 (Bruno Cornec) + +v0.2 (2015-12-08) +- first rpm made using project-builder.org (Bruno Cornec) +- Update the simple-simulator example (René Ribaud) +- Update redfish-client (René Ribaud) +- Add both UEFI parameters "Continuous" and "Once" as an example (Vincent Misson) +- New function set_parameter and set_parameter_json on Systems Class (Vincent Misson) +- New classes in types.py: Bios & Boot (Vincent Misson) +- New function get_power() and generic function get_parameter(parameter_name) for class Systems (Vincent Misson) +- Create new function: get_serialnumber. Tested with Simulator (v1) + Redfish Proliant 0.9.5 and 1.0 (Vincent Misson) +- Various doc updates (Bruno Cornec/René Ribaud) + +v0.1 (2015-09-09) +- Uses tortilla lib to wrap the REST API (René Ribaud) +- Uses python requests to manage login/logout (René Ribaud) +- Provides 2 functional working examples with Redfish simulator and ProLiant server or Moonshot Server (René Ribaud) +- Remove OpenStack deps as this code has to be usable outside of OpenStack (Bruno Cornec) +- Provides a configuration file to handle credentials and connection URL (René Ribaud) +- Provides a mapping class to handle multiple versions of Redfish (in this version, 0.95.0 for ProLiant and 1.0.0 for mockup) (René Ribaud) +- Provides a first action reset_server to ... reset system The action is commented into simple-proliant.py to not do unexpected reset. (René Ribaud) +- Provides a first retrieving function get_bios_version to get the BIOS version of a system. (René Ribaud) +- Add basic logging capability (René Ribaud) +- Change the documentation to reference Redfish specification. Remove HP and iLO specific references (Samer El-Haj-Mahmoud) +- Initial content and Clean up to meet pep8 and doc strings (Devenanda van der Veen) diff --git a/pbconf/python-redfish/pkg/depend b/pbconf/python-redfish/pkg/depend new file mode 100644 index 0000000..8ef02d8 --- /dev/null +++ b/pbconf/python-redfish/pkg/depend @@ -0,0 +1,4 @@ +# +# $Id$ +# +#P SUNWperl584core Perl 5.8.4 (core) diff --git a/pbconf/python-redfish/pkg/pbbuild b/pbconf/python-redfish/pkg/pbbuild new file mode 100644 index 0000000..95ac4f6 --- /dev/null +++ b/pbconf/python-redfish/pkg/pbbuild @@ -0,0 +1,7 @@ +# +# $Id$ +# +#perl Makefile.PL INSTALLDIRS=vendor +./configure --prefix=/usr +make +make install DESTDIR=\$1 diff --git a/pbconf/python-redfish/pkg/pkginfo b/pbconf/python-redfish/pkg/pkginfo new file mode 100644 index 0000000..d56b330 --- /dev/null +++ b/pbconf/python-redfish/pkg/pkginfo @@ -0,0 +1,13 @@ +# +# $Id$ +# +PKG="PBSOLPKG" +NAME="PBREALPKG" +VERSION="PBVER" +# all or i386 +ARCH="all" +CATEGORY="application" +DESC="PBSUMMARY" +EMAIL="PBPACKAGER" +VENDOR="PBPACKAGER" +HOTLINE="PBURL" diff --git a/pbconf/python-redfish/rpm/python-redfish.spec b/pbconf/python-redfish/rpm/python-redfish.spec new file mode 100644 index 0000000..867fe3a --- /dev/null +++ b/pbconf/python-redfish/rpm/python-redfish.spec @@ -0,0 +1,141 @@ +# +# $Id$ +# +%global with_python3 PBWITHPY3 + +Name: PBREALPKG +Version: PBVER +Release: PBTAGPBSUF +Summary: PBSUMMARY + +License: PBLIC +Group: PBGRP +Url: PBURL +Source: PBREPO/PBSRC +Requires: PBPYTHON2DEP,PBREALPKG-data +BuildArch: noarch +BuildRequires: PBPYTHON2BDEP, PB2PYTHON2BDEP + +%description +PBDESC +Python2 version. + +%if %{?with_python3} +%package -n PBPYTHON3PKG +Summary: %{summary} / Python 3 library +BuildRequires: PBPYTHON3BDEP,PB2PYTHON3BDEP +Requires: PBPYTHON3DEP,PBREALPKG-data + +%description -n PBPYTHON3PKG +PBDESC +Python3 version. +%endif # if with_python3 + +%package -n PBREALPKG-doc +Summary: %{summary} / Documentation +BuildRequires: PBPYTHONDOCBDEP + +%description -n PBREALPKG-doc +PBDESC +Documentation + +%package -n PBREALPKG-data +Summary: %{summary} / Data + +%description -n PBREALPKG-data +PBDESC +Data + +%prep +%setup -q -n %{name}-%{version}PBEXTDIR +# Fix for now as long as setuptools isn't more recent in distributions +%if %{?with_python3} +PBPYTHON3FILTER +cp -a . %{py3dir} +# python3 doesn't provide configparser at all +(cd %{py3dir} ; perl -pi -e "s|configparser>=3.3.0||" requirements.txt) +%endif # if with_python3 + +%build +%if %{?with_python3} +pushd %{py3dir} +%{__python3} setup.py build +# Build minimal documentation +cd doc +make man +popd +%endif # if with_python3 + +%{__python} setup.py build +# Build minimal documentation +cd doc +make man +make singlehtml +make latexpdf + +%install + +%if %{?with_python3} +pushd %{py3dir} +./install.sh %{__python3} %{buildroot} %{python3_sitelib} %{_prefix} PBPYTHON3PKG +mv %{buildroot}%{_bindir}/redfish-client %{buildroot}%{_bindir}/redfish-client-3 +mv %{buildroot}%{_bindir}/redfish-check-cartridge %{buildroot}%{_bindir}/redfish-check-cartridge-3 +popd +%endif # if with_python3 + +./install.sh %{__python} %{buildroot} %{python_sitelib} %{_prefix} PBPKG + +./install.sh %{_docdir} %{buildroot} %{python_sitelib} %{_prefix} PBPKG + +for i in `ls %{buildroot}/%{_mandir}/man1/*-py2.1*`; do + j=`echo $i | perl -p -e 's|-py2||'` + cp -a $i $j +done + +%files +%doc README.rst examples/[a-z]*.py LICENSE AUTHORS ChangeLog +%exclude %{_docdir}/PBREALPKG/manual/html +%exclude %{_docdir}/PBREALPKG/manual/*.pdf +%{_bindir}/redfish-client +%{_bindir}/redfish-check-cartridge +%dir %{python_sitelib}/redfish +%{python_sitelib}/redfish/*.py* +%{python_sitelib}/redfish/oem/*.py* +%{python_sitelib}/redfish/tests/*.py* +%{python_sitelib}/python_redfish* +# Needs improvement to host all .1 man pages but not the py3 ones +%{_mandir}/man1/PBREALPKG.1* +%{_mandir}/man1/*-py2.1* + +%if %{?with_python3} +%files -n PBPYTHON3PKG +%doc README.rst examples/[a-z]*.py LICENSE AUTHORS ChangeLog +%exclude %{_docdir}/PBREALPKG/manual/html +%exclude %{_docdir}/PBREALPKG/manual/*.pdf +%{_bindir}/redfish-client-3 +%{_bindir}/redfish-check-cartridge-3 +%dir %{python3_sitelib}/redfish +%{python3_sitelib}/redfish/*.py* +%{python3_sitelib}/redfish/oem/*.py* +%{python3_sitelib}/redfish/oem/__pycache__/*.py* +%{python3_sitelib}/redfish/__pycache__/*.py* +%{python3_sitelib}/redfish/tests/*.py* +%{python3_sitelib}/redfish/tests/__pycache__/*.py* +%{python3_sitelib}/python_redfish* +%{_mandir}/man1/*-py3.1* +%endif # if with_python3 + +%files -n PBREALPKG-data +%config(noreplace) %{_sysconfdir}/redfish-client.conf +%config(noreplace) %{_sysconfdir}/bash_completion.d/redfish-client.bash +%dir %{_datadir}/redfish-client +%{_datadir}/redfish-client/templates/* +%{_datadir}/redfish-client/*.txt + +%files -n PBREALPKG-doc +%{_docdir}/PBREALPKG/manual/html/_static/* +%{_docdir}/PBREALPKG/manual/html/index.html +%{_docdir}/PBREALPKG/manual/*.pdf + +%changelog +PBLOG diff --git a/python-redfish.spec b/python-redfish.spec deleted file mode 100644 index e60f04d..0000000 --- a/python-redfish.spec +++ /dev/null @@ -1,36 +0,0 @@ -%global srcname redfish - -Name: python-%{srcname} -Version: 0.1 -Release: %mkrel 1 -Summary: Redfish python library - -Group: Development/Python -License: Apache v2.0 -URL: https://github.com/devananda/%{name} -Source0: %name-%version.tar.gz - -BuildArch: noarch -BuildRequires: python-devel -BuildRequires: python-setuptools - -%description -The Redfish API supports dialoging with a Redfish compliant -system such as defined by http://www.redfishcertification.org - -%prep -%setup -q -n %{name} -#-%{version} - -%build -%{__python} setup.py build - -%install -%{__python} setup.py install -O1 --skip-build --root %{buildroot} - -%files -%doc README.rst examples/*.py -%dir %{python_sitelib}/redfish -%{python_sitelib}/redfish/*.py* -%{python_sitelib}/redfish/tests/*.py* -%{python_sitelib}/python_redfish* diff --git a/redfish-client/etc/bash_completion.d/redfish-client.bash b/redfish-client/etc/bash_completion.d/redfish-client.bash new file mode 100644 index 0000000..b435913 --- /dev/null +++ b/redfish-client/etc/bash_completion.d/redfish-client.bash @@ -0,0 +1,61 @@ +_redfish-client() +{ + local cur prev opts + COMPREPLY=() + cfgfile=$HOME/.redfish/inventory + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + opts="--help -h --insecure --debug --inventory -i --debugfile --libdebugfile + --config -c --version" + cmds="config manager chassis system" + confcmds="add del modify show showall" + ocmds="getinfo" + # done once as used a lot + mngrs=`redfish-client config show | tail -n +2` + + if [[ ${cur} == -* ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + fi + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $(compgen -W "${cmds}" -- ${cur}) ) + elif [ $COMP_CWORD -eq 2 ]; then + case "${prev}" in + config) + COMPREPLY=( $(compgen -W "${confcmds}" -- ${cur}) ) + return 0 + ;; + *) + COMPREPLY=( $(compgen -W "${ocmds}" -- ${cur}) ) + return 0 + ;; + esac + + elif [ $COMP_CWORD -eq 3 ]; then + if [ "${COMP_WORDS[COMP_CWORD-2]}" = "config" ]; then + case "${prev}" in + del|modify) + COMPREPLY=( $(compgen -W "${mngrs}" -- ${cur}) ) + return 0 + ;; + esac + else + # all other cases are getinfo manager + case "${prev}" in + getinfo) + COMPREPLY=( $(compgen -W "${mngrs}" -- ${cur}) ) + return 0 + ;; + esac + fi + + elif [ $COMP_CWORD -eq 4 ]; then + if [ "${COMP_WORDS[COMP_CWORD-3]}" = "config" ] && + [ "${COMP_WORDS[COMP_CWORD-2]}" = "modify" ]; then + COMPREPLY=( $(compgen -W "manager_name url login password" -- ${cur}) ) + return 0 + fi + fi +} +complete -F _redfish-client redfish-client diff --git a/redfish-client/etc/redfish-client.conf b/redfish-client/etc/redfish-client.conf new file mode 100644 index 0000000..a2e2261 --- /dev/null +++ b/redfish-client/etc/redfish-client.conf @@ -0,0 +1,3 @@ +[redfish-client] +templates_path = PBSHAREPATH/templates +monitor_loop = 120 diff --git a/redfish-client/redfish-check-cartridge b/redfish-client/redfish-check-cartridge new file mode 100755 index 0000000..f42dafc --- /dev/null +++ b/redfish-client/redfish-check-cartridge @@ -0,0 +1,382 @@ +#!/usr/bin/python + +# coding=utf-8 + +''' +redfish-check_cartridge :: +This is a small program to check cartridge changes in HEP moonshot chassis. +''' + +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import str +from builtins import object + +import os +import sys +import json +import docopt +import logging +import configparser +import requests.packages.urllib3 +import redfish +standard_library.install_aliases() + + +class InventoryFile(object): + '''redfisht-client inventory file management''' + def __init__(self, inventory_file): + '''Initialize the inventory file + + Open and load configuration file data. + If the file does not exist create an empty one ready to receive data + + :param inventory_file: File name of the configuration file + default: ~/.redfish/inventory + :type config-file: str + :returns: Nothing + + ''' + self._inventory_file = inventory_file + # read json file + try: + with open(self._inventory_file) as json_data: + self.data = json.load(json_data) + json_data.close() + except (ValueError, IOError): + self.data = {'Managers': {}} + + def save(self): + '''Save the configuration file data''' + try: + with open(self._inventory_file, 'w') as json_data: + json.dump(self.data, json_data) + json_data.close() + except IOError as e: + print(e.msg) + sys.exit(1) + + def manager_incorect(self, exception): + ''' Log and exit if manager name is incorect''' + logger.error('Incorrect manager name : %s' % exception.args) + sys.exit(1) + + def check_manager(self, manager_name): + '''Check if the manager exists in configuration file + + :param manager_name: Name of the manager + :type manager_name: str + + ''' + try: + if manager_name not in self.get_managers(): + raise KeyError(manager_name) + except KeyError as e: + self.manager_incorect(e) + + def add_manager(self, manager_name, url, login, password): + '''Add a manager to the configuration file + + :param manager_name: Name of the manager + :type manager_name: str + :param url: Url of the manager + :type url: str + :param login: Login of the manager + :type login: str + :param password: Password of the manager + :type password: str + + ''' + + self.data['Managers'][manager_name] = {} + self.data['Managers'][manager_name]['url'] = url + if login is None: + login = '' + if password is None: + password = '' + self.data['Managers'][manager_name]['login'] = login + self.data['Managers'][manager_name]['password'] = password + + def modify_manager(self, manager_name, parameter, parameter_value): + '''Modify the manager settings + + :param manager_name: Name of the manager + :type manager_name: str + :param parameter: url | login | password + :type url: str + :param parameter_value: Value of the parameter + :type parameter_value: str + :returns: Nothing + + ''' + + if parameter == 'url': + try: + self.data['Managers'][manager_name]['url'] = parameter_value + except KeyError as e: + self.manager_incorect(e) + elif parameter == 'login': + try: + self.data['Managers'][manager_name]['login'] = parameter_value + except KeyError as e: + self.manager_incorect(e) + elif parameter == 'password': + try: + self.data['Managers'][manager_name]['password'] \ + = parameter_value + except KeyError as e: + self.manager_incorect(e) + elif parameter == 'manager_name': + # Create a new entry with the new name + self.add_manager(parameter_value, + self.data['Managers'][manager_name]['url'], + self.data['Managers'][manager_name]['login'], + self.data['Managers'][manager_name]['password'], + ) + # Remove the previous one + self.delete_manager(manager_name) + + def delete_manager(self, manager_name): + '''Delete manager + + :param manager_name: Name of the manager + :type manager_name: str + :returns: Nothing + + ''' + + try: + del self.data['Managers'][manager_name] + except KeyError as e: + self.manager_incorect(e) + + def get_managers(self): + '''Get manager configured + + :returns: Managers + :type returns: list + + ''' + managers = [] + for manager in self.data['Managers']: + managers += [manager] + return(managers) + + def get_manager_info(self, manager): + '''Show manager info (url, login, password) + + :param manager: Name of the manager + :type manager: str + :returns: info containing url, login, password + :type returns: dict + + ''' + info = {} + url = self.data['Managers'][manager]['url'] + login = self.data['Managers'][manager]['login'] + password = self.data['Managers'][manager]['password'] + info = {'url': url, 'login': login, 'password': password} + return(info) + + +class RedfishClientException(Exception): + + '''Base class for redfish client exceptions''' + + def __init__(self, message=None, **kwargs): + self.kwargs = kwargs + self.message = message + + +if __name__ == '__main__': + '''Main application check_cartridge''' + # Functions + def get_redfish_data(connection_parameters, check_SSL): + if not connection_parameters['login']: + simulator = True + enforceSSL = False + else: + simulator = False + enforceSSL = True + try: + redfish_data = redfish.connect(connection_parameters['url'], + connection_parameters['login'], + connection_parameters['password'], + verify_cert=check_SSL, + simulator=simulator, + enforceSSL=enforceSSL) + return(redfish_data) + except redfish.exception.RedfishException as e: + logger.error(str(e.message)) + sys.stderr.write(str(e.message)) + sys.stderr.write(str(e.advices)) + sys.exit(1) + + ################################################################# + # Main program + ################################################################# + check_cartridge_version = "check_cartridge PBVER" + + # Parse and manage arguments + try: + usagefp = 'PBSHAREPATH' + "/redfish-check-cartridge_usage.txt" + with open(usagefp) as usagefile: + usage = usagefile.read() + usagefile.close() + except (ValueError, IOError): + print("Usage file {} cannot be found.".format(usagefp)) + sys.exit(1) + arguments = docopt.docopt(usage, version=check_cartridge_version) + + # Check debuging options + # Debugging LEVEL : + # 1- Only client + # 2- Client and lib + # 3- Client and lib + Tortilla + + loglevel = {"console_logger_level": "nolog", + "file_logger_level": logging.INFO, + "tortilla": False, + "lib_console_logger_level": "nolog", + "lib_file_logger_level": logging.INFO, + "urllib3_disable_warning": True} + + if arguments['--debug'] == '1': + loglevel['console_logger_level'] = logging.DEBUG + loglevel['file_logger_level'] = logging.DEBUG + elif arguments['--debug'] == '2': + loglevel['console_logger_level'] = logging.DEBUG + loglevel['file_logger_level'] = logging.DEBUG + loglevel['lib_console_logger_level'] = logging.DEBUG + loglevel['lib_file_logger_level'] = logging.DEBUG + loglevel['urllib3_disable_warning'] = False + elif arguments['--debug'] == '3': + loglevel['console_logger_level'] = logging.DEBUG + loglevel['file_logger_level'] = logging.DEBUG + loglevel['lib_console_logger_level'] = logging.DEBUG + loglevel['lib_file_logger_level'] = logging.DEBUG + loglevel['urllib3_disable_warning'] = False + loglevel['tortilla'] = True + + # Initialize logger according to command line parameters + logger = redfish.config.initialize_logger(arguments['--debugfile'], + loglevel['console_logger_level'], + loglevel['file_logger_level'], + __name__) + redfish.config.REDFISH_LOGFILE = arguments['--libdebugfile'] + redfish.config.TORTILLADEBUG = loglevel['tortilla'] + redfish.config.CONSOLE_LOGGER_LEVEL = loglevel['lib_console_logger_level'] + redfish.config.FILE_LOGGER_LEVEL = loglevel['lib_file_logger_level'] + # Avoid warning messages from request / urllib3 + # SecurityWarning: Certificate has no `subjectAltName`, falling back + # to check for a `commonName` for now. This feature is being removed + # by major browsers and deprecated by RFC 2818. + # (See https://github.com/shazow/urllib3/issues/497 for details.) + if loglevel['urllib3_disable_warning'] is True: + requests.packages.urllib3.disable_warnings() + + logger.info("*** Starting %s ***" % check_cartridge_version) + logger.info("Arguments parsed") + logger.debug(arguments) + + # Load config + config = configparser.ConfigParser(allow_no_value=True) + logger.debug("Read configuration file") + configfile = 'PBCONFFILE' + + if(arguments['--config']): + configfile = arguments['--config'] + logger.debug("Overwrite configuration specified by user at %s" + % configfile) + + if(os.path.isfile(configfile)): + logger.debug('Configuration found at %s.' % configfile) + config.read(configfile) + else: + print('Configuration file not found at {}.'.format(configfile)) + logger.error('Configuration file not found at %s.' % configfile) + sys.exit(1) + + arguments['--inventory'] = os.path.expandvars(arguments['--inventory']) + inventory = InventoryFile(arguments['--inventory']) + + # Check cmd line parameters + # If manager is not defined set it to 'default' + if not arguments['']: + manager_name = 'default' + else: + manager_name = arguments[''] + # Check if the default section is available in our conf file + inventory.check_manager(manager_name) + connection_parameters = inventory.get_manager_info(manager_name) + + print('Gathering data from manager, please wait...\n') + logger.info('Gathering data from manager') + if arguments['--insecure'] is True: + redfish_data = get_redfish_data(connection_parameters, False) + else: + redfish_data = get_redfish_data(connection_parameters, True) + print('Get cartridge list\n') + + cartridge_file = os.path.join(os.path.dirname(arguments['--inventory']), + 'cartridge.json') + + current_cartridge = redfish_data.Systems.systems_dict.keys() + previous_cartridge = [] + + if os.path.isfile(cartridge_file): + with open(cartridge_file, 'r') as f: + previous_cartridge = json.load(f) + f.close() + + print('Writing cartridge list to file') + with open(cartridge_file, 'w') as f: + if len(current_cartridge) > 0: + json.dump(current_cartridge, f) + else: + f.write('{}') + f.close() + + print("Current cartridges:") + print("{}\n".format(", ".join(current_cartridge))) + + if not previous_cartridge: + print("First run, changes can not be evaluated") + sys.exit(0) + + current_cartridge = set(current_cartridge) + previous_cartridge = set(previous_cartridge) + + print("Computing changes...\n") + + # Check if we have added a cartridge + diff = current_cartridge - previous_cartridge + print("Cartridges added:") + if diff: + print("{}".format(", ".join(diff))) + for item in diff: + system = redfish_data.Systems.systems_dict[item] + print(system.get_name()) + print(system.get_model()) + print(system.get_uuid()) + print("Memory: {}".format( + system.data.Memory.TotalSystemMemoryGB)) + print("MAC@: {}".format( + system.data.HostCorrelation.HostMACAddress)) + print("------------------") + else: + print("None") + + # Check if we have removed a cartridge + diff = previous_cartridge - current_cartridge + print("Cartridges removed:") + if diff: + print("{}\n".format(", ".join(diff))) + else: + print("None") + + logger.info("Client session terminated") + sys.exit(0) diff --git a/redfish-client/redfish-check-cartridge_usage.txt b/redfish-client/redfish-check-cartridge_usage.txt new file mode 100644 index 0000000..efa6030 --- /dev/null +++ b/redfish-client/redfish-check-cartridge_usage.txt @@ -0,0 +1,16 @@ +Usage: + check_cartridge [options] + check_cartridge (-h | --help) + check_cartridge --version + + +Options: + -h --help Show this screen. + --version Show version. + -c --config FILE Configuration file + -i --inventory FILE Configuration file [default: $HOME/.redfish/inventory] + --insecure Ignore SSL certificates + --debug LEVEL Run in debug mode, LEVEL from 1 to 3 increase verbosity + Security warning LEVEL > 1 could reveal password into the logs + --debugfile FILE Specify the client debugfile [default: $HOME/.redfish/check_cartridge.log] + --libdebugfile FILE Specify python-redfish library log file [default: $HOME/.redfish/python-redfish.log] diff --git a/redfish-client/redfish-client b/redfish-client/redfish-client new file mode 100755 index 0000000..8789054 --- /dev/null +++ b/redfish-client/redfish-client @@ -0,0 +1,462 @@ +#!/usr/bin/python + +# coding=utf-8 +''' +redfish-client +This is a client using the python-redfish library to retrieve and perform +action on redfish compatible systems. +''' +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import str +from builtins import object + +# Import necessary libraries + +import os +import sys +import time +import json +import docopt +import logging +import configparser +import jinja2 +import requests.packages.urllib3 +import redfish +standard_library.install_aliases() + +DEFMONITORLOOP = 120 # Default loop value for monitor command + + +class InventoryFile(object): + '''redfisht-client inventory file management''' + def __init__(self, inventory_file): + '''Initialize the inventory file + + Open and load configuration file data. + If the file does not exist create an empty one ready to receive data + + :param inventory_file: File name of the configuration file + default: ~/.redfish/inventory + :type config-file: str + :returns: Nothing + + ''' + self._inventory_file = inventory_file + # read json file + try: + with open(self._inventory_file) as json_data: + self.data = json.load(json_data) + json_data.close() + except (ValueError, IOError): + self.data = {'Managers': {}} + + def save(self): + '''Save the configuration file data''' + try: + with open(self._inventory_file, 'w') as json_data: + json.dump(self.data, json_data) + json_data.close() + except IOError as e: + print(e.msg) + sys.exit(1) + + def manager_incorect(self, exception): + ''' Log and exit if manager name is incorect''' + logger.error('Incorrect manager name : %s' % exception.args) + sys.exit(1) + + def check_manager(self, manager_name): + '''Check if the manager exists in configuration file + + :param manager_name: Name of the manager + :type manager_name: str + + ''' + try: + if manager_name not in self.get_managers(): + raise KeyError(manager_name) + except KeyError as e: + self.manager_incorect(e) + + def add_manager(self, manager_name, url, login, password): + '''Add a manager to the configuration file + + :param manager_name: Name of the manager + :type manager_name: str + :param url: Url of the manager + :type url: str + :param login: Login of the manager + :type login: str + :param password: Password of the manager + :type password: str + + ''' + + self.data['Managers'][manager_name] = {} + self.data['Managers'][manager_name]['url'] = url + if login is None: + login = '' + if password is None: + password = '' + self.data['Managers'][manager_name]['login'] = login + self.data['Managers'][manager_name]['password'] = password + + def modify_manager(self, manager_name, parameter, parameter_value): + '''Modify the manager settings + + :param manager_name: Name of the manager + :type manager_name: str + :param parameter: url | login | password + :type url: str + :param parameter_value: Value of the parameter + :type parameter_value: str + :returns: Nothing + + ''' + + if parameter == 'url': + try: + self.data['Managers'][manager_name]['url'] = parameter_value + except KeyError as e: + self.manager_incorect(e) + elif parameter == 'login': + try: + self.data['Managers'][manager_name]['login'] = parameter_value + except KeyError as e: + self.manager_incorect(e) + elif parameter == 'password': + try: + self.data['Managers'][manager_name]['password'] \ + = parameter_value + except KeyError as e: + self.manager_incorect(e) + elif parameter == 'manager_name': + # Create a new entry with the new name + self.add_manager(parameter_value, + self.data['Managers'][manager_name]['url'], + self.data['Managers'][manager_name]['login'], + self.data['Managers'][manager_name]['password'], + ) + # Remove the previous one + self.delete_manager(manager_name) + + def delete_manager(self, manager_name): + '''Delete manager + + :param manager_name: Name of the manager + :type manager_name: str + :returns: Nothing + + ''' + + try: + del self.data['Managers'][manager_name] + except KeyError as e: + self.manager_incorect(e) + + def get_managers(self): + '''Get manager configured + + :returns: Managers + :type returns: list + + ''' + managers = [] + for manager in self.data['Managers']: + managers += [manager] + return(managers) + + def get_manager_info(self, manager): + '''Show manager info (url, login, password) + + :param manager: Name of the manager + :type manager: str + :returns: info containing url, login, password + :type returns: dict + + ''' + info = {} + url = self.data['Managers'][manager]['url'] + login = self.data['Managers'][manager]['login'] + password = self.data['Managers'][manager]['password'] + info = {'url': url, 'login': login, 'password': password} + return(info) + + +class RedfishClientException(Exception): + + '''Base class for redfish client exceptions''' + + def __init__(self, message=None, **kwargs): + self.kwargs = kwargs + self.message = message + + +if __name__ == '__main__': + '''Main application redfish-client''' + # Functions + def get_redfish_data(connection_parameters, check_SSL): + if not connection_parameters['login']: + simulator = True + enforceSSL = False + else: + simulator = False + enforceSSL = True + try: + redfish_data = redfish.connect(connection_parameters['url'], + connection_parameters['login'], + connection_parameters['password'], + verify_cert=check_SSL, + simulator=simulator, + enforceSSL=enforceSSL) + return(redfish_data) + except redfish.exception.RedfishException as e: + logger.error(str(e.message)) + sys.stderr.write(str(e.message)) + sys.stderr.write(str(e.advices)) + sys.exit(1) + + def show_manager(all=False): + '''Display manager info + + :param all: Add login and password info + :type all: bool + :returns: Nothing + + ''' + print('Managers configured :') + if(not inventory.get_managers()): + print("None") + else: + for manager in sorted(inventory.get_managers()): + print(manager) + if all is True: + info = inventory.get_manager_info(manager) + print('\tUrl : {}'.format(info['url'])) + print('\tLogin : {}'.format(info['login'])) + print('\tPassword : {}'.format(info['password'])) + + def display_manager_info(redfish_data): + # Display manager information using jinja2 template + render_template("manager_info.template") + + def display_chassis_info(redfish_data): + # Display chassis information using jinja2 template + render_template("chassis_info.template") + + def display_system_info(redfish_data): + # Display system information using jinja2 template + render_template("system_info.template") + + def display_part_serial_numbers(redfish_data): + # Display PartNumbers and SerialNumber entries + # information using jinja2 template + render_template("serial_info.template") + + def monitor(redfish_data): + # Monitor variable values accessible by the manager + # information using jinja2 template + render_template("monitor_info.template") + + def render_template(template): + try: + template = jinja2_env.get_template(template) + except jinja2.exceptions.TemplateNotFound as e: + print('Template "{}" not found in {}.' + .format(e.message, jinja2_env.loader.searchpath[0])) + logger.error('Template "%s" not found in %s.' + % (e.message, jinja2_env.loader.searchpath[0])) + sys.exit(1) + + print(template.render(r=redfish_data)) + + ################################################################# + # Main program + ################################################################# + redfishclient_version = "redfish-client PBVER" + + # Parse and manage arguments + try: + usagefp = 'PBSHAREPATH' + "/redfish-client_usage.txt" + with open(usagefp) as usagefile: + usage = usagefile.read() + usagefile.close() + except (ValueError, IOError): + print("Usage file {} cannot be found.".format(usagefp)) + sys.exit(1) + + arguments = docopt.docopt(usage, version=redfishclient_version) + + # Check debuging options + # Debugging LEVEL : + # 1- Only client + # 2- Client and lib + # 3- Client and lib + Tortilla + + loglevel = {"console_logger_level": "nolog", + "file_logger_level": logging.INFO, + "tortilla": False, + "lib_console_logger_level": "nolog", + "lib_file_logger_level": logging.INFO, + "urllib3_disable_warning": True} + + if arguments['--debug'] == '1': + loglevel['console_logger_level'] = logging.DEBUG + loglevel['file_logger_level'] = logging.DEBUG + elif arguments['--debug'] == '2': + loglevel['console_logger_level'] = logging.DEBUG + loglevel['file_logger_level'] = logging.DEBUG + loglevel['lib_console_logger_level'] = logging.DEBUG + loglevel['lib_file_logger_level'] = logging.DEBUG + loglevel['urllib3_disable_warning'] = False + elif arguments['--debug'] == '3': + loglevel['console_logger_level'] = logging.DEBUG + loglevel['file_logger_level'] = logging.DEBUG + loglevel['lib_console_logger_level'] = logging.DEBUG + loglevel['lib_file_logger_level'] = logging.DEBUG + loglevel['urllib3_disable_warning'] = False + loglevel['tortilla'] = True + + # Initialize logger according to command line parameters + logger = redfish.config.initialize_logger(arguments['--debugfile'], + loglevel['console_logger_level'], + loglevel['file_logger_level'], + __name__) + redfish.config.REDFISH_LOGFILE = arguments['--libdebugfile'] + redfish.config.TORTILLADEBUG = loglevel['tortilla'] + redfish.config.CONSOLE_LOGGER_LEVEL = loglevel['lib_console_logger_level'] + redfish.config.FILE_LOGGER_LEVEL = loglevel['lib_file_logger_level'] + # Avoid warning messages from request / urllib3 + # SecurityWarning: Certificate has no `subjectAltName`, falling back + # to check for a `commonName` for now. This feature is being removed + # by major browsers and deprecated by RFC 2818. + # (See https://github.com/shazow/urllib3/issues/497 for details.) + if loglevel['urllib3_disable_warning'] is True: + requests.packages.urllib3.disable_warnings() + + logger.info("*** Starting %s ***" % redfishclient_version) + logger.info("Arguments parsed") + logger.debug(arguments) + + # Load config + config = configparser.ConfigParser(allow_no_value=True) + logger.debug("Read configuration file") + configfile = 'PBCONFFILE' + + if(arguments['--config']): + configfile = arguments['--config'] + logger.debug("Overwrite configuration specified by user at %s" + % configfile) + + if(os.path.isfile(configfile)): + logger.debug('Configuration found at %s.' % configfile) + config.read(configfile) + else: + print('Configuration file not found at {}.'.format(configfile)) + logger.error('Configuration file not found at %s.' % configfile) + sys.exit(1) + + arguments['--inventory'] = os.path.expandvars(arguments['--inventory']) + inventory = InventoryFile(arguments['--inventory']) + + # Initialize Template system (jinja2) + templates_path = config.get("redfish-client", "templates_path") + dml = float(config.get("redfish-client", "monitor_loop")) + if dml is None: + dml = DEFMONITORLOOP + logger.debug("Initialize template system") + jinja2_env = jinja2.Environment( + loader=jinja2.FileSystemLoader(templates_path)) + + # Check cmd line parameters + if arguments['config'] is True: + logger.debug("Config commands") + if arguments['show'] is True: + logger.debug('show command') + show_manager() + elif arguments['showall'] is True: + logger.debug('showall command') + show_manager(True) + elif arguments['add'] is True: + logger.debug('add command') + inventory.add_manager(arguments[''], + arguments[''], + arguments[''], + arguments['']) + logger.debug(inventory.data) + inventory.save() + elif arguments['del'] is True: + logger.debug('del command') + inventory.delete_manager(arguments['']) + logger.debug(inventory.data) + inventory.save() + elif arguments['modify'] is True: + logger.debug('modify command') + if arguments['url'] is not False: + inventory.modify_manager(arguments[''], + 'url', + arguments['']) + elif arguments['login'] is not False: + inventory.modify_manager(arguments[''], + 'login', + arguments['']) + elif arguments['password'] is not False: + inventory.modify_manager(arguments[''], + 'password', + arguments['']) + elif arguments['manager_name'] is not False: + inventory.modify_manager(arguments[''], + 'manager_name', + arguments['']) + logger.debug(inventory.data) + inventory.save() + elif (arguments['getinfo'] is True or + arguments['getserial'] is True or + arguments['monitor'] is True): + + logger.debug('get commands') + # If manager is not defined set it to 'default' + if not arguments['']: + manager_name = 'default' + else: + manager_name = arguments[''] + # Check if the default section is available in our conf file + inventory.check_manager(manager_name) + connection_parameters = inventory.get_manager_info(manager_name) + + print('Gathering data from manager, please wait...\n') + # TODO : Add a rotating star showing program is running ? + # Could be a nice exercice for learning python. :) + logger.info('Gathering data from manager') + + redfish_data = get_redfish_data(connection_parameters, + not arguments['--insecure']) + + if arguments['getinfo'] is True: + if arguments['manager'] is True: + logger.debug("Manager commands") + display_manager_info(redfish_data) + elif arguments['system'] is True: + logger.debug("system commands") + display_system_info(redfish_data) + elif arguments['chassis'] is True: + logger.debug("chassis commands") + display_chassis_info(redfish_data) + if arguments['getserial'] is True: + logger.debug("serial & part number commands") + display_part_serial_numbers(redfish_data) + if arguments['monitor'] is True: + logger.debug("monitor command") + monitor(redfish_data) + while True: + print("Sleeping for {} seconds".format(dml)) + time.sleep(dml) + redfish_data = get_redfish_data(connection_parameters, + not arguments['--insecure']) + monitor(redfish_data) + logger.info("Client session terminated") + sys.exit(0) diff --git a/redfish-client/redfish-client_usage.txt b/redfish-client/redfish-client_usage.txt new file mode 100644 index 0000000..4dc9420 --- /dev/null +++ b/redfish-client/redfish-client_usage.txt @@ -0,0 +1,34 @@ +redfish-client :: + +Usage: + redfish-client [options] config add [] [] + redfish-client [options] config del + redfish-client [options] config modify (manager_name | url | login | password) + redfish-client [options] config show + redfish-client [options] config showall + redfish-client [options] manager getinfo [] + redfish-client [options] chassis getinfo [] + redfish-client [options] system getinfo [] + redfish-client [options] getserial [] + redfish-client [options] monitor [] + redfish-client (-h | --help) + redfish-client --version + + +Options: + -h --help Show this screen. + --version Show version. + -c --config FILE Configuration file + -i --inventory FILE Configuration file [default: $HOME/.redfish/inventory] + --insecure Ignore SSL certificates + --debug LEVEL Run in debug mode, LEVEL from 1 to 3 increase verbosity + Security warning LEVEL > 1 could reveal password into the logs + --debugfile FILE Specify the client debugfile [default: $HOME/.redfish/redfish-client.log] + --libdebugfile FILE Specify python-redfish library log file [default: $HOME/.redfish/python-redfish.log] + +Commands: +config: manage the configuration file (add, remove modify managers). +manager/chassis/system: manage the manager/chassis/system (Light out management). If + is not provided use the 'default' entry +getserial: display all serial numbers found through that manager to allow inventory +monitor: monitor changing variables accessible through that manager in a loop (CTRL-C to exit) diff --git a/redfish-client/rfclient.py b/redfish-client/rfclient.py new file mode 120000 index 0000000..f76cad2 --- /dev/null +++ b/redfish-client/rfclient.py @@ -0,0 +1 @@ +redfish-client \ No newline at end of file diff --git a/redfish-client/templates/chassis_info.template b/redfish-client/templates/chassis_info.template new file mode 100644 index 0000000..39fa3c0 --- /dev/null +++ b/redfish-client/templates/chassis_info.template @@ -0,0 +1,91 @@ +Redfish API version : {{ r.get_api_version() }} +{{ r.Root.get_name() }} + +Chassis information : +===================== +{% for chassis_index in r.Chassis.chassis_dict | sort %} +{%- set chassis = r.Chassis.chassis_dict[chassis_index] %} +Chassis id {{ chassis_index }}: +Manufacturer : {{ chassis.get_manufacturer() }} +Model : {{ chassis.get_model() }} +Chassis Type : {{ chassis.get_type() }} +PartNumber : {{ chassis.get_part_number() }} +SKU : {{ chassis.get_sku() }} +Serial : {{ chassis.get_serial_number() }} +AssetTag : {{ chassis.get_asset_tag() }} +Status : State : {{ chassis.get_status().Health }} / Health : {{ chassis.get_status().Health }} +{%- if chassis.thermal %} +Temperatures : +{%- if chassis.thermal.get_temperatures() == 'Not available' %} + Not available +{%- else %} +{%- for sensor, temp in chassis.thermal.get_temperatures().items() | sort %} + {{ sensor }} : {{ temp }} +{%- endfor %} +{%- endif %} +Fans : +{%- if chassis.thermal.get_fans() == 'Not available' %} + Not available +{%- else %} +{%- for fan, rpm in chassis.thermal.get_fans().items() | sort %} + {{ fan }} : {{ rpm }} +{%- endfor %} +{%- endif %} +{%- endif %} + +{# +Hostname : {{ system.get_hostname() }} +Bios version : {{ system.get_bios_version() }} +CPU number : {{ system.get_cpucount() }} +CPU model : {{ system.get_cpumodel() }} + +{%- if system.processors_collection %} +CPU details : + {%- for cpu_index in system.processors_collection.processors_dict | sort %} + {%- set cpu = system.processors_collection.processors_dict[cpu_index] %} + Processor id {{ cpu_index }} : + Speed : {{ cpu.get_speed() }} + Cores : {{ cpu.get_cores() }} + Threads : {{ cpu.get_threads() }} + {% endfor %} +{%- endif %} +Available memory : {{ system.get_memory() }} +Status : State : {{ system.get_status().Health }} / Health : {{ system.get_status().Health }} +Power : {{ system.get_powerstate() }} +Description : {{ system.get_description() }} +Chassis : {{ system.get_chassis() | join(', ') }} +Managers : {{ system.get_managers() | join(', ') }} +IndicatorLED : {{ system.get_indicatorled() }} + +Ethernet Interface : +{%- if system.ethernet_interfaces_collection %} +{%- for ethernetinterface_index in system.ethernet_interfaces_collection.ethernet_interfaces_dict | sort %} +{%- set ei = system.ethernet_interfaces_collection.ethernet_interfaces_dict[ethernetinterface_index] %} + Ethernet Interface id {{ ethernetinterface_index }} : + {{ ei.get_name() }} + FQDN : {{ ei.get_fqdn() }} + Mac address : {{ ei.get_mac() }} + Address ipv4 : {{ ei.get_ipv4() | join(', ') }} + Address ipv6 : {{ ei.get_ipv6() | join(', ') }} +{%- endfor %} +{%- else %} + This system has no ethernet interface +{%- endif %} + +Simple Storage : +{%- if system.simple_storage_collection %} +{%- for simplestorage_index in system.simple_storage_collection.simple_storage_dict | sort %} +{%- set ss = system.simple_storage_collection.simple_storage_dict[simplestorage_index] %} + Simple Storage id {{ simplestorage_index }} : + {{ ss.get_name() }} + Status : State : {{ system.get_status().Health }} / Health : {{ system.get_status().Health }} + {%- for dev in ss.get_devices() %} + Device id {{ loop.index }} : {{ dev.Name }} {{ dev.Manufacturer }} {{ dev.Model }} + {%- endfor %} +{%- endfor %} +{%- else %} + This system has no simple storage +{%- endif %} +-------------------------------------------------------------------------------- +#} +{% endfor %} diff --git a/redfish-client/templates/manager_info.template b/redfish-client/templates/manager_info.template new file mode 100644 index 0000000..fb409f0 --- /dev/null +++ b/redfish-client/templates/manager_info.template @@ -0,0 +1,32 @@ +Redfish API version : {{ r.get_api_version() }} +{{ r.Root.get_name() }} + +Managers information : +====================== +{% for manager_index in r.Managers.managers_dict | sort %} +{%- set manager = r.Managers.managers_dict[manager_index] %} +Manager id {{ manager_index }}: +UUID : {{ manager.get_uuid() }} +Type : {{ manager.get_type() }} +Firmware version : {{ manager.get_firmware_version() }} +Status : State : {{ manager.get_status().Health }} / Health : {{ manager.get_status().Health }} +Ethernet Interface : +{%- if manager.ethernet_interfaces_collection %} +{%- for ethernetinterface_index in manager.ethernet_interfaces_collection.ethernet_interfaces_dict | sort %} +{%- set ei = manager.ethernet_interfaces_collection.ethernet_interfaces_dict[ethernetinterface_index] %} + Ethernet Interface id {{ ethernetinterface_index }} : + {{ ei.get_name() }} + FQDN : {{ ei.get_fqdn() }} + Mac address : {{ ei.get_mac() }} + Address ipv4 : {{ ei.get_ipv4() | join(', ') }} + Address ipv6 : {{ ei.get_ipv6() | join(', ') }} +{%- endfor %} +{%- else %} + This manager has no ethernet interface +{%- endif %} +Managed Chassis : + {{ manager.get_managed_chassis() | join(', ') }} +Managed System : + {{ manager.get_managed_systems() | join(', ') }} +---------------------------- +{% endfor %} \ No newline at end of file diff --git a/redfish-client/templates/monitor_info.template b/redfish-client/templates/monitor_info.template new file mode 100644 index 0000000..d560e20 --- /dev/null +++ b/redfish-client/templates/monitor_info.template @@ -0,0 +1,47 @@ +Redfish API version: {{ r.get_api_version() }} +{{ r.Root.get_name() }} + +Monitoring +========== +{% for chassis_index in r.Chassis.chassis_dict | sort %} +{%- set chassis = r.Chassis.chassis_dict[chassis_index] %} +Chassis #{{ chassis_index }}: +Name: {{ chassis.get_name() }} +Power: {{ chassis.get_powerstate() }} +Temperatures : +{%- if chassis.thermal.get_temperatures() == 'Not available' %} + Not available +{%- else %} +{%- for sensor, temp in chassis.thermal.get_temperatures().items() | sort %} + {{ sensor }} : {{ temp }} +{%- endfor %} +{%- endif %} +Fans : +{%- if chassis.thermal.get_fans() == 'Not available' %} + Not available +{%- else %} +{%- for fan, rpm in chassis.thermal.get_fans().items() | sort %} + {{ fan }} : {{ rpm }} +{%- endfor %} +{%- endif %} +Power control : +{%- if chassis.power.get_power() == 'Not available' %} + Not available +{%- else %} +{%- for ps, volt in chassis.power.get_power().items() | sort %} + {{ ps }} : {{ volt }} +{%- endfor %} +{%- endif %} +{%- endfor %} + +-------------------------------------------------------------------------------- +{% for system_index in r.Systems.systems_dict | sort %} +{%- set system = r.Systems.systems_dict[system_index] %} +System #{{ system_index }}: +Name: {{ system.get_name() }} +CPU number: {{ system.get_cpucount() }} +CPU model: {{ system.get_cpumodel() }} +Status: State: {{ system.get_status().Health }} / Health: {{ system.get_status().Health }} + +-------------------------------------------------------------------------------- +{% endfor %} diff --git a/redfish-client/templates/serial_info.template b/redfish-client/templates/serial_info.template new file mode 100644 index 0000000..fbbc00c --- /dev/null +++ b/redfish-client/templates/serial_info.template @@ -0,0 +1,81 @@ +Redfish API version: {{ r.get_api_version() }} +{{ r.Root.get_name() }} + +Part|Serial Numbers information: +================================ +{% for chassis_index in r.Chassis.chassis_dict | sort %} +{%- set chassis = r.Chassis.chassis_dict[chassis_index] %} +Chassis #{{ chassis_index }}: +Name: {{ chassis.get_name() }} +Manufacturer: {{ chassis.get_manufacturer() }} +Model: {{ chassis.get_model() }} +Chassis Type: {{ chassis.get_type() }} +Part#: {{ chassis.get_part_number() }} +SKU: {{ chassis.get_sku() }} +Serial#: {{ chassis.get_serial_number() }} +AssetTag: {{ chassis.get_asset_tag() }} +FW version: {{ chassis.get_fw_version() }} +{%- endfor %} + +-------------------------------------------------------------------------------- +{% for system_index in r.Systems.systems_dict | sort %} +{%- set system = r.Systems.systems_dict[system_index] %} +System #{{ system_index }}: +Name: {{ system.get_name() }} +Type: {{ system.get_type() }} +Model: {{ system.get_model() }} +SKU: {{ system.get_sku() }} +Serial: {{ system.get_serial_number() }} +FW version: {{ system.get_fw_version() }} +CPU number: {{ system.get_cpucount() }} +CPU model: {{ system.get_cpumodel() }} +Available memory: {{ system.get_memory() }} GB +Status: State: {{ system.get_status().Health }} / Health: {{ system.get_status().Health }} +Power: {{ system.get_powerstate() }} +{%- if system.data.Oem.Hpe or system.data.Oem.Hp %} +{%- if system.network_adapters_collection %} +{%- for nic_index in system.network_adapters_collection.network_adapters_dict | sort %} + {%- if system.network_adapters_collection.network_adapters_dict[nic_index] %} + {%- set na = system.network_adapters_collection.network_adapters_dict[nic_index] %} +Network Adapter #{{ nic_index }}: + Name: {{ na.get_name() }} + Mac address: + {%- for mac_index in na.get_mac() | sort %} + Mac #{{ loop.index }}: {{ mac_index }} + {%- endfor %} + Serial#: {{ na.get_serial_number() }} + Part#: {{ na.get_part_number() }} + FW version: {{ na.get_fw_version() }} + {%- endif %} +{%- endfor %} +{%- endif %} +{%- endif %} + +{%- if system.data.Oem.Hpe or system.data.Oem.Hp %} +{%- if system.smart_storage %} +{%- for ac_index in system.smart_storage.array_controllers_collection.array_controllers_dict | sort %} + {%- set ac = system.smart_storage.array_controllers_collection.array_controllers_dict[ac_index] %} +Array controller #{{ ac_index }}: + Model: {{ ac.get_model() }} + Serial #: {{ ac.get_serial_number() }} + Part #: {{ ac.get_part_number() }} + {%- for logical_drives_index in ac.logical_drives_collection.logical_drives_dict | sort %} + {%- set ld = ac.logical_drives_collection.logical_drives_dict[logical_drives_index] %} + Logical drive #{{ logical_drives_index }}: + Capacity: {{ ld.get_capacity() }} MB + Raid Level: {{ ld.get_raid() }} + {%- endfor %} + {%- for physical_drives_index in ac.physical_drives_collection.physical_drives_dict | sort %} + {%- set pd = ac.physical_drives_collection.physical_drives_dict[physical_drives_index] %} + Physical drive #{{ physical_drives_index }}: + {{ pd.get_model() }} + Capacity: {{ pd.get_capacity() }} MB + Serial #: {{ pd.get_serial_number() }} + Part #: {{ pd.get_part_number() }} + FW: {{ pd.get_fw_version() }} + {%- endfor %} +{%- endfor %} +{%- endif %} +{%- endif %} +-------------------------------------------------------------------------------- +{% endfor %} diff --git a/redfish-client/templates/system_info.template b/redfish-client/templates/system_info.template new file mode 100644 index 0000000..0f7cee1 --- /dev/null +++ b/redfish-client/templates/system_info.template @@ -0,0 +1,108 @@ +Redfish API version : {{ r.get_api_version() }} +{{ r.Root.get_name() }} + +Systems information : +===================== +{% for system_index in r.Systems.systems_dict | sort %} +{%- set system = r.Systems.systems_dict[system_index] %} +System id {{ system_index }}: +UUID : {{ system.get_uuid() }} +Type : {{ system.get_type() }} +Manufacturer : {{ system.get_manufacturer() }} +Model : {{ system.get_model() }} +SKU : {{ system.get_sku() }} +Serial : {{ system.get_serial_number() }} +Hostname : {{ system.get_hostname() }} +Bios version : {{ system.get_bios_version() }} +CPU number : {{ system.get_cpucount() }} +CPU model : {{ system.get_cpumodel() }} + +{%- if system.processors_collection %} +CPU details : + {%- for cpu_index in system.processors_collection.processors_dict | sort %} + {%- set cpu = system.processors_collection.processors_dict[cpu_index] %} + Processor id {{ cpu_index }} : + Speed : {{ cpu.get_speed() }} + Cores : {{ cpu.get_cores() }} + Threads : {{ cpu.get_threads() }} + {% endfor %} +{%- endif %} +Available memory : {{ system.get_memory() }} GB +Status : State : {{ system.get_status().Health }} / Health : {{ system.get_status().Health }} +Power : {{ system.get_powerstate() }} +Description : {{ system.get_description() }} +Chassis : {{ system.get_chassis() | join(', ') }} +Managers : {{ system.get_managers() | join(', ') }} +IndicatorLED : {{ system.get_indicatorled() }} + +Ethernet Interface : +{%- if system.ethernet_interfaces_collection %} +{%- for ethernetinterface_index in system.ethernet_interfaces_collection.ethernet_interfaces_dict | sort %} +{%- set ei = system.ethernet_interfaces_collection.ethernet_interfaces_dict[ethernetinterface_index] %} + Ethernet Interface id {{ ethernetinterface_index }} : + {{ ei.get_name() }} + FQDN : {{ ei.get_fqdn() }} + Mac address : {{ ei.get_mac() }} + Address ipv4 : {{ ei.get_ipv4() | join(', ') }} + Address ipv6 : {{ ei.get_ipv6() | join(', ') }} +{%- endfor %} +{%- else %} + This system has no ethernet interface as Redfish standard data +{%- endif %} +Looking for potential OEM information : +{%- if system.data.Oem.Hpe or system.data.Oem.Hp %} + Supplemental information from HPE OEM part. + {%- if system.network_adapters_collection %} + {%- for networkadapter_index in system.network_adapters_collection.network_adapters_dict | sort %} + {%- set na = system.network_adapters_collection.network_adapters_dict[networkadapter_index] %} + Network adapter id {{ networkadapter_index }} : + {{ na.get_name() }} + {#- Removing these information because the FW is not providing them correctly + {{ na.get_structured_name() }} + {{ na.get_uefi_path() }} + #} + Mac address : {{ na.get_mac() | join(', ') }} + {%- endfor %} + {%- endif %} +{%- else %} + This system has no supplemental OEM information +{%- endif %} + + +Simple Storage : +{%- if system.simple_storage_collection %} +{%- for simplestorage_index in system.simple_storage_collection.simple_storage_dict | sort %} +{%- set ss = system.simple_storage_collection.simple_storage_dict[simplestorage_index] %} + Simple Storage id {{ simplestorage_index }} : + {{ ss.get_name() }} + Status : State : {{ system.get_status().Health }} / Health : {{ system.get_status().Health }} + {%- for dev in ss.get_devices() %} + Device id {{ loop.index }} : {{ dev.Name }} {{ dev.Manufacturer }} {{ dev.Model }} + {%- endfor %} +{%- endfor %} +{%- else %} + This system has no simple storage as Redfish standard data +{%- endif %} +Looking for potential OEM information : +{%- if system.data.Oem.Hpe or system.data.Oem.Hp %} + Supplemental information from HPE OEM part. + {%- if system.smart_storage %} + {%- for array_controllers_index in system.smart_storage.array_controllers_collection.array_controllers_dict | sort %} + {%- set ac = system.smart_storage.array_controllers_collection.array_controllers_dict[array_controllers_index] %} + Array controller id {{ array_controllers_index }} : + {{ ac.get_name() }} + {%- for logical_drives_index in ac.logical_drives_collection.logical_drives_dict | sort %} + {%- set ld = ac.logical_drives_collection.logical_drives_dict[logical_drives_index] %} + Logical drive id {{ logical_drives_index }} : + {{ ld.get_name() }} + Status : State : {{ ld.get_status().Health }} / Health : {{ ld.get_status().Health }} + Capacity : {{ ld.get_capacity() }} MB + Raid : {{ ld.get_raid() }} + {%- endfor %} + {%- endfor %} + {%- endif %} +{%- else %} + This system has no supplemental OEM information +{%- endif %} +-------------------------------------------------------------------------------- +{% endfor %} diff --git a/redfish-client/tests/Dockerfile b/redfish-client/tests/Dockerfile new file mode 100644 index 0000000..8adff3f --- /dev/null +++ b/redfish-client/tests/Dockerfile @@ -0,0 +1,13 @@ +# This Dockerfile is to build a container +# in order to run a standalone python-redfish example +FROM ubuntu:21.04 +MAINTAINER bruno.cornec@hpe.com +ENV DEBIAN_FRONTEND noninterative +RUN apt-get update +RUN apt-get -y install python3-mock python3-pip python3-jinja2 python3-requests python3-urllib3 python3-docopt python3-simplejson python3-colorama python3-httpretty git openssh-client libpython3.9-dev python3-oslotest +RUN pip3 install tortilla +RUN useradd -m tester +RUN chown -R tester /usr/local +RUN su - tester -c "git clone https://github.com/bcornec/python-redfish.git; pip install -r python-redfish/requirements.txt ; cd python-redfish ; python3 setup.py install -O1" +USER tester +CMD /bin/bash diff --git a/redfish-client/tests/centos-7-src-p3.dkf b/redfish-client/tests/centos-7-src-p3.dkf new file mode 100644 index 0000000..fb7f027 --- /dev/null +++ b/redfish-client/tests/centos-7-src-p3.dkf @@ -0,0 +1,12 @@ +FROM centos:7 +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \ +yum install -y python3-pip +COPY python-redfish.src.tar.gz /python-redfish.src.tar.gz +RUN mkdir /var/log/python-redfish +RUN tar xvvf python-redfish.src.tar.gz +RUN pip3 install --upgrade pip +RUN pip3 install --upgrade setuptools +RUN cd python-redfish* && \ +pip3 install -r requirements.txt && \ +python3 setup.py install +CMD ["/bin/bash"] diff --git a/redfish-client/tests/debian-11-src-p3.dkf b/redfish-client/tests/debian-11-src-p3.dkf new file mode 100644 index 0000000..cf36cba --- /dev/null +++ b/redfish-client/tests/debian-11-src-p3.dkf @@ -0,0 +1,16 @@ +FROM debian:11 +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update && \ +apt-get install -y apt-utils && \ +apt-get install -y python3-pip +COPY python-redfish.src.tar.gz /python-redfish.src.tar.gz +RUN mkdir /var/log/python-redfish +RUN tar xvvf python-redfish.src.tar.gz +# Need a really recent version of setuptools to support +# configparser>=3.3.0; python_version < '3' in requirements.txt +RUN pip install --upgrade setuptools +RUN cd python-redfish* && \ +pip3 install -r requirements.txt && \ +python3 setup.py install +CMD ["/bin/bash"] + diff --git a/redfish-client/tests/fedora-35-pip-p3.dkf b/redfish-client/tests/fedora-35-pip-p3.dkf new file mode 100644 index 0000000..0dc1826 --- /dev/null +++ b/redfish-client/tests/fedora-35-pip-p3.dkf @@ -0,0 +1,6 @@ +FROM fedora:35 +RUN dnf install -y python-pip +RUN mkdir /var/log/python-redfish +RUN pip install python-redfish --pre +CMD ["/bin/bash"] + diff --git a/redfish-client/tests/fedora-35-src-p3.dkf b/redfish-client/tests/fedora-35-src-p3.dkf new file mode 100644 index 0000000..585974c --- /dev/null +++ b/redfish-client/tests/fedora-35-src-p3.dkf @@ -0,0 +1,12 @@ +FROM fedora:35 +RUN dnf install -y python3-pip && \ +dnf install -y tar +COPY python-redfish.src.tar.gz /python-redfish.src.tar.gz +RUN mkdir /var/log/python-redfish +RUN tar xvzf python-redfish.src.tar.gz +RUN rm python-redfish.src.tar.gz +RUN cd python-redfish* && \ +pip3 install -r requirements.txt && \ +python3 setup.py install +CMD ["/bin/bash"] + diff --git a/redfish-client/tests/test_client.py b/redfish-client/tests/test_client.py new file mode 100644 index 0000000..2406a95 --- /dev/null +++ b/redfish-client/tests/test_client.py @@ -0,0 +1,123 @@ +# coding=utf-8 + +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import object +import os +import stat +import subprocess +import re +import pytest +from docker import Client +from path import Path +standard_library.install_aliases() + + +class DockerTest(object): + def __init__(self): + self.cli = Client(base_url='unix://var/run/docker.sock') + + def build(self, dockerfile): + dockerfile = Path(dockerfile) + tag = 'rf-' + dockerfile.basename().replace('.dkf', '') + dockerfile.copy('redfish-client/tests/Dockerfile') + response = [line for line in self.cli.build( + path='redfish-client/tests', + tag=tag, + rm=True)] + return(response) + + def run(self, image, command): + container = self.cli.create_container(image=image, + command=command, + tty=True, + stdin_open=True) + self.cli.start(container=container.get('Id')) + self.cli.wait(container=container.get('Id')) + response = self.cli.logs(container=container.get('Id'), + stdout=True) + self.cli.remove_container(container=container.get('Id')) + return(response.decode('utf8')) + + +def local_docker_available(): + try: + mode = os.stat('/var/run/docker.sock').st_mode + except OSError: + return False + isSocket = stat.S_ISSOCK(mode) + if not isSocket: + print('Make sure docker services are running') + return False + + cli = Client(base_url='unix://var/run/docker.sock') + response = cli.containers() + if not isinstance(response, list): + print('Ensure you have sufficiant' + + 'credentials to use docker with' + + 'your current user') + return False + return True + + +local_docker = pytest.mark.skipif( + not local_docker_available(), reason="Docker is not available locally") + + +@local_docker +def test_sources(): + output = subprocess.check_output(["python", "setup.py", "sdist"]) + search = re.search(r"removing '(\S+)'", str(output)) + filename = Path('dist/' + search.group(1) + '.tar.gz') + filename.copy('redfish-client/tests/python-redfish.src.tar.gz') + assert Path('redfish-client/tests/python-redfish.src.tar.gz').isfile() + + +@local_docker +def test_dockerbuild(): + docker = DockerTest() + # Warning : Image tag is derived from file name, do not use uppercase !!! + # because docker image tags can not use uppercase so far. + dockerfiles = ('redfish-client/tests/ubuntu-20.04-src-p3.dkf', + 'redfish-client/tests/debian-11-src-p3.dkf', + 'redfish-client/tests/centos-7-src-p3.dkf', + 'redfish-client/tests/fedora-35-src-p3.dkf', + 'redfish-client/tests/fedora-35-pip-p3.dkf',) + for dockerfile in dockerfiles: + print('Testing : {}'.format(dockerfile)) + response = docker.build(dockerfile) + status = str(response[-2]) + assert 'Successfully built' in status, f"error with {dockerfile} : {status}" + + +@local_docker +def test_install(): + docker = DockerTest() + images = ('rf-ubuntu-20.04-src-p3', + 'rf-debian-11-src-p3', + 'rf-centos-7-src-p3', + 'rf-fedora-35-src-p3', + 'rf-fedora-35-pip-p3') + for img in images: + print('Testing : {}'.format(img)) + response = docker.run(img, 'redfish-client config showall') + print(response) + assert ('Managers configured' in response and 'None' in response) + + +@local_docker +def test_versionformat(): + docker = DockerTest() + images = ('rf-ubuntu-20.04-src-p3', + 'rf-debian-11-src-p3', + 'rf-centos-7-src-p3', + 'rf-fedora-35-src-p3', + 'rf-fedora-35-pip-p3') + for img in images: + print('Testing : {}'.format(img)) + response = docker.run(img, 'redfish-client --version') + print(response) + assert (re.match(r'redfish-client \d+\.\d+', response)) diff --git a/redfish-client/tests/ubuntu-20.04-src-p3.dkf b/redfish-client/tests/ubuntu-20.04-src-p3.dkf new file mode 100644 index 0000000..6981992 --- /dev/null +++ b/redfish-client/tests/ubuntu-20.04-src-p3.dkf @@ -0,0 +1,16 @@ +FROM ubuntu:20.04 +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update && \ +apt-get install -y apt-utils && \ +apt-get install -y python3-pip +COPY python-redfish.src.tar.gz /python-redfish.src.tar.gz +RUN mkdir /var/log/python-redfish +RUN tar xvvf python-redfish.src.tar.gz +# Need a really recent version of setuptools to support +# configparser>=3.3.0; python_version < '3' in requirements.txt +# RUN pip install --upgrade setuptools +RUN cd python-redfish* && \ +pip install -r requirements.txt && \ +python3 setup.py install +CMD ["/bin/bash"] + diff --git a/redfish/__init__.py b/redfish/__init__.py index 625d02f..1eff4f2 100644 --- a/redfish/__init__.py +++ b/redfish/__init__.py @@ -12,11 +12,21 @@ # License for the specific language governing permissions and limitations # under the License. +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library import pbr.version -import redfish.server -import redfish.types +from redfish.main import connect # noqa: F401 +standard_library.install_aliases() - -__version__ = pbr.version.VersionInfo( - 'redfish').version_string() +try: + __version__ = pbr.version.VersionInfo('redfish').release_string() +except Exception as e: + if "Versioning for this project requires either an sdist tarball" \ + in e.args[0]: + pass + else: + raise diff --git a/redfish/config.py b/redfish/config.py new file mode 100644 index 0000000..62e80fa --- /dev/null +++ b/redfish/config.py @@ -0,0 +1,84 @@ +# coding=utf-8 + +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +import logging +import sys +import os +from logging.handlers import RotatingFileHandler +standard_library.install_aliases() + +# Global variable definition + +TORTILLADEBUG = True +HOME = os.getenv('HOME') +if HOME is None: + print("$HOME environment variable not set, please check your system") + sys.exit(1) +if HOME == '': + print("$HOME environment is set, but empty, please check your system") + sys.exit(1) + +REDFISH_HOME = os.path.join(HOME, ".redfish") +if not os.path.exists(REDFISH_HOME): + try: + os.mkdir(REDFISH_HOME) + except IOError: + print('ERROR: can\'t create {}.\n'.format(REDFISH_HOME)) + print(' Try to create directory {}'.format(REDFISH_HOME)) + print(' using: mkdir -p {}'.format(REDFISH_HOME)) + sys.exit(1) + +REDFISH_LOGFILE = os.path.join(REDFISH_HOME, "python-redfish.log") +CONSOLE_LOGGER_LEVEL = logging.DEBUG +FILE_LOGGER_LEVEL = logging.DEBUG + + +def initialize_logger(REDFISH_LOGFILE, + CONSOLE_LOGGER_LEVEL, + FILE_LOGGER_LEVEL, + logger_name=None): + '''Initialize a global logger to track application behaviour + + :param redfish_logfile: Log filename + :type redfish_logfile: str + :param screen_logger_level: Console log level + (logging.DEBUG, logging.ERROR, ..) or nolog + :type screen_logger_level: logging constant or string + :param file_logger_level: File log level + :type file_logger_level: logging constant + :returns: logging object + + ''' + + logger = logging.getLogger(logger_name) + logger.setLevel(logging.DEBUG) + formatter = logging.Formatter( + '%(asctime)s :: %(levelname)s :: %(message)s') + + try: + file_handler = RotatingFileHandler( + os.path.expandvars(REDFISH_LOGFILE), 'a', 1000000, 1) + except IOError: + print('ERROR: {} does not exist or is not writeable.\n'.format( + REDFISH_LOGFILE)) + print(' Try to create directory {}'.format(os.path.dirname( + REDFISH_LOGFILE))) + print(' using: mkdir -p {}'.format(os.path.dirname( + REDFISH_LOGFILE))) + sys.exit(1) + + # First logger to file + file_handler.setLevel(FILE_LOGGER_LEVEL) + file_handler.setFormatter(formatter) + logger.addHandler(file_handler) + + # Second logger to console + if CONSOLE_LOGGER_LEVEL != "nolog": + steam_handler = logging.StreamHandler() + steam_handler.setLevel(CONSOLE_LOGGER_LEVEL) + logger.addHandler(steam_handler) + return logger diff --git a/redfish/exception.py b/redfish/exception.py index b8a00f5..980a130 100644 --- a/redfish/exception.py +++ b/redfish/exception.py @@ -1,31 +1,55 @@ # -*- coding: utf-8 -*- -# 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. +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import str +from . import config +standard_library.install_aliases() class RedfishException(Exception): """Base class for redfish exceptions""" - def __init__(self, message=None, **kwargs): + def __init__(self, message, **kwargs): self.kwargs = kwargs + self.message = message + self.advices = None + config.logger.error(message) - if not message: - try: - message = self.message % kwargs - except Excetion as e: - LOG.exception('Error in string format operation') - message = self.message - super(RedfishException, self).__init__(message) +class ConnectionFailureException(RedfishException): + def __init__(self, message, **kwargs): + super(ConnectionFailureException, self).__init__(message, **kwargs) + self.advices = \ + '1- Check if the url is the correct one\n' + \ + '2- Check if your device is answering on the network\n' + \ + '3- Check if your device has a valid trusted certificate.\n' + \ + ' You can use openssl to validate it using the command :\n' + \ + ' openssl s_client -showcerts -connect :443\n' + \ + '4- Use option "--insecure" to connect without checking' + \ + ' certificate\n' -class ObjectLoadException(RedfishException): + +class InvalidRedfishContentException(RedfishException): + def __init__(self, message, **kwargs): + super(InvalidRedfishContentException, self).__init__(message, **kwargs) + self.advices = \ + '1- Check if the url is the correct one\n' + \ + ' Most of the time you are not pointing to the rest API\n' + + +class AuthenticationFailureException(RedfishException): + def __init__(self, message, **kwargs): + super(AuthenticationFailureException, self).__init__(message, **kwargs) + self.message += str(kwargs['code']) + self.queryAnswer = kwargs['queryAnswer'] + if kwargs['code'] == 400: + self.message += ': ' + self.queryAnswer['Messages'][0]['MessageID'] + self.advices = '1- Check your credentials\n' + self.message += '\n' + + +class LogoutFailureException(RedfishException): pass diff --git a/redfish/functions.py b/redfish/functions.py deleted file mode 100644 index 1de1031..0000000 --- a/redfish/functions.py +++ /dev/null @@ -1,49 +0,0 @@ - - # Copyright 2014 Hewlett-Packard Development Company, L.P. - # - # 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. - - -""" - -Provides functions for using the Redfish RESTful API. - -""" - -import collections -import json -import sys -from redfish import connection - -class RedfishOperation(connection.RedfishConnection): - - def reset_server(self): - (status, headers, system) = self.rest_get('/redfish/v1/Systems', None) - - memberuri = system['links']['Member'][0]['href'] - # verify expected type - # hint: don't limit to version 0 here as we will rev to 1.0 at some point hopefully with minimal changes - # assert(connection.get_type(system) == 'ComputerSystem.0' or connection.get_type(system) == 'ComputerSystem.1') - - # verify it supports POST - # assert(connection.operation_allowed(headers, 'POST')) - - action = dict() - action['Action'] = 'Reset' - action['ResetType'] = 'ForceRestart' - - # perform the POST action - print('POST ' + json.dumps(action) + ' to ' + memberuri) - (status, headers, response) = self.rest_post(memberuri, None, action) - print('POST response = ' + str(status)) - connection.print_extended_error(response) diff --git a/redfish/main.py b/redfish/main.py new file mode 100644 index 0000000..20af189 --- /dev/null +++ b/redfish/main.py @@ -0,0 +1,436 @@ +# coding=utf-8 +# +# Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# 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. + + +""" +STARTING ASSUMPTIONS + +On URIs: + +The Redfish RESTful API is a "hypermedia API" by design. This is to avoid +building in restrictive assumptions to the data model that will make it +difficult to adapt to future hardware implementations. A hypermedia API avoids +these assumptions by making the data model discoverable via links between +resources. + +A URI should be treated by the client as opaque, and thus should not be +attempted to be understood or deconstructed by the client. Only specific top +level URIs (any URI in this sample code) may be assumed, and even these may be +absent based upon the implementation +(e.g. there might be no /redfish/v1/Systems collection on something +that doesn't have compute nodes.) + +The other URIs must be discovered dynamically by following href links. This is +because the API will eventually be implemented on a system that breaks any +existing data model "shape" assumptions we may make now. In particular, +clients should not make assumptions about the URIs for the resource members of +a collection. For instance, the URI of a collection member will NOT always be +/redfish/v1/.../collection/1, or 2. On systems with multiple compute nodes per +manager, a System collection member might be /redfish/v1/Systems/C1N1. + +This sounds very complicated, but in reality (as these examples demonstrate), +if you are looking for specific items, the traversal logic isn't too +complicated. + +On Resource Model Traversal: + +Although the resources in the data model are linked together, because of cross +link references between resources, a client may not assume the resource model +is a tree. It is a graph instead, so any crawl of the data model should keep +track of visited resources to avoid an infinite traversal loop. + +A reference to another resource is any property called "href" no matter where +it occurs in a resource. + +An external reference to a resource outside the data model is referred to by a +property called "extref". Any resource referred to by extref should not be +assumed to follow the conventions of the API. + +On Resource Versions: + +Each resource has a "Type" property with a value of the format Tyepname.x.y.z +where +* x = major version - incrementing this is a breaking change to the schema y = +* minor version - incrementing this is a non-breaking additive change to the +* schema z = errata - non-breaking change + +Because all resources are versioned and schema also have a version, it is +possible to design rules for "nearest" match (e.g. if you are interacting with +multiple services using a common batch of schema files). The mechanism is not +prescribed, but a client should be prepared to encounter both older and newer +versions of resource types. + +On HTTP POST to create: + +When POSTing to create a resource (e.g. create an account or session) the +guarantee is that a successful response includes a "Location" HTTP header +indicating the resource URI of the newly created resource. The POST may also +include a representation of the newly created object in a JSON response body +but may not. Do not assume the response body, but test it. It may also be an +ExtendedError object. + +HTTP REDIRECT: + +All clients must correctly handle HTTP redirect. We (or Redfish) may +eventually need to use redirection as a way to alias portions of the data +model. + +FUTURE: Asynchronous tasks + +In the future some operations may start asynchonous tasks. In this case, the +client should recognized and handle HTTP 202 if needed and the 'Location' +header will point to a resource with task information and status. + +JSON-SCHEMA: + +The json-schema available at /redfish/v1/Schemas governs the content of the +resources, but keep in mind: +* not every property in the schema is implemented in every implementation. +* some properties are schemed to allow both null and another type like string +* or integer. + +Robust client code should check both the existence and type of interesting +properties and fail gracefully if expectations are not met. + +GENERAL ADVICE: + +Clients should always be prepared for: +* unimplemented properties (e.g. a property doesn't apply in a particular case) +* null values in some cases if the value of a property is not currently known +* due to system conditions HTTP status codes other than 200 OK. Can your code +* handle an HTTP 500 Internal Server Error with no other info? URIs are case +* insensitive HTTP header names are case insensitive JSON Properties and Enum +* values are case sensitive A client should be tolerant of any set of HTTP +* headers the service returns + +""" +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import object + +import json +import requests +from . import config +from . import standard +from . import mapping +from . import exception +standard_library.install_aliases() +from urllib.parse import urlparse, urljoin, urlunparse # noqa: E402 + +"""Function to wrap RedfishConnection""" + + +def connect( + url, + user, + password, + simulator=False, + enforceSSL=True, + verify_cert=True): + + return RedfishConnection( + url, + user, + password, + simulator=simulator, + enforceSSL=enforceSSL, + verify_cert=verify_cert + ) + + +class RedfishConnection(object): + """Implements basic connection handling for Redfish APIs.""" + + def __init__(self, + url, + user, + password, + simulator=False, + enforceSSL=True, + verify_cert=True + ): + """Initialize a connection to a Redfish service.""" + # Specify a name for the logger as recommended by the logging + # documentation. However for strange reason requests logs are not + # anymore captured in the log file. + # TODO : Check strange behavior about requests logs. + config.logger = config.initialize_logger(config.REDFISH_LOGFILE, + config.CONSOLE_LOGGER_LEVEL, + config.FILE_LOGGER_LEVEL, + __name__) + + config.logger.info("Initialize python-redfish") + + self.connection_parameters = ConnectionParameters() + self.connection_parameters.rooturl = url + self.connection_parameters.user_name = user + self.connection_parameters.password = password + self.connection_parameters.enforceSSL = enforceSSL + self.connection_parameters.verify_cert = verify_cert + + # Use a mockup or not (like the DMTF or HPE one) + self.__simulator = simulator + + # Session attributes + self.connection_parameters.auth_token = None + self.connection_parameters.user_uri = None + + rooturl = urlparse(self.connection_parameters.rooturl) + + # Enforce ssl + if self.connection_parameters.enforceSSL is True: + config.logger.debug("Enforcing SSL") + rooturl = rooturl._replace(scheme=type(rooturl.scheme)("https")) + self.connection_parameters.rooturl = rooturl.geturl() + + # Verify cert + if self.connection_parameters.verify_cert is False: + config.logger.info("Certificat is not checked, " + + "this is insecure and can allow" + + " a man in the middle attack") + + config.logger.debug("Root url : %s", + self.connection_parameters.rooturl) + self.Root = standard.Root(self.connection_parameters.rooturl, + self.connection_parameters) + + config.logger.info("API Version : %s", self.get_api_version()) + mapping.redfish_version = self.get_api_version() + mapping.redfish_root_name = self.Root.get_name() + + # Instantiate a global mapping object to handle + # Redfish version variation + mapping.redfish_mapper = mapping.RedfishVersionMapping( + self.get_api_version(), self.Root.get_name()) + + # Now we need to login otherwise we are not allowed to extract data + if self.__simulator is False: + try: + config.logger.info("Login to %s", rooturl.netloc) + self.login() + config.logger.info("Login successful") + except "Error getting token": + config.logger.error("Login fail, fail to get auth token") + raise exception.AuthenticationFailureException( + "Fail to get an auth token.") + + # Structure change with mockup 1.0.0, there is no links + # section anymore. + # =================================================================== + # TODO : Add a switch to allow both structures + # =================================================================== + + # standard + # Gen-Z simulator has no SessionService for now so handle this case + try: + self.SessionService = standard.SessionService( + self.Root.get_link_url( + mapping.redfish_mapper.map_sessionservice()), + self.connection_parameters) + except AttributeError: + self.SessionService = None + + # Moonshot m510 cartridge has neither Managers nor Chassis, so handle + # this case in the code. + # Note : m510 ilo firmware is in an early stage, this state could be + # temporary. + try: + self.Managers = standard.ManagersCollection( + self.Root.get_link_url("Managers"), + self.connection_parameters) + except AttributeError: + self.Managers = None + + self.Systems = standard.SystemsCollection( + self.Root.get_link_url("Systems"), + self.connection_parameters) + + try: + self.Chassis = standard.ChassisCollection( + self.Root.get_link_url("Chassis"), + self.connection_parameters) + except AttributeError: + self.Chassis = None + +# self.EventService +# self.AccountService +# self.Tasks + + # ======================================================================== + # systemCollectionLink = getattr(self.root.Links.Systems,"@odata.id") + # self.systemCollection = self.apiUrl.redfish.v1.Systems.get() + # + # print self.systemCollection.Name + # + # ======================================================================== + def get_api_version(self): + """Return api version. + + :returns: string -- version + :raises: AttributeError + + """ + return (self.Root.get_api_version()) + + def login(self): + # Craft full url + url = self.Root.get_link_url( + mapping.redfish_mapper.map_sessionservice()) + + # Handle login with redfish 1.00, url must be : + # /rest/v1/SessionService/Sessions as specified by the specification + if float(mapping.redfish_version) >= 1.00: + url = urljoin(url, "Sessions") + + config.logger.debug("Login URL : %s" % url) + # Craft request body and header + requestBody = {"UserName": self.connection_parameters.user_name, + "Password": self.connection_parameters.password} + config.logger.debug(requestBody) + headers = self.connection_parameters.headers + # ==================================================================== + # Tortilla seems not able to provide the header of a post request + # answer. + # However this is required by redfish standard to get X-Auth-Token. + # So jump to "requests" library to get the required token. + # TODO : Patch tortilla to handle this case. + # ==================================================================== + # sessionsUrl = tortilla.wrap( + # "https://10.3.222.104/rest/v1/Sessions", debug=TORTILLADEBUG) + # sessions = sessionsUrl.post( + # verify=self.verify_cert, data=requestBody) + auth = requests.post(url, + data=json.dumps(requestBody), + headers=headers, + verify=self.connection_parameters.verify_cert) + + # ======================================================================= + # TODO : Manage exception with a class. + # ======================================================================= + if auth.status_code != 201: + try: + answer = auth.json() + except ValueError: + answer = "" + raise exception.AuthenticationFailureException( + "Login request return an invalid status code ", + code=auth.status_code, queryAnswer=answer) + + self.connection_parameters.auth_token = auth.headers.get( + "x-auth-token") + self.connection_parameters.user_uri = auth.headers.get("location") + config.logger.debug("x-auth-token : %s", + self.connection_parameters.auth_token) + config.logger.debug("user session : %s", + self.connection_parameters.user_uri) + return True + + def logout(self): + # Craft full url + url = self.connection_parameters.user_uri + + # Craft request header + headers = self.connection_parameters.headers + + logout = requests.delete(url, + headers=headers, + verify=self.connection_parameters.verify_cert) + + if logout.status_code == 200: + config.logger.info("Logout successful") + else: + config.logger.error("Logout failed") + raise exception.LogoutFailureException("Fail to logout properly.") + + +class ConnectionParameters(object): + """Store connection parameters.""" + + def __init__(self): + pass + + @property + def rooturl(self): + return self.__rooturl + + @rooturl.setter + def rooturl(self, rooturl): + self.__rooturl = rooturl + + @property + def user_name(self): + return self.__user_name + + @user_name.setter + def user_name(self, user_name): + self.__user_name = user_name + + @property + def password(self): + return self.__password + + @password.setter + def password(self, password): + self.__password = password + + @property + def enforceSSL(self): + return self.__enforceSSL + + @enforceSSL.setter + def enforceSSL(self, enforceSSL): + self.__enforceSSL = enforceSSL + + @property + def verify_cert(self): + return self.__verify_cert + + @verify_cert.setter + def verify_cert(self, verify_cert): + self.__verify_cert = verify_cert + + @property + def auth_token(self): + return self.__auth_token + + @auth_token.setter + def auth_token(self, auth_token): + self.__auth_token = auth_token + + @property + def user_uri(self): + return self.__user_uri + + @user_uri.setter + def user_uri(self, user_uri): + self.__user_uri = user_uri + + @property + def headers(self): + # Host header is set by request or tortilla + url = urlparse(self.__rooturl) + origin = urlunparse((url.scheme, url.netloc, '', '', '', '')) + headers = {'OData-Version': '4.0', + 'Content-type': 'application/json', + 'Accept': 'application/json', + 'Origin': origin, + 'User-Agent': 'python-redfish'} + if self.auth_token: + headers.update({'x-auth-token': self.auth_token}) + return headers diff --git a/redfish/mapping.py b/redfish/mapping.py new file mode 100644 index 0000000..d0906dd --- /dev/null +++ b/redfish/mapping.py @@ -0,0 +1,60 @@ +# coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import object +standard_library.install_aliases() + +redfish_mapper = None +redfish_version = None +redfish_root_name = None + + +class RedfishVersionMapping(object): + '''Implements basic url path mapping beetween Redfish versions.''' + + def __init__(self, version, rootname): + self.__version = version + self.__rootname = rootname + + def map_sessionservice(self): + if self.__version == '0.95': + return 'Sessions' + return 'SessionService' + + def map_links(self, data_dict=None): + if data_dict is None: + if self.__version == '0.95': + return 'links' + else: + # Checking if we have Links or links. + # This is to deal with proliant firmware 2.40 bug that reports + # incorrectly links instead of Links (Redfish standard) + try: + data_dict.links + return 'links' + except AttributeError: + pass + return 'Links' + + def map_links_ref(self, data_dict=None): + if data_dict is None: + if self.__version == '0.95': + return 'href' + else: + # Checking if we have @odata.id or href. + # This is to deal with proliant firmware 2.40 bug that reports + # incorrectly href instead of @odata.id (Redfish standard) + try: + data_dict.href + return 'href' + except AttributeError: + pass + return '@odata.id' + + def map_members(self): + if self.__version == '0.95': + return 'Member' + return 'Members' diff --git a/redfish/tests/base.py b/redfish/oem/__init__.py similarity index 71% rename from redfish/tests/base.py rename to redfish/oem/__init__.py index 1c30cdb..19f5e72 100644 --- a/redfish/tests/base.py +++ b/redfish/oem/__init__.py @@ -1,8 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2010-2011 OpenStack Foundation -# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. -# # 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 @@ -14,10 +11,3 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. - -from oslotest import base - - -class TestCase(base.BaseTestCase): - - """Test case base class for all unit tests.""" diff --git a/redfish/oem/hpe.py b/redfish/oem/hpe.py new file mode 100644 index 0000000..3b042c3 --- /dev/null +++ b/redfish/oem/hpe.py @@ -0,0 +1,198 @@ +# coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library + +import re +from ..types import Base, BaseCollection, Device +standard_library.install_aliases() + +# Global variable + + +class NetworkAdaptersCollection(BaseCollection): + '''Class to manage redfish hpe oem NetworkAdaptersCollection data.''' + def __init__(self, url, connection_parameters): + super(NetworkAdaptersCollection, self).__init__(url, + connection_parameters) + self.network_adapters_dict = {} + + for link in self.links: + index = re.search(r'NetworkAdapters/(\w+)', link) + self.network_adapters_dict[index.group(1)] = NetworkAdapters( + link, connection_parameters) + + +class NetworkAdapters(Device): + '''Class to manage redfish hpe oem NetworkAdapters data.''' + + def get_mac(self): + '''Get NetworkAdapters mac address + + :returns: mac adresses or "Not available" + :rtype: list + + ''' + + macaddresses = [] + + try: + for port in self.data.PhysicalPorts: + mac = port['MacAddress'] + macaddresses.append(mac) + + return macaddresses + except AttributeError: + return "Not available" + + def get_structured_name(self): + '''Get NetworkAdapters StructuredName + + :returns: StructuredName or "Not available" + :rtype: string + + ''' + try: + return self.data.StructuredName + except AttributeError: + return "Not available" + + def get_uefi_path(self): + '''Get networkadapters uefi path + + :returns: UEFIDevicePath or "Not available" + :rtype: string + + ''' + try: + return self.data.UEFIDevicePath + except AttributeError: + return "Not available" + + +class SmartStorage(Base): + '''Class to manage redfish hpe oem SmartStorage data.''' + def __init__(self, url, connection_parameters): + super(SmartStorage, self).__init__(url, connection_parameters) + try: + self.array_controllers_collection = \ + ArrayControllersCollection( + self.get_link_url('ArrayControllers', self.data.Links), + connection_parameters) + + except AttributeError: + # This means we don't have ArrayControllers + self.array_controllers_collection = None + + +class ArrayControllersCollection(BaseCollection): + '''Class to manage redfish hpe oem ArrayControllersCollection data.''' + def __init__(self, url, connection_parameters): + super(ArrayControllersCollection, self).__init__(url, + connection_parameters) + self.array_controllers_dict = {} + + for link in self.links: + index = re.search(r'ArrayControllers/(\w+)', link) + self.array_controllers_dict[index.group(1)] = ArrayControllers( + link, connection_parameters) + + +class ArrayControllers(Device): + '''Class to manage redfish hpe oem ArrayControllers data.''' + def __init__(self, url, connection_parameters): + super(ArrayControllers, self).__init__(url, connection_parameters) + try: + self.logical_drives_collection = \ + LogicalDrivesCollection( + self.get_link_url('LogicalDrives', self.data.Links), + connection_parameters) + + except AttributeError: + # This means we don't have ArrayControllers + self.logical_drives_collection = None + + try: + self.physical_drives_collection = \ + PhysicalDrivesCollection( + self.get_link_url('PhysicalDrives', self.data.Links), + connection_parameters) + + except AttributeError: + # This means we don't have ArrayControllers + self.physical_drives_collection = None + + +class LogicalDrivesCollection(BaseCollection): + '''Class to manage redfish hpe oem LogicalDrivesCollection data.''' + def __init__(self, url, connection_parameters): + super(LogicalDrivesCollection, self).__init__(url, + connection_parameters) + self.logical_drives_dict = {} + + for link in self.links: + index = re.search(r'LogicalDrives/(\w+)', link) + self.logical_drives_dict[index.group(1)] = LogicalDrives( + link, connection_parameters) + + +class LogicalDrives(Device): + '''Class to manage redfish hpe oem LogicalDrives data.''' + def get_capacity(self): + '''Get Logical drive capacity + + :returns: Logical drive capacity or "Not available" + :rtype: string + + ''' + try: + return self.data.CapacityMiB + except AttributeError: + return "Not available" + + def get_raid(self): + '''Get Logical drive raid configuration + + :returns: Logical drive raid configuration or "Not available" + :rtype: string + + ''' + try: + return self.data.Raid + except AttributeError: + return "Not available" + + +class PhysicalDrivesCollection(BaseCollection): + '''Class to manage redfish hpe oem PhysicalDrivesCollection data.''' + def __init__(self, url, connection_parameters): + super(PhysicalDrivesCollection, self).__init__(url, + connection_parameters) + self.physical_drives_dict = {} + + for link in self.links: + index = re.search(r'DiskDrives/(\w+)', link) + self.physical_drives_dict[index.group(1)] = DiskDrives( + link, connection_parameters) + + +class DiskDrives(Device): + '''Class to manage redfish hpe oem DiskDrives data.''' + def get_capacity(self): + '''Get Logical drive capacity + + :returns: Logical drive capacity or "Not available" + :rtype: string + + ''' + try: + return self.data.CapacityMiB + except AttributeError: + return "Not available" + + +class StorageEnclosures(Device): + '''Class to manage redfish hpe oem StorageEnclosures data.''' + pass diff --git a/redfish/server.py b/redfish/server.py deleted file mode 100644 index c86b4a9..0000000 --- a/redfish/server.py +++ /dev/null @@ -1,412 +0,0 @@ -# Copyright 2014 Hewlett-Packard Development Company, L.P. -# -# 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. - - -""" -STARTING ASSUMPTIONS - -On URIs: - -The Redfish RESTful API is a "hypermedia API" by design. This is to avoid -building in restrictive assumptions to the data model that will make it -difficult to adapt to future hardware implementations. A hypermedia API avoids -these assumptions by making the data model discoverable via links between -resources. - -A URI should be treated by the client as opaque, and thus should not be -attempted to be understood or deconstructed by the client. Only specific top -level URIs (any URI in this sample code) may be assumed, and even these may be -absent based upon the implementation (e.g. there might be no /redfish/v1/Systems -collection on something that doesn't have compute nodes.) - -The other URIs must be discovered dynamically by following href links. This is -because the API will eventually be implemented on a system that breaks any -existing data model "shape" assumptions we may make now. In particular, -clients should not make assumptions about the URIs for the resource members of -a collection. For instance, the URI of a collection member will NOT always be -/redfish/v1/.../collection/1, or 2. On systems with multiple compute nodes per -manager, a System collection member might be /redfish/v1/Systems/C1N1. - -This sounds very complicated, but in reality (as these examples demonstrate), -if you are looking for specific items, the traversal logic isn't too -complicated. - -On Resource Model Traversal: - -Although the resources in the data model are linked together, because of cross -link references between resources, a client may not assume the resource model -is a tree. It is a graph instead, so any crawl of the data model should keep -track of visited resources to avoid an infinite traversal loop. - -A reference to another resource is any property called "href" no matter where -it occurs in a resource. - -An external reference to a resource outside the data model is referred to by a -property called "extref". Any resource referred to by extref should not be -assumed to follow the conventions of the API. - -On Resource Versions: - -Each resource has a "Type" property with a value of the format Tyepname.x.y.z -where -* x = major version - incrementing this is a breaking change to the schema y = -* minor version - incrementing this is a non-breaking additive change to the -* schema z = errata - non-breaking change - -Because all resources are versioned and schema also have a version, it is -possible to design rules for "nearest" match (e.g. if you are interacting with -multiple services using a common batch of schema files). The mechanism is not -prescribed, but a client should be prepared to encounter both older and newer -versions of resource types. - -On HTTP POST to create: - -WHen POSTing to create a resource (e.g. create an account or session) the -guarantee is that a successful response includes a "Location" HTTP header -indicating the resource URI of the newly created resource. The POST may also -include a representation of the newly created object in a JSON response body -but may not. Do not assume the response body, but test it. It may also be an -ExtendedError object. - -HTTP REDIRECT: - -All clients must correctly handle HTTP redirect. We (or Redfish) may -eventually need to use redirection as a way to alias portions of the data -model. - -FUTURE: Asynchronous tasks - -In the future some operations may start asynchonous tasks. In this case, the -client should recognized and handle HTTP 202 if needed and the 'Location' -header will point to a resource with task information and status. - -JSON-SCHEMA: - -The json-schema available at /redfish/v1/Schemas governs the content of the -resources, but keep in mind: -* not every property in the schema is implemented in every implementation. -* some properties are schemed to allow both null and anotehr type like string -* or integer. - -Robust client code should check both the existence and type of interesting -properties and fail gracefully if expectations are not met. - -GENERAL ADVICE: - -Clients should always be prepared for: -* unimplemented properties (e.g. a property doesn't apply in a particular case) -* null values in some cases if the value of a property is not currently known -* due to system conditions HTTP status codes other than 200 OK. Can your code -* handle an HTTP 500 Internal Server Error with no other info? URIs are case -* insensitive HTTP header names are case insensitive JSON Properties and Enum -* values are case sensitive A client should be tolerant of any set of HTTP -* headers the service returns - -""" - -import base64 -import gzip -import hashlib -import httplib -import json -import ssl -import StringIO -import sys -import urllib2 -from urlparse import urlparse - -from oslo_log import log as logging - -from redfish import exception -from redfish import types - - -LOG = logging.getLogger('redfish') - - -def connect(host, user, password): - return RedfishConnection(host, user, password) - - -class RedfishConnection(object): - """Implements basic connection handling for Redfish APIs.""" - - def __init__(self, host, user_name, password, - auth_token=None, enforce_SSL=True): - """Initialize a connection to a Redfish service.""" - super(RedfishConnection, self).__init__() - - self.user_name = user_name - self.password = password - self.auth_token = auth_token - self.enforce_SSL = enforce_SSL - - # context for the last status and header returned from a call - self.status = None - self.headers = None - - # If the http schema wasn't specified, default to HTTPS - if host[0:4] != 'http': - host = 'https://' + host - self.host = host - - self._connect() - - if not self.auth_token: - # TODO: if a token is returned by this call, cache it. However, - # the sample HTML does not include any token data, so it's unclear - # what we should do here. - LOG.debug('Initiating session with host %s', self.host) - auth_dict = {'Password': self.password, 'UserName': self.user_name} - response = self.rest_post( - '/redfish/v1/Sessions', None, json.dumps(auth_dict)) - - # TODO: do some schema discovery here and cache the result - # self.schema = ... - LOG.info('Connection established to host %s', self.host) - - def _connect(self): - LOG.debug("Establishing connection to host %s", self.host) - url = urlparse(self.host) - if url.scheme == 'https': - # New in Python 2.7.9, SSL enforcement is defaulted on. - # It can be opted-out of, which might be useful for debugging - # some things. The below case is the Opt-Out condition and - # should be used with GREAT caution. - if (sys.version_info.major == 2 - and sys.version_info.minor == 7 - and sys.version_info.micro >= 9 - and self.enforce_SSL == False): - cont = ssl.SSLContext(ssl.PROTOCOL_TLSv1) - cont.verify_mode = ssl.CERT_NONE - self.connection = httplib.HTTPSConnection( - host=url.netloc, strict=True, context=cont) - else: - self.connection = httplib.HTTPSConnection( - host=url.netloc, strict=True) - elif url.scheme == 'http': - self.connection = httplib.HTTPConnection( - host=url.netloc, strict=True) - else: - raise exception.RedfishException( - message='Unknown connection schema') - - def _op(self, operation, suburi, request_headers=None, request_body=None): - """ - REST operation generic handler - - :param operation: GET, POST, etc - :param suburi: the URI path to the resource - :param request_headers: optional dict of headers - :param request_body: optional JSON body - """ - # ensure trailing slash - if suburi[-1:] != '/': - suburi = suburi + '/' - url = urlparse(self.host + suburi) - - if not isinstance(request_headers, dict): - request_headers = dict() - request_headers['Content-Type'] = 'application/json' - - # if X-Auth-Token specified, supply it instead of basic auth - if self.auth_token is not None: - request_headers['X-Auth-Token'] = self.auth_token - # else use user_name/password and Basic Auth - elif self.user_name is not None and self.password is not None: - request_headers['Authorization'] = ("BASIC " + base64.b64encode( - self.user_name + ":" + self.password)) - # TODO: add support for other types of auth - - redir_count = 4 - while redir_count: - # NOTE: Do not assume every HTTP operation will return a JSON body. - # For example, ExtendedError structures are only required for - # HTTP 400 errors and are optional elsewhere as they are mostly - # redundant for many of the other HTTP status code. In particular, - # 200 OK responses should not have to return any body. - self.connection.request(operation, url.path, - headers=request_headers, body=json.dumps(request_body)) - resp = self.connection.getresponse() - body = resp.read() - # NOTE: this makes sure the headers names are all lower case - # because HTTP says they are case insensitive - headers = dict((x.lower(), y) for x, y in resp.getheaders()) - - # Follow HTTP redirect - if resp.status == 301 and 'location' in headers: - url = urlparse(headers['location']) - # TODO: cache these redirects - LOG.debug("Following redirect to %s", headers['location']) - redir_count -= 1 - else: - break - - response = dict() - try: - response = json.loads(body.decode('utf-8')) - except ValueError: # if it doesn't decode as json - # NOTE: resources may return gzipped content, so try to decode - # as gzip (we should check the headers for Content-Encoding=gzip) - try: - gzipper = gzip.GzipFile(fileobj=StringIO.StringIO(body)) - uncompressed_string = gzipper.read().decode('UTF-8') - response = json.loads(uncompressed_string) - except: - raise exception.RedfishException(message= - 'Failed to parse response as a JSON document, ' - 'received "%s".' % body) - - self.status = resp.status - self.headers = headers - return response - - def rest_get(self, suburi, request_headers): - """REST GET - - :param: suburi - :param: request_headers - """ - # NOTE: be prepared for various HTTP responses including 500, 404, etc - return self._op('GET', suburi, request_headers, None) - - def rest_patch(self, suburi, request_headers, request_body): - """REST PATCH - - :param: suburi - :param: request_headers - :param: request_body - NOTE: this body is a dict, not a JSONPATCH document. - redfish does not follow IETF JSONPATCH standard - https://tools.ietf.org/html/rfc6902 - """ - # NOTE: be prepared for various HTTP responses including 500, 404, 202 - return self._op('PATCH', suburi, request_headers, request_body) - - def rest_put(self, suburi, request_headers, request_body): - """REST PUT - - :param: suburi - :param: request_headers - :param: request_body - """ - # NOTE: be prepared for various HTTP responses including 500, 404, 202 - return self._op('PUT', suburi, request_headers, request_body) - - def rest_post(self, suburi, request_headers, request_body): - """REST POST - - :param: suburi - :param: request_headers - :param: request_body - """ - # NOTE: don't assume any newly created resource is included in the - # response. Only the Location header matters. - # the response body may be the new resource, it may be an - # ExtendedError, or it may be empty. - return self._op('POST', suburi, request_headers, request_body) - - def rest_delete(self, suburi, request_headers): - """REST DELETE - - :param: suburi - :param: request_headers - """ - # NOTE: be prepared for various HTTP responses including 500, 404 - # NOTE: response may be an ExtendedError or may be empty - return self._op('DELETE', suburi, request_headers, None) - - def get_root(self): - return types.Root(self.rest_get('/redfish/v1', {}), connection=self) - - -class Version(object): - def __init__(self, string): - try: - buf = string.split('.') - if len(buf) < 2: - raise AttributeError - except AttributeError: - raise RedfishException(message="Failed to parse version string") - self.major = int(buf[0]) - self.minor = int(buf[1]) - - def __repr__(self): - return str(self.major) + '.' + str(self.minor) - - -# return the type of an object (down to the major version, skipping minor, and errata) -def get_type(obj): - typever = obj['Type'] - typesplit = typever.split('.') - return typesplit[0] + '.' + typesplit[1] - - -# checks HTTP response headers for specified operation (e.g. 'GET' or 'PATCH') -def operation_allowed(headers_dict, operation): - if 'allow' in headers_dict: - if headers_dict['allow'].find(operation) != -1: - return True - return False - - -# Message registry support -# XXX not supported yet -message_registries = {} - - -# Build a list of decoded messages from the extended_error using the message -# registries An ExtendedError JSON object is a response from the with its own -# schema. This function knows how to parse the ExtendedError object and, using -# any loaded message registries, render an array of plain language strings that -# represent the response. -def render_extended_error_message_list(extended_error): - messages = [] - if isinstance(extended_error, dict): - if 'Type' in extended_error and extended_error['Type'].startswith('ExtendedError.'): - for msg in extended_error['Messages']: - MessageID = msg['MessageID'] - x = MessageID.split('.') - registry = x[0] - msgkey = x[len(x) - 1] - - # if the correct message registry is loaded, do string resolution - if registry in message_registries: - if registry in message_registries and msgkey in message_registries[registry]['Messages']: - msg_dict = message_registries[registry]['Messages'][msgkey] - msg_str = MessageID + ': ' + msg_dict['Message'] - - for argn in range(0, msg_dict['NumberOfArgs']): - subst = '%' + str(argn+1) - msg_str = msg_str.replace(subst, str(msg['MessageArgs'][argn])) - - if 'Resolution' in msg_dict and msg_dict['Resolution'] != 'None': - msg_str += ' ' + msg_dict['Resolution'] - - messages.append(msg_str) - else: # no message registry, simply return the msg object in string form - messages.append('No Message Registry Info: '+ str(msg)) - - return messages - - -# Print a list of decoded messages from the extended_error using the message registries -def print_extended_error(extended_error): - messages = render_extended_error_message_list(extended_error) - msgcnt = 0 - for msg in messages: - print('\t' + msg) - msgcnt += 1 - if msgcnt == 0: # add a spacer - print diff --git a/redfish/standard.py b/redfish/standard.py new file mode 100644 index 0000000..e872505 --- /dev/null +++ b/redfish/standard.py @@ -0,0 +1,687 @@ +# coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library + +import re +from urllib.parse import urljoin +import requests +from .types import Base, BaseCollection, Device +from . import mapping +from . import exception +from .oem import hpe +standard_library.install_aliases() + + +class Root(Base): + '''Class to manage redfish Root data.''' + def get_api_version(self): + '''Return api version. + + :returns: api version + :rtype: string + :raises: AttributeError + + ''' + try: + version = self.data.RedfishVersion + except AttributeError: + version = self.data.ServiceVersion + + version = version.replace('.', '') + version = version[0] + '.' + version[1:] + return(version) + + def get_api_UUID(self): + '''Return api UUID. + + :returns: api UUID + :rtype: string + + ''' + return self.data.UUID + + +class SessionService(Base): + '''Class to manage redfish SessionService data.''' + pass + + +class Managers(Device): + '''Class to manage redfish Managers.''' + def __init__(self, url, connection_parameters): + super(Managers, self).__init__(url, connection_parameters) + try: + # New proliant firmware now respects Redfish v1.00, so seems to + # correct below statement + # TODO : better handle exception and if possible support + # old firmware ? + self.ethernet_interfaces_collection = \ + EthernetInterfacesCollection( + self.get_link_url('EthernetInterfaces'), + connection_parameters) + + # Works on proliant, need to treat 095 vs 0.96 differences + # self.ethernet_interfaces_collection = \ + # EthernetInterfacesCollection( + # self.get_link_url('EthernetNICs'), + # connection_parameters) + except exception.InvalidRedfishContentException: + # This is to avoid invalid content from the mockup + self.ethernet_interfaces_collection = None + + except AttributeError: + # This means we don't have EthernetInterfaces + self.ethernet_interfaces_collection = None + + def get_type(self): + '''Get manager type + + :returns: manager type or "Not available" + :rtype: string + + ''' + try: + return self.data.ManagerType + except AttributeError: + return "Not available" + + def get_firmware_version(self): + '''Get firmware version of the manager + + :returns: string -- bios version or "Not available" + + ''' + try: + return self.data.FirmwareVersion + except AttributeError: + # We are here because the attribute could be not defined. + # This is the case with the mockup for manager 2 and 3 + return "Not available" + + def get_managed_chassis(self): + '''Get managed chassis ids by the manager + + :returns: chassis ids or "Not available" + :rtype: list + + ''' + chassis_list = [] + links = getattr(self.data, mapping.redfish_mapper.map_links(self.data)) + + try: + for chassis in links.ManagerForChassis: + result = re.search( + r'Chassis/(\w+)', + chassis[mapping.redfish_mapper.map_links_ref(chassis)]) + chassis_list.append(result.group(1)) + return chassis_list + except AttributeError: + return "Not available" + + def get_managed_systems(self): + '''Get managed systems ids by the manager + + :returns: systems ids or "Not available" + :rtype: list + + ''' + systems_list = [] + links = getattr(self.data, mapping.redfish_mapper.map_links(self.data)) + + try: + for systems in links.ManagerForServers: + result = re.search( + r'Systems/(\w+)', + systems[mapping.redfish_mapper.map_links_ref(systems)]) + systems_list.append(result.group(1)) + return systems_list + except AttributeError: + return "Not available" + + def reset(self): + '''Reset the manager. + + :returns: string -- http response of POST request + + ''' + # Craft the request + link = getattr(self.data.Actions, "#Manager.Reset") + link = link.target + + reset_url = urljoin(self.url, link) + + response = requests.post( + reset_url, + verify=self.connection_parameters.verify_cert, + headers=self.connection_parameters.headers) + # TODO : treat response. + return response + + +class ManagersCollection(BaseCollection): + '''Class to manage redfish ManagersCollection data.''' + def __init__(self, url, connection_parameters): + '''Class constructor''' + super(ManagersCollection, self).__init__(url, connection_parameters) + self.managers_dict = {} + for link in self.links: + index = re.search(r'Managers/(\w+)', link) + self.managers_dict[index.group(1)] = Managers( + link, connection_parameters) + + +class Systems(Device): + '''Class to manage redfish Systems data.''' + # TODO : Need to discuss with Bruno the required method. + # Also to check with the ironic driver requirement. + def __init__(self, url, connection_parameters): + '''Class constructor''' + super(Systems, self).__init__(url, connection_parameters) + try: + self.bios = Bios(url + 'Bios/Settings', connection_parameters) + except: + pass + + try: + self.ethernet_interfaces_collection = \ + EthernetInterfacesCollection( + self.get_link_url('EthernetInterfaces'), + connection_parameters) + except AttributeError: + # This means we don't have EthernetInterfaces + self.ethernet_interfaces_collection = None + + try: + self.processors_collection = \ + ProcessorsCollection( + self.get_link_url('Processors'), + connection_parameters) + except AttributeError: + # This means we don't have Processors detailed data + self.processors_collection = None + + try: + self.simple_storage_collection = \ + SimpleStorageCollection( + self.get_link_url('SimpleStorage'), + connection_parameters) + except AttributeError: + # This means we don't have Processors detailed data + self.simple_storage_collection = None + + hpeflag = False + hpflag = False + try: + self.data.Oem.Hpe + try: + self.network_adapters_collection = \ + hpe.NetworkAdaptersCollection( + self.get_link_url('NetworkAdapters', + self.data.Oem.Hpe.Links), + connection_parameters) + except AttributeError: + # This means we don't have NetworkAdapters + self.network_adapters_collection = None + try: + self.smart_storage = \ + hpe.SmartStorage( + self.get_link_url('SmartStorage', + self.data.Oem.Hpe.Links), + connection_parameters) + except AttributeError: + # This means we don't have SmartStorage + self.smart_storage = None + except AttributeError: + # This means we don't have Hpe oem data + hpeflag = True + + try: + self.data.Oem.Hp + try: + self.network_adapters_collection = \ + hpe.NetworkAdaptersCollection( + self.get_link_url('NetworkAdapters', + self.data.Oem.Hp.Links), + connection_parameters) + except AttributeError: + # This means we don't have NetworkAdapters + self.network_adapters_collection = None + try: + self.smart_storage = \ + hpe.SmartStorage( + self.get_link_url('SmartStorage', + self.data.Oem.Hp.Links), + connection_parameters) + except AttributeError: + # This means we don't have SmartStorage + self.smart_storage = None + except AttributeError: + # This means we don't have Hp oem data + hpflag = True + + if hpeflag and hpflag: + # This means we don't have oem data + self.data.Oem = None + + def reset_system(self): + '''Force reset of the system. + + :returns: string -- http response of POST request + + ''' + # Craft the request + action = dict() + action['Action'] = 'Reset' + action['ResetType'] = 'ForceRestart' + + # Debug the url and perform the POST action + # print self.api_url + response = self.api_url.post( + verify=self.connection_parameters.verify_cert, + headers=self.connection_parameters.headers, + data=action) + # TODO : treat response. + return response + + def get_bios_version(self): + '''Get bios version of the system. + + :returns: bios version or "Not available" + :rtype: string + + ''' + try: + return self.data.BiosVersion + except AttributeError: + return "Not available" + + def get_hostname(self): + '''Get hostname of the system. + + :returns: hostname or "Not available" + :rtype: string + + ''' + try: + return self.data.HostName + except AttributeError: + return "Not available" + + def get_indicatorled(self): + '''Get indicatorled of the system. + + :returns: indicatorled status or "Not available" + :rtype: string + + ''' + try: + return self.data.IndicatorLED + except AttributeError: + return "Not available" + + def get_cpucount(self): + '''Get the number of cpu in the system. + + :returns: number of cpu or "Not available" + :rtype: string + + ''' + try: + return self.data.ProcessorSummary.Count + except AttributeError: + return "Not available" + + def get_cpumodel(self): + '''Get the cpu model available in the system. + + :returns: cpu model or "Not available" + :rtype: string + + ''' + try: + return self.data.ProcessorSummary.Model + except AttributeError: + return "Not available" + + def get_memory(self): + '''Get the memory available in the system. + + :returns: memory available or "Not available" + :rtype: string + + ''' + try: + return self.data.MemorySummary.TotalSystemMemoryGiB + except AttributeError: + return "Not available" + + def get_type(self): + '''Get system type + + :returns: system type or "Not available" + :rtype: string + + ''' + try: + return self.data.SystemType + except AttributeError: + return "Not available" + + def get_chassis(self): + '''Get chassis ids used by the system + + :returns: chassis ids or "Not available" + :rtype: list + + ''' + chassis_list = [] + links = getattr(self.data, mapping.redfish_mapper.map_links(self.data)) + + try: + for chassis in links.Chassis: + result = re.search( + r'Chassis/(\w+)', + chassis[mapping.redfish_mapper.map_links_ref(chassis)]) + chassis_list.append(result.group(1)) + return chassis_list + except AttributeError: + return "Not available" + + def get_managers(self): + '''Get manager ids used by the system + + :returns: managers ids or "Not available" + :rtype: list + + ''' + managers_list = [] + links = getattr(self.data, mapping.redfish_mapper.map_links(self.data)) + + try: + for manager in links.ManagedBy: + result = re.search( + r'Managers/(\w+)', + manager[mapping.redfish_mapper.map_links_ref(manager)]) + managers_list.append(result.group(1)) + return managers_list + except AttributeError: + return "Not available" + + def set_parameter_json(self, value): + '''Generic function to set any system parameter using json structure + + :param value: json structure with value to update + :returns: string -- http response of PATCH request + + ''' + # perform the POST action + # print self.api_url.url() + response = requests.patch( + self.api_url.url(), + verify=self.connection_parameters.verify_cert, + headers=self.connection_parameters.headers, + data=value) + return response.reason + + def set_boot_source_override(self, target, enabled): + '''Shotcut function to set boot source + + :param target: new boot source. Supported values: + "None", + "Pxe", + "Floppy", + "Cd", + "Usb", + "Hdd", + "BiosSetup", + "Utilities", + "Diags", + "UefiShell", + "UefiTarget" + :param enabled: Supported values: + "Disabled", + "Once", + "Continuous" + :returns: string -- http response of PATCH request + ''' + return self.set_parameter_json( + '{"Boot": {"BootSourceOverrideTarget": "' + + target + '", "BootSourceOverrideEnabled" : "' + enabled + '"}}') + + +class SystemsCollection(BaseCollection): + '''Class to manage redfish SystemsCollection data.''' + def __init__(self, url, connection_parameters): + super(SystemsCollection, self).__init__(url, connection_parameters) + + self.systems_dict = {} + + for link in self.links: + index = re.search(r'Systems/(\w+)', link) + self.systems_dict[index.group(1)] = Systems( + link, connection_parameters) + + +class Bios(Base): + '''Class to manage redfish Bios data.''' + def __init__(self, url, connection_parameters): + super(Bios, self).__init__(url, connection_parameters) + self.boot = Boot(re.findall('.+/Bios', url)[0] + + '/Boot/Settings', connection_parameters) + + +class Boot(Base): + '''Class to manage redfish Boot data.''' + def __init__(self, url, connection_parameters): + super(Boot, self).__init__(url, connection_parameters) + + +class EthernetInterfacesCollection(BaseCollection): + '''Class to manage redfish EthernetInterfacesColkection data.''' + def __init__(self, url, connection_parameters): + super(EthernetInterfacesCollection, + self).__init__(url, connection_parameters) + + self.ethernet_interfaces_dict = {} + + # Url returned by the mock up is wrong + # /redfish/v1/Managers/EthernetInterfaces/1 returns a 404. + # --> this is not true anymore (2016/01/03) + # The correct one should be /redfish/v1/Managers/1/EthernetInterfaces/1 + # --> correct by mockup return invalid content (not json) + # Check more than 1 hour for this bug.... grrr.... + for link in self.links: + index = re.search(r'EthernetInterfaces/(\w+)', link) + self.ethernet_interfaces_dict[index.group(1)] = \ + EthernetInterfaces(link, connection_parameters) + + +class EthernetInterfaces(Device): + '''Class to manage redfish EthernetInterfaces.''' + def get_mac(self): + '''Get EthernetInterface MacAddress + + :returns: string -- interface macaddress or "Not available" + + ''' + try: + # Proliant firmware seems to not follow redfish systax + return self.data.MacAddress + except AttributeError: + try: + return self.data.MACAddress + except AttributeError: + return "Not available" + + def get_fqdn(self): + '''Get EthernetInterface fqdn + + :returns: string -- interface fqdn or "Not available" + + ''' + try: + return self.data.FQDN + except AttributeError: + return "Not available" + + def get_ipv4(self): + '''Get EthernetInterface ipv4 address + + :returns: list -- interface ip addresses or "Not available" + + ''' + + ipaddresses = [] + + try: + for ip_settings in self.data.IPv4Addresses: + address = ip_settings['Address'] + ipaddresses.append(address) + + return ipaddresses + except AttributeError: + return "Not available" + + def get_ipv6(self): + '''Get EthernetInterface ipv6 address + + :returns: list -- interface ip addresses or "Not available" + + ''' + + ipaddresses = [] + + try: + for ip_settings in self.data.IPv6Addresses: + address = ip_settings['Address'] + ipaddresses.append(address) + + return ipaddresses + except AttributeError: + return "Not available" + + +class ProcessorsCollection(BaseCollection): + '''Class to manage redfish ProcessorsCollection data.''' + def __init__(self, url, connection_parameters): + super(ProcessorsCollection, + self).__init__(url, connection_parameters) + + self.processors_dict = {} + + for link in self.links: + index = re.search(r'Processors/(\w+)', link) + self.processors_dict[index.group(1)] = \ + Processors(link, connection_parameters) + + +class Processors(Device): + '''Class to manage redfish Processors.''' + def get_speed(self): + '''Get processor speed + + :returns: processor speed or "Not available" + :rtype: string + + ''' + try: + return self.data.MaxSpeedMHz + except AttributeError: + return "Not available" + + def get_cores(self): + '''Get processor cores number + + :returns: cores number or "Not available" + :rtype: string + + ''' + try: + return self.data.TotalCores + except AttributeError: + return "Not available" + + def get_threads(self): + '''Get processor threads number + + :returns: threads number or "Not available" + :rtype: string + + ''' + try: + return self.data.TotalThreads + except AttributeError: + return "Not available" + + +class SimpleStorageCollection(BaseCollection): + '''Class to manage redfish SimpleStorageCollection data.''' + def __init__(self, url, connection_parameters): + super(SimpleStorageCollection, + self).__init__(url, connection_parameters) + + self.simple_storage_dict = {} + + for link in self.links: + index = re.search(r'SimpleStorage/(\w+)', link) + self.simple_storage_dict[index.group(1)] = \ + SimpleStorage(link, connection_parameters) + + +class SimpleStorage(Device): + '''Class to manage redfish SimpleStorage.''' + def get_status(self): + '''Get storage status + + :returns: storage status or "Not available" + :rtype: dict + + ''' + try: + return self.data.Status + except AttributeError: + return "Not available" + + def get_devices(self): + '''Get storage devices + + :returns: storage devices or "Not available" + :rtype: list of dict + + ''' + try: + return self.data.Devices + except AttributeError: + return "Not available" + + +class ChassisCollection(BaseCollection): + '''Class to manage redfish ChassisCollection data.''' + def __init__(self, url, connection_parameters): + super(ChassisCollection, self).__init__(url, connection_parameters) + + self.chassis_dict = {} + + for link in self.links: + index = re.search(r'Chassis/(\w+)', link) + self.chassis_dict[index.group(1)] = Chassis( + link, connection_parameters) + + +class Chassis(Device): + '''Class to manage redfish Chassis data.''' + + def get_type(self): + '''Get chassis type + + :returns: chassis type or "Not available" + :rtype: string + + ''' + try: + return self.data.ChassisType + except AttributeError: + return "Not available" diff --git a/redfish/tests/test_redfish.py b/redfish/tests/test_redfish.py index b70b43b..739f710 100644 --- a/redfish/tests/test_redfish.py +++ b/redfish/tests/test_redfish.py @@ -1,122 +1,13 @@ -# -*- coding: utf-8 -*- +# coding=utf-8 -# 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. +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() -""" -test_redfish ----------------------------------- -Tests for `redfish` module. -""" - -import fixtures -import httplib -import json -import mock -import ssl - -from redfish.tests import base -from redfish import server -from redfish import types - - -def get_fake_params(host=None, user=None, pword=None): - if not host: - host = 'https://127.0.0.1' - if not user: - user = 'admin' - if not pword: - pword = 'password' - return (host, user, pword) - - -def get_response(): - class _response(object): - status = 200 - def read(self): - return '{"foo": "bar"}' - def getheaders(self): - return [('Fake-Header', 'fake value')] - return _response() - - -class TestException(Exception): - pass - - -class TestRedfishConnection(base.TestCase): - - def setUp(self): - super(TestRedfishConnection, self).setUp() - self.log_fixture = self.useFixture(fixtures.FakeLogger()) - self.con_mock = mock.MagicMock() - self.con_mock.getresponse = get_response - - self.http_mock = mock.patch.object(httplib, 'HTTPConnection').start() - self.http_mock.return_value = self.con_mock - self.https_mock = mock.patch.object(httplib, 'HTTPSConnection').start() - self.https_mock.return_value = self.con_mock - self.addCleanup(self.http_mock.stop) - self.addCleanup(self.https_mock.stop) - - def test_create_ok(self): - con = server.RedfishConnection(*get_fake_params()) - self.assertEqual(1, self.https_mock.call_count) - self.assertEqual(0, self.http_mock.call_count) - - def test_create_calls_https_connect(self): - self.https_mock.side_effect = TestException() - self.assertRaises(TestException, - server.RedfishConnection, - *get_fake_params(host='https://fake')) - - def test_create_calls_http_connect(self): - self.http_mock.side_effect = TestException() - self.assertRaises(TestException, - server.RedfishConnection, - *get_fake_params(host='http://fake')) - - # TODO: add test for unknown connection schema (eg, ftp://) - -# FIXME: ssl module has no attribute 'SSLContext' -# NOTE: skip this test if sys.version_info (major, minor) != (2, 7) and micro < 9 -# @mock.patch.object(ssl, 'SSLContext') -# def test_insecure_ssl(self, ssl_mock): -# ssl_mock.return_value = mock.Mock() -# con = connection.RedfishConnection(*get_fake_params) -# ssl_mock.assert_called_once_with(ssl.PROTOCOL_TLSv1) - - def test_get_ok(self): - con = server.RedfishConnection(*get_fake_params()) - res = con.rest_get('/v1/test/', '') - self.assertEqual(200, con.status) - # Headers ae lower cased when returned - self.assertIn('fake-header', con.headers.keys()) - self.assertIn('foo', res.keys()) - self.con_mock.request.assert_called_with( - 'GET', '/v1/test/', body='null', headers=mock.ANY) - - # TODO: add test for redirects - - # TODO: add test for collections - - # TODO: add test for gzip'd body - - def test_post_ok(self): - body = '{"fake": "body"}' - json_body = json.dumps(body) - con = server.RedfishConnection(*get_fake_params()) - res = con.rest_post('/v1/test/', '', body) - self.assertEqual(200, con.status) - self.con_mock.request.assert_called_with( - 'POST', '/v1/test/', body=json_body, headers=mock.ANY) +def test_fake(): + print('This is a fake test') + assert (2 == 2) diff --git a/redfish/types.py b/redfish/types.py index a31b8bc..f6cd7b4 100644 --- a/redfish/types.py +++ b/redfish/types.py @@ -1,197 +1,422 @@ -# Copyright 2014 Hewlett-Packard Development Company, L.P. -# -# 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. - - -""" -Redfish Resource Types -""" - -import base64 -import gzip -import hashlib -import httplib -import json +# coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +from builtins import object + +import pprint +from urllib.parse import urljoin +import requests +import simplejson +import tortilla import ssl -import StringIO -import sys -import urllib2 -from urlparse import urlparse +from . import config +from . import mapping +from . import exception -from oslo_log import log as logging -from redfish import exception +standard_library.install_aliases() -LOG = logging.getLogger('redfish') + +# Global variable class Base(object): - def __init__(self, obj, connection=None): - self._conn = connection - """handle to the redfish connection""" - - self._attrs = [] - """list of discovered attributes""" - - self._links = [] - """list of linked resources""" - - # parse the individual resources, appending them to - # the list of object attributes - for k in obj.keys(): - ref = k.lower() - if ref in ["links", "oem", "items"]: - continue - setattr(self, ref, obj[k]) - self._attrs.append(ref) - - # make sure the required attributes are present - if not getattr(self, 'name', False): - raise ObjectLoadException( - "Failed to load object. Reason: could not determine name.") - if not getattr(self, 'type', False): - raise ObjectLoadException( - "Failed to load object. Reason: could not determine type.") - - if getattr(self, 'serviceversion', False): - self.type = self.type.replace('.' + self.serviceversion, '') + '''Abstract class to manage types (Chassis, Servers etc...).''' + def __init__(self, url, connection_parameters): + '''Class constructor''' + global TORTILLADEBUG + self.connection_parameters = connection_parameters # Uggly hack + self.url = url + self.api_url = tortilla.wrap(url, debug=config.TORTILLADEBUG) + + config.logger.debug( + "------------------------------------------------------------") + config.logger.debug("Url: %s" % url) + config.logger.debug("Header: %s" % connection_parameters.headers) + config.logger.debug( + "------------------------------------------------------------") + + try: + self.data = self.api_url.get( + verify=connection_parameters.verify_cert, + headers=connection_parameters.headers) + except (requests.ConnectionError, ssl.SSLError) as e: + # Log and transmit the exception. + config.logger.info('Raise a RedfishException to upper level') + msg = 'Connection error : {}\n'.format(e) + raise exception.ConnectionFailureException(msg) + except simplejson.scanner.JSONDecodeError as e: + # Log and transmit the exception. + config.logger.info('Raise a RedfishException to upper level') + msg = \ + 'Ivalid content : Content does not appear to be a valid ' + \ + 'Redfish json\n' + raise exception.InvalidRedfishContentException(msg) + config.logger.debug(pprint.PrettyPrinter(indent=4).pformat(self.data)) + + def get_link_url(self, link_type, data_subset=None): + '''Need to be explained. + + :param parameter_name: name of the parameter + :returns: string -- parameter value + ''' + if not data_subset: + data = self.data + else: + data = data_subset + + self.links = [] + + # Manage standard < 1.0 + if float(mapping.redfish_version) < 1.00: + links = getattr(data, mapping.redfish_mapper.map_links()) + if link_type in links: + return urljoin( + self.url, + links[link_type][mapping.redfish_mapper.map_links_ref()]) + raise AttributeError else: - # TODO: use a regex here to strip and store the version - # instead of assuming it is 7 chars long - self.type = self.type[:-7] - - # Lastly, parse the 'links' resource. - # Note that this may have different nested structure, depending on - # what type of resource this is, or what vendor it is. - # subclasses may follow this by parsing other resources / collections - self._parse_links(obj) - - def _parse_links(self, obj): - """Map linked resources to getter functions - - The root resource returns a dict of links to top-level resources - """ - def getter(connection, href): - def _get(): - return connection.rest_get(href, {}) - return _get - - for k in obj['links']: - ref = "get_" + k.lower() - self._links.append(ref) - href = obj['links'][k]['href'] - setattr(self, ref, getter(self._conn, href)) - - def __repr__(self): - """Return this object's _attrs as a dict""" - res = {} - for a in self._attrs: - res[a] = getattr(self, a) - return res - - def __str__(self): - """Return the string representation of this object's _attrs""" - return json.dumps(self.__repr__()) + links = getattr(data, link_type) + link = getattr(links, mapping.redfish_mapper.map_links_ref()) + return urljoin(self.url, link) + + @property + def url(self): + return self.__url + + @url.setter + def url(self, url): + self.__url = url + + def get_parameter(self, parameter_name): + '''Generic function to get a specific parameter + + :param parameter_name: name of the parameter + :returns: string -- parameter value + + ''' + try: + return self.data[parameter_name] + except: + return 'Parameter does not exist' + + def get_parameters(self): + '''Generic function to get all parameters + + :returns: string -- parameter value + + ''' + try: + return self.data + except: + return -1 + + def set_parameter(self, parameter_name, value): + '''Generic function to set a specific parameter + + :param parameter_name: name of the parameter + :param value: value to set + :returns: string -- http response of PATCH request + + ''' + # Craft the request + action = dict() + action[parameter_name] = value + config.logger.debug(action) + + # Perform the POST action + config.logger.debug(self.api_url) + response = self.api_url.patch( + verify=self.connection_parameters.verify_cert, + headers=self.connection_parameters.headers, + data=action) + return response + + def get_name(self): + '''Get root name + + :returns: string -- root name or "Not available" + + ''' + try: + return self.data.Name + except AttributeError: + return "Not available" class BaseCollection(Base): - """Base class for collection types""" - def __init__(self, obj, connection=None): - super(BaseCollection, self).__init__(obj, connection=connection) - self._parse_items(obj) - self._attrs.append('items') - - def _parse_links(self, obj): - """links are special on a chassis; dont parse them""" - pass - - def _parse_items(self, obj): - """Map linked items to getter methods - - The chassis resource returns a list of items and corresponding - link data in a separate entity. - """ - def getter(connection, href): - def _get(): - return connection.rest_get(href, {}) - return _get - - self.items = [] - self._item_getters = [] - - if 'links' in obj and 'Member' in obj['links']: - # NOTE: this assumes the lists are ordered the same - counter = 0 - for item in obj['links']['Member']: - self.items.append(obj['Items'][counter]) - self._item_getters.append( - getter(self._conn, item['href'])) - counter+=1 - elif 'Items' in obj: - # TODO: find an example of this format and make sure it works - for item in obj['Items']: - if 'links' in item and 'self' in item['links']: - href = item['links']['self']['href'] - self.items.append(item) - - # TODO: implement paging support - # if 'links' in obj and 'NextPage' in obj['links']: - # next_page = THIS_URI + '?page=' + str(obj['links']['NextPage']['page']) - # do something with next_page URI - - def __iter__(self): - for getter in self._item_getters: - yield getter() - - -class Root(Base): - """Root '/' resource class""" - def _parse_links(self, obj): - """Map linked resources to getter functions - - The root resource returns a dict of links to top-level resources - - TODO: continue implementing customizations for top-level resources - - """ - mapping = { - 'Systems': Systems, - 'Chassis': Chassis, - 'Managers': Base, - 'Schemas': Base, - 'Registries': Base, - 'Tasks': Base, - 'AccountService': Base, - 'Sessions': Base, - 'EventService': Base, - } - - def getter(connection, href, type): - def _get(): - return mapping[type](connection.rest_get(href, {}), self._conn) - return _get - - for k in obj['links']: - ref = "get_" + k.lower() - self._links.append(ref) - href = obj['links'][k]['href'] - setattr(self, ref, getter(self._conn, href, k)) - - -class Chassis(BaseCollection): - """Chassis resource class""" - def __len__(self): - return len(self.items) - - -class Systems(Base): - pass + '''Abstract class to manage collection (Chassis, Servers etc...).''' + def __init__(self, url, connection_parameters): + super(BaseCollection, self).__init__(url, connection_parameters) + + self.links = [] + + # linksmembers = self.data.Links.Members + # linksmembers = self.data.links.Member + if float(mapping.redfish_version) < 1.00: + linksmembers = getattr( + self.data, mapping.redfish_mapper.map_links()) + linksmembers = getattr( + linksmembers, mapping.redfish_mapper.map_members()) + else: + linksmembers = getattr( + self.data, mapping.redfish_mapper.map_members()) + for link in linksmembers: + # self.links.append(getattr(link,'@odata.id')) + # self.links.append(getattr(link,'href')) + self.links.append(urljoin( + self.url, getattr( + link, mapping.redfish_mapper.map_links_ref()))) + + config.logger.debug(self.links) + + +class Thermal(Base): + '''Class to manage redfish Thermal data.''' + + # Currently doesn't support case such as: + # /redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/DiskDrives/1/ + # u'CurrentTemperatureCelsius': 45 + def get_temperatures(self): + '''Get chassis sensors name and temperature + + :returns: chassis sensor and temperature + :rtype: dict + + ''' + temperatures = {} + + try: + for sensor in self.data.Temperatures: + temperatures[sensor.Name] = sensor.ReadingCelsius + return temperatures + except AttributeError: + return "Not available" + + def get_fans(self): + '''Get chassis fan name and rpm + + :returns: chassis fan and rpm + :rtype: dict + + ''' + fans = {} + + try: + for fan in self.data.Fans: + # New interface + fans[fan.Name] = str(fan.Reading) + ' ' + fan.ReadingUnits + return fans + except AttributeError: + try: + # Old interface + for fan in self.data.Fans: + fans[fan.FanName] = fan.ReadingRPM + + return fans + + except AttributeError: + return "Not available" + + +class Power(Base): + '''Class to manage redfish Power data.''' + + def get_power(self): + '''Get power supply informartion + + :returns: power supply and Voltage + :rtype: dict + + ''' + pc = {} + + # config.logger.debug("PowerControl parsed") + # config.logger.debug(self.data) + try: + for p in self.data.PowerControl: + pc[p.MemberId] = str(p.PowerConsumedWatts) + ' Watts' + return pc + except AttributeError: + return "Not available" + + +class Device(Base): + '''Abstract class to add common methods between devices + (Chassis, Servers, System). + ''' + + def __init__(self, url, connection_parameters): + '''Class constructor''' + super(Device, self).__init__(url, connection_parameters) + + try: + url2 = self.get_link_url('Thermal') + self.thermal = Thermal(url2, connection_parameters) + except AttributeError: + self.thermal = Thermal(url, connection_parameters) + + try: + url2 = self.get_link_url('Power') + self.power = Power(url2, connection_parameters) + except AttributeError: + self.power = Power(url, connection_parameters) + + def get_uuid(self): + '''Get device uuid + + :returns: device uuid or "Not available" + :rtype: string + + ''' + try: + return self.data.UUID + except AttributeError: + return "Not available" + + def get_status(self): + '''Get device status + + :returns: device status or "Not available" + :rtype: dict + + ''' + try: + return self.data.Status + except AttributeError: + return "Not available" + + def get_model(self): + '''Get device model + + :returns: device model or "Not available" + :rtype: string + + ''' + try: + return self.data.Model + except AttributeError: + return "Not available" + + def get_manufacturer(self): + '''Get device manufacturer + + :returns: device manufacturer or "Not available" + :rtype: string + + ''' + try: + return self.data.Manufacturer + except AttributeError: + return "Not available" + + def get_serial_number(self): + '''Get serial number of the device. + + :returns: serial number or "Not available" + :rtype: string + + ''' + try: + return self.data.SerialNumber + except AttributeError: + return "Not available" + + def get_asset_tag(self): + '''Get asset tag of the device. + + :returns: asset tag or "Not available" + :rtype: string + + ''' + try: + return self.data.AssetTag + except AttributeError: + return "Not available" + + def get_sku(self): + '''Get sku number of the device. + + :returns: sku number or "Not available" + :rtype: string + + ''' + try: + return self.data.SKU + except AttributeError: + return "Not available" + + def get_part_number(self): + '''Get part number of the device. + + :returns: part number or "Not available" + :rtype: string + + ''' + try: + return self.data.PartNumber + except AttributeError: + return "Not available" + + def get_name(self): + '''Get name of the device. + + :returns: name or "Not available" + :rtype: string + + ''' + try: + return self.data.Name + except AttributeError: + try: + return self.data.ProductName + except AttributeError: + return "Not available" + + def get_description(self): + '''Get description of the device. + + :returns: device description or "Not available" + :rtype: string + + ''' + try: + return self.data.Description + except AttributeError: + return "Not available" + + def get_powerstate(self): + '''Get power status of the device. + + :returns: device power state or "Not available" + :rtype: string + + ''' + try: + return self.data.PowerState + except AttributeError: + return "Not available" + + def get_fw_version(self): + '''Get firmware version of the device. + + :returns: firmware version or "Not available" + :rtype: string + + ''' + try: + return self.data.FirmwareVersion.Current.VersionString + except AttributeError: + try: + return self.data.Firmware.Current.VersionString + except AttributeError: + # For some NICs + try: + return self.data.FirmwareVersion + except AttributeError: + try: + return self.data.Firmware + except AttributeError: + return "Not available" diff --git a/requirements.txt b/requirements.txt index 1cbb598..4f586b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,13 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -pbr>=0.6,!=0.7,<1.0 -oslo.log>=1.0,<2.0 -Babel>=1.3 +pbr>=0.8 +tortilla>=0.4.1 +Jinja2>=2.7.3 +docopt>=0.6.2 +simplejson>=3.8.1 +requests>=2.9.1 + +# Python3 compatible +future>=0.15.2 +configparser>=3.3.0; python_version < '3' diff --git a/setup.cfg b/setup.cfg index 2fa161e..27fa726 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,26 +3,39 @@ name = python-redfish summary = Reference implementation of Redfish standard client. description-file = README.rst -author = OpenStack -author-email = openstack-dev@lists.openstack.org -home-page = http://www.openstack.org/ +author = Redfish dev team +author-email = python-redfish@mondorescue.org +home-page = https://opendev.org/x/python-redfish +license = Apache-2 classifier = - Environment :: OpenStack - Intended Audience :: Information Technology - Intended Audience :: System Administrators - License :: OSI Approved :: Apache Software License - Operating System :: POSIX :: Linux - Programming Language :: Python - Programming Language :: Python :: 2 - Programming Language :: Python :: 2.7 - Programming Language :: Python :: 2.6 - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.3 - Programming Language :: Python :: 3.4 + Development Status :: 4 - Beta + Environment :: Console + Intended Audience :: Information Technology + Intended Audience :: System Administrators + License :: OSI Approved :: Apache Software License + Operating System :: POSIX :: Linux + Programming Language :: Python + Programming Language :: Python :: 2 + Programming Language :: Python :: 2.7 + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.5 + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 [files] packages = - redfish + redfish + redfish/oem + +scripts = + redfish-client/redfish-client + redfish-client/redfish-check-cartridge + +[data_files_helper] +conf = 'redfish-client/etc/redfish-client.conf', 'etc' +templates = 'redfish-client/templates/*', 'share/redfish-client/templates' +rfcusage = 'redfish-client/redfish-client_usage.txt', 'share/redfish-client' [build_sphinx] source-dir = doc/source @@ -32,16 +45,16 @@ all_files = 1 [upload_sphinx] upload-dir = doc/build/html -[compile_catalog] -directory = redfish/locale -domain = python-redfish +#[compile_catalog] +#directory = redfish/locale +#domain = python-redfish -[update_catalog] -domain = python-redfish -output_dir = redfish/locale -input_file = redfish/locale/python-redfish.pot +#[update_catalog] +#domain = python-redfish +#output_dir = redfish/locale +#input_file = redfish/locale/python-redfish.pot -[extract_messages] -keywords = _ gettext ngettext l_ lazy_gettext -mapping_file = babel.cfg -output_file = redfish/locale/python-redfish.pot +#[extract_messages] +#keywords = _ gettext ngettext l_ lazy_gettext +#mapping_file = babel.cfg +#output_file = redfish/locale/python-redfish.pot diff --git a/setup.py b/setup.py index 7363757..4bdc0c8 100755 --- a/setup.py +++ b/setup.py @@ -1,21 +1,38 @@ #!/usr/bin/env python -# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. -# -# Licensed under the Apache License, Version 2.0 (the "License"); +# 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, +# 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. # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +import os +import sys +import fileinput +import re +import pprint +import distutils import setuptools +from setuptools import Distribution +from setuptools.command.install import install + +# Trick to allow pip installation +major, minor = sys.version_info[:2] +if major == 2: + import ConfigParser as configparser +else: + import configparser # In python < 2.7.4, a lazy loading of package `pbr` will break # setuptools if some other modules registered functions in `atexit`. @@ -25,6 +42,202 @@ except ImportError: pass + +class OnlyGetScriptPath(install): + '''Extend setuptools install class and replace run method to go through + setuptool installation and retrieve the script path + ''' + def run(self): + # does not call install.run() by design + self.distribution.install_scripts = self.install_scripts + + +class DataFilesHelper(object): + '''Class to help manage data files''' + def __init__(self): + '''Read setup.cfg and build the required data''' + self.data = {} + self.setupstruc = [] + config = configparser.ConfigParser() + config.read('setup.cfg') + for datafile in config.options('data_files_helper'): + src, dst = config.get('data_files_helper', datafile).split(',') + src = self.refinesrc(src) + dst = self.refinedst(dst) + self.data[datafile] = {'src': src, + 'dst': dst, + 'fdst': self.calculatedst(src, dst)} + self.update_setupstruc(src, dst) + try: + # Create an entry for scripts if available + self.data['script'] = {'src': [], + 'fdst': [], + 'dst': 'bin'} + src = config.get('files', 'scripts').split('\n') + # print("List handled: {}\n".format(src)) + listsrc = [] + for s in src: + if not s: + continue + # print("Source handled: {}".format(s)) + listsrc.append(s) + self.data['script']['src'] = listsrc + self.data['script']['fdst'] = self.calculatedst(listsrc, "bin") + except configparser.NoOptionError: + pass + pp = pprint.PrettyPrinter(indent=4) + pp.pprint(self.data) + + def trim(self, string): + string = string.strip() + string = string.strip("'") + string = string.strip('"') + return(string) + + def refinesrc(self, file): + '''Refine source: + Expend source file if needed + + :param file: source files + :type file: string + :returns: source files refined + :rtype: list + ''' + file = self.trim(file) + if(file.endswith('/*')): + return(self.getfiles(file.replace('/*', ''))) + else: + return([file]) + + def refinedst(self, file): + '''Refine destination: + Check if destination needs an exception + + :param file: destination + :type path: string + :returns: destination refined + :rtype: string + ''' + file = self.trim(file) + if('etc' in file and self.getprefix() == '/usr'): + return('/etc') + else: + return(file) + + def calculatedst(self, src, dst): + '''Calculate the full destination path according to source and + destination + + :param src: source files + :type path: list + :param dst: destination path + :type path: string + :returns: files with full destination + :rtype: list + ''' + destination = [] + for file in src: + if(dst.startswith('/')): + destination.append(os.path.join(dst, + os.path.basename(file))) + else: + destination.append(os.path.join(self.getprefix(), + dst, + os.path.basename(file))) + return(destination) + + def getfiles(self, path): + '''Retrieve file list within a directory + + :param path: directory path + :type path: string + :returns: file list + :rtype: list + ''' + for root, dirs, files in os.walk(path): + file_list = [os.path.join(root, file) for file in files] + return(file_list) + + def getprefix(self): + '''Retrieve setup tool calculated prefix + + :returns: prefix + :rtype: string + ''' + dist = Distribution({'cmdclass': {'install': OnlyGetScriptPath}}) + dist.dry_run = True # not sure if necessary, but to be safe + dist.parse_config_files() + try: + dist.parse_command_line() + except (distutils.errors.DistutilsArgError, AttributeError): + pass + command = dist.get_command_obj('install') + command.ensure_finalized() + command.run() + prefix = dist.install_scripts.replace('/bin', '') + return prefix + + def update_setupstruc(self, src, dst): + '''Create/update structure for setuptools.setup() + like the following example. + + [('etc/', ['redfish-client/etc/redfish-client.conf']), + ('share/redfish-client/templates', + ['redfish-client/templates/manager_info.template', + 'redfish-client/templates/bla.template'])] + ''' + self.setupstruc.append((dst, src)) + + def getsetupstruc(self): + '''Retrieve setup structure compatible with setuptools.setup() + This is only to encapsulatate setupstruc property + + :returns: datafiles source and destination + :rtype: setuptools structure + ''' + return(self.setupstruc) + + +########################################## +# Functions +########################################## +def replaceAll(file, searchExp, replaceExp): + for line in fileinput.input(file, inplace=1): + if searchExp in line: + line = line.replace(searchExp, replaceExp) + sys.stdout.write(line) + + +def getversion(): + with open("python_redfish.egg-info/PKG-INFO", "r") as f: + output = f.read() + s = re.search(r'\nVersion:\s+(\S+)', output) + return(s.group(1)) + + +########################################## +# START +########################################## + +datafiles = DataFilesHelper() + +# Install software setuptools.setup( setup_requires=['pbr'], - pbr=True) + pbr=True, + data_files=datafiles.getsetupstruc()) + + +if('install' in sys.argv): + # Update conf files + for file in datafiles.data['conf']['fdst']: + print('Update : {}'.format(file)) + replaceAll(file, 'PBSHAREPATH', + os.path.dirname(datafiles.data['rfcusage']['fdst'][0])) + # Update script files + for file in datafiles.data['script']['fdst']: + print('Update : {}'.format(file)) + replaceAll(file, 'PBCONFFILE', datafiles.data['conf']['fdst'][0]) + replaceAll(file, 'PBVER', getversion()) + replaceAll(file, 'PBSHAREPATH', + os.path.dirname(datafiles.data['rfcusage']['fdst'][0])) diff --git a/test-requirements.txt b/test-requirements.txt index 8592bde..0ce4eb0 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2,14 +2,12 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -hacking<0.11,>=0.10.0 - +pytest>=2.6.4 coverage>=3.6 -discover -python-subunit>=0.0.18 -sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 -oslosphinx>=2.2.0 # Apache-2.0 -oslotest>=1.2.0 # Apache-2.0 -testrepository>=0.0.18 -testscenarios>=0.4 -testtools>=0.9.36,!=1.2.0 +mock>=1.0.1 +# docker-py has a lot of naming changes coming with 2.0 so stick with 1.x +# the library 2.0 will be called docker instead of docker-py +docker-py>=1.8.1 # Apache-2.0 +path.py>=5.2 +testrepository>=0.0.20 +flake8<2.6.0,>=2.5.4 # MIT diff --git a/tox.ini b/tox.ini index bb9524b..63ab293 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] -minversion = 1.6 -envlist = py33,py34,py26,py27,pypy,pep8 +minversion = 2.0 +envlist = py37,py36,py35,py27,docs skipsdist = True [testenv] @@ -11,28 +11,31 @@ setenv = VIRTUAL_ENV={envdir} LANGUAGE=en_US deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt -commands = - bash -c "TESTS_DIR=./redfish/tests python setup.py testr --slowest --testr-args='{posargs}'" +commands = py.test [testenv:pep8] +basepython = python3 commands = flake8 -[testenv:venv] -commands = {posargs} - -[testenv:cover] -commands = python setup.py testr --coverage --testr-args='{posargs}' +#[testenv:cover] +#commands = python setup.py testr --coverage --testr-args='{posargs}' [testenv:docs] +basepython = python3 +envdir = {toxworkdir}/venv +deps = + -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} + -r{toxinidir}/doc/requirements.txt commands = python setup.py build_sphinx -[testenv:debug] -commands = oslo_debug_helper {posargs} - [flake8] # E123, E125 skipped as they are invalid PEP-8. - show-source = True ignore = E123,E125 builtins = _ -exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build +exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,pbbuild,pbdelivery,pbconf,python-redfish-[01]* + +[testenv:venv] +basepython = python3 +setenv = PYTHONHASHSEED=0 +commands = {posargs}