opennebula 6.0.2 → 6.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c860bdde4c2e7184d75f0433181a5aa485d39296
4
- data.tar.gz: 7b773535ac63930fb85252435814b4f4e81adcf0
3
+ metadata.gz: ae4c2d6ffef598e821e3b6bcc4a429f766caadbf
4
+ data.tar.gz: 2e65f273fb1f2d383d799fa4fd31e6d2fb66cb41
5
5
  SHA512:
6
- metadata.gz: 0b23945ca645beba28c3e898a13ef254b4a78ecdc63dec03922c808914233d550a3503efef499a521d2aa6fbfaeff795789976105ccb93eb80614ef3686662e1
7
- data.tar.gz: 3337709c1791f07680d40dcb8c4a012139e93af38546fc200dacb07fea81b3890405a80f48a596f72465c4bb08e28f02b6c729801e8c414ba55559d1b2f7a097
6
+ metadata.gz: ce66ed43b8db71bcb0f8572a7e3a48de18b3e7c4819006d93333709e892718cd83c724a723c81870538b404ed3d80bc33786b1b1cc0bbd8a882412992c56bd17
7
+ data.tar.gz: e3694d73c467089a0ec6720c2ac22034bfcb49f273d14b607915d9aa1ba23abf6c5045a436ec08f47d7f87e5c394981c0e95d8b1614833f87c3666f64b731291
@@ -34,17 +34,9 @@ require 'base64'
34
34
  # * Log messages will be sent to STDOUT
35
35
  # * The script will return 0 if it succeded or any other value
36
36
  # if there was a failure
37
- # * In case of failure the cause of the error will be written to STDERR
38
- # wrapped by start and end marks as follows:
39
- #
40
- # ERROR MESSAGE --8<------
41
- # error message for the failure
42
- # ERROR MESSAGE ------>8--
43
-
37
+ # * In case of failure the cause of the error will be written to STDERR.
44
38
 
45
39
  class GenericCommand
46
- ERROR_OPEN = "ERROR MESSAGE --8<------"
47
- ERROR_CLOSE = "ERROR MESSAGE ------>8--"
48
40
 
49
41
  attr_reader :code, :stdout, :stderr, :command
50
42
 
@@ -93,8 +85,9 @@ class GenericCommand
93
85
  end
94
86
 
95
87
  log(error_message)
96
- @stderr = ERROR_OPEN + "\n" + error_message + "\n" + ERROR_CLOSE
97
- @code = 255
88
+
89
+ @stderr = error_message
90
+ @code = 255
98
91
  end
99
92
 
100
93
  return @code
@@ -102,9 +95,9 @@ class GenericCommand
102
95
 
103
96
  # Parses error message from +stderr+ output
104
97
  def get_error_message
105
- tmp=@stderr.scan(/^#{ERROR_OPEN}\n(.*?)#{ERROR_CLOSE}$/m)
106
- return "-" if !tmp[0]
107
- tmp[0].join(' ').strip
98
+ return '-' if @stderr.empty?
99
+
100
+ @stderr.tr("\n",' ').strip
108
101
  end
109
102
 
110
103
  def to_xml
@@ -176,8 +169,12 @@ private
176
169
  end
177
170
  }
178
171
 
179
- i.write stdin_data
180
- i.close
172
+ begin
173
+ i.write stdin_data
174
+ i.close
175
+ rescue Errno::EPIPE
176
+ # the cmd doesn't read the input, ignore error
177
+ end
181
178
 
182
179
  # blocking wait for process termination
183
180
  t.value
@@ -124,31 +124,21 @@ module DriverExecHelper
124
124
  # Sends a log message to ONE. The +message+ can be multiline, it will
125
125
  # be automatically splitted by lines.
126
126
  def log(number, message, all = true)
127
- in_error_message=false
128
- msg=message.strip
127
+ msg = message.strip
128
+
129
129
  msg.each_line do |line|
130
130
  all ? severity='I' : severity=nil
