opennebula-cli 5.2.1 → 5.3.80.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/onevm CHANGED
@@ -177,6 +177,10 @@ cmd=CommandParser::CmdParser.new(ARGV) do
177
177
  format_int(arg)
178
178
  end
179
179
 
180
+ set :format, :size, "Disk size in MiB" do |arg|
181
+ OpenNebulaHelper.size_in_mb(arg)
182
+ end
183
+
180
184
  ########################################################################
181
185
  # Commands
182
186
  ########################################################################
@@ -843,6 +847,29 @@ cmd=CommandParser::CmdParser.new(ARGV) do
843
847
  end
844
848
  end
845
849
 
850
+ disk_resize_desc = <<-EOT.unindent
851
+ Resizes a VM disk. The new size should be larger than the old one.
852
+
853
+ States: RUNNING, POWEROFF
854
+ EOT
855
+
856
+ command :"disk-resize", disk_resize_desc,
857
+ :vmid, :diskid, :size do
858
+ helper.perform_action(args[0],options,"disk resized") do |o|
859
+ o.info
860
+ size = o["/VM/TEMPLATE/DISK[DISK_ID='#{args[1]}']/SIZE"].to_i
861
+
862
+ new_size = args[2]
863
+
864
+ if size < new_size
865
+ o.disk_resize(args[1].to_i, args[2])
866
+ else
867
+ OpenNebula::Error.new("New size '#{new_size}' must be larger " \
868
+ "than current size '#{size}'")
869
+ end
870
+ end
871
+ end
872
+
846
873
  list_desc = <<-EOT.unindent
847
874
  Lists VMs in the pool
848
875
  EOT
