opennebula 5.10.5 → 5.12.1

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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ActionManager.rb +1 -1
  3. data/lib/CommandManager.rb +13 -3
  4. data/lib/DriverExecHelper.rb +19 -18
  5. data/lib/OpenNebulaDriver.rb +38 -62
  6. data/lib/VirtualMachineDriver.rb +1 -1
  7. data/lib/cloud/CloudClient.rb +3 -3
  8. data/lib/opennebula.rb +2 -2
  9. data/lib/opennebula/acl.rb +1 -1
  10. data/lib/opennebula/acl_pool.rb +1 -1
  11. data/lib/opennebula/client.rb +1 -1
  12. data/lib/opennebula/cluster.rb +1 -1
  13. data/lib/opennebula/cluster_pool.rb +1 -1
  14. data/lib/opennebula/datastore.rb +1 -1
  15. data/lib/opennebula/datastore_pool.rb +1 -1
  16. data/lib/opennebula/document.rb +1 -1
  17. data/lib/opennebula/document_json.rb +1 -1
  18. data/lib/opennebula/document_pool.rb +2 -2
  19. data/lib/opennebula/document_pool_json.rb +3 -3
  20. data/lib/opennebula/error.rb +1 -1
  21. data/lib/opennebula/group.rb +1 -1
  22. data/lib/opennebula/group_pool.rb +1 -1
  23. data/lib/opennebula/hook.rb +1 -1
  24. data/lib/opennebula/hook_log.rb +1 -1
  25. data/lib/opennebula/hook_pool.rb +1 -1
  26. data/lib/opennebula/host.rb +13 -5
  27. data/lib/opennebula/host_pool.rb +11 -5
  28. data/lib/opennebula/image.rb +1 -1
  29. data/lib/opennebula/image_pool.rb +1 -1
  30. data/lib/opennebula/ldap_auth.rb +89 -19
  31. data/lib/opennebula/ldap_auth_spec.rb +1 -1
  32. data/lib/opennebula/marketplace.rb +1 -1
  33. data/lib/opennebula/marketplace_pool.rb +1 -1
  34. data/lib/opennebula/marketplaceapp.rb +4 -3
  35. data/lib/opennebula/marketplaceapp_pool.rb +1 -1
  36. data/lib/opennebula/oneflow_client.rb +24 -3
  37. data/lib/opennebula/pool.rb +4 -10
  38. data/lib/opennebula/pool_element.rb +9 -37
  39. data/lib/opennebula/security_group.rb +1 -1
  40. data/lib/opennebula/security_group_pool.rb +1 -1
  41. data/lib/opennebula/server_cipher_auth.rb +1 -1
  42. data/lib/opennebula/server_x509_auth.rb +1 -1
  43. data/lib/opennebula/ssh_auth.rb +1 -1
  44. data/lib/opennebula/system.rb +3 -3
  45. data/lib/opennebula/template.rb +1 -1
  46. data/lib/opennebula/template_pool.rb +1 -1
  47. data/lib/opennebula/user.rb +1 -1
  48. data/lib/opennebula/user_pool.rb +1 -1
  49. data/lib/opennebula/utils.rb +1 -1
  50. data/lib/opennebula/vdc.rb +1 -1
  51. data/lib/opennebula/vdc_pool.rb +1 -1
  52. data/lib/opennebula/virtual_machine.rb +8 -7
  53. data/lib/opennebula/virtual_machine_pool.rb +9 -7
  54. data/lib/opennebula/virtual_network.rb +9 -3
  55. data/lib/opennebula/virtual_network_pool.rb +1 -1
  56. data/lib/opennebula/virtual_router.rb +1 -1
  57. data/lib/opennebula/virtual_router_pool.rb +1 -1
  58. data/lib/opennebula/vm_group.rb +1 -1
  59. data/lib/opennebula/vm_group_pool.rb +1 -1
  60. data/lib/opennebula/vntemplate.rb +1 -1
  61. data/lib/opennebula/vntemplate_pool.rb +1 -1
  62. data/lib/opennebula/x509_auth.rb +1 -1
  63. data/lib/opennebula/xml_element.rb +1 -1
  64. data/lib/opennebula/xml_pool.rb +1 -1
  65. data/lib/opennebula/xml_utils.rb +1 -1
  66. data/lib/opennebula/zone.rb +1 -1
  67. data/lib/opennebula/zone_pool.rb +1 -1
  68. data/lib/vcenter_driver.rb +10 -3
  69. metadata +4 -4
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -91,9 +91,6 @@ module OpenNebula
91
91
  # Retrieves the monitoring data for all the Objects in the pool