131
- l=line.strip
132
-
133
- if l=='ERROR MESSAGE --8<------'
134
- in_error_message=true
135
- next
136
- elsif l=='ERROR MESSAGE ------>8--'
137
- in_error_message=false
138
- next
139
- else
140
- if in_error_message
131
+
132
+ if line.match(/^(ERROR|DEBUG|INFO):(.*)$/)
133
+ line=Regexp.last_match(2)
134
+
135
+ case Regexp.last_match(1)
136
+ when 'ERROR'
141
137
  severity='E'
142
- elsif line.match(/^(ERROR|DEBUG|INFO):(.*)$/)
143
- line=Regexp.last_match(2)
144
- case Regexp.last_match(1)
145
- when 'ERROR'
146
- severity='E'
147
- when 'DEBUG'
148
- severity='D'
149
- when 'INFO'
150
- severity='I'
151
- end
138
+ when 'DEBUG'
139
+ severity='D'
140
+ when 'INFO'
141
+ severity='I'
152
142
  end
153
143
  end
154
144
 
@@ -51,7 +51,7 @@ end
51
51
  module CloudClient
52
52
 
53
53
  # OpenNebula version
54
- VERSION = '6.0.2'
54
+ VERSION = '6.0.3'
55
55
 
56
56
  # #########################################################################
57
57
  # Default location for the authentication file
