@ -29,7 +29,7 @@ require 'pp'
module CloudClient
module CloudClient
# OpenNebula version
# OpenNebula version
VERSION = '5.1 1.80 '
VERSION = '5.1 2.6 '
# #########################################################################
# #########################################################################
# Default location for the authentication file
# Default location for the authentication file
@ -220,6 +220,7 @@ module OneGate
DISK_RESIZE
DISK_RESIZE
DISK_RESIZE_POWEROFF
DISK_RESIZE_POWEROFF
DISK_RESIZE_UNDEPLOYED
DISK_RESIZE_UNDEPLOYED
HOTPLUG_NIC_POWEROFF
}
}
SHORT_VM_STATES = {
SHORT_VM_STATES = {
@ -300,7 +301,8 @@ module OneGate
" PROLOG_MIGRATE_UNKNOWN_FAILURE " = > " fail " ,
" PROLOG_MIGRATE_UNKNOWN_FAILURE " = > " fail " ,
" DISK_RESIZE " = > " drsz " ,
" DISK_RESIZE " = > " drsz " ,
" DISK_RESIZE_POWEROFF " = > " drsz " ,
" DISK_RESIZE_POWEROFF " = > " drsz " ,
" DISK_RESIZE_UNDEPLOYED " = > " drsz "
" DISK_RESIZE_UNDEPLOYED " = > " drsz " ,
" HOTPLUG_NIC_POWEROFF " = > " hotp "
}
}
def self . state_to_str ( id , lcm_id )
def self . state_to_str ( id , lcm_id )
@ -392,6 +394,35 @@ module OneGate
end
end
end
end
# Virtual Router module
module VirtualRouter
def self . print ( json_hash , _extended = false )
OneGate . print_header ( 'VROUTER ' + json_hash [ 'VROUTER' ] [ 'ID' ] )
OneGate . print_key_value ( 'NAME' , json_hash [ 'VROUTER' ] [ 'NAME' ] )
vms_ids = Array ( json_hash [ 'VROUTER' ] [ 'VMS' ] [ 'ID' ] )
vms = vms_ids . join ( ',' )
OneGate . print_key_value ( 'VMS' , vms )
puts
end
end
# Virtual Network module
module VirtualNetwork
def self . print ( json_hash , _extended = false )
OneGate . print_header ( 'VNET' )
OneGate . print_key_value ( 'ID' , json_hash [ 'VNET' ] [ 'ID' ] )
puts
end
end
class Client
class Client
def initialize ( opts = { } )
def initialize ( opts = { } )
@vmid = ENV [ " VMID " ]
@vmid = ENV [ " VMID " ]
@ -471,8 +502,8 @@ module OneGate
def self . parse_json ( response )
def self . parse_json ( response )
if CloudClient :: is_error? ( response )
if CloudClient :: is_error? ( response )
puts " ERROR: "
STDERR . puts 'ERROR: '
puts response . message
STDERR . puts response . message
exit - 1
exit - 1
else
else
return JSON . parse ( response . body )
return JSON . parse ( response . body )
@ -535,6 +566,10 @@ Available commands
$ onegate service show [ - - json ] [ - - extended ]
$ onegate service show [ - - json ] [ - - extended ]
$ onegate service scale - - role ROLE - - cardinality CARDINALITY
$ onegate service scale - - role ROLE - - cardinality CARDINALITY
$ onegate vrouter show [ - - json ]
$ onegate vnet show VNETID [ - - json ] [ - - extended ]
EOT
EOT
end
end
end
end
@ -574,7 +609,7 @@ OptionParser.new do |opts|
end
end
opts . on ( " -h " , " --help " , " Show this message " ) do
opts . on ( " -h " , " --help " , " Show this message " ) do
puts OneGate . help_str
STDERR . puts OneGate . help_str
exit
exit
end
end
end . parse!
end . parse!
@ -599,7 +634,7 @@ when "vm"
end
end
when " update "
when " update "
if ! options [ :data ] && ! options [ :erase ]
if ! options [ :data ] && ! options [ :erase ]
puts " You have to provide the data as a param (--data, --erase) "
STDERR . puts 'You have to provide the data as a param (--data, --erase)'
exit - 1
exit - 1
end
end
@ -616,8 +651,8 @@ when "vm"
end
end
if CloudClient :: is_error? ( response )
if CloudClient :: is_error? ( response )
puts " ERROR: "
STDERR . puts 'ERROR: '
puts response . message
STDERR . puts response . message
exit - 1
exit - 1
end
end
when " resume " ,
when " resume " ,
@ -647,18 +682,18 @@ when "vm"
response = client . post ( " /vms/ " + ARGV [ 2 ] + " /action " , action_hash . to_json )
response = client . post ( " /vms/ " + ARGV [ 2 ] + " /action " , action_hash . to_json )
if CloudClient :: is_error? ( response )
if CloudClient :: is_error? ( response )
puts " ERROR: "
STDERR . puts 'ERROR: '
puts response . message
STDERR . puts response . message
exit - 1
exit - 1
end
end
else
else
puts " You have to provide a VM ID "
STDERR . puts 'You have to provide a VM ID'
exit - 1
exit - 1
end
end
else
else
puts OneGate . help_str
STDERR . puts OneGate . help_str
puts
STDERR . puts
puts " Action #{ ARGV [ 1 ] } not supported "
STDERR . puts " Action #{ ARGV [ 1 ] } not supported "
exit - 1
exit - 1
end
end
when " service "
when " service "
@ -691,18 +726,79 @@ when "service"
} . to_json )
} . to_json )
if CloudClient :: is_error? ( response )
if CloudClient :: is_error? ( response )
puts " ERROR: "
STDERR . puts 'ERROR: '
puts response . message
STDERR . puts response . message
exit - 1
exit - 1
end
end
else
else
puts OneGate . help_str
STDERR . puts OneGate . help_str
puts
STDERR . puts
puts " Action #{ ARGV [ 1 ] } not supported "
STDERR . puts " Action #{ ARGV [ 1 ] } not supported "
exit - 1
exit - 1
end
end
when 'vrouter'
case ARGV [ 1 ]
when 'show'
if options [ :extended ]
extra = { }
extra [ 'extended' ] = true
extra = URI . encode_www_form ( extra )
end
response = client . get ( '/vrouter' , extra )
json_hash = OneGate . parse_json ( response )
if options [ :json ]
puts JSON . pretty_generate ( json_hash )
else
if options [ :extended ]
OneGate :: VirtualRouter . print ( json_hash , true )
else
OneGate :: VirtualRouter . print ( json_hash )
end
end
else
STDERR . puts OneGate . help_str
STDERR . puts
STDERR . puts " Action #{ ARGV [ 1 ] } not supported "
exit ( - 1 )
end
when 'vnet'
case ARGV [ 1 ]
when 'show'
if ARGV [ 2 ]
if options [ :extended ]
extra = { }
extra [ 'extended' ] = true
extra = URI . encode_www_form ( extra )
end
response = client . get ( '/vnet/' + ARGV [ 2 ] , extra )
json_hash = OneGate . parse_json ( response )
if options [ :json ]
puts JSON . pretty_generate ( json_hash )
else
if options [ :extended ]
OneGate :: VirtualNetwork . print ( json_hash , true )
else
OneGate :: VirtualNetwork . print ( json_hash )
end
end
else
STDERR . puts 'You have to provide a VNET ID'
exit - 1
end
else
STDERR . puts OneGate . help_str
STDERR . puts
STDERR . puts " Action #{ ARGV [ 1 ] } not supported "
exit ( - 1 )
end
else
else
puts OneGate . help_str
STDERR . puts OneGate . help_str
exit - 1
exit - 1
end
end