92
92
  #
93
93
  # @param [String] xml_method xml-rcp method
94
- # @param [String] root_elem Root for each individual PoolElement
95
- # @param [String] timestamp_elem Name of the XML element with the last
96
- # monitorization timestamp
97
94
  # @param [Array<String>] xpath_expressions Elements to retrieve.
98
95
  # @param args arguemnts for the xml_method call
99
96
  #
@@ -101,8 +98,7 @@ module OpenNebula
101
98
  # OpenNebula::Error] The first level hash uses the Object ID as keys,
102
99
  # and as value a Hash with the requested xpath expressions,
103
100
  # and an Array of 'timestamp, value'.
104
- def monitoring(xml_method, root_elem, timestamp_elem, xpath_expressions,
105
- *args)
101
+ def monitoring(xml_method, xpaths, *args)
106
102
 
107
103
  rc = @client.call(xml_method, *args)
108
104
 
@@ -116,7 +112,7 @@ module OpenNebula
116
112
  hash = {}
117
113
 
118
114
  # Get all existing Object IDs
119
- ids = xmldoc.retrieve_elements("#{root_elem}/ID")
115
+ ids = xmldoc.retrieve_elements('/MONITORING_DATA/MONITORING/ID')
120
116
 
121
117
  if ids.nil?
122
118
  return hash
@@ -125,9 +121,7 @@ module OpenNebula
125
121
  end
126
122
 
127
123
  ids.each { |id|
128
- hash[id] = OpenNebula.process_monitoring(
129
- xmldoc, root_elem, timestamp_elem, id, xpath_expressions)
130
-
124
+ hash[id] = OpenNebula.process_monitoring(xmldoc, id, xpaths)
131
125
  }
132
126
 
133
127
  return hash
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -183,15 +183,12 @@ module OpenNebula
183
183
  # Retrieves this Element's monitoring data from OpenNebula
184
184
  #
185
185
  # @param [String] xml_method the name of the XML-RPC method
186
- # @param [String] root_elem Root for each individual PoolElement
187
- # @param [String] timestamp_elem Name of the XML element with the last
188
- # monitorization timestamp
189
- # @param xpath_expressions [Array<String>] Xpath expressions for the
190
- # elements to retrieve.
186
+ # @param xpaths [Array<String>] Xpath expressions for the elements to
187
+ # retrieve.
191
188
  #
192
189
  # @return [Hash<String, Array<Array<int>>, OpenNebula::Error] Hash with
193
190
  # the requested xpath expressions, and an Array of [timestamp, value].
194
- def monitoring(xml_method, root_elem, timestamp_elem, xpath_expressions)
191
+ def monitoring(xml_method, xpaths)
195
192
  return Error.new('ID not defined') if !@pe_id
196
193
 
197
194
  rc = @client.call(xml_method, @pe_id)
@@ -204,8 +201,7 @@ module OpenNebula
204
201
  xmldoc.initialize_xml(rc, 'MONITORING_DATA')
205
202
 
206
203
 
207
- return OpenNebula.process_monitoring(
208
- xmldoc, root_elem, timestamp_elem, @pe_id, xpath_expressions)
204
+ return OpenNebula.process_monitoring(xmldoc, @pe_id, xpaths)
209
205
  end
210
206
 
211
207
  public
@@ -261,21 +257,20 @@ module OpenNebula
261
257
  # Processes the monitoring data in XML returned by OpenNebula
262
258
  #
263
259
  # @param [XMLElement] xmldoc monitoring data returned by OpenNebula
264
- # @param [String] root_elem Root for each individual PoolElement
265
- # @param [String] timestamp_elem Name of the XML element with the last
266
260
  # monitorization timestamp
267
261
  # @param [Integer] oid Id of the object to process
