opennebula 6.3.85.pre → 6.3.90.pre

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9037eadf643ff9e3cb8745aea4cbfe59d88fec16905216f170123da1670cda30
4
- data.tar.gz: 6171ac7fbd6f35e063204eb4a7c35ae4ec5afb0e548d2558623a7095f9a008cf
3
+ metadata.gz: ce0ca66d3a7fc700e855f98615b22498966c4efb6321770afc9e5852d29359c2
4
+ data.tar.gz: 7879f4859708352f9d1a69edd76ed6131ec8c3a26470ebea6933fb02317f948f
5
5
  SHA512:
6
- metadata.gz: 30d60c2a1447a38a642d4bb93792df47ce39c520a7255fbaa2fd49a445885cc0cd4b28662f9cf45e8d730a3cc7f16db1901489662149a1121c623df35250b5ea
7
- data.tar.gz: 5de0e5c492f708e3e56869c6e8b3aea9cfa05c78a5945f84a32884d0a9be5f347e3d35d3b08289c26084a245aa758071a07bf7231e8ef71c7806a97d9e3dbdad
6
+ metadata.gz: ff3757f8da05cd268b1fcdd153e9e1dabb502ac3269567d2d66c1161e0d5014641d0ccd2776a8cb6b924a6d076d01b28730a38d4095c3655d14728805120450a
7
+ data.tar.gz: ede0e55b1b5b3423e22dc73832ead4e300857c41551f79cd921d427aaba9e1a331f1f8763ef8fecbe3bdcad8cc8a122ba8ba1b4aec0f4c51bd3c0486178c06c8
@@ -51,7 +51,7 @@ end
51
51
  module CloudClient
52
52
 
53
53
  # OpenNebula version
54
- VERSION = '6.3.85'
54
+ VERSION = '6.3.90'
55
55
 
56
56
  # #########################################################################
57
57
  # Default location for the authentication file
data/lib/models/role.rb CHANGED
@@ -65,7 +65,8 @@ module OpenNebula
65
65
  'FAILED_DEPLOYING' => 7,
66
66
  'SCALING' => 8,
67
67
  'FAILED_SCALING' => 9,
68
- 'COOLDOWN' => 10
68
+ 'COOLDOWN' => 10,
69
+ 'HOLD' => 11
69
70
  }
70
71
 
71
72
  STATE_STR = %w[
@@ -80,6 +81,7 @@ module OpenNebula
80
81
  SCALING
81
82
  FAILED_SCALING
82
83
  COOLDOWN
84
+ HOLD
83
85
  ]
84
86
 
85
87
  RECOVER_DEPLOY_STATES = %w[
@@ -147,6 +149,7 @@ module OpenNebula
147
149
 
148
150
  @body['cooldown'] = @@default_cooldown if @body['cooldown'].nil?
149
151
  @body['nodes'] ||= []
152
+ @body['on_hold'] = false if @body['on_hold'].nil?
150
153
  end
151
154
 
152
155
  def name
@@ -195,12 +198,25 @@ module OpenNebula
195
198
  true
196
199
  end
197
200
 
201
+ def can_release?
202
+ state == STATE['HOLD']
203
+ end
204
+
198
205
  # Returns the role parents
199
206
  # @return [Array] the role parents
200
207
  def parents
201
208
  @body['parents'] || []
202
209
  end
203
210
 
211
+ def any_parent_on_hold?
212
+ parents.each do |parent|
213
+ next unless @service.roles[parent]
214
+
215
+ return true if @service.roles[parent].on_hold?
216
+ end
217
+ false
218
+ end
219
+
204
220
  # Returns the role cardinality
205
221
  # @return [Integer] the role cardinality
206
222
  def cardinality
@@ -357,6 +373,23 @@ module OpenNebula
357
373
  @body.delete('scale_way')
358
374
  end
359
375
 
376
+ # Returns the on_hold role option
377
+ # @return [true, false] true if the on_hold option is enabled
378
+ def on_hold?
379
+ @body['on_hold']
380
+ end
381
+
382
+ # Returns the on_hold service option
383
+ # @return [true, false] true if the on_hold option is enabled
384
+ def service_on_hold?
385
+ @service.on_hold?
386
+ end
387
+
388
+ # Set the on_hold vm option to true
389
+ def hold(hold)
390
+ @body['on_hold'] = hold
391
+ end
392
+
360
393
  # Retrieves the VM information for each Node in this Role. If a Node
361
394
  # is to be disposed and it is found in DONE, it will be cleaned
362
395
  #
@@ -436,7 +469,7 @@ module OpenNebula
436
469
  "template #{template_id}, with name #{vm_name}",
437
470
  @service.id
438
471
 
439
- vm_id = template.instantiate(vm_name, false, extra_template)
472
+ vm_id = template.instantiate(vm_name, on_hold?, extra_template)
440
473
 
441
474
  deployed_nodes << vm_id
442
475
 
@@ -546,6 +579,44 @@ module OpenNebula
546
579
  [true, nil]
547
580
  end
548
581
 
582
+ # Release all the nodes in this role
583
+ # @return [Array, Bool] true if all the VMs
584
+ # were released, false otherwise and Array with VMs released
585
+ def release
586
+ release_nodes = []
587
+ success = true
588
+
589
+ # Release all vms in the role
590
+ nodes.each do |node|
591
+ vm_id = node['deploy_id']
592
+
593
+ Log.debug(LOG_COMP,
594
+ "Role #{name}: Releasing VM #{vm_id}",
595
+ @service.id)
596
+
597
+ vm = OpenNebula::VirtualMachine.new_with_id(vm_id,
598
+ @service.client)
599
+ rc = vm.release
600
+
601
+ if OpenNebula.is_error?(rc)
602
+ msg = "Role #{name}: Release failed for VM #{vm_id}, " \
603
+ "#{rc.message}"
604
+
605
+ Log.error(LOG_COMP, msg, @service.id)
606
+ @service.log_error(msg)
607
+ success = false
608
+ else
609
+ Log.debug(LOG_COMP,
610
+ "Role #{name}: Release success for VM #{vm_id}",
611
+ @service.id)
612
+
613
+ release_nodes << vm_id
614
+ end
615
+ end
616
+
617
+ [release_nodes, success]
618
+ end
619
+
549
620
  # Schedule the given action on all the VMs that belong to the Role
550
621
  # @param [String] action one of the available SCHEDULE_ACTIONS
551
622
  # @param [Integer] period
@@ -38,7 +38,8 @@ module OpenNebula
38
38
  'DEPLOYING_NETS' => 11,
39
39
  'UNDEPLOYING_NETS' => 12,
40
40
  'FAILED_DEPLOYING_NETS' => 13,
41
- 'FAILED_UNDEPLOYING_NETS' => 14
41
+ 'FAILED_UNDEPLOYING_NETS' => 14,
42
+ 'HOLD' => 15
42
43
  }
