Python Wrapper for the Proxmox 2.x API (HTTP and SSH)
Project description
What does it do and what’s different?
Proxmoxer is a wrapper around the Proxmox REST API v2.
It was inspired by slumber, but it dedicated only to Proxmox. It allows to use not only REST API over HTTPS, but the same api over ssh and pvesh utility.
Like Proxmoxia it dynamically creates attributes which responds to the attributes you’ve attempted to reach.
Installation
pip install proxmoxer
For ‘https’ backend install requests
pip install requests
For ‘ssh_paramiko’ backend install paramiko
pip install paramiko
Short usage information
The first thing to do is import the proxmoxer library and create ProxmoxAPI instance.
from proxmoxer import ProxmoxAPI proxmox = ProxmoxAPI('proxmox_host', user='admin@pam', password='secret_word', verify_ssl=False)
This will connect by default through the ‘https’ backend.
It is possible to use already prepared public/private key authentication. It is possible to use ssh-agent also.
from proxmoxer import ProxmoxAPI proxmox = ProxmoxAPI('proxmox_host', user='proxmox_admin', backend='ssh_paramiko')
Please note, https-backend needs ‘requests’ library, ssh_paramiko-backend needs ‘paramiko’ library, openssh-backend needs ‘openssh_wrapper’ library installed.
Queries are exposed via the access methods get, post, put and delete. For convenience added two synonyms: create for post, and set for put.
for node in proxmox.nodes.get(): for vm in proxmox.nodes(node['node']).openvz.get(): print "{0}. {1} => {2}" .format(vm['vmid'], vm['name'], vm['status']) >>> 141. puppet-2.london.baseblack.com => running 101. munki.london.baseblack.com => running 102. redmine.london.baseblack.com => running 140. dns-1.london.baseblack.com => running 126. ns-3.london.baseblack.com => running 113. rabbitmq.london.baseblack.com => running
same code can be rewritten in the next way:
for node in proxmox.get('nodes'): for vm in proxmox.get('nodes/%s/openvz' % node['node']): print "%s. %s => %s" % (vm['vmid'], vm['name'], vm['status'])
for example next lines do the same job:
proxmox.nodes(node['node']).openvz.get() proxmox.nodes(node['node']).get('openvz') proxmox.get('nodes/%s/openvz' % node['node']) proxmox.get('nodes', node['node'], 'openvz')
Some more examples:
for vm in proxmox.cluster.resources.get(type='vm'): print("{0}. {1} => {2}" .format(vm['vmid'], vm['name'], vm['status']))
node = proxmox.nodes('proxmox_node') pprint(node.storage('local').content.get())
or the with same results
node = proxmox.nodes.proxmox_node() pprint(node.storage.local.content.get())
Example of creation of openvz container:
node = proxmox.nodes('proxmox_node') node.openvz.create(vmid=202, ostemplate='local:vztmpl/debian-6-turnkey-core_12.0-1_i386.tar.gz', hostname='turnkey', storage='local', memory=512, swap=512, cpus=1, disk=4, password='secret', ip_address='10.0.0.202')
Example of template upload:
local_storage = proxmox.nodes('proxmox_node').storage('local') local_storage.upload.create(content='vztmpl', filename=open(os.path.expanduser('~/templates/debian-6-my-core_1.0-1_i386.tar.gz'))))
Example of rrd download:
response = proxmox.nodes('proxmox').rrd.get(ds='cpu', timeframe='hour') with open('cpu.png', 'wb') as f: f.write(response['image'].encode('raw_unicode_escape'))
Example of usage of logging:
# now logging debug info will be written to stdout logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s:%(name)s: %(message)s')
Roadmap
write tests
support other actual python versions
add optional validation of requests
add some shortcuts for convenience
History
0.2.5 (2017-02-12)
Adding sudo to execute CLI with paramiko ssh backend (Jason Meridth <https://github.com/jmeridth>)
Proxmoxer/backends/ssh_paramiko: improve file upload (Jérôme Schneider <https://github.com/merinos>)
0.2.4 (2016-05-02)
Removed newline in tmp_filename string (Jérôme Schneider <https://github.com/merinos>)
Fix to avoid module reloading (jklang <https://github.com/jklang>)
0.2.3 (2016-01-20)
Minor typo fix (Srinivas Sakhamuri)
0.2.2 (2016-01-19)
Adding sudo to execute pvesh CLI in openssh backend (Wei Tie, Srinivas Sakhamuri)
Add support to specify an identity file for ssh connections (Srinivas Sakhamuri)
0.2.1 (2015-05-02)
fix for python 3.4 (kokuev)
0.2.0 (2015-03-21)
0.1.7 (2014-11-16)
Added ignore of “InsecureRequestWarning: Unverified HTTPS request is being made…” warning while using https (requests) backend.
0.1.4 (2013-06-01)
Added logging
Added openssh backend
Tests are reorganized
0.1.3 (2013-05-30)
Added next tests
Bugfixes
0.1.2 (2013-05-27)
Added first tests
Added support for travis and coveralls
Bugfixes
0.1.1 (2013-05-13)
Initial try.
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
File details
Details for the file proxmoxer-0.2.5.tar.gz
.
File metadata
- Download URL: proxmoxer-0.2.5.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95fbe1e37ae779227b11bf15480dbb05208167f87df7997795fbe599a0cff21f |
|
MD5 | b15edc4820338009ab4b19a7ed4783f7 |
|
BLAKE2b-256 | 422906fe668c8891a87035b85c27d85b3101f03d46132c4ff029859a2fe318e8 |