This library provides a pure Python interface to the HPE OneView REST APIs.
HPE OneView is a fresh approach to converged infrastructure management, inspired by the way you expect to work, with a single integrated view of your IT infrastructure.
The HPE OneView Python library depends on the Python-Future library to provide Python 2/3 compatibility. This will be installed automatically if you use the installation methods described below.
Either:
$ git clone https://github.com/HewlettPackard/python-hpOneView.git
$ cd python-hpOneView
$ python setup.py install --user # to install in the user directory (~/.local)
$ sudo python setup.py install # to install globally
Or if using PIP:
$ git clone https://github.com/HewlettPackard/python-hpOneView.git
$ cd python-hpOneView
$ pip install .
Both installation methods work if you are using virtualenv, which you should be!
$ pip install hpOneView
A status of the HPE OneView REST interfaces that have been implemented in this Python library can be found in the Wiki section.
The latest version of the SDK documentation can be found in the [SDK Documentation section] (https://hewlettpackard.github.io/python-hpOneView/index.html).
This module uses Python’s Standard Library logging module. An example of how to configure logging is provided on /examples/logger.py
.
More information about the logging configuration can be found in the Python Documentation.
Connection properties for accessing the OneView appliance can be set in a JSON file.
Before running the samples or your own scripts, you must create the JSON file. An example can be found at: OneView configuration sample.
Once you have created the JSON file, you can initialize the OneViewClient:
oneview_client = OneViewClient.from_json_file('/path/config.json')
🔒 Tip: Check the file permissions because the password is stored in clear-text.
Configuration can also be stored in environment variables:
# Required
export ONEVIEWSDK_IP='172.16.102.82'
export ONEVIEWSDK_USERNAME='Administrator'
export ONEVIEWSDK_PASSWORD='secret123'
# Optional
export ONEVIEWSDK_API_VERSION='300'
export ONEVIEWSDK_AUTH_LOGIN_DOMAIN='authdomain'
export ONEVIEWSDK_PROXY='<proxy_host>:<proxy_port>'
🔒 Tip: Make sure no unauthorized person has access to the environment variables, since the password is stored in clear-text.
Once you have defined the environment variables, you can initialize the OneViewClient using the following code snippet:
oneview_client = OneViewClient.from_environment_variables()
You can also set the configuration using a dictionary:
config = {
"ip": "172.16.102.82",
"credentials": {
"userName": "Administrator",
"password": "secret123"
}
}
oneview_client = OneViewClient(config)
🔒 Tip: Check the file permissions because the password is stored in clear-text.
If your environment requires a proxy, define the proxy properties in the JSON file using the following syntax:
"proxy": "<proxy_host>:<proxy_port>"
OR export the ONEVIEWSDK_PROXY
environment variable:
export ONEVIEWSDK_PROXY='<proxy_host>:<proxy_port>'
The OneView Python SDK supports the new API endpoints for OneView 3.0 and for HPE Synergy. To access this feature, you must set the API version on the OneViewClient configuration, either using the JSON configuration:
"api_version": 300
OR using the Environment variable:
export ONEVIEWSDK_API_VERSION='300'
If this property is not specified, it will fall back to the 300
default value.
The OneView Python SDK also supports the API endpoints for HPE Synergy Image Streamer. To configure the SDK, you must set the Image Streamer IP on the OneViewClient configuration, either using the JSON configuration:
"image_streamer_ip": "100.100.100.100"
OR using the Environment variable:
export ONEVIEWSDK_IMAGE_STREAMER_IP='100.100.100.100'
To create the ImageStreamerClient, you must call the create_image_streamer_client
method from the pre-existent OneViewClient instance. Through the created
ImageStreamerClient, you are able to access the API Clients of the
Image Streamer resources:
image_streamer_client = oneview_client.create_image_streamer_client()
build_plans = image_streamer_client.build_plans.get_all()
You can find more usage examples in the folder /examples/image_streamer
All exceptions raised by the OneView Python SDK inherit from HPOneViewException.
HPOneViewException has the following properties:
- msg - a string containing the error message sent by the OneView REST API;
- oneview_response - contains the entire JSON data dictionary with error details that are returned by the OneView Python SDK. It can be:
None
.
try:
fc_network = oneview_client.fc_networks.get(id)
except HPOneViewException as e:
print(e.msg)
if e.oneview_response:
pprint(e.oneview_response)
For compatibility purposes, the Exception args property is defined with the error arguments. For example:
except Exception as e:
print(arg[0]) # e.msg equivalent
print(arg[1]) # e.oneview_reponse equivalent
except HPOneViewException as e:
print(e.msg) # has the entire JSON result from OneView, or the error message.
You know the drill. Fork it, branch it, change it, commit it, and pull-request it. We are passionate about improving this project, and are glad to accept help to make it better. However, keep the following in mind:
We reserve the right to reject changes that we feel do not fit the scope of this project. For feature additions, please open an issue to discuss your ideas before doing the work.
The following summarizes code structure and naming conventions for the OneView resources.
- Packages: The package is named according to the HPE OneView API Reference group, with all characters in lowercase, replacing spaces with underscores.
- Modules: The module is named according to the HPE OneView API Reference endpoint title, with all characters in lowercase, replacing spaces with underscores. For example: In the documentation we have FC Networks, so the module name will be fc_networks.
- Classes: We are using camel case to define the class name, for example: FcNetworks.
- OneViewClient properties: In the oneview_client, the property name follows exactly the module name, for example: fc_networks.
- Examples: The example is named with the same name of the resource module: fc_networks.
- Tests: The unit test folders follow the same structure of the resources. The name of the test modules should start with "test," for example: test_fc_networks.
If you have a need not being met by the current implementation, please let us know (via a new issue). This feedback is crucial for us to deliver a useful product. Do not assume that we have already thought of everything, because we assure you that is not the case.
We have already packaged everything you need to do to verify if the code is passing the tests. The tox script wraps the unit tests execution against Python 2 and 3, flake8 validation, and the test coverage report generation.
Run the following command:
$ tox