opennebula-cli 5.2.1 → 5.3.80.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,7 +44,7 @@ private
44
44
  def self.resource_mask(str)
45
45
  resource_type=str.split("/")[0]
46
46
 
47
- mask = "----------------"
47
+ mask = "-----------------"
48
48
 
49
49
  resource_type.split("+").each{|type|
50
50
  case type
@@ -80,6 +80,8 @@ private
80
80
  mask[14] = "M"
81
81
  when "MARKETPLACEAPP"
82
82
  mask[15] = "A"
83
+ when "VMGROUP"
84
+ mask[16] = "P"
83
85
  end
84
86
  }
85
87
  mask
@@ -119,8 +121,8 @@ private
119
121
  d['STRING'].split(" ")[0]
120
122
  end
121
123
 
122
- column :RES_VHNIUTGDCOZSvRMA, "Resource to which the rule applies",
123
- :size => 20 do |d|
124
+ column :RES_VHNIUTGDCOZSvRMAP, "Resource to which the rule applies",
125
+ :size => 21 do |d|
124
126
  OneAclHelper::resource_mask d['STRING'].split(" ")[1]
125
127
  end
126
128
 
@@ -137,7 +139,7 @@ private
137
139
  OneAclHelper::right_mask d['STRING'].split(" ")[2]
138
140
  end
139
141
 
140
- default :ID, :USER, :RES_VHNIUTGDCOZSvRMA, :RID, :OPE_UMAC, :ZONE
142
+ default :ID, :USER, :RES_VHNIUTGDCOZSvRMAP, :RID, :OPE_UMAC, :ZONE
141
143
  end
142
144
 
143
145
  table
@@ -382,14 +382,19 @@ class OneHostHelper < OpenNebulaHelper::OneHelper
382
382
  puts
383
383
 
384
384
  CLIHelper.print_header(str_h1 % "HOST SHARES", false)
