Skip to main content

Python Bindings for OpenNebula XML-RPC API

Project description

Description

PyOne is an implementation of Open Nebula XML-RPC bindings in Python.

The main goals of this library are completeness and maintainability.

Proxies and generators have been used whenever possible to minimize the impact of API updates, ensuring that the distributed xsd files are the only update required when new API versions are released.

This library is meant to be used together with OpenNebula API documentation:

The XML-RPC API must be used to know which calls to make.

Development

To contribute enhancements or fixes use GitHub tools: Pull requests and issues. Please note that by contributing to this project you accept that your contributions are under the Apache License 2.0, just like the rest of this project. Please take some time to read and understand the license terms and ensure that you are happy with it.

Authors

Compatibility

  • PyONE is compatible with OpenNebula v5.4

  • It should be easy to backport PyOne to any OpenNebula version with XML-RPC API that includes XML Schema Definition (XSD) files.

Requirements

  • Connectivity and Credentials to OpenNebula XML-RPC Server.

Installation

PyONE is distributed as a python package, it can be installed as:

pip install pyone

Configuration

You can configure your XML-RPC Server endpoint and credentials in the constructor:

import pyone
one = pyone.OneServer("http://one/RPC2", session="oneadmin:onepass" )

If you are connecting to a test platform with a self signed certificate you can disable certificate verification as:

import pyone
import ssl
one = pyone.OneServer("http://one/RPC2", session="oneadmin:onepass", context=ssl._create_unverified_context() )

It is also possible to modify the default connection timeout, but note that the setting will modify the TCP socket default timeout of your Python VM, ensure that the chosen timeout is suitable to any other connections runing in your project.

Usage

Making Calls

Calls match the API documentation provided by Open Nebula:

import pyone

one = pyone.OneServer("http://one/RPC2", session="oneadmin:onepass" )
hostpool = one.hostpool.info()
host = hostpool.HOST[0]
id = host.ID

Note that the session parameter is automatically included as well as the “one.” prefix to the method.

Returned Objects

The returned types have been generated with PyXB and closely match the XSD specification. You can use the XSD specification as primary documentation while your IDE will offer code completion as you code or debug.

marketpool = one.marketpool.info()
m0 = marketpool.MARKETPLACE[0]
print "Markeplace name is " + m0.NAME

Structured Parameters

When making calls, the library will translate flat dictionaries into attribute=value vectors. Such as:

one.host.update(0,  {"LABELS": "HD"}, 1)

When the provided dictionary has a “root” dictionary, it is considered to be root element and it will be translated to XML:

one.vm.update(1,
  {
    'TEMPLATE': {
      'NAME': 'abc',
      'MEMORY': '1024',
      'ATT1': 'value1'
    }
  }, 1)

When reading structured parameters such as TEMPLATE you can use the utility function one2dict that will transform it as an easier to handle python dictionary

from pyone.util import one2dict

host = one.host.info(0)
tdict = one2dict(host.TEMPLATE)
arch = tdict['TEMPLATE']['ARCH']

This makes it possible to read a TEMPLATE as dictionary, modify it and use it as parameter for an update method.

It is also possible to use the method toDOM provided by PYxB and read the template as DOM.

Building from Source

Note that a Makefile is provided to generate the python bindings

References

PyONE started as part of the Privazio project.

Privazio is a private cloud for residential users, startups or workgroups with a special focus on privacy.

PyONE is meant to be a key component to implement an Ansible module for managing Open Nebula.

License

PyONE is licensed under Apache License 2.0

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyone-1.0.5.tar.gz (69.3 kB view details)

Uploaded Source

Built Distribution

pyone-1.0.5-py2-none-any.whl (86.5 kB view details)

Uploaded Python 2

File details

Details for the file pyone-1.0.5.tar.gz.

File metadata

  • Download URL: pyone-1.0.5.tar.gz
  • Upload date:
  • Size: 69.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyone-1.0.5.tar.gz
Algorithm Hash digest
SHA256 ff83c7ad6f8241d818a6ede985fc7e56699e311c16cf1a8ee0d558ab4f36d272
MD5 542861f3490cd73d70b7cfd6e55b3895
BLAKE2b-256 c91c7efcad0f289d66d3a07d382c19148f412dee3ea6be73844fc045b7ab6991

See more details on using hashes here.

Provenance

File details

Details for the file pyone-1.0.5-py2-none-any.whl.

File metadata

File hashes

Hashes for pyone-1.0.5-py2-none-any.whl
Algorithm Hash digest
SHA256 e7e924d63d09f237e1f547324a8453dd7070a7043c83cf4f57e06c9412f94968
MD5 9d6516eb103e6bcb061f008530746024
BLAKE2b-256 a98ff914d205b0fab96831b24e5e5cc75fa586f66bf32df1333be81ee7962971

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page