mirror of
https://github.com/OpenNebula/one.git
synced 2025-04-01 06:50:25 +03:00
parent
f182365c80
commit
1a12129c8c
@ -299,9 +299,12 @@ module OneGate
|
||||
return state_str
|
||||
end
|
||||
|
||||
def self.print(json_hash)
|
||||
def self.print(json_hash, extended = false)
|
||||
OneGate.print_header("VM " + json_hash["VM"]["ID"])
|
||||
OneGate.print_key_value("NAME", json_hash["VM"]["NAME"])
|
||||
|
||||
return unless extended
|
||||
|
||||
OneGate.print_key_value(
|
||||
"STATE",
|
||||
self.state_to_str(
|
||||
@ -352,7 +355,7 @@ module OneGate
|
||||
return STATE_STR[state_number.to_i]
|
||||
end
|
||||
|
||||
def self.print(json_hash)
|
||||
def self.print(json_hash, extended = false)
|
||||
OneGate.print_header("SERVICE " + json_hash["SERVICE"]["id"])
|
||||
OneGate.print_key_value("NAME", json_hash["SERVICE"]["name"])
|
||||
OneGate.print_key_value("STATE", Service.state_str(json_hash["SERVICE"]['state']))
|
||||
@ -364,7 +367,7 @@ module OneGate
|
||||
|
||||
if role["nodes"]
|
||||
role["nodes"].each{ |node|
|
||||
OneGate::VirtualMachine.print(node["vm_info"])
|
||||
OneGate::VirtualMachine.print(node["vm_info"], extended)
|
||||
}
|
||||
end
|
||||
|
||||
@ -394,8 +397,9 @@ module OneGate
|
||||
end
|
||||
end
|
||||
|
||||
def get(path)
|
||||
def get(path, extra = nil)
|
||||
req = Net::HTTP::Proxy(@host, @port)::Get.new(path)
|
||||
req.body = extra if extra
|
||||
|
||||
do_request(req)
|
||||
end
|
||||
@ -512,7 +516,7 @@ Available commands
|
||||
$ onegate hold [VMID]
|
||||
$ onegate release [VMID]
|
||||
|
||||
$ onegate service show [--json]
|
||||
$ onegate service show [--json][--extended]
|
||||
|
||||
$ onegate service scale --role ROLE --cardinality CARDINALITY
|
||||
EOT
|
||||
@ -545,6 +549,10 @@ OptionParser.new do |opts|
|
||||
options[:json] = json
|
||||
end
|
||||
|
||||
opts.on("", "--extended", "Print resource extended information") do |ext|
|
||||
options[:extended] = ext
|
||||
end
|
||||
|
||||
opts.on("-f", "--hard", "Hard option for power off operations") do |hard|
|
||||
options[:hard] = hard
|
||||
end
|
||||
@ -640,13 +648,24 @@ when "vm"
|
||||
when "service"
|
||||
case ARGV[1]
|
||||
when "show"
|
||||
response = client.get("/service")
|
||||
if options[:extended]
|
||||
extra = {}
|
||||
extra['extended'] = true
|
||||
|
||||
extra = URI.encode_www_form(extra)
|
||||
end
|
||||
|
||||
response = client.get("/service", extra)
|
||||
json_hash = OneGate.parse_json(response)
|
||||
#pp json_hash
|
||||
if options[:json]
|
||||
puts JSON.pretty_generate(json_hash)
|
||||
else
|
||||
OneGate::Service.print(json_hash)
|
||||
if options[:extended]
|
||||
OneGate::Service.print(json_hash, true)
|
||||
else
|
||||
OneGate::Service.print(json_hash)
|
||||
end
|
||||
end
|
||||
when "scale"
|
||||
response = client.put(
|
||||
|
@ -298,12 +298,12 @@ helpers do
|
||||
# If true the service hash is returned
|
||||
# If false a halt is triggered
|
||||
#
|
||||
def check_vm_in_service(requested_vm_id, service_id, client)
|
||||
def check_vm_in_service(requested_vm_id, service_id, client, extended = false)
|
||||
service = get_service(service_id, client)
|
||||
|
||||
service_hash = JSON.parse(service)
|
||||
|
||||
response = build_service_hash(service_hash) rescue nil
|
||||
response = build_service_hash(service_hash, client, extended) rescue nil
|
||||
if response.nil?
|
||||
error_msg = "Service #{service_id} is empty."
|
||||
logger.error {error_msg}
|
||||
@ -426,7 +426,7 @@ def build_vm_hash(vm_hash)
|
||||
}
|
||||
end
|
||||
|
||||
def build_service_hash(service_hash)
|
||||
def build_service_hash(service_hash, client = nil, extended = false)
|
||||
roles = service_hash["DOCUMENT"]["TEMPLATE"]["BODY"]["roles"]
|
||||
|
||||
if roles.nil?
|
||||
@ -451,13 +451,18 @@ def build_service_hash(service_hash)
|
||||
if (nodes = role["nodes"])
|
||||
nodes.each do |vm|
|
||||
vm_deploy_id = vm["deploy_id"].to_i
|
||||
vm_info = vm["vm_info"]["VM"]
|
||||
vm_running = vm["running"]
|
||||
if extended
|
||||
vm_info = get_vm(vm_deploy_id, client).to_hash
|
||||
else
|
||||
vm_info = vm["vm_info"]
|
||||
end
|
||||
|
||||
vm_running = vm["running"]
|
||||
|
||||
role_info["nodes"] << {
|
||||
"deploy_id" => vm_deploy_id,
|
||||
"running" => vm["running"],
|
||||
"vm_info" => build_vm_hash(vm_info)
|
||||
"vm_info" => vm_info
|
||||
}
|
||||
end
|
||||
end
|
||||
@ -517,7 +522,7 @@ get '/service' do
|
||||
source_vm = get_source_vm(request.env, client)
|
||||
service_id = source_vm['USER_TEMPLATE/SERVICE_ID']
|
||||
|
||||
response = check_vm_in_service(source_vm['ID'], service_id, client)
|
||||
response = check_vm_in_service(source_vm['ID'], service_id, client, params['extended'])
|
||||
[200, response.to_json]
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user