opennebula 6.3.85.pre → 6.3.90.pre

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
  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