43
44
 
44
45
  STATE_STR = %w[
@@ -57,6 +58,7 @@ module OpenNebula
57
58
  UNDEPLOYING_NETS
58
59
  FAILED_DEPLOYING_NETS
59
60
  FAILED_UNDEPLOYING_NETS
61
+ HOLD
60
62
  ]
61
63
 
62
64
  TRANSIENT_STATES = %w[
@@ -216,6 +218,16 @@ module OpenNebula
216
218
  self['GID'].to_i
217
219
  end
218
220
 
221
+ # Returns the on_hold service option
222
+ # @return [true, false] true if the on_hold option is enabled
223
+ def on_hold?
224
+ @body['on_hold']
225
+ end
226
+
227
+ def hold?
228
+ state_str == 'HOLD'
229
+ end
230
+
219
231
  # Replaces this object's client with a new one
220
232
  # @param [OpenNebula::Client] owner_client the new client
221
233
  def replace_client(owner_client)
@@ -265,6 +277,18 @@ module OpenNebula
265
277
  true
266
278
  end
267
279
 
280
+ # Returns true if all the nodes are in hold state
281
+ # @return [true, false] true if all the nodes are in hold state
282
+ def all_roles_hold?
283
+ @roles.each do |_name, role|
284
+ if role.state != Role::STATE['HOLD']
285
+ return false
286
+ end
287
+ end
288
+
289
+ true
290
+ end
291
+
268
292
  # Returns virtual networks IDs
269
293
  # @return [Array] Array of integers containing the IDs
270
294
  def networks(deploy)
@@ -73,6 +73,10 @@ module OpenNebula
73
73
  :required => false,
74
74
  :minimum => 0
75
75
  },
76
+ 'on_hold' => {
77
+ :type => :boolean,
78
+ :required => false
79
+ },
76
80
  'elasticity_policies' => {
77
81
  :type => :array,
78
82
  :items => {
@@ -220,6 +224,10 @@ module OpenNebula
220
224
  :properties => {}
221
225
  },
222
226
  :required => false
227
+ },
228
+ 'on_hold' => {
229
+ :type => :boolean,
230
+ :required => false
223
231
  }
224
232
  }
225
233
  }
@@ -56,10 +56,7 @@ module Role
56
56
  'SCALING' => 8,
57
57
  'FAILED_SCALING' => 9,
58
58
  'COOLDOWN' => 10,
59
- 'DEPLOYING_NETS' => 11,
60
- 'UNDEPLOYING_NETS' => 12,
61
- 'FAILED_DEPLOYING_NETS' => 13,
62
- 'FAILED_UNDEPLOYING_NETS' => 14
59
+ 'HOLD' => 11
63
60
  }
64
61
 
65
62
  STATE_STR = [
@@ -74,10 +71,7 @@ module Role
74
71
  'SCALING',
75
72
  'FAILED_SCALING',
76
73
  'COOLDOWN',
77
- 'DEPLOYING_NETS',
78
- 'UNDEPLOYING_NETS',
79
- 'FAILED_DEPLOYING_NETS',
80
- 'FAILED_UNDEPLOYING_NETS'
74
+ 'HOLD'
81
75
  ]