data/lib/file_helper.rb CHANGED
@@ -81,6 +81,10 @@ module VCenterDriver
81
81
  file.match(%r{^https?://}) || file.match(%r{^s3?://})
82
82
  end
83
83
 
84
+ def self.from_s3?(file)
85
+ file.match(%r{^s3?://})
86
+ end
87
+
84
88
  def self.vmdk?(file)
85
89
  type = `file #{file}`
86
90
 
data/lib/host.rb CHANGED
@@ -1145,14 +1145,14 @@ module VCenterDriver
1145
1145
  vswitchspec =
1146
1146
  RbVmomi::VIM::HostVirtualSwitchSpec(
1147
1147
  :bridge => hostbridge,
1148
- :mtu => mtu,
1149
- :numPorts => num_ports
1148
+ :mtu => mtu,
1149
+ :numPorts => num_ports
1150
1150
  )
1151
1151
  begin
1152
1152
  nws
1153
1153
  .UpdateVirtualSwitch(
1154
1154
  :vswitchName => name,
1155
- :spec => vswitchspec
1155
+ :spec => vswitchspec
1156
1156
  )
1157
1157
  rescue StandardError => e
1158
1158
  raise "The standard switch with name #{name} \
@@ -1463,7 +1463,7 @@ module VCenterDriver
1463
1463
  nws
1464
1464
  .UpdatePortGroup(
1465
1465
  :pgName => nr[:name],
1466
- :portgrp => nr[:spec]
1466
+ :portgrp => nr[:spec]
1467
1467
  )
1468
1468
  rescue StandardError => e
1469
1469
  raise "A rollback operation for standard \
@@ -140,12 +140,14 @@ module OpenNebula
140
140
  # Return true if the service can be undeployed
141
141
  # @return true if the service can be undeployed, false otherwise
142
142
  def can_undeploy?
143
+ # rubocop:disable Style/IfWithBooleanLiteralBranches
143
144
  if (transient_state? && state != Service::STATE['UNDEPLOYING']) ||
144
- state == Service::STATE['DONE'] || failed_state?
145
+ state == Service::STATE['DONE'] || failed_state?
145
146
  false
146
147
  else
147
148
  true
148
149
  end
150
+ # rubocop:enable Style/IfWithBooleanLiteralBranches
149
151
  end
150
152
 
151
153
  # Return true if the service can be updated
@@ -166,6 +168,12 @@ module OpenNebula
166
168
  RECOVER_SCALE_STATES.include? STATE_STR[state]
167
169
  end
168
170
 
171
+ # Return true if the service is running
172
+ # @return true if the service is runnning, false otherwise
173
+ def running?
174
+ state_str == 'RUNNING'
175
+ end
176
+
169
177
  # Returns the running_status_vm option
170
178
  # @return [true, false] true if the running_status_vm option is enabled
171
179
  def report_ready?
@@ -323,6 +331,36 @@ module OpenNebula
323
331
  nil
324
332
  end
325
333
 
334
+ # Adds a role to the service
335
+ #
336
+ # @param template [Hash] Role information
337
+ #
338
+ # @return [OpenNebula::Role] New role
339
+ def add_role(template)
340
+ template['state'] ||= Role::STATE['PENDING']
341
+ role = Role.new(template, self)
342
+
343
+ if @roles[role.name]
344
+ return OpenNebula::Error.new("Role #{role.name} already exists")
345
+ end
346
+
347
+ @roles[role.name] = role
348
+ @body['roles'] << template if @body && @body['roles']
349
+
350
+ role
351
+ end
352
+
353
+ # Removes a role from the service
354
+ #
355
+ # @param name [String] Role name to delete
356
+ def remove_role(name)
357
+ @roles.delete(name)
358
+
359
+ @body['roles'].delete_if do |role|
360
+ role['name'] == name
361
+ end
362
+ end
363
+
326
364
  # Retrieves the information of the Service and all its Nodes.
327
365
  #
328
366
  # @return [nil, OpenNebula::Error] nil in case of success, Error
@@ -514,8 +552,12 @@ module OpenNebula
514
552
  [true, nil]
515
553
  end
516
554
 
517
- def deploy_networks
518
- body = JSON.parse(self['TEMPLATE/BODY'])
555
+ def deploy_networks(deploy = true)
556
+ if deploy
557
+ body = JSON.parse(self['TEMPLATE/BODY'])
558
+ else
559
+ body = @body
560
+ end
519
561
 
520
562
  return if body['networks_values'].nil?
521
563
 
@@ -531,7 +573,7 @@ module OpenNebula
531
573
  if OpenNebula.is_error?(rc)
532
574
  return rc
533
575
  end
534
- end
576
+ end if deploy
535
577
 
536
578
  # Replace $attibute by the corresponding value
537
579
  resolve_attributes(body)
data/lib/opennebula.rb CHANGED
@@ -77,5 +77,5 @@ require 'opennebula/flow'
77
77
  module OpenNebula
78
78
 
79
79
  # OpenNebula version
80
- VERSION = '6.0.2'
80
+ VERSION = '6.0.3'
81
81
  end
@@ -451,6 +451,16 @@ module OpenNebula
451
451
  validate_values(template)
452
452
  end
453
453
 
454
+ def self.validate_role(template)
455
+ validator = Validator::Validator.new(
456
+ :default_values => true,
457
+ :delete_extra_properties => false,
458
+ :allow_extra_properties => true
459
+ )
460
+
461
+ validator.validate!(template, ROLE_SCHEMA)
462
+ end
463
+
454
464
  def instantiate(merge_template)
455
465
  rc = nil
456
466
 
@@ -29,7 +29,15 @@ module OpenNebula
29
29
  :update => "market.update",
30
30
  :chown => "market.chown",
31
31
  :chmod => "market.chmod",
32
- :rename => "market.rename"
32
+ :rename => "market.rename",
33
+ :enable => "market.enable"
34
+ }
35
+
36
+ MARKETPLACE_STATES=%w{ENABLED DISABLED}
37
+
38
+ SHORT_MARKETPLACE_STATES={
39
+ "ENABLED" => "on",
40
+ "DISABLED" => "off"
33
41
  }
34
42
 
35
43
  # Creates a MarketPlace description with just its identifier
@@ -130,13 +138,33 @@ module OpenNebula
130
138
  # @return [nil, OpenNebula::Error] nil in case of success, Error
131
139
  # otherwise
132
140
  def rename(name)
133
- return call(MARKETPLACE_METHODS[:rename], @pe_id, name)
141
+ call(MARKETPLACE_METHODS[:rename], @pe_id, name)
142
+ end
143
+
144
+ # Enables this marketplace
145
+ def enable
146
+ call(MARKETPLACE_METHODS[:enable], @pe_id, true)
147
+ end
148
+
149
+ # Enables this marketplace
150
+ def disable
151
+ call(MARKETPLACE_METHODS[:enable], @pe_id, false)
134
152
  end
135
153
 
136
154
  # ---------------------------------------------------------------------
137
155
  # Helpers to get information
138
156
  # ---------------------------------------------------------------------
139
157
 
158
+ # Returns the state of the Zone (numeric value)
159
+ def state
160
+ self['STATE'].to_i
161
+ end
162
+
163
+ # Returns the state of the Zone (string value)
164
+ def state_str
165
+ MARKETPLACE_STATES[state]
166
+ end
167
+
140
168
  # Returns whether or not the marketplace app with id 'id' is part of
141
169
  # this marketplace
142
170
  def contains(id)
@@ -14,107 +14,118 @@
14
14
  # limitations under the License. #
15
15
  #--------------------------------------------------------------------------- #
16
16
 
17
-
18
17
  require 'opennebula/host'
19
18
  require 'opennebula/image'
20
19
  require 'opennebula/virtual_machine'
21
20
 
22
- module OpenNebula::WaitExtEvent
23
- def wait_event(ctx, event, timeout)
24
- subscriber = ctx.socket(ZMQ::SUB)
21
+ module OpenNebula
25
22
 
26
- # Create subscriber
27
- key = ''
28
- content = ''
23
+ # Module to wait OpenNebula objects events using ZMQ
24
+ module WaitExtEvent
29
25
 
30
- subscriber.setsockopt(ZMQ::RCVTIMEO, timeout * 1000)
31
- subscriber.setsockopt(ZMQ::SUBSCRIBE, event)
32
- subscriber.connect(@client.one_zmq)
26
+ def wait_event(ctx, event, timeout)
27
+ subscriber = ctx.socket(ZMQ::SUB)
33
28
 
34
- rc = subscriber.recv_string(key)
35
- rc = subscriber.recv_string(content) if rc != -1
29
+ # Create subscriber
30
+ key = ''
31
+ content = ''
36
32
 
37
- return if ZMQ::Util.errno == ZMQ::EAGAIN || rc == -1
33
+ subscriber.setsockopt(ZMQ::RCVTIMEO, timeout * 1000)
34
+ subscriber.setsockopt(ZMQ::SUBSCRIBE, event)
35
+ subscriber.connect(@client.one_zmq)
38
36
 
39
- content
40
- ensure
41
- subscriber.setsockopt(ZMQ::UNSUBSCRIBE, event)
42
- subscriber.close
43
- end
37
+ rc = subscriber.recv_string(key)
38
+ rc = subscriber.recv_string(content) if rc != -1
44
39
 
45
- def wait2(sstr1, sstr2, timeout = 60, cycles = -1)
46
- wfun = OpenNebula::WaitExt::WAIT[self.class]
47
-
48
- # Start with a timeout of 2 seconds, to wait until the first
49
- # info.
50
- #
51
- # The timeout is increased later, to avoid multiple info calls.
52
- c_timeout = 2
53
- recvs = 0
54
- in_state = false
55
-
56
- # Subscribe with timeout seconds
57
- #
58
- # Subscribe string:
59
- #
60
- # EVENT STATE element_name/state_str//self.ID
61
- #
62
- # - element_name: is the element name to find in the message
63
- # - self.ID: returns element ID to find in the message
64
- ctx = ZMQ::Context.new(1)
65
-
66
- until in_state || (cycles != -1 && recvs >= cycles)
67
- content = wait_event(ctx,
68
- wfun[:event].call(self, sstr1, sstr2),
69
- c_timeout)
70
-
71
- if content && !content.empty?
72
- in_state = wfun[:in_state_e].call(sstr1, sstr2, content)
73
-
74
- break if in_state
75
- end
40
+ return if ZMQ::Util.errno == ZMQ::EAGAIN || rc == -1
41
+
42
+ content
43
+ ensure
44
+ subscriber.setsockopt(ZMQ::UNSUBSCRIBE, event)
45
+ subscriber.close
46
+ end
47
+
48
+ def wait2(sstr1, sstr2, timeout = 60, cycles = -1)
49
+ wfun = OpenNebula::WaitExt::WAIT[self.class]
50
+
51
+ # Start with a timeout of 2 seconds, to wait until the first
52
+ # info.
53
+ #
54
+ # The timeout is increased later, to avoid multiple info calls.
55
+ c_timeout = 2
56
+ recvs = 0
57
+ in_state = false
58
+
59
+ # Subscribe with timeout seconds
60
+ #
61
+ # Subscribe string:
62
+ #
63
+ # EVENT STATE element_name/state_str//self.ID
64
+ #
65
+ # - element_name: is the element name to find in the message
66
+ # - self.ID: returns element ID to find in the message
67
+ ctx = ZMQ::Context.new(1)
68
+
69
+ until in_state || (cycles != -1 && recvs >= cycles)
70
+ content = wait_event(ctx,
71
+ wfun[:event].call(self, sstr1, sstr2),
72
+ c_timeout)
73
+
74
+ if content && !content.empty?
75
+ in_state = wfun[:in_state_e].call(sstr1, sstr2, content)
76
+
77
+ break if in_state
78
+ end
76
79
 
77
- c_timeout *= 10
78
- c_timeout = timeout if c_timeout > timeout
80
+ c_timeout *= 10
81
+ c_timeout = timeout if c_timeout > timeout
79
82
 
80
- rco = info
83
+ rco = info
81
84
 
82
- return false if OpenNebula.is_error?(rco)
85
+ return false if OpenNebula.is_error?(rco)
83
86
 
84
- in_state = wfun[:in_state].call(self, sstr1, sstr2)
87
+ in_state = wfun[:in_state].call(self, sstr1, sstr2)
85
88
 
86
- recvs += 1
89
+ recvs += 1
90
+ end
91
+
92
+ in_state
87
93
  end
88
94
 
89
- in_state
90
95
  end
91
96
 
92
97
  end
93
98
 
94
- module OpenNebula::WaitExtPolling
95
- def wait2(sstr1, sstr2, timeout = 60, cycles = -1)
96
- wfun = OpenNebula::WaitExt::WAIT[self.class]
99
+ module OpenNebula
100
+
101
+ # Module to wait OpenNebula objects events using polling
102
+ module WaitExtPolling
103
+
104
+ def wait2(sstr1, sstr2, timeout = 60, cycles = -1)
105
+ wfun = OpenNebula::WaitExt::WAIT[self.class]
106
+
107
+ stime = 5
108
+ recvs = 0
109
+ cycles = timeout / stime if cycles == -1
110
+ in_state = false
97
111
 
98
- stime = 5
99
- recvs = 0
100
- cycles = timeout / stime
101
- in_state = false
112
+ loop do
113
+ rco = info
102
114
 
103
- loop do
104
- rco = info
115
+ return false if OpenNebula.is_error?(rco)
105
116
 
106
- return false if OpenNebula.is_error?(rco)
117
+ in_state = wfun[:in_state].call(self, sstr1, sstr2)
107
118
 
108
- in_state = wfun[:in_state].call(self, sstr1, sstr2)
119
+ recvs += 1
109
120
 
110
- recvs += 1
121
+ break if in_state || recvs >= cycles
111
122
 
112
- break if in_state || recvs >= cycles
123
+ sleep stime
124
+ end
113
125
 
114
- sleep stime
126
+ in_state
115
127
  end
116
128
 
117
- in_state
118
129
  end
119
130
 
120
131
  end
@@ -124,6 +135,7 @@ end
124
135
  #
125
136
  # rubocop:disable Style/ClassAndModuleChildren
126
137
  module OpenNebula::WaitExt
138
+
127
139
  # Wait classes and the name published in ZMQ/STATE
128
140
  WAIT = {
129
141
  OpenNebula::Host => {
@@ -176,7 +188,7 @@ module OpenNebula::WaitExt
176
188
  },
177
189
 
178
190
  :in_state => lambda {|o, s1, s2|
179
- obj_s1 = Integer(o['STATE'])
191
+ obj_s1 = Integer(o['STATE'])
180
192
  inx_s1 = OpenNebula::VirtualMachine::VM_STATE.index(s1)
181
193
 
182
194
  obj_s2 = Integer(o['LCM_STATE'])
@@ -203,13 +215,15 @@ module OpenNebula::WaitExt
203
215
  wait?(obj)
204
216
 
205
217
  class << obj
206
- begin
207
- require 'ffi-rzmq'
208
218
 
209
- include OpenNebula::WaitExtEvent
210
- rescue LoadError
211
- include OpenNebula::WaitExtPolling
212
- end
219
+ begin
220
+ require 'ffi-rzmq'
221
+
222
+ include OpenNebula::WaitExtEvent
223
+ rescue LoadError
224
+ include OpenNebula::WaitExtPolling
225
+ end
226
+
213
227
  end
214
228
 
215
229
  super
@@ -45,16 +45,7 @@ module OpenNebula
45
45
 
46
46
  # This function is used to pass error message to the mad
47
47
  def self.error_message(message)
48
- STDERR.puts format_error_message(message)
49
- end
50
-
51
- #This function formats an error message for OpenNebula
52
- def self.format_error_message(message)
53
- error_str = "ERROR MESSAGE --8<------\n"
54
- error_str << message
55
- error_str << "\nERROR MESSAGE ------>8--"
56
-
57
- return error_str
48
+ STDERR.puts message
58
49
  end
59
50
 
60
51
  def self.is_disk?(arg)
@@ -133,19 +133,10 @@ end
133
133
  # Helper functions #
134
134
  # ---------------------------------------------------------------------------- #
135
135
 
136
- def error_message(message)
137
- error_str = "ERROR MESSAGE --8<------\n"
138
- error_str << message
139
- error_str << "\nERROR MESSAGE ------>8--"
140
-
141
- error_str
142
- end
143
-
144
136
  def check_valid(parameter, label)
145
137
  return unless parameter.nil? || parameter.empty?
146
138
 
147
- STDERR.puts error_message("The parameter '#{label}'\
148
- is required for this action.")
139
+ STDERR.puts "The parameter '#{label}' is required for this action."
149
140
  exit(-1)
150
141
  end
151
142
 
@@ -2418,10 +2418,10 @@ end
2418
2418
  # Adding a new disk in newer vSphere versions
2419
2419
  # automatically cleans all system snapshots
2420
2420
  # https://github.com/OpenNebula/one/issues/5409
2421
- if snapshots? or one_snapshots?
2422
- error_message = 'Existing sytem snapshots, cannot change disks. '
2423
- error_message << 'Please remove all snapshots and try again.'
2424
- raise error_message
2421
+ if snapshots? || one_snapshots?
2422
+ error_msg = 'Existing system snapshots, cannot change disks. '
2423
+ error_msg << 'Please remove all snapshots and try again.'
2424
+ raise error_message
2425
2425
  end
2426
2426
 
2427
2427
  spec_hash = {}
@@ -2605,10 +2605,11 @@ end
2605
2605
  def detach_disk(disk)
2606
2606
  return unless disk.exists?
2607
2607
 
2608
- if snapshots? or one_snapshots?
2609
- error_message = 'Existing sytem snapshots, cannot change disks. '
2610
- error_message << 'Please remove all snapshots and try again.'
2611
- raise error_message
2608
+ if snapshots? || one_snapshots?
2609
+ error_message = 'Existing system snapshots, cannot change '
2610
+ error_message << 'disks . Please remove all snapshots and '
2611
+ error_message << 'try again.'
2612
+ raise error_message
2612
2613
  end
2613
2614
 
2614
2615
  spec_hash = {}
@@ -3070,7 +3071,8 @@ end
3070
3071
  # Create a snapshot for the VM
3071
3072
  def create_snapshot(snap_id, snap_name)
3072
3073
  memory_dumps = true
3073
- memory_dumps = CONFIG[:memory_dumps] unless CONFIG[:memory_dumps].nil?
3074
+ memory_dumps = CONFIG[:memory_dumps] \
3075
+ unless CONFIG[:memory_dumps].nil?
3074
3076
 
3075
3077
  snapshot_hash = {
3076
3078
  :name => snap_id,
data/lib/vm_monitor.rb CHANGED
@@ -175,8 +175,6 @@ module VirtualMachineMonitor
175
175
  @monitor[:diskwrbytes] = previous_diskwrbytes +
176
176
  (write_kbpersec * 1024 * refresh_rate).to_i
177
177
  end
178
- # rubocop:enable Naming/VariableName
179
- # rubocop:enable Style/FormatStringToken
180
178
 
181
179
  # Generates a OpenNebula IM Driver valid string with the monitor info
182
180
  def info
data/lib/vm_template.rb CHANGED
@@ -550,6 +550,10 @@ module VCenterDriver
550
550
  net.ipConfig.ipAddress.each do |ip_config|
551
551
  ip = IPAddr.new(ip_config.ipAddress)
552
552
 
553
+ if ip.ipv6? && get_ipv6_prefix(ip.to_s, 10) == 'fe80'
554
+ next
555
+ end
556
+
553
557
  if force
554
558
  ipv4 = ip.to_s if ip.ipv4?
555
559
  ipv6 = ip.to_s if ip.ipv6?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opennebula
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.2
4
+ version: 6.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenNebula
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-24 00:00:00.000000000 Z
11
+ date: 2021-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -126,7 +126,6 @@ files:
126
126
  - lib/vcenter_importer.rb
127
127
  - lib/vi_client.rb
128
128
  - lib/vi_helper.rb
129
- - lib/virtual_machine.rb
130
129
  - lib/vm_device.rb
131
130
  - lib/vm_disk.rb
132
131
  - lib/vm_nic.rb
@@ -135,6 +134,7 @@ files:
135
134
  - lib/vm_folder.rb
136
135
  - lib/vm_template.rb
137
136
  - lib/vmm_importer.rb
137
+ - lib/virtual_machine.rb
138
138
  - lib/nsx_driver.rb
139
139
  - lib/distributed_firewall.rb
140
140
  - lib/logical_port.rb
@@ -164,8 +164,8 @@ files:
164
164
  - lib/DriverExecHelper.rb
165
165
  - lib/scripts_common.rb
166
166
  - lib/models.rb
167
- - lib/models/role.rb
168
167
  - lib/models/service.rb
168
+ - lib/models/role.rb
169
169
  - lib/opennebula/acl.rb
170
170
  - lib/opennebula/acl_pool.rb
171
171
  - lib/opennebula/client.rb
@@ -208,7 +208,6 @@ files:
208
208
  - lib/opennebula/utils.rb
209
209
  - lib/opennebula/vdc.rb
210
210
  - lib/opennebula/vdc_pool.rb
211
- - lib/opennebula/virtual_machine.rb
212
211
  - lib/opennebula/virtual_machine_ext.rb
213
212
  - lib/opennebula/virtual_machine_pool.rb
214
213
  - lib/opennebula/virtual_network.rb
@@ -224,13 +223,14 @@ files:
224
223
  - lib/opennebula/xml_pool.rb
225
224
  - lib/opennebula/xml_utils.rb
226
225
  - lib/opennebula/zone_pool.rb
226
+ - lib/opennebula/virtual_machine.rb
227
227
  - lib/opennebula/zone.rb
228
228
  - lib/opennebula/flow/grammar.rb
229
229
  - lib/opennebula/flow/service_pool.rb
230
+ - lib/opennebula/flow/service_template.rb
230
231
  - lib/opennebula/flow/service_template_ext.rb
231
232
  - lib/opennebula/flow/service_template_pool.rb
232
233
  - lib/opennebula/flow/validator.rb
233
- - lib/opennebula/flow/service_template.rb
234
234
  - lib/opennebula/ldap_auth.rb
235
235
  - lib/opennebula/ldap_auth_spec.rb
236
236
  - lib/opennebula/server_cipher_auth.rb