data/bin/onevmgroup ADDED
@@ -0,0 +1,185 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # -------------------------------------------------------------------------- #
4
+ # Copyright 2002-2017, OpenNebula Project, OpenNebula Systems #
5
+ # #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may #
7
+ # not use this file except in compliance with the License. You may obtain #
8
+ # a copy of the License at #
9
+ # #
10
+ # http://www.apache.org/licenses/LICENSE-2.0 #
11
+ # #
12
+ # Unless required by applicable law or agreed to in writing, software #
13
+ # distributed under the License is distributed on an "AS IS" BASIS, #
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
15
+ # See the License for the specific language governing permissions and #
16
+ # limitations under the License. #
17
+ #--------------------------------------------------------------------------- #
18
+
19
+ ONE_LOCATION=ENV["ONE_LOCATION"]
20
+
21
+ if !ONE_LOCATION
22
+ RUBY_LIB_LOCATION="/usr/lib/one/ruby"
23
+ else
24
+ RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby"
25
+ end
26
+
27
+ $: << RUBY_LIB_LOCATION
28
+ $: << RUBY_LIB_LOCATION+"/cli"
29
+
30
+ require 'command_parser'
31
+ require 'one_helper/onevmgroup_helper'
32
+
33
+ cmd=CommandParser::CmdParser.new(ARGV) do
34
+ usage "`onevmgroup` <command> [<args>] [<options>]"
35
+ version OpenNebulaHelper::ONE_VERSION
36
+
37
+ helper = OneVMGroupHelper.new
38
+
39
+ before_proc do
40
+ helper.set_client(options)
41
+ end
42
+
43
+ ########################################################################
44
+ # Global Options
45
+ ########################################################################
46
+ set :option, CommandParser::OPTIONS+OpenNebulaHelper::CLIENT_OPTIONS
47
+
48
+ list_options = CLIHelper::OPTIONS
49
+ list_options << OpenNebulaHelper::XML
50
+ list_options << OpenNebulaHelper::NUMERIC
51
+ list_options << OpenNebulaHelper::DESCRIBE
52
+
53
+ ########################################################################
54
+ # Formatters for arguments
55
+ ########################################################################
56
+ set :format, :groupid, OpenNebulaHelper.rname_to_id_desc("GROUP") do |arg|
57
+ OpenNebulaHelper.rname_to_id(arg, "GROUP")
58
+ end
59
+
60
+ set :format, :userid, OpenNebulaHelper.rname_to_id_desc("USER") do |arg|
61
+ OpenNebulaHelper.rname_to_id(arg, "USER")
62
+ end
63
+
64
+ set :format, :vmgroupid, OneVMGroupHelper.to_id_desc do |arg|
65
+ helper.to_id(arg)
66
+ end
67
+
68
+ set :format, :vmgroupid_list, OneVMGroupHelper.list_to_id_desc do |arg|
69
+ helper.list_to_id(arg)
70
+ end
71
+
72
+ set :format, :filterflag, OneVMGroupHelper.filterflag_to_i_desc do |arg|
73
+ helper.filterflag_to_i(arg)
74
+ end
75
+
76
+ ########################################################################
77
+ # Commands
78
+ ########################################################################
79
+
80
+ create_desc = <<-EOT.unindent
81
+ Creates a new VM Group from the given description
82
+ EOT
83
+
84
+ command :create, create_desc, :file do
85
+ helper.create_resource(options) do |obj|
86
+ begin
87
+ template = File.read(args[0])
88
+
89
+ obj.allocate(template)
90
+ rescue => e
91
+ STDERR.puts e.messsage
92
+ exit -1
93
+ end
94
+ end
95
+ end
96
+
97
+ delete_desc = <<-EOT.unindent
98
+ Deletes the VM Group
99
+ EOT
100
+
101
+ command :delete, delete_desc, [:range, :vmgroupid_list] do
102
+ helper.perform_actions(args[0],options,"deleted") do |obj|
103
+ obj.delete
104
+ end
105
+ end
106
+
107
+ list_desc = <<-EOT.unindent
108
+ Lists VM Group in the pool
109
+ EOT
110
+
111
+ command :list, list_desc, [:filterflag, nil], :options=>list_options do
112
+ helper.list_pool(options, false, args[0])
113
+ end
114
+
115
+ show_desc = <<-EOT.unindent
116
+ Shows information for the given VM Group
117
+ EOT
118
+
119
+ command :show, show_desc, :vmgroupid, :options=>OpenNebulaHelper::XML do
120
+ helper.show_resource(args[0],options)
121
+ end
122
+
123
+ chgrp_desc = <<-EOT.unindent
124
+ Changes the VM Group's group
125
+ EOT
126
+
127
+ command :chgrp, chgrp_desc,[:range, :vmgroupid_list], :groupid do
128
+ helper.perform_actions(args[0],options,"Group changed") do |obj|
129
+ obj.chown(-1, args[1].to_i)
130
+ end
131
+ end
132
+
133
+ chown_desc = <<-EOT.unindent
134
+ Changes the VM Group's owner and group
135
+ EOT
136
+
137
+ command :chown, chown_desc, [:range, :vmgroupid_list], :userid,
138
+ [:groupid,nil] do
139
+ gid = args[2].nil? ? -1 : args[2].to_i
140
+ helper.perform_actions(args[0],options,"Owner/Group changed") do |obj|
141
+ obj.chown(args[1].to_i, gid)
142
+ end
143
+ end
144
+
145
+ chmod_desc = <<-EOT.unindent
146
+ Changes the VM Group permissions
147
+ EOT
148
+
149
+ command :chmod, chmod_desc, [:range, :vmgroupid_list], :octet do
150
+ helper.perform_actions(args[0],options, "Permissions changed") do |t|
151
+ t.chmod_octet(args[1])
152
+ end
153
+ end
154
+
155
+ update_desc = <<-EOT.unindent
156
+ Update the template contents. If a path is not provided the editor will
157
+ be launched to modify the current content.
158
+ EOT
159
+
160
+ command :update, update_desc, :vmgroupid, [:file, nil],
161
+ :options=>OpenNebulaHelper::APPEND do
162
+ helper.perform_action(args[0],options,"modified") do |obj|
163
+ if options[:append]
164
+ str = OpenNebulaHelper.append_template(args[0], obj, args[1])
165
+ else
166
+ str = OpenNebulaHelper.update_template(args[0], obj, args[1])
167
+ end
168
+
169
+ helper.set_client(options)
170
+ obj = helper.retrieve_resource(obj.id)
171
+
172
+ obj.update(str, options[:append])
173
+ end
174
+ end
175
+
176
+ rename_desc = <<-EOT.unindent
177
+ Renames the VM Group
178
+ EOT
179
+
180
+ command :rename, rename_desc, :vmgroupid, :name do
181
+ helper.perform_action(args[0],options,"renamed") do |o|
182
+ o.rename(args[1])
183
+ end
184
+ end
185
+ end
data/bin/onevnet CHANGED
@@ -123,15 +123,17 @@ cmd=CommandParser::CmdParser.new(ARGV) do
123
123
  if options[:ip]
124
124
  if options[:ip6_global] || options[:ip6_ula]
125
125
  ar << "TYPE=\"IP4_6\""
126
+ elsif options[:ip6]
127
+ ar << "TYPE=\"IP4_6_STATIC\""
126
128
  else
127
129
  ar << "TYPE=\"IP4\""
128
130
  end
131
+ elsif options[:ip6]
132
+ ar << "TYPE=\"IP6_STATIC\""
133
+ elsif options[:ip6_global] || options[:ip6_ula]
134
+ ar << "TYPE=\"IP6\""
129
135
  else
