2.7 KiB
2.7 KiB
xen-api 
Connector to the Xen API
Tested with:
- XenServer 7.3
- XenServer 7.2
- XenServer 7.1
- XenServer 7
- XenServer 6.5
- XenServer 6.2
- XenServer 5.6
Install
Installation of the npm package:
> npm install --save xen-api
Usage
Library
const { createClient } = require('xen-api')
const xapi = createClient({
url: 'https://xen1.company.net',
allowUnauthorized: false,
auth: {
user: 'root',
password: 'important secret password'
},
readOnly: false
})
Options:
url: address of a host in the pool we are trying to connect toallowUnauthorized: whether to accept self-signed certificatesauth: credentials used to sign in (can also be specified in the URL)readOnly = false: if true, no methods with side-effects can be called
// Force connection.
xapi.connect().catch(error => {
console.error(error)
})
// Watch objects.
xapi.objects.on('add', objects => {
console.log('new objects:', objects)
})
Note: all objects are frozen and cannot be altered!
Custom fields on objects (hidden − ie. non enumerable):
$type: the type of the object (VM,task, …);$ref: the (opaque) reference of the object;$id: the identifier of this object (its UUID if any, otherwise its reference);$pool: the pool object this object belongs to.
Furthermore, any field containing a reference (or references if an
array) can be resolved by prepending the field name with a $:
console.log(xapi.pool.$master.$resident_VMs[0].name_label)
// vm1
CLI
A CLI is provided to help exploration and discovery of the XAPI.
> xen-api https://xen1.company.net root
Password: ******
root@xen1.company.net> xapi.status
'connected'
root@xen1.company.net> xapi.pool.master
'OpaqueRef:ec7c5147-8aee-990f-c70b-0de916a8e993'
root@xen1.company.net> xapi.pool.$master.name_label
'xen1'
To ease searches, find() and findAll() functions are available:
root@xen1.company.net> findAll({ $type: 'vm' }).length
183
Development
# Install dependencies
> npm install
# Run the tests
> npm test
# Continuously compile
> npm run dev
# Continuously run the tests
> npm run dev-test
# Build for production (automatically called by npm install)
> npm run build
Contributions
Contributions are very welcomed, either on the documentation or on the code.
You may:
- report any issue you've encountered;
- fork and create a pull request.
License
ISC © Julien Fontanet