385
-
386
- puts str % ["TOTAL MEM", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/MAX_MEM'].to_i, {})]
387
- puts str % ["USED MEM (REAL)", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/USED_MEM'].to_i, {})]
388
- puts str % ["USED MEM (ALLOCATED)", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/MEM_USAGE'].to_i, {})]
389
- puts str % ["TOTAL CPU", host['HOST_SHARE/MAX_CPU']]
390
- puts str % ["USED CPU (REAL)", host['HOST_SHARE/USED_CPU']]
391
- puts str % ["USED CPU (ALLOCATED)", host['HOST_SHARE/CPU_USAGE']]
392
385
  puts str % ["RUNNING VMS", host['HOST_SHARE/RUNNING_VMS']]
386
+
387
+ CLIHelper.print_header(str_h1 % "MEMORY", false)
388
+ puts str % [" TOTAL", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/TOTAL_MEM'].to_i, {})]
389
+ puts str % [" TOTAL +/- RESERVED", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/MAX_MEM'].to_i, {})]
390
+ puts str % [" USED (REAL)", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/USED_MEM'].to_i, {})]
391
+ puts str % [" USED (ALLOCATED)", OpenNebulaHelper.unit_to_str(host['HOST_SHARE/MEM_USAGE'].to_i, {})]
392
+
393
+ CLIHelper.print_header(str_h1 % "CPU", false)
394
+ puts str % [" TOTAL", host['HOST_SHARE/TOTAL_CPU']]
395
+ puts str % [" TOTAL +/- RESERVED", host['HOST_SHARE/MAX_CPU']]
396
+ puts str % [" USED (REAL)", host['HOST_SHARE/USED_CPU']]
397
+ puts str % [" USED (ALLOCATED)", host['HOST_SHARE/CPU_USAGE']]
393
398
  puts
394
399
 
395
400
  datastores = host.to_hash['HOST']['HOST_SHARE']['DATASTORES']['DS']
@@ -103,14 +103,22 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
103
103
  :name => "disk_type",
104
104
  :large => "--disk_type disk_type",
105
105
  :description => "Type of the image \n"<<
106
- " "*31<<"for KVM: BLOCK, CDROM, RBD or FILE \n"<<
107
- " "*31<<"for vCenter: THIN, TICHK, ZEOREDTHICK " <<
106
+ " " * 31 << "BLOCK, CDROM, RBD or FILE \n" <<
108
107
  "(for others, check the documentation) ",
109
108
  :format => String
110
109
  },
111
110
  {
112
- :name => "adapter_type",
113
- :large => "--adapter_type adapter_type",
111
+ :name => "vcenter_disk_type",
112
+ :large => "--vcenter_disk_type vcenter_disk_type",
113
+ :description => "The vCenter Disk Type of the image \n"<<
114
+ " " * 31 <<
115
+ "for vCenter: THIN, THICK, ZEROEDTHICK " <<
116
+ "(for others, check the documentation) ",
117
+ :format => String
118
+ },
119
+ {
120
+ :name => "vcenter_adapter_type",
121
+ :large => "--vcenter_adapter_type vcenter_adapter_type",
114
122
  :description => "Controller that will handle this image in " <<
115
123
  "vCenter (lsiLogic, ide, busLogic). For other "<<
116
124
  "values check the documentation",
@@ -358,16 +366,16 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
358
366
  end
359
367
 
360
368
  def self.create_image_variables(options, name)
361
- if Array===name
362
- names=name
369
+ if Array === name
370
+ names = name
363
371
  else
364
- names=[name]
372
+ names = [name]
365
373
  end
366
374
 
367
- t=''
375
+ t = ''
368
376
  names.each do |n|
369
377
  if options[n]
370
- t<<"#{n.to_s.upcase}=\"#{options[n]}\"\n"
378
+ t << "#{n.to_s.upcase}=\"#{options[n]}\"\n"
371
379
  end
372
380
  end
373
381
 
@@ -375,16 +383,21 @@ class OneImageHelper < OpenNebulaHelper::OneHelper
375
383
  end
376
384
 
377
385
  def self.create_image_template(options)
378
- template_options=TEMPLATE_OPTIONS.map do |o|
386
+ template_options = TEMPLATE_OPTIONS.map do |o|
379
387
  o[:name].to_sym
380
388
  end
381
389
 
382
- template=create_image_variables(
383
- options, template_options-[:persistent, :dry, :prefix])
390
+ template = create_image_variables(
391
+ options,
392
+ template_options - [:persistent, :dry, :prefix ]
393
+ )
394
+
395
+ if options[:persistent]
396
+ template << "PERSISTENT=YES\n"
397
+ end
384
398
 
385
- template<<"PERSISTENT=YES\n" if options[:persistent]
386
399
  if options[:prefix]
387
- template<<"DEV_PREFIX=\"#{options[:prefix]}\"\n"
400
+ template << "DEV_PREFIX=\"#{options[:prefix]}\"\n"
388
401
  end
389
402
 
390
403
  [0, template]
@@ -153,6 +153,10 @@ class OneSecurityGroupHelper < OpenNebulaHelper::OneHelper
153
153
  d["ICMP_TYPE"]
154
154
  end
155
155
 
156
+ column :ICMVP6_TYPE, "", :left, :size=>11 do |d|
157
+ d["ICMPV6_TYPE"]
158
+ end
159
+
156
160
  column :NETWORK, "", :left, :donottruncate, :size=>35 do |d|
157
161
  network = ""
158
162
  if(!d["NETWORK_ID"].nil? && d["NETWORK_ID"] != "")
@@ -169,7 +169,7 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
169
169
  end
170
170
 
171
171
  vm_nics.each do |nic|
172
- ["IP", "IP6_GLOBAL", "IP6_ULA",
172
+ ["IP", "IP6_GLOBAL", "IP6_ULA", "IP6",
173
173
  "VROUTER_IP", "VROUTER_IP6_GLOBAL", "VROUTER_IP6_ULA"].each do |attr|
174
174
  if nic.has_key?(attr)
175
175
  ips.push(nic[attr])
@@ -752,7 +752,7 @@ in the frontend machine.
752
752
 
753
753
  next if nic.has_key?("CLI_DONE")
754
754
 
755
- ["IP6_LINK", "IP6_ULA", "IP6_GLOBAL"].each do |attr|
755
+ ["IP6_LINK", "IP6_ULA", "IP6_GLOBAL", "IP6"].each do |attr|
756
756
  if nic.has_key?(attr)
757
757
  shown_ips << nic[attr]
758
758
 
@@ -1015,16 +1015,29 @@ in the frontend machine.
1015
1015
  d["SEQ"]
1016
1016
  end
1017
1017
 
1018
- column :HOST, "Host name of the VM container", :left, :size=>15 do |d|
1019
- d["HOSTNAME"]
1018
+ column :UID, "UID of the user that performed the action",
1019
+ :left, :size=>4 do |d|
1020
+ if d["UID"] != "-1"
1021
+ d["UID"]
1022
+ else
1023
+ "-"
1024
+ end
1020
1025
  end
1021
1026
 
1022
- column :"ACTION", "VM state change action", :left, :size=>16 do |d|
1023
- VirtualMachine.get_history_action d["ACTION"]
1027
+ column :REQ, "Request ID of the action", :left, :size=>5 do |d|
1028
+ if d["REQUEST_ID"] != "-1"
1029
+ d["REQUEST_ID"]
1030
+ else
1031
+ "-"
1032
+ end
1024
1033
  end
1025
1034
 
1026
- column :REASON, "VM state change reason", :left, :size=>4 do |d|
1027
- VirtualMachine.get_reason d["REASON"]
1035
+ column :HOST, "Host name of the VM container", :left, :size=>12 do |d|
1036
+ d["HOSTNAME"]
1037
+ end
1038
+
1039
+ column :"ACTION", "VM state change action", :left, :size=>10 do |d|
1040
+ VirtualMachine.get_history_action d["ACTION"]
1028
1041
  end
1029
1042
 
1030
1043
  column :DS, "System Datastore", :size=>4 do |d|
@@ -1053,7 +1066,7 @@ in the frontend machine.
1053
1066
  OpenNebulaHelper.short_period_to_str(dtime)
1054
1067
  end
1055
1068
 
1056
- default :SEQ, :HOST, :ACTION, :DS, :START, :TIME, :PROLOG
1069
+ default :SEQ, :UID, :REQ, :HOST, :ACTION, :DS, :START, :TIME, :PROLOG
1057
1070
  end
1058
1071
 
1059
1072
  vm_hash=vm.to_hash
@@ -0,0 +1,170 @@
1
+ # -------------------------------------------------------------------------- #
2
+ # Copyright 2002-2017, OpenNebula Project, OpenNebula Systems #
3
+ # #
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
+ # not use this file except in compliance with the License. You may obtain #
6
+ # a copy of the License at #
7
+ # #
8
+ # http://www.apache.org/licenses/LICENSE-2.0 #
9
+ # #
10
+ # Unless required by applicable law or agreed to in writing, software #
11
+ # distributed under the License is distributed on an "AS IS" BASIS, #
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
+ # See the License for the specific language governing permissions and #
14
+ # limitations under the License. #
15
+ #--------------------------------------------------------------------------- #
16
+
17
+ require 'one_helper'
18
+
19
+ class OneVMGroupHelper < OpenNebulaHelper::OneHelper
20
+ def self.rname
21
+ "VM_GROUP"
22
+ end
23
+
24
+ def self.conf_file
25
+ "onevmgroup.yaml"
26
+ end
27
+
28
+ def format_pool(options)
29
+ config_file = self.class.table_conf
30
+
31
+ table = CLIHelper::ShowTable.new(config_file, self) do
32
+ column :ID, "ONE identifier for the VM Group", :size=>4 do |d|
33
+ d["ID"]
34
+ end
35
+
36
+ column :NAME, "Name of the VM Group", :left, :size=>15 do |d|
37
+ d["NAME"]
38
+ end
39
+
40
+ column :USER, "Username of the VM Group owner", :left,
41
+ :size=>8 do |d|
42
+ helper.user_name(d, options)
43
+ end
44
+
45
+ column :GROUP, "Group of the VM Group", :left, :size=>8 do |d|
46
+ helper.group_name(d, options)
47
+ end
48
+
49
+ column :VMS, "Number of VMs in the VM Group", :left, :size=>4 do |d|
50
+ vms = 0
51
+
52
+ if !d["ROLES"]["ROLE"].nil?
53
+ roles = [d["ROLES"]["ROLE"]].flatten
54
+ roles.each { |r|
55
+ vms += r["VMS"].split(',').size if !r["VMS"].nil?
56
+ }
57
+ end
58
+
59
+ vms
60
+ end
61
+
62
+ column :ROLES, "Roles in the VM Group", :left, :size=>36 do |d|
63
+ roles = [d["ROLES"]["ROLE"]].flatten
64
+ roles_names = ""
65
+
66
+ if !roles.nil?
67
+ rnames = roles.collect { |i| i["NAME"] }
68
+ roles_names = rnames.join(", ") if !rnames.empty?
69
+ end
70
+
71
+ roles_names
72
+ end
73
+
74
+ default :ID, :USER, :GROUP, :NAME, :VMS, :ROLES
75
+ end
76
+
77
+ table
78
+ end
79
+
80
+ private
81
+
82
+ def factory(id=nil)
83
+ if id
84
+ OpenNebula::VMGroup.new_with_id(id, @client)
85
+ else
86
+ xml=OpenNebula::VMGroup.build_xml
87
+ OpenNebula::VMGroup.new(xml, @client)
88
+ end
89
+ end
90
+
91
+ def factory_pool(user_flag=-2)
92
+ OpenNebula::VMGroupPool.new(@client, user_flag)
93
+ end
94
+
95
+ def format_resource(vmgroup, options = {})
96
+ str="%-15s: %-20s"
97
+ str_h1="%-80s"
98
+
99
+ CLIHelper.print_header(
100
+ str_h1 % "VM GROUP #{vmgroup['ID']} INFORMATION")
101
+ puts str % ["ID", vmgroup.id.to_s]
102
+ puts str % ["NAME", vmgroup.name]
103
+ puts str % ["USER", vmgroup['UNAME']]
104
+ puts str % ["GROUP", vmgroup['GNAME']]
105
+
106
+ CLIHelper.print_header(str_h1 % "PERMISSIONS",false)
107
+
108
+ puts
109
+
110
+ ["OWNER", "GROUP", "OTHER"].each { |e|
111
+ mask = "---"
112
+ mask[0] = "u" if vmgroup["PERMISSIONS/#{e}_U"] == "1"
113
+ mask[1] = "m" if vmgroup["PERMISSIONS/#{e}_M"] == "1"
114
+ mask[2] = "a" if vmgroup["PERMISSIONS/#{e}_A"] == "1"
115
+
116
+ puts str % [e, mask]
117
+ }
118
+
119
+ puts
120
+
121
+ CLIHelper.print_header(str_h1 % "ROLES", false)
122
+
123
+ if !vmgroup.to_hash['VM_GROUP']['ROLES']['ROLE'].nil?
124
+ roles = [vmgroup.to_hash['VM_GROUP']['ROLES']['ROLE']].flatten
125
+ end
126
+
127
+ CLIHelper::ShowTable.new(nil, self) do
128
+ column :ID, "", :left, :size=>4 do |d|
129
+ d["ID"]
130
+ end
131
+
132
+ column :NAME, "", :left, :size=>8 do |d|
133
+ d["NAME"]
134
+ end
135
+
136
+ column :POLICY, "", :left, :size=>12 do |d|
137
+ if d["POLICY"].nil?
138
+ '-'
139
+ else
140
+ d["POLICY"]
141
+ end
142
+ end
143
+
144
+ column :AFFINED_HOSTS, "", :left, :size=>18 do |d|
145
+ if d["HOST_AFFINED"].nil?
146
+ '-'
147
+ else
148
+ d["HOST_AFFINED"]
149
+ end
150
+ end
151
+
152
+ column :ANTI_AFFINED_HOST, "", :left, :size=>18 do |d|
153
+ if d["HOST_ANTI_AFFINED"].nil?
154
+ '-'
155
+ else
156
+ d["HOST_ANTI_AFFINED"]
157
+ end
158
+ end
159
+
160
+ column :VIRTUAL_MACHINES, "", :left, :size=>20 do |d|
161
+ d["VMS"]
162
+ end
163
+ end.show(roles, {})
164
+
165
+ puts
166
+
167
+ CLIHelper.print_header(str_h1 % "TEMPLATE CONTENTS",false)
168
+ puts vmgroup.template_str
169
+ end
170
+ end
@@ -48,6 +48,14 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
48
48
  :description => "First IP address in . notation"
49
49
  }
50
50
 
51
+ IP6 = {
52
+ :name => "ip6",
53
+ :short => "-6 ip6",
54
+ :large => "--ip6 ip6",
55
+ :format => String,
56
+ :description => "First IPv6 address, in CIDR notation e.g. 2001::1/48"
57
+ }
58
+
51
59
  SIZE = {
52
60
  :name => "size",
53
61
  :short => "-s size",
@@ -117,7 +125,8 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
117
125
  ]
118
126
 
119
127
  ADDAR_OPTIONS = [
120
- SIZE, MAC, IP, IP6_GLOBAL, IP6_ULA, GATEWAY, NETMASK, VN_MAD, VLAN_ID ]
128
+ SIZE, MAC, IP, IP6, IP6_GLOBAL, IP6_ULA, GATEWAY, NETMASK, VN_MAD,
129
+ VLAN_ID ]
121
130
 
122
131
  def self.rname
123
132
  "VNET"
@@ -274,6 +283,10 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
274
283
  puts format % ["IP6_ULA", ar["IP6_ULA"], ar["IP6_ULA_END"]]
275
284
  end
276
285
 
286
+ if !ar["IP6"].nil?
287
+ puts format % ["IP6", ar["IP6"], ar["IP6_END"]]
288
+ end
289
+
277
290
  puts
278
291
  end
279
292
 
@@ -325,8 +338,8 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper
325
338
  d["IP"]||"-"
326
339
  end
327
340
 
328
- column :IP6_GLOBAL, "", :donottruncate, :size=>26 do |d|
329
- d["IP6_GLOBAL"]||"-"
341
+ column :IP6, "", :donottruncate, :size=>26 do |d|
342
+ d["IP6"]||d["IP6_GLOBAL"]||"-"
330
343
  end
331
344
  end.show(leases, {})
332
345
 
@@ -18,6 +18,22 @@ require 'one_helper'
18
18
 
19
19
  class OneZoneHelper < OpenNebulaHelper::OneHelper
20
20
 
21
+ SERVER_NAME={
22
+ :name => "server_name",
23
+ :short => "-n server_name",
24
+ :large => "--name",
25
+ :format => String,
26
+ :description => "Zone server name"
27
+ }
28
+
29
+ SERVER_ENDPOINT={
30
+ :name => "server_rpc",
31
+ :short => "-r rpc endpoint",
32
+ :large => "--rpc",
33
+ :format => String,
34
+ :description => "Zone server RPC endpoint"
35
+ }
36
+
21
37
  def self.rname
22
38
  "ZONE"
23
39
  end
@@ -98,6 +114,86 @@ class OneZoneHelper < OpenNebulaHelper::OneHelper
98
114
  puts str % ["NAME", zone.name]
99
115
  puts
100
116
 
117
+ zone_hash=zone.to_hash
118
+
119
+ if zone.has_elements?("/ZONE/SERVER_POOL/SERVER")
120
+ servers = zone_hash["ZONE"]["SERVER_POOL"]["SERVER"]
121
+
122
+ [servers].flatten.each { |s|
123
+ endpoint = s["ENDPOINT"]
124
+
125
+ next if endpoint.nil?
126
+
127
+ client = OpenNebula::Client.new(nil, endpoint)
128
+
129
+ xml_doc = client.call("zone.raftstatus")
130
+
131
+ if OpenNebula::is_error?(xml_doc)
132
+ s["STATE"] = "error"
133
+ s["TERM"] = "-"
134
+ s["VOTEDFOR"] = "-"
135
+ s["COMMIT" ] = "-"
136
+ s["LOG_INDEX"] = "-"
137
+
138
+ next
139
+ end
140
+
141
+ xml_doc = Nokogiri::XML(xml_doc)
142
+
143
+ s["STATE"] = case xml_doc.root.at_xpath("STATE").text
144
+ when "0" then "solo"
145
+ when "1" then "candidate"
146
+ when "2" then "follower"
147
+ when "3" then "leader"
148
+ else "-"
149
+ end
150
+ s["TERM"] = xml_doc.root.at_xpath("TERM").text
151
+ s["VOTEDFOR"] = xml_doc.root.at_xpath("VOTEDFOR").text
152
+ s["COMMIT"] = xml_doc.root.at_xpath("COMMIT").text
153
+ s["LOG_INDEX"] = xml_doc.root.at_xpath("LOG_INDEX").text
154
+ }
155
+
156
+ puts
157
+ CLIHelper.print_header(str_h1 % "SERVERS",false)
158
+
159
+ CLIHelper::ShowTable.new(nil, self) do
160
+
161
+ column :"ID", "", :size=>2 do |d|
162
+ d["ID"] if !d.nil?
163
+ end
164
+
165
+ column :"NAME", "", :left, :size=>15 do |d|
166
+ d["NAME"] if !d.nil?
167
+ end
168
+
169
+ column :"STATE", "", :left, :size=>10 do |d|
170
+ d["STATE"] if !d.nil?
171
+ end
172
+
173
+ column :"TERM", "", :left, :size=>10 do |d|
174
+ d["TERM"] if !d.nil?
175
+ end
176
+
177
+ column :"INDEX", "", :left, :size=>10 do |d|
178
+ d["LOG_INDEX"] if !d.nil?
179
+ end
180
+
181
+ column :"COMMIT", "", :left, :size=>10 do |d|
182
+ d["COMMIT"] if !d.nil?
183
+ end
184
+
185
+ column :"VOTE", "", :left, :size=>5 do |d|
186
+ d["VOTEDFOR"] if !d.nil?
187
+ end
188
+
189
+ column :"ENDPOINT", "", :left, :size=>18 do |d|
190
+ d["ENDPOINT"] if !d.nil?
191
+ end
192
+ end.show([zone_hash['ZONE']['SERVER_POOL']['SERVER']].flatten, {})
193
+ end
194
+
195
+ puts
196
+
101
197
  CLIHelper.print_header(str_h1 % "ZONE TEMPLATE", false)
102
198
  puts zone.template_str
103
199
  end