130
- if options[:ip6_global] || options[:ip6_ula]
131
- ar << "TYPE=\"IP6\""
132
- else
133
- ar << "TYPE=\"ETHER\""
134
- end
136
+ ar << "TYPE=\"ETHER\""
135
137
  end
136
138
 
137
139
  if options[:size]
@@ -141,7 +143,41 @@ cmd=CommandParser::CmdParser.new(ARGV) do
141
143
  exit -1
142
144
  end
143
145
 
146
+ if options[:ip6]
147
+ m = /([\h:]*)\/(\d.*)$/.match(options[:ip6])
148
+
149
+ if m.nil? || m[1].nil?
150
+ STDERR.puts "Missing or wrong IP6"
151
+ exit -1
152
+ else
153
+ begin
154
+ require 'ipaddr'
155
+
156
+ ip = IPAddr.new(m[1])
157
+
158
+ if !ip.ipv6?
159
+ STDERR.puts "Wrong IP6 format address"
160
+ exit -1
161
+ end
162
+ rescue
163
+ STDERR.puts "Wrong IP6 format address"
164
+ exit -1
165
+ end
166
+
167
+ end
168
+
169
+ if m[2].nil?
170
+ STDERR.puts "IP6 address need to set the prefix length"
171
+ exit -1
172
+ end
173
+
174
+ ar << ", PREFIX_LENGTH=\"#{m[2]}\""
175
+
176
+ options[:ip6] = m[1]
177
+ end
178
+
144
179
  ar << ", IP = " << options[:ip] if options[:ip]
180
+ ar << ", IP6 = " << options[:ip6] if options[:ip6]
145
181
  ar << ", MAC = " << options[:mac] if options[:mac]
146
182
  ar << ", GLOBAL_PREFIX = " <<
147
183
  options[:ip6_global] if options[:ip6_global]
@@ -234,7 +270,8 @@ cmd=CommandParser::CmdParser.new(ARGV) do
234
270
 
235
271
  command :reserve, reserve_desc, :vnetid, [:vnetid, nil],
236
272
  :options=>STD_OPTIONS + [OneVNetHelper::AR, OneVNetHelper::NAME,
237
- OneVNetHelper::SIZE, OneVNetHelper::MAC, OneVNetHelper::IP] do
273
+ OneVNetHelper::SIZE, OneVNetHelper::MAC, OneVNetHelper::IP,
274
+ OneVNetHelper::IP6 ] do
238
275
  helper.perform_action(args[0],options,"reservation made") do |vn|
239
276
  size = options[:size] || -1
240
277
  name = options[:name] || -1
@@ -242,6 +279,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
242
279
  addr = nil
243
280
  addr = options[:mac] if options[:mac]
244
281
  addr = options[:ip] if options[:ip]
282
+ addr = options[:ip6] if options[:ip6]
245
283
 
246
284
  if size == -1
247
285
  STDERR.puts "Specify a size (-s size) for the reservation"
data/bin/onezone CHANGED
@@ -91,6 +91,43 @@ cmd=CommandParser::CmdParser.new(ARGV) do
91
91
  end
92
92
  end
93
93
 
94
+ addserver_desc = <<-EOT.unindent
95
+ Add an OpenNebula server to this zone.
96
+ EOT
97
+
98
+ command :"server-add", addserver_desc, :zoneid, :options =>
99
+ [ OneZoneHelper::SERVER_NAME, OneZoneHelper::SERVER_ENDPOINT] do
100
+
101
+ if options[:server_name].nil? || options[:server_rpc].nil?
102
+ STDERR.puts "To add a server set:"
103
+ STDERR.puts "\t-n <server name>"
104
+ STDERR.puts "\t-r <RPC endpoint>"
105
+ exit -1
106
+ end
107
+
108
+ template = <<-EOT
109
+ SERVER = [
110
+ NAME="#{options[:server_name]}",
111
+ ENDPOINT="#{options[:server_rpc]}"
112
+ ]
113
+ EOT
114
+
115
+ helper.perform_action(args[0], options, "server added") do |o|
116
+ o.add_servers(template)
117
+ end
118
+
119
+ end
120
+
121
+ delserver_desc = <<-EOT.unindent
122
+ Delete an OpenNebula server from this zone.
123
+ EOT
124
+
125
+ command :"server-del", delserver_desc, :zoneid, :serverid do
126
+ helper.perform_action(args[0], options, "server deleted") do |o|
127
+ o.delete_servers(args[1].to_i)
128
+ end
129
+
130
+ end
94
131
  update_desc = <<-EOT.unindent
95
132
  Update the template contents. If a path is not provided the editor will
96
133
  be launched to modify the current content.