82
76
 
83
77
  # Returns the string representation of the role state
@@ -105,7 +99,8 @@ module Service
105
99
  'DEPLOYING_NETS' => 11,
106
100
  'UNDEPLOYING_NETS' => 12,
107
101
  'FAILED_DEPLOYING_NETS' => 13,
108
- 'FAILED_UNDEPLOYING_NETS' => 14
102
+ 'FAILED_UNDEPLOYING_NETS' => 14,
103
+ 'HOLD' => 15
109
104
  }
110
105
 
111
106
  STATE_STR = [
@@ -123,7 +118,8 @@ module Service
123
118
  'DEPLOYING_NETS',
124
119
  'UNDEPLOYING_NETS',
125
120
  'FAILED_DEPLOYING_NETS',
126
- 'FAILED_UNDEPLOYING_NETS'
121
+ 'FAILED_UNDEPLOYING_NETS',
122
+ 'HOLD'
127
123
  ]
128
124
 
129
125
  # Returns the string representation of the service state
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.3.85'
80
+ VERSION = '6.3.90'
81
81
  end
@@ -3388,6 +3388,9 @@ end
3388
3388
  pool.info
3389
3389
 
3390
3390
  src_id = pool["/HOST_POOL/HOST[NAME='#{src_host}']/ID"].to_i
3391
+
3392
+ return if src_id == 0
3393
+
3391
3394
  dst_id = pool["/HOST_POOL/HOST[NAME='#{dst_host}']/ID"].to_i
3392
3395
 
3393
3396
  # different destination ds
data/lib/vm_template.rb CHANGED
@@ -975,23 +975,14 @@ module VCenterDriver
975
975
  host_id = vi_client.instance_variable_get '@host_id'
976
976
 
977
977
  begin
978
- nsx_client =
979
- NSXDriver::NSXClient
980
- .new_from_id(
981
- host_id
982
- )
978
+ nsx_client = NSXDriver::NSXClient.new_from_id(host_id)
983
979
  rescue StandardError
984
980
  nsx_client = nil
985
981
  end
986
982
 
987
983
  if !nsx_client.nil?
988
- nsx_net =
989
- NSXDriver::VirtualWire
990
- .new_from_name(
991
- nsx_client,
992
- nic[:net_name]
993
- )
994
-
984
+ nsx_net = NSXDriver::VirtualWire
985
+ .new_from_name(nsx_client, nic[:net_name])
995
986
  config[:nsx_id] = nsx_net.ls_id
996
987
  config[:nsx_vni] = nsx_net.ls_vni
997
988
  config[:nsx_tz_id] = nsx_net.tz_id
@@ -1002,11 +993,8 @@ module VCenterDriver
1002
993
  # so all Standard
1003
994
  # PortGroups are networks and no uplinks
1004
995
  config[:uplink] = false
1005
- config[:sw_name] =
1006
- VCenterDriver::Network
1007
- .virtual_switch(
1008
- nic[:network]
1009
- )
996
+ config[:sw_name] = VCenterDriver::Network
997
+ .virtual_switch(nic[:network])
1010
998
  # NSX-T PortGroups
1011
999
  when VCenterDriver::Network::NETWORK_TYPE_NSXT
1012
1000
  config[:sw_name] = \
@@ -1027,10 +1015,7 @@ module VCenterDriver
1027
1015
  if !nsx_client.nil?
1028
1016
  nsx_net =
1029
1017
  NSXDriver::OpaqueNetwork
1030
- .new_from_name(
1031
- nsx_client,
1032
- nic[:net_name]
1033
- )
1018
+ .new_from_name(nsx_client, nic[:net_name])
1034
1019
 
1035
1020
  config[:nsx_id] = nsx_net.ls_id
1036
1021
  config[:nsx_vni] = nsx_net.ls_vni
@@ -1104,6 +1089,31 @@ module VCenterDriver
1104
1089
  VCenterDriver::VIHelper.clean_ref_hash
1105
1090
  one_vn.info
1106
1091
 
1092
+ # Wait until the virtual network is in ready state
1093
+ t_start = Time.now
1094
+ error = false
1095
+ timeout = 30
1096
+
1097
+ while Time.now - t_start < timeout
1098
+ begin
1099
+ if one_vn.short_state_str == 'rdy'
1100
+ error = false
1101
+ break
1102
+ end
1103
+ rescue StandardError
1104
+ error = true
1105
+ end
1106
+
1107
+ sleep 1
1108
+ one_vn.info
1109
+ end
1110
+
1111
+ if error
1112
+ error_msg = "VNET #{one_vn.id} in state "
1113
+ error_msg += "#{one_vn.short_state_str}, aborting import"
1114
+ raise error_msg
1115
+ end
1116
+
1107
1117
  one_vn
1108
1118
  end
1109
1119
 
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.3.85.pre
4
+ version: 6.3.90.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenNebula
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-18 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri