Ruby OpenNebula Cloud API 3.6
This page contains the OpenNebula Cloud API Specification for Ruby. It has been designed as a wrapper for the XML-RPC methods, with some basic helpers. This means that you should be familiar with the XML-RPC API and the XML formats returned by the OpenNebula core. As stated in the XML-RPC documentation, you can download the XML Schemas (XSD) here.
You can consult the doc online.
You can use the Ruby OCA included in the OpenNebula distribution by adding the OpenNebula Ruby library path to the search path:
############################################################################## # Environment Configuration ############################################################################## ONE_LOCATION=ENV["ONE_LOCATION"] if !ONE_LOCATION RUBY_LIB_LOCATION="/usr/lib/one/ruby" else RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" end $: << RUBY_LIB_LOCATION ############################################################################## # Required libraries ############################################################################## require 'OpenNebula'
This is a small code snippet. As you can see, the code flow would be as follows:
myVNet.delete();
. In this example all the VirtualMachines will be shut down.#!/usr/bin/env ruby ############################################################################## # Environment Configuration ############################################################################## ONE_LOCATION=ENV["ONE_LOCATION"] if !ONE_LOCATION RUBY_LIB_LOCATION="/usr/lib/one/ruby" else RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" end $: << RUBY_LIB_LOCATION ############################################################################## # Required libraries ############################################################################## require 'OpenNebula' include OpenNebula # OpenNebula credentials CREDENTIALS = "oneuser:onepass" # XML_RPC endpoint where OpenNebula is listening ENDPOINT = "http://localhost:2633/RPC2" client = Client.new(CREDENTIALS, ENDPOINT) vm_pool = VirtualMachinePool.new(client, -1) rc = vm_pool.info if OpenNebula.is_error?(rc) puts rc.message exit -1 end vm_pool.each do |vm| rc = vm.shutdown if OpenNebula.is_error?(rc) puts "Virtual Machine #{vm.id}: #{rc.message}" else puts "Virtual Machine #{vm.id}: Shutting down" end end exit 0
#!/usr/bin/env ruby ############################################################################## # Environment Configuration ############################################################################## ONE_LOCATION=ENV["ONE_LOCATION"] if !ONE_LOCATION RUBY_LIB_LOCATION="/usr/lib/one/ruby" else RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" end $: << RUBY_LIB_LOCATION ############################################################################## # Required libraries ############################################################################## require 'OpenNebula' include OpenNebula # OpenNebula credentials CREDENTIALS = "oneuser:onepass" # XML_RPC endpoint where OpenNebula is listening ENDPOINT = "http://localhost:2633/RPC2" client = Client.new(CREDENTIALS, ENDPOINT) template = <<-EOT NAME = "Red LAN" TYPE = RANGED # Now we'll use the host private network (physical) BRIDGE = vbr0 NETWORK_SIZE = C NETWORK_ADDRESS = 192.168.0.0 # Custom Attributes to be used in Context GATEWAY = 192.168.0.1 DNS = 192.168.0.1 LOAD_BALANCER = 192.168.0.3 EOT xml = OpenNebula::VirtualNetwork.build_xml vn = OpenNebula::VirtualNetwork.new(xml, @client) rc = vn.allocate(template) if OpenNebula.is_error?(rc) exit -1, rc.message else puts "ID: #{vn.id.to_s}" end puts "Before info:" puts vn.to_xml puts vn.info puts "After info:" puts vn.to_xml