data/lib/one_helper.rb CHANGED
@@ -37,8 +37,10 @@ EOT
37
37
 
38
38
  if ONE_LOCATION
39
39
  TABLE_CONF_PATH=ONE_LOCATION+"/etc/cli"
40
+ VAR_LOCATION=ONE_LOCATION+"/var" if !defined?(VAR_LOCATION)
40
41
  else
41
42
  TABLE_CONF_PATH="/etc/one/cli"
43
+ VAR_LOCATION="/var/lib/one" if !defined?(VAR_LOCATION)
42
44
  end
43
45
 
44
46
  EDITOR_PATH='/usr/bin/vi'
@@ -352,6 +354,13 @@ EOT
352
354
  :name => 'report_ready',
353
355
  :large => '--report_ready',
354
356
  :description => 'Sends READY=YES to OneGate, useful for OneFlow'
357
+ },
358
+ {
359
+ :name => 'vcenter_vm_folder',
360
+ :large => '--vcenter_vm_folder path',
361
+ :format => String,
362
+ :description => "In a vCenter environment sets the the VMs and Template folder where the VM will be placed in." \
363
+ " The path uses slashes to separate folders. For example: --vcenter_vm_folder \"/Management/VMs\""
355
364
  }
356
365
  ]
357
366
 
@@ -482,6 +491,21 @@ EOT
482
491
  end
483
492
  end
484
493
 
494
+
495
+ # receive a object key => value format
496
+ # returns hashed values
497
+ def encrypt(opts, token)
498
+ res = {}
499
+ opts.each do |key, value|
500
+ cipher = OpenSSL::Cipher::AES.new(256,:CBC)
501
+ cipher.encrypt.key = token[0..31]
502
+ encrypted = cipher.update(value) + cipher.final
503
+ res[key] = Base64::encode64(encrypted)
504
+ end
505
+
506
+ return res
507
+ end
508
+
485
509
  def list_pool(options, top=false, filter_flag=nil)
486
510
  if options[:describe]
487
511
  table = format_pool(options)
@@ -771,6 +795,27 @@ EOT
771
795
  OneHelper.name_to_id(name, pool, poolname)
772
796
  end
773
797
 
798
+ def OpenNebulaHelper.size_in_mb(size)
799
+ m = size.match(/^(\d+(?:\.\d+)?)(m|mb|g|gb)?$/i)
800
+
801
+ if !m
802
+ # return OpenNebula::Error.new('Size value malformed')
803
+ return -1, 'Size value malformed'
804
+ else
805
+ multiplier=case m[2]
806
+ when /(g|gb)/i
807
+ 1024
808
+ else
809
+ 1
810
+ end
811
+
812
+ value=m[1].to_f*multiplier
813
+
814
+ # return value.ceil
815
+ return 0, value.ceil
816
+ end
817
+ end
818
+
774
819
  def OpenNebulaHelper.rname_to_id_desc(poolname)
775
820
  "OpenNebula #{poolname} name or id"
776
821
  end
@@ -1105,6 +1150,8 @@ EOT
1105
1150
  template<<' ]' << "\n"
1106
1151
  end
1107
1152
 
1153
+ template<<"VCENTER_VM_FOLDER=#{options[:vcenter_vm_folder]}\n" if options[:vcenter_vm_folder]
1154
+
1108
1155
  context=create_context(options)
1109
1156
  template<<context if context
1110
1157
 
@@ -135,10 +135,6 @@ class AcctHelper < OpenNebulaHelper::OneHelper
135
135
  VirtualMachine.get_history_action d["ACTION"]
136
136
  end
137
137
 
138
- column :REASON, "VM state change reason", :left, :size=>4 do |d|
139
- VirtualMachine.get_reason d["REASON"]
140
- end
141
-
142
138
  column :START_TIME, "Start time", :size=>14 do |d|
143
139
  OpenNebulaHelper.time_to_str(d['STIME'])
144
140
  end
@@ -187,7 +183,7 @@ class AcctHelper < OpenNebulaHelper::OneHelper
187
183
  OpenNebulaHelper.unit_to_str(total_disk_size * 1024.0, {})
188
184
  end
189
185
 
190
- default :VID, :HOSTNAME, :ACTION, :REASON, :START_TIME, :END_TIME, :MEMORY, :CPU, :NETRX, :NETTX, :DISK
186
+ default :VID, :HOSTNAME, :ACTION, :START_TIME, :END_TIME, :MEMORY, :CPU, :NETRX, :NETTX, :DISK
191
187
  end
192
188
 
193
189
  SHOWBACK_TABLE = CLIHelper::ShowTable.new(self.table_conf("oneshowback.yaml"), nil) do