mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
69 lines
1.7 KiB
Ruby
69 lines
1.7 KiB
Ruby
![]() |
require 'opennebula'
|
||
|
require 'fog/compute'
|
||
|
|
||
|
|
||
|
module Fog
|
||
|
module Compute
|
||
|
class OpenNebula < Fog::Service
|
||
|
requires :opennebula_endpoint
|
||
|
recognizes :opennebula_username, :opennebula_password
|
||
|
|
||
|
model_path 'fog/opennebula/models/compute'
|
||
|
model :server
|
||
|
collection :servers
|
||
|
model :network
|
||
|
collection :networks
|
||
|
model :flavor
|
||
|
collection :flavors
|
||
|
model :interface
|
||
|
collection :interfaces
|
||
|
# model :volume
|
||
|
# collection :volumes
|
||
|
# model :pool
|
||
|
# collection :pools
|
||
|
# model :node
|
||
|
# collection :nodes
|
||
|
#
|
||
|
request_path 'fog/opennebula/requests/compute'
|
||
|
request :list_vms
|
||
|
request :vm_allocate
|
||
|
request :vm_destroy
|
||
|
request :get_vnc_console
|
||
|
request :vm_resume
|
||
|
request :vm_stop
|
||
|
request :template_pool
|
||
|
#request :define_domain
|
||
|
# request :vm_action
|
||
|
# request :list_pools
|
||
|
# request :list_pool_volumes
|
||
|
# request :define_pool
|
||
|
# request :pool_action
|
||
|
# request :list_volumes
|
||
|
# request :volume_action
|
||
|
# request :create_volume
|
||
|
request :list_networks
|
||
|
# request :destroy_network
|
||
|
# request :list_interfaces
|
||
|
# request :destroy_interface
|
||
|
# request :get_node_info
|
||
|
# request :update_display
|
||
|
|
||
|
class Mock
|
||
|
include Collections
|
||
|
end
|
||
|
|
||
|
class Real
|
||
|
include Collections
|
||
|
|
||
|
def client
|
||
|
return @client if defined?(@client)
|
||
|
end
|
||
|
|
||
|
def initialize(options={})
|
||
|
@client = ::OpenNebula::Client.new("#{options[:opennebula_username]}:#{options[:opennebula_password]}", options[:opennebula_endpoint])
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|