Test Coverage
# Getting started with OpenNebula (one) Fog provider

[OpenNebula]( provides ruby bindings to access the xml-rpc

The opennebula fog extensions provides examples for using Fog with OpenNebula (4.4).

**Note:** This provider is under construction! This means everything that is provided should work without problems, but there are many features not available yet. Please contribute!

## Requirements

For working with this provider the following pre-requisites are needed:

* Ruby version 1.8.x or 1.9.x
* `fog` gem
* Working OpenNebula instance with XML-RPC and credentials
* This version is tested with OpenNebula 4.4 and the opennebula gem dependency is hardcoded to this version. it should work with version 4.6, but is not tested.

## Examples

General proceeding:

* Connect to one-rpc
* create new vm object
* fetch a template/flavor from one (this template should be predefined)
* assigne the flavor/template to the vm
* change the attributes of this flavor/template (name, cpu, memory, nics....)
* save/instantiate the vm

require 'fog'

# connect to your one rpc
con =
      :provider => 'OpenNebula',
      :opennebula_username => 'user',
      :opennebula_password => 'password',
      :opennebula_endpoint => 'http://oned.domain:2633/RPC2'

# list all vms

# list all flavors (templates in OpenNebula slang)

# get flavor with id 4
con.flavors.get 4

# list all Virtual Networks
con.networks.get 2

# get all usergroups

# create a new vm (creates the object, the vm is not instantiated yet)
newvm =

# set the flavor of the vm
newvm.flavor = con.flavors.get 4

# set the name of the vm = "FooBarVM"

# set the groupid of the vm 
newvm.gid = 0

# set cores and memory (MB)
newvm.flavor.vcpu = 2
newvm.flavor.memory = 256

# create a new network interface attached to the network with id 1 and virtio as driver/model
network = client.networks.get(1)
nic ={ :vnet => network, :model => "virtio"})

# Attach the new nic to our vm
newvm.flavor.nic = [ nic ]

# instantiat the new vm

## Features


## not working yet

* con.groups.get 4

_AND_ everything not mentioned in features or examples ;)

## Troubleshooting

* ArgumentError: opennebula is not a recognized compute provider
  * is the correct gem version included?

## Additional Resources
* [Fog cloud library](
* [Fog documentation](
* [Fog Github repo](
* [Fog Release Notes](
* [Ruby OpenNebula Cloud API](
* [OpenNebula ruby bindings](

## Support and Feedback

Please contribute and send feedback! Just do it here!