Skip to content

EncoreTechnologies/stackstorm-open_nebula

Repository files navigation

stackstorm-open_nebula

StackStorm integration pack for Open Nebula

This pack integrates with Open Nebula and allows for the creation and management of objects.

More detailed information about the XML-RPC API endpoints, XML schema, and parameters can be found here: https://docs.opennebula.io/6.8/integration_and_development/system_interfaces/api.html

More details about the pyone wrapper can be found here: https://docs.opennebula.io/6.8/integration_and_development/system_interfaces/python.html

Connection Configuration

You will need to specify the details of the Open Nebula instance you will be connecting to within the /opt/stackstorm/config/open_nebula.yaml file.

Copy the example configuration in open_nebula.yaml.example to /opt/stackstorm/configs/open_nebula.yaml and edit as required.

If you only have a single Open Nebula environment then you can set it up as default, and you won't need to specify it when running actions, e.g.:

---
ssl_verify: true
open_nebula:
  default:
    host: "myone.local"
    port: 2633
    user: "oneadmin"
    passwd: "******"

You can also specify multiple environments using nested values. To choose which one to use simply pass the name into the ovirt parameter of any action:

---
ssl_verify:
open_nebula:
  dev:
    host:
    port:
    user:
    passwd:
  prod:
    host:
    port:
    user:
    passwd:

You can also include a default environment in a list as well and that will be used if nothing is passed in the action.

Note : When modifying the configuration in /opt/stackstorm/configs/ please remember to tell StackStorm to load these new values by running st2ctl reload --register-configs

Connection Options

The action_base.yaml file contains 2 methods to connect to the API. Both use the data from the config file above. pyone_session_create a python wrapper that's good for creating and updating objects More information: https://docs.opennebula.io/6.6/integration_and_development/system_interfaces/python.html xmlrpc_session_create an xmlrpc connection that's good for returning readable data More information on the XML-RPC API methods: https://docs.opennebula.io/6.6/integration_and_development/system_interfaces/api.html

Actions

Action Description
clusters_get Retrieves information for all the clusters in the pool or the given clusters if any IDs are passed
datastores_get Retrieves information for all or part of the datastores in the pool or the given datastores if any IDs are passed
hosts_get Retrieves information for all the hosts in the pool or the given hosts if any IDs are passed
images_get Retrieves information for all or part of the images in the pool or the given image if any IDs are passed
networks_get Retrieves information for all or part of the virtual networks in the pool or the given virtual networks if any IDs are passed
template_attribute_get Return the value of the given attribute from the template
template_attributes_update Update the dict of given attributes on the given template
template_clone Clones an existing virtual machine template
template_delete Deletes the given template from the pool
template_disks_get Return a list of disks on the given template
template_get_by_name Retrieves the given template by name on an Open Nebula system
template_instantiate Instantiates a new virtual machine from a given template ID
templates_get Retrieves information for all or part of the templates in the pool or the given templates if any IDs are passed
templates_get_with_label Retrieves a list of templates that have the given label
users_get Retrieves information for all the users in the pool or the given users if any IDs are passed
vm_action_submit Run the given onevm action on the given VM. Each onevm action that this can run also has it's own corresponding ST2 action in this pack
vm_attribute_get Return the value of the given attribute from the VM
vm_attributes_update Update the dict of given attributes on the given VM
vm_bestfit Determine the best host and datastore to provision a new VM to on a given cluster
vm_disk_add Adds a disk to a VM in Open Nebula
vm_get_by_name Retrieves the given VM by name on an Open Nebula system
vm_hold Sets the VM to hold state. The scheduler will not deploy VMs in the hold state
vm_labels_add Append one or more labels to the given VM
vm_labels_get Retrieves a list of labels on the given VM
vm_lock Locks a VM from having actions performed on it
vm_poweroff Gracefully powers off a running VM by sending the ACPI signal. It is similar to suspend but without saving the VM state
vm_reboot Gracefully reboots a running VM, sending the ACPI signal
vm_release Releases a VM from hold state, setting it to pending
vm_reschedule Sets the reschedule flag for the VM. The Scheduler will migrate the VM in the next monitorization cycle to a Host that better matches the requirements and rank restrictions
vm_resize Changes the capacity of CPU, VCPU, and/or MEMORY on the virtual machine
vm_resume Resumes the execution of VMs in the stopped, suspended, undeployed and poweroff states
vm_snapshot_create Create a snapshot of the given VM
vm_snapshot_delete_id Delete a snapshot from the given VM from the ID
vm_snapshots_delete_age Delete snapshots older than a given age
vm_snapshots_get Return a list of snapshots on the given VM
vm_stop Same as undeploy but also the VM state is saved to later resume it
vm_suspend The VM state is saved in the running Host. When a suspended VM is resumed, it is immediately deployed in the same Host by restoring its saved state
vm_terminate Gracefully shuts down and deletes a running VM, sending the ACPI signal
vm_undeploy Gracefully shuts down and deletes a running VM, sending the ACPI signal
vm_unlock Unocks a VM from a locked state
vm_unreschedule Clears the reschedule flag for the VM, canceling the rescheduling operation
vms_attribute_get Checks a list of vms for a given attribute
vms_get Retrieves information for all or part of the VMs in the pool or the given VMs if any IDs are passed
vms_get_ext Retrieves extended information for all or part of the VMs in the pool or the given VMs if any IDs are passed

Example Commands

Update custom attributes on a VM:
st2 run open_nebula.vm_attributes_update vm_id="5" attributes='{"ATTR1": "VALUE1", "LABELS": "ST2,test_label,Label2"}'

Update memory and CPU on a VM:
st2 run open_nebula.vm_resize vm_id="80" mem_mb="4096" vcpu_num="2"

Power off a VM:
st2 run open_nebula.vm_poweroff vm_id="80"
or:
st2 run open_nebula.vm_action_submit vm_id="221" vm_action="poweroff"

About

StackStorm integration pack for Open Nebula

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •