opennebula 5.10.5 → 5.12.1

Sign up to get free protection for your applications and to get access to all the features.
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 #