268
262
  # @param [Array<String>] xpath_expressions Elements to retrieve.
269
263
  #
270
264
  # @return [Hash<String, Array<Array<int>>, OpenNebula::Error] Hash with
271
265
  # the requested xpath expressions, and an Array of [timestamp, value].
272
- def self.process_monitoring(xmldoc, root_elem, timestamp_elem, oid, xpath_expressions)
266
+ def self.process_monitoring(xmldoc, oid, xpath_expressions)
273
267
  hash = {}
274
268
  timestamps = xmldoc.retrieve_elements(
275
- "#{root_elem}[ID=#{oid}]/#{timestamp_elem}")
269
+ "/MONITORING_DATA/MONITORING[ID=#{oid}]/TIMESTAMP")
276
270
 
277
271
  xpath_expressions.each { |xpath|
278
- xpath_values = xmldoc.retrieve_elements("#{root_elem}[ID=#{oid}]/#{xpath}")
272
+ xpath_values = xmldoc.retrieve_elements(
273
+ "/MONITORING_DATA/MONITORING[ID=#{oid}]/#{xpath}")
279
274
 
280
275
  if ( xpath_values.nil? )
281
276
  hash[xpath] = []
@@ -287,27 +282,4 @@ module OpenNebula
287
282
  return hash
288
283
  end
289
284
 
290
- # Alternative method with better performance for huge number of timestamps.
291
- # For reasonable amounts of data, the current method is quicker
292
- =begin
293
- def self.process_monitoring(xmldoc, root_elem, timestamp_elem, oid, xpath_expressions)
294
- hash = {}
295
-
296
- xpath_expressions.each { |xpath|
297
- hash[xpath] = []
298
- }
299
-
300
- xmldoc.each("#{root_elem}[ID=#{oid}]") do |elem|
301
- timestamp = elem[timestamp_elem]
302
-
303
- xpath_expressions.each { |xpath|
304
- xpath_value = elem[xpath]
305
-
306
- hash[xpath] << [timestamp, xpath_value] if !xpath_value.nil?
307
- }
308
- end
309
-
310
- return hash
311
- end
312
- =end
313
285
  end
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -60,7 +60,7 @@ module OpenNebula
60
60
 
61
61
  # Executes a SQL query command on OpenNebula DB
62
62
  # @param [String] Sql string
63
- # @return [String, OpenNebula::Error] Sql execution result in XML
63
+ # @return [String, OpenNebula::Error] Sql execution result in XML
64
64
  # format in case of success, Error otherwise
65
65
  # <QUERY>
66
66
  # the query sent to oned
@@ -110,7 +110,7 @@ module OpenNebula
110
110
  end
111
111
 
112
112
  config = XMLElement.new
113
- config.initialize_xml(rc, 'TEMPLATE')
113
+ config.initialize_xml(rc, 'OPENNEBULA_CONFIGURATION')
114
114
 
115
115
  return config
116
116
  end
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -122,6 +122,7 @@ module OpenNebula
122
122
  DISK_RESIZE
123
123
  DISK_RESIZE_POWEROFF
124
124
  DISK_RESIZE_UNDEPLOYED
125
+ HOTPLUG_NIC_POWEROFF
125
126
  }
126
127
 
127
128
  SHORT_VM_STATES={
@@ -202,7 +203,8 @@ module OpenNebula
202
203
  "PROLOG_MIGRATE_UNKNOWN_FAILURE" => "fail",
203
204
  "DISK_RESIZE" => "drsz",
204
205
  "DISK_RESIZE_POWEROFF" => "drsz",
205
- "DISK_RESIZE_UNDEPLOYED" => "drsz"
206
+ "DISK_RESIZE_UNDEPLOYED" => "drsz",
207
+ "HOTPLUG_NIC_POWEROFF" => "hotp"
206
208
  }
207
209
 
208
210
  HISTORY_ACTION=%w{none migrate live-migrate shutdown shutdown-hard
@@ -560,18 +562,17 @@ module OpenNebula
560
562
  # the requested xpath expressions, and an Array of 'timestamp, value'.
561
563
  #
562
564
  # @example
563
- # vm.monitoring( ['MONITORING/CPU', 'MONITORING/NETTX'] )
565
+ # vm.monitoring( ['CPU', 'NETTX'] )
564
566
  #
565
567
  # {
566
- # "MONITORING/CPU"=>[["1435085098", "47"], ["1435085253", "5"],
568
+ # "CPU"=>[["1435085098", "47"], ["1435085253", "5"],
567
569
  # ["1435085410", "48"], ["1435085566", "3"], ["1435088136", "2"]],
568
- # "MONITORING/NETTX"=>[["1435085098", "0"], ["1435085253", "50"],
570
+ # "NETTX"=>[["1435085098", "0"], ["1435085253", "50"],
569
571
  # ["1435085410", "50"], ["1435085566", "50"], ["1435085723", "50"]]
570
572
  # }
571
573
  #
572
574
  def monitoring(xpath_expressions)
573
- return super(VM_METHODS[:monitoring], 'VM',
574
- 'LAST_POLL', xpath_expressions)
575
+ return super(VM_METHODS[:monitoring], xpath_expressions)
575
576
  end
576
577
 
577
578
  # Retrieves this VM's monitoring data from OpenNebula, in XML
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -191,19 +191,21 @@ module OpenNebula
191
191
  # }
192
192
  # }
193
193
  #
194
- def monitoring(xpath_expressions, filter_flag=INFO_ALL)
195
- return super(VM_POOL_METHODS[:monitoring],
196
- 'VM', 'LAST_POLL', xpath_expressions, filter_flag)
194
+ def monitoring(xpaths, filter_flag=INFO_ALL)
195
+ return super(VM_POOL_METHODS[:monitoring], xpaths, filter_flag)
197
196
  end
198
197
 
199
198
  # Retrieves the monitoring data for all the VMs in the pool, in XML
200
199
  #
201
200
  # @param [Integer] filter_flag Optional filter flag to retrieve all or
202
201
  # part of the Pool. Possible values: INFO_ALL, INFO_GROUP, INFO_MINE.
203
- #
202
+ # @param [Integer] num Optional Retrieve monitor records in the last num
203
+ # seconds. 0 just the last record, -1 or nil all records
204
204
  # @return [String] VM monitoring data, in XML
205
- def monitoring_xml(filter_flag=INFO_ALL)
206
- return @client.call(VM_POOL_METHODS[:monitoring], filter_flag)
205
+ def monitoring_xml(filter_flag=INFO_ALL, num=nil)
206
+ return @client.call(VM_POOL_METHODS[:monitoring], filter_flag) if num.nil?
207
+
208
+ @client.call(VM_POOL_METHODS[:monitoring], filter_flag, num.to_i)
207
209
  end
208
210
 
209
211
  # Processes all the history records, and stores the monthly cost for
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -145,10 +145,10 @@ module OpenNebula
145
145
  end
146
146
 
147
147
  # Removes an Address Range from the VirtualNetwork
148
- def rm_ar(ar_id)
148
+ def rm_ar(ar_id, force = false)
149
149
  return Error.new('ID not defined') if !@pe_id
150
150
 
151
- rc = @client.call(VN_METHODS[:rm_ar], @pe_id, ar_id.to_i)
151
+ rc = @client.call(VN_METHODS[:rm_ar], @pe_id, ar_id.to_i, force)
152
152
  rc = nil if !OpenNebula.is_error?(rc)
153
153
 
154
154
  return rc
@@ -252,6 +252,12 @@ module OpenNebula
252
252
  return @client.call(VN_METHODS[:reserve], @pe_id, rtmpl)
253
253
  end
254
254
 
255
+ def reserve_with_extra(extra)
256
+ return Error.new('ID not defined') unless @pe_id
257
+
258
+ @client.call(VN_METHODS[:reserve], @pe_id, extra)
259
+ end
260
+
255
261
  # Removes an Address Range from the VirtualNetwork
256
262
  def free(ar_id)
257
263
  return Error.new('ID not defined') if !@pe_id
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
2
+ # Copyright 2002-2020, OpenNebula Project, OpenNebula Systems #
3
3
  # #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
5
  # not use this file except in compliance with the License. You may obtain #