opennebula 5.2.0 → 5.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ActionManager.rb +1 -1
- data/lib/CommandManager.rb +1 -1
- data/lib/DriverExecHelper.rb +1 -1
- data/lib/OpenNebulaDriver.rb +1 -1
- data/lib/VirtualMachineDriver.rb +1 -1
- data/lib/cloud/CloudClient.rb +3 -3
- data/lib/opennebula.rb +2 -2
- data/lib/opennebula/acl.rb +1 -1
- data/lib/opennebula/acl_pool.rb +1 -1
- data/lib/opennebula/client.rb +1 -1
- data/lib/opennebula/cluster.rb +1 -1
- data/lib/opennebula/cluster_pool.rb +1 -1
- data/lib/opennebula/datastore.rb +1 -1
- data/lib/opennebula/datastore_pool.rb +1 -1
- data/lib/opennebula/document.rb +1 -1
- data/lib/opennebula/document_json.rb +1 -1
- data/lib/opennebula/document_pool.rb +1 -1
- data/lib/opennebula/document_pool_json.rb +1 -1
- data/lib/opennebula/error.rb +1 -1
- data/lib/opennebula/group.rb +1 -1
- data/lib/opennebula/group_pool.rb +1 -1
- data/lib/opennebula/host.rb +1 -1
- data/lib/opennebula/host_pool.rb +1 -1
- data/lib/opennebula/image.rb +1 -1
- data/lib/opennebula/image_pool.rb +1 -1
- data/lib/opennebula/ldap_auth.rb +1 -1
- data/lib/opennebula/ldap_auth_spec.rb +1 -1
- data/lib/opennebula/marketplace.rb +1 -1
- data/lib/opennebula/marketplace_pool.rb +1 -1
- data/lib/opennebula/marketplaceapp.rb +1 -1
- data/lib/opennebula/marketplaceapp_pool.rb +1 -1
- data/lib/opennebula/oneflow_client.rb +1 -1
- data/lib/opennebula/pool.rb +1 -1
- data/lib/opennebula/pool_element.rb +1 -1
- data/lib/opennebula/security_group.rb +1 -1
- data/lib/opennebula/security_group_pool.rb +1 -1
- data/lib/opennebula/server_cipher_auth.rb +1 -1
- data/lib/opennebula/server_x509_auth.rb +1 -1
- data/lib/opennebula/ssh_auth.rb +1 -1
- data/lib/opennebula/system.rb +1 -1
- data/lib/opennebula/template.rb +1 -1
- data/lib/opennebula/template_pool.rb +1 -1
- data/lib/opennebula/user.rb +1 -1
- data/lib/opennebula/user_pool.rb +1 -1
- data/lib/opennebula/vdc.rb +1 -1
- data/lib/opennebula/vdc_pool.rb +1 -1
- data/lib/opennebula/virtual_machine.rb +1 -1
- data/lib/opennebula/virtual_machine_pool.rb +1 -1
- data/lib/opennebula/virtual_network.rb +1 -1
- data/lib/opennebula/virtual_network_pool.rb +1 -1
- data/lib/opennebula/virtual_router.rb +1 -1
- data/lib/opennebula/virtual_router_pool.rb +1 -1
- data/lib/opennebula/x509_auth.rb +1 -1
- data/lib/opennebula/xml_element.rb +1 -1
- data/lib/opennebula/xml_pool.rb +1 -1
- data/lib/opennebula/xml_utils.rb +1 -1
- data/lib/opennebula/zone.rb +1 -1
- data/lib/opennebula/zone_pool.rb +1 -1
- data/lib/vcenter_driver.rb +280 -96
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a03807dc5cd00c6e5a42fe341caa95a84a5734b7
|
4
|
+
data.tar.gz: 8c4bd35f71422c0f168616d4d32422aee5feef69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40a1c600b081b6190144d8ec8110b1dbf6a829e83cad138d08119621dfa958632a5918e12bdc0565e877b1d11b03faf2cbaddce40bc9fa1a5a613bd800f3c816
|
7
|
+
data.tar.gz: 928962cd78fcd5353ffcacb009e6b2ac7326345abe1cd4e6a4f2f844f350ab9d9b5defc203066b6e144374874e0dfbc62a93e20bceca2879279d1a311a0edeee
|
data/lib/ActionManager.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- */
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, OpenNebula Project, OpenNebula Systems #
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may */
|
4
4
|
# not use this file except in compliance with the License. You may obtain */
|
5
5
|
# a copy of the License at */
|
data/lib/CommandManager.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# --------------------------------------------------------------------------
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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
|
data/lib/DriverExecHelper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/OpenNebulaDriver.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/VirtualMachineDriver.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/cloud/CloudClient.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
@@ -50,7 +50,7 @@ end
|
|
50
50
|
module CloudClient
|
51
51
|
|
52
52
|
# OpenNebula version
|
53
|
-
VERSION = '5.2.
|
53
|
+
VERSION = '5.2.1'
|
54
54
|
|
55
55
|
# #########################################################################
|
56
56
|
# Default location for the authentication file
|
@@ -207,7 +207,7 @@ module CloudCLI
|
|
207
207
|
def version_text
|
208
208
|
version=<<EOT
|
209
209
|
OpenNebula #{CloudClient::VERSION}
|
210
|
-
Copyright 2002-
|
210
|
+
Copyright 2002-2017, OpenNebula Project, OpenNebula Systems
|
211
211
|
|
212
212
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
213
213
|
not use this file except in compliance with the License. You may obtain
|
data/lib/opennebula.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
@@ -66,5 +66,5 @@ require 'opennebula/marketplaceapp_pool'
|
|
66
66
|
module OpenNebula
|
67
67
|
|
68
68
|
# OpenNebula version
|
69
|
-
VERSION = '5.2.
|
69
|
+
VERSION = '5.2.1'
|
70
70
|
end
|
data/lib/opennebula/acl.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/acl_pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/client.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/cluster.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/datastore.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/document.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/error.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/group.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/host.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/host_pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/image.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/ldap_auth.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# ---------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/ssh_auth.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/system.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/template.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/user.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/user_pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/vdc.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/vdc_pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/x509_auth.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/xml_pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/xml_utils.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/zone.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/opennebula/zone_pool.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
data/lib/vcenter_driver.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# ---------------------------------------------------------------------------- #
|
2
|
-
# Copyright 2002-
|
2
|
+
# Copyright 2002-2017, 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 #
|
@@ -383,6 +383,9 @@ class VIClient
|
|
383
383
|
|
384
384
|
storage_pods = VIClient.get_entities(@dc.datastoreFolder, 'StoragePod')
|
385
385
|
storage_pods.each { |sp|
|
386
|
+
datastores << sp #Add StoragePod
|
387
|
+
|
388
|
+
# Add individual datastores under StoragePod
|
386
389
|
storage_pod_datastores = VIClient.get_entities(sp, 'Datastore')
|
387
390
|
if not storage_pod_datastores.empty?
|
388
391
|
datastores.concat(storage_pod_datastores)
|
@@ -514,21 +517,24 @@ class VIClient
|
|
514
517
|
next if !n[:host][0]
|
515
518
|
|
516
519
|
# Networks can be in several cluster, create one per cluster
|
517
|
-
|
520
|
+
net_names = []
|
521
|
+
Array(n[:host]).each{ |host_system|
|
518
522
|
net_name = "#{n.name} - #{host_system.parent.name}"
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
523
|
+
if !net_names.include?(net_name)
|
524
|
+
if !vnpool["VNET[BRIDGE=\"#{n[:name]}\"]/\
|
525
|
+
TEMPLATE[VCENTER_TYPE=\"Port Group\"]"]
|
526
|
+
one_nets << {
|
527
|
+
:name => net_name,
|
528
|
+
:bridge => n.name,
|
529
|
+
:cluster => host_system.parent.name,
|
530
|
+
:type => "Port Group",
|
531
|
+
:one => "NAME = \"#{net_name}\"\n" \
|
532
|
+
"BRIDGE = \"#{n[:name]}\"\n" \
|
533
|
+
"VN_MAD = \"dummy\"\n" \
|
534
|
+
"VCENTER_TYPE = \"Port Group\""
|
535
|
+
}
|
536
|
+
net_names << net_name
|
537
|
+
end
|
532
538
|
end
|
533
539
|
}
|
534
540
|
}
|
@@ -632,6 +638,7 @@ class VIClient
|
|
632
638
|
|
633
639
|
storage_pods = VIClient.get_entities(dc.datastoreFolder, 'StoragePod')
|
634
640
|
storage_pods.each { |sp|
|
641
|
+
datastores << sp # Add StoragePod
|
635
642
|
storage_pod_datastores = VIClient.get_entities(sp, 'Datastore')
|
636
643
|
if not storage_pod_datastores.empty?
|
637
644
|
datastores.concat(storage_pod_datastores)
|
@@ -639,24 +646,50 @@ class VIClient
|
|
639
646
|
}
|
640
647
|
|
641
648
|
datastores.each { |ds|
|
642
|
-
next if !ds.is_a? RbVmomi::VIM::Datastore
|
649
|
+
next if !ds.is_a? RbVmomi::VIM::Datastore and !ds.is_a? RbVmomi::VIM::StoragePod
|
643
650
|
# Find the Cluster from which to access this ds
|
644
|
-
|
645
|
-
cluster_name =
|
651
|
+
|
652
|
+
cluster_name = ""
|
653
|
+
if ds.is_a? RbVmomi::VIM::StoragePod
|
654
|
+
storage_pod_datastores = VIClient.get_entities(ds, 'Datastore')
|
655
|
+
storage_pod_datastores.each { |sp|
|
656
|
+
next if !sp.is_a? RbVmomi::VIM::Datastore
|
657
|
+
# Find the Cluster from which to access this ds
|
658
|
+
next if !sp.host[0]
|
659
|
+
cluster_name = sp.host[0].key.parent.name
|
660
|
+
break
|
661
|
+
}
|
662
|
+
else
|
663
|
+
next if !ds.host[0]
|
664
|
+
cluster_name = ds.host[0].key.parent.name
|
665
|
+
end
|
646
666
|
|
647
667
|
if !dspool["DATASTORE[NAME=\"#{ds.name}\"]"] and
|
648
668
|
hpool["HOST[NAME=\"#{cluster_name}\"]"]
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
669
|
+
if ds.is_a? RbVmomi::VIM::StoragePod
|
670
|
+
one_tmp << {
|
671
|
+
:name => "#{ds.name}",
|
672
|
+
:total_mb => ((ds.summary.capacity.to_i / 1024) / 1024),
|
673
|
+
:free_mb => ((ds.summary.freeSpace.to_i / 1024) / 1024),
|
674
|
+
:cluster => cluster_name,
|
675
|
+
:one => "NAME=#{ds.name}\n"\
|
676
|
+
"TM_MAD=vcenter\n"\
|
677
|
+
"VCENTER_CLUSTER=#{cluster_name}\n"\
|
678
|
+
"TYPE=SYSTEM_DS\n" # StoragePods must be set as SYSTEM_DS
|
679
|
+
}
|
680
|
+
else
|
681
|
+
one_tmp << {
|
682
|
+
:name => "#{ds.name}",
|
683
|
+
:total_mb => ((ds.summary.capacity.to_i / 1024) / 1024),
|
684
|
+
:free_mb => ((ds.summary.freeSpace.to_i / 1024) / 1024),
|
685
|
+
:cluster => cluster_name,
|
686
|
+
:one => "NAME=#{ds.name}\n"\
|
687
|
+
"DS_MAD=vcenter\n"\
|
688
|
+
"TM_MAD=vcenter\n"\
|
689
|
+
"VCENTER_CLUSTER=#{cluster_name}\n"
|
690
|
+
}
|
691
|
+
end
|
692
|
+
end
|
660
693
|
}
|
661
694
|
ds_templates[dc.name] = one_tmp
|
662
695
|
}
|
@@ -713,6 +746,12 @@ class VIClient
|
|
713
746
|
ds = datastores.select{|ds| ds.name == ds_name}[0]
|
714
747
|
next if !ds
|
715
748
|
|
749
|
+
# Cannot import from StoragePod directly
|
750
|
+
if ds.is_a? RbVmomi::VIM::StoragePod
|
751
|
+
raise "OpenNebula cannot import images from a StoragePod. Please import"\
|
752
|
+
" it from the datastore which is a member of the StorageDRS cluster"
|
753
|
+
end
|
754
|
+
|
716
755
|
# Create Search Spec
|
717
756
|
spec = RbVmomi::VIM::HostDatastoreBrowserSearchSpec.new
|
718
757
|
spec.query = [RbVmomi::VIM::VmDiskFileQuery.new,
|
@@ -889,7 +928,10 @@ class VIClient
|
|
889
928
|
total_mb = (ds.summary.capacity.to_i / 1024) / 1024
|
890
929
|
free_mb = (ds.summary.freeSpace.to_i / 1024) / 1024
|
891
930
|
used_mb = total_mb - free_mb
|
892
|
-
|
931
|
+
|
932
|
+
if ds.is_a? RbVmomi::VIM::Datastore
|
933
|
+
ds_type = ds.summary.type
|
934
|
+
end
|
893
935
|
|
894
936
|
"USED_MB=#{used_mb}\nFREE_MB=#{free_mb} \nTOTAL_MB=#{total_mb}"
|
895
937
|
end
|
@@ -1045,6 +1087,7 @@ class VCenterCachedHost
|
|
1045
1087
|
storage_pods = VIClient.get_entities(datacenter.datastoreFolder,
|
1046
1088
|
'StoragePod')
|
1047
1089
|
storage_pods.each { |sp|
|
1090
|
+
datastores << sp # Add Storage Pod
|
1048
1091
|
storage_pod_datastores = VIClient.get_entities(sp, 'Datastore')
|
1049
1092
|
if not storage_pod_datastores.empty?
|
1050
1093
|
datastores.concat(storage_pod_datastores)
|
@@ -1416,6 +1459,7 @@ class VCenterHost < ::OpenNebula::Host
|
|
1416
1459
|
'StoragePod')
|
1417
1460
|
|
1418
1461
|
storage_pods.each { |sp|
|
1462
|
+
datastores << sp
|
1419
1463
|
storage_pod_datastores = VIClient.get_entities(sp, 'Datastore')
|
1420
1464
|
if not storage_pod_datastores.empty?
|
1421
1465
|
datastores.concat(storage_pod_datastores)
|
@@ -1787,10 +1831,30 @@ class VCenterVm
|
|
1787
1831
|
|
1788
1832
|
vm = connection.find_vm_template(deploy_id)
|
1789
1833
|
|
1790
|
-
|
1834
|
+
spec_nics = calculate_addnic_spec(vm, mac, bridge, model)
|
1835
|
+
|
1836
|
+
spec_hash = {:deviceChange => [spec_nics]}
|
1791
1837
|
|
1792
|
-
|
1793
|
-
|
1838
|
+
#B4897 track hot plugged nics
|
1839
|
+
hotplugged_nics = vm.config.extraConfig.select do |val|
|
1840
|
+
val[:key] == "opennebula.hotplugged_nics"
|
1841
|
+
end
|
1842
|
+
|
1843
|
+
if hotplugged_nics && !hotplugged_nics.empty?
|
1844
|
+
hotplugged_nics = hotplugged_nics[0][:value].to_s.split(";")
|
1845
|
+
hotplugged_nics << mac.to_s if !hotplugged_nics.include?(mac)
|
1846
|
+
else
|
1847
|
+
hotplugged_nics = []
|
1848
|
+
hotplugged_nics << mac.to_s
|
1849
|
+
end
|
1850
|
+
|
1851
|
+
config_array = [{:key=>"opennebula.hotplugged_nics",
|
1852
|
+
:value=>hotplugged_nics.join(";")}]
|
1853
|
+
extra_config_spec = {:extraConfig =>config_array}
|
1854
|
+
|
1855
|
+
spec_hash.merge!(extra_config_spec)
|
1856
|
+
|
1857
|
+
spec = RbVmomi::VIM.VirtualMachineConfigSpec(spec_hash)
|
1794
1858
|
|
1795
1859
|
vm.ReconfigVM_Task(:spec => spec).wait_for_completion
|
1796
1860
|
end
|
@@ -1810,11 +1874,25 @@ class VCenterVm
|
|
1810
1874
|
|
1811
1875
|
raise "Could not find NIC with mac address #{mac}" if nic.nil?
|
1812
1876
|
|
1877
|
+
#B4897 track hot plugged nics
|
1878
|
+
hotplugged_nics = vm.config.extraConfig.select do |val|
|
1879
|
+
val[:key] == "opennebula.hotplugged_nics"
|
1880
|
+
end
|
1881
|
+
|
1882
|
+
config_array = []
|
1883
|
+
if hotplugged_nics && !hotplugged_nics.empty?
|
1884
|
+
hotplugged_nics = hotplugged_nics[0][:value].to_s.split(";")
|
1885
|
+
hotplugged_nics.delete(mac) # remove hotplugged nic
|
1886
|
+
config_array = [{:key=>"opennebula.hotplugged_nics",
|
1887
|
+
:value=>hotplugged_nics.join(";")}]
|
1888
|
+
end
|
1889
|
+
|
1813
1890
|
spec = {
|
1814
1891
|
:deviceChange => [
|
1815
1892
|
:operation => :remove,
|
1816
1893
|
:device => nic
|
1817
|
-
]
|
1894
|
+
],
|
1895
|
+
:extraConfig => config_array
|
1818
1896
|
}
|
1819
1897
|
|
1820
1898
|
vm.ReconfigVM_Task(:spec => spec).wait_for_completion
|
@@ -1898,6 +1976,7 @@ class VCenterVm
|
|
1898
1976
|
|
1899
1977
|
provider = pm.provider_summary [@vm].first
|
1900
1978
|
refresh_rate = provider.refreshRate
|
1979
|
+
max_samples = 0
|
1901
1980
|
|
1902
1981
|
vmid = -1
|
1903
1982
|
extraconfig_vmid = @vm.config.extraConfig.select{|val|
|
@@ -1909,54 +1988,56 @@ class VCenterVm
|
|
1909
1988
|
if vmid < 0
|
1910
1989
|
@nettx = 0
|
1911
1990
|
@netrx = 0
|
1912
|
-
id_not_found = "Could not retrieve VM ID from extra configuration for "\
|
1913
|
-
"vCenter's VM UUID #{@vm.config.uuid}"
|
1914
1991
|
else
|
1915
1992
|
one_vm = OpenNebula::VirtualMachine.new_with_id(vmid, OpenNebula::Client.new)
|
1916
1993
|
one_vm.info
|
1917
1994
|
stats = []
|
1995
|
+
previous_nettx = 0
|
1996
|
+
previous_netrx = 0
|
1997
|
+
if one_vm["MONITORING/NETTX"]
|
1998
|
+
previous_nettx = one_vm["MONITORING/NETTX"].to_i
|
1999
|
+
end
|
2000
|
+
if one_vm["MONITORING/NETRX"]
|
2001
|
+
previous_netrx = one_vm["MONITORING/NETRX"].to_i
|
2002
|
+
end
|
1918
2003
|
|
1919
|
-
if(one_vm["
|
2004
|
+
if(one_vm["MONITORING/LAST_MON"] && one_vm["MONITORING/LAST_MON"].to_i != 0 )
|
1920
2005
|
#Real time data stores max 1 hour. 1 minute has 3 samples
|
1921
|
-
interval = (Time.now.to_i - one_vm["
|
1922
|
-
|
2006
|
+
interval = (Time.now.to_i - one_vm["MONITORING/LAST_MON"].to_i)
|
2007
|
+
interval = 3601 if interval < 0 #Safety check
|
1923
2008
|
#If last poll was more than hour ago get 3 minutes,
|
1924
2009
|
#else calculate how many samples since last poll
|
1925
|
-
|
1926
|
-
|
2010
|
+
max_samples = interval > 3600 ? 9 : (interval / refresh_rate) + 1
|
2011
|
+
else
|
2012
|
+
# First poll, get at least latest 3 minutes = 9 samples
|
2013
|
+
max_samples = 9
|
2014
|
+
end
|
1927
2015
|
|
1928
|
-
|
2016
|
+
stats = pm.retrieve_stats(
|
1929
2017
|
[@vm],
|
1930
2018
|
['net.transmitted','net.bytesRx','net.bytesTx','net.received'],
|
1931
2019
|
{interval:refresh_rate, max_samples: max_samples}
|
1932
|
-
|
1933
|
-
else
|
1934
|
-
# First poll, get at least latest 3 minutes = 9 samples
|
1935
|
-
stats = pm.retrieve_stats(
|
1936
|
-
[@vm],
|
1937
|
-
['net.transmitted','net.bytesRx'],
|
1938
|
-
{interval:refresh_rate, max_samples: 9}
|
1939
|
-
)
|
1940
|
-
end
|
2020
|
+
)
|
1941
2021
|
|
1942
2022
|
if stats.empty? || stats.first[1][:metrics].empty?
|
1943
|
-
@nettx = 0
|
1944
|
-
@netrx = 0
|
2023
|
+
@nettx = 0 + previous_nettx
|
2024
|
+
@netrx = 0 + previous_netrx
|
1945
2025
|
else
|
1946
2026
|
metrics = stats.first[1][:metrics]
|
1947
|
-
|
1948
2027
|
nettx_kbpersec = 0
|
1949
|
-
metrics['net.transmitted'].each { |sample|
|
1950
|
-
nettx_kbpersec += sample
|
1951
|
-
}
|
1952
|
-
|
1953
2028
|
netrx_kbpersec = 0
|
1954
|
-
|
1955
|
-
|
2029
|
+
(0..max_samples-1).each { |index|
|
2030
|
+
tx = [0]
|
2031
|
+
rx = [0]
|
2032
|
+
tx << metrics['net.transmitted'][index] if metrics['net.transmitted']
|
2033
|
+
tx << metrics['net.bytesTx'][index] if metrics['net.bytesTx']
|
2034
|
+
rx << metrics['net.received'][index] if metrics['net.received']
|
2035
|
+
rx << metrics['net.bytesRx'][index] if metrics['net.bytesRx']
|
2036
|
+
nettx_kbpersec += tx.max
|
2037
|
+
netrx_kbpersec += rx.max
|
1956
2038
|
}
|
1957
|
-
|
1958
|
-
@
|
1959
|
-
@netrx = (netrx_kbpersec * 1024 * refresh_rate).to_i
|
2039
|
+
@nettx = (nettx_kbpersec * 1000 * refresh_rate).to_i + previous_nettx
|
2040
|
+
@netrx = (netrx_kbpersec * 1000 * refresh_rate).to_i + previous_netrx
|
1960
2041
|
end
|
1961
2042
|
end
|
1962
2043
|
end
|
@@ -1974,6 +2055,7 @@ class VCenterVm
|
|
1974
2055
|
str_info << "GUEST_IP_ADDRESSES=\\\"" <<
|
1975
2056
|
@guest_ip_addresses.to_s << "\\\" "
|
1976
2057
|
end
|
2058
|
+
str_info << "LAST_MON=" << Time.now.to_i.to_s << " "
|
1977
2059
|
str_info << "#{POLL_ATTRIBUTE[:state]}=" << @state << " "
|
1978
2060
|
str_info << "#{POLL_ATTRIBUTE[:cpu]}=" << @used_cpu.to_s << " "
|
1979
2061
|
str_info << "#{POLL_ATTRIBUTE[:memory]}=" << @used_memory.to_s << " "
|
@@ -2366,6 +2448,9 @@ private
|
|
2366
2448
|
|
2367
2449
|
storage_pods = VIClient.get_entities(connection.dc.datastoreFolder,
|
2368
2450
|
'StoragePod')
|
2451
|
+
|
2452
|
+
storpod = storage_pods.select{|sp| sp.name == datastore}
|
2453
|
+
|
2369
2454
|
storage_pods.each { |sp|
|
2370
2455
|
storage_pod_datastores = VIClient.get_entities(sp, 'Datastore')
|
2371
2456
|
if not storage_pod_datastores.empty?
|
@@ -2373,17 +2458,20 @@ private
|
|
2373
2458
|
end
|
2374
2459
|
}
|
2375
2460
|
|
2376
|
-
ds
|
2377
|
-
|
2461
|
+
ds = datastores.select{|ds| ds.name == datastore}[0]
|
2462
|
+
|
2463
|
+
raise "Cannot find datastore #{datastore}" if !ds && !storpod
|
2464
|
+
|
2378
2465
|
end
|
2379
2466
|
|
2380
2467
|
relocate_spec_params = {
|
2381
|
-
:diskMoveType => :moveChildMostDiskBacking,
|
2382
2468
|
:pool => rp
|
2383
2469
|
}
|
2384
2470
|
|
2385
2471
|
relocate_spec_params[:datastore] = ds if datastore
|
2386
2472
|
|
2473
|
+
relocate_spec_params[:diskMoveType] = :moveChildMostDiskBacking if ds
|
2474
|
+
|
2387
2475
|
relocate_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(
|
2388
2476
|
relocate_spec_params)
|
2389
2477
|
|
@@ -2406,45 +2494,82 @@ private
|
|
2406
2494
|
vim = connection.vim
|
2407
2495
|
|
2408
2496
|
if !customization.nil?
|
2409
|
-
|
2410
|
-
|
2411
|
-
|
2497
|
+
begin
|
2498
|
+
custom_spec = vim.serviceContent.customizationSpecManager.
|
2499
|
+
GetCustomizationSpec(:name => customization.text)
|
2412
2500
|
|
2413
|
-
|
2414
|
-
|
2415
|
-
|
2416
|
-
|
2417
|
-
|
2501
|
+
if custom_spec && spec=custom_spec.spec
|
2502
|
+
clone_parameters[:customization] = spec
|
2503
|
+
else
|
2504
|
+
raise "Error getting customization spec"
|
2505
|
+
end
|
2418
2506
|
|
2419
|
-
|
2420
|
-
|
2421
|
-
|
2507
|
+
rescue
|
2508
|
+
raise "Customization spec '#{customization.text}' not found"
|
2509
|
+
end
|
2422
2510
|
end
|
2423
2511
|
|
2424
2512
|
clone_spec = RbVmomi::VIM.VirtualMachineCloneSpec(clone_parameters)
|
2425
2513
|
|
2426
|
-
|
2514
|
+
if storpod && !storpod.empty? && storpod[0].is_a?(RbVmomi::VIM::StoragePod)
|
2515
|
+
|
2516
|
+
storage_manager = vim.serviceContent.storageResourceManager
|
2517
|
+
|
2518
|
+
pod_spec = RbVmomi::VIM.StorageDrsPodSelectionSpec(storagePod: storpod[0])
|
2519
|
+
|
2520
|
+
storage_spec = RbVmomi::VIM.StoragePlacementSpec(
|
2521
|
+
type: 'clone',
|
2522
|
+
cloneName: vcenter_name,
|
2523
|
+
folder: vc_template.parent,
|
2524
|
+
podSelectionSpec: pod_spec,
|
2525
|
+
vm: vc_template,
|
2526
|
+
cloneSpec: clone_spec
|
2527
|
+
)
|
2528
|
+
|
2529
|
+
result = storage_manager.RecommendDatastores(storageSpec: storage_spec)
|
2530
|
+
|
2531
|
+
recommendation = result.recommendations[0]
|
2532
|
+
|
2533
|
+
key = recommendation.key ||= ''
|
2534
|
+
|
2535
|
+
if key == ''
|
2536
|
+
raise "Missing Datastore recommendation for StoragePod (Storage DRS)"
|
2537
|
+
end
|
2538
|
+
|
2539
|
+
begin
|
2540
|
+
apply_sr = storage_manager.ApplyStorageDrsRecommendation_Task(key: [key]).wait_for_completion
|
2541
|
+
vm = apply_sr.vm
|
2542
|
+
rescue Exception => e
|
2543
|
+
raise "Cannot clone VM Template to StoragePod: #{e.message}"
|
2544
|
+
end
|
2545
|
+
else
|
2546
|
+
|
2547
|
+
begin
|
2427
2548
|
vm = vc_template.CloneVM_Task(
|
2428
2549
|
:folder => vc_template.parent,
|
2429
2550
|
:name => vcenter_name,
|
2430
2551
|
:spec => clone_spec).wait_for_completion
|
2431
|
-
|
2552
|
+
rescue Exception => e
|
2432
2553
|
|
2433
|
-
|
2434
|
-
|
2435
|
-
|
2554
|
+
if !e.message.start_with?('DuplicateName')
|
2555
|
+
raise "Cannot clone VM Template: #{e.message}"
|
2556
|
+
end
|
2436
2557
|
|
2437
|
-
|
2558
|
+
vm = connection.find_vm(vcenter_name)
|
2438
2559
|
|
2439
|
-
|
2560
|
+
raise "Cannot clone VM Template" if vm.nil?
|
2561
|
+
|
2562
|
+
vm.Destroy_Task.wait_for_completion
|
2563
|
+
vm = vc_template.CloneVM_Task(
|
2564
|
+
:folder => vc_template.parent,
|
2565
|
+
:name => vcenter_name,
|
2566
|
+
:spec => clone_spec).wait_for_completion
|
2567
|
+
end
|
2440
2568
|
|
2441
|
-
vm.Destroy_Task.wait_for_completion
|
2442
|
-
vm = vc_template.CloneVM_Task(
|
2443
|
-
:folder => vc_template.parent,
|
2444
|
-
:name => vcenter_name,
|
2445
|
-
:spec => clone_spec).wait_for_completion
|
2446
2569
|
end
|
2447
2570
|
|
2571
|
+
|
2572
|
+
|
2448
2573
|
reconfigure_vm(vm, xml, true, hostname)
|
2449
2574
|
|
2450
2575
|
# Power on the VM
|
@@ -2573,29 +2698,84 @@ private
|
|
2573
2698
|
:value=>context_text}]
|
2574
2699
|
end
|
2575
2700
|
|
2576
|
-
if config_array != []
|
2577
|
-
context_vnc_spec = {:extraConfig =>config_array}
|
2578
|
-
end
|
2579
|
-
|
2580
2701
|
device_change = []
|
2581
2702
|
|
2582
2703
|
# NIC section, build the reconfig hash
|
2583
2704
|
|
2584
2705
|
nics = xml.root.get_elements("/VM/TEMPLATE/NIC")
|
2585
|
-
nic_spec = {}
|
2586
2706
|
|
2587
2707
|
# If the VM is not new, avoid readding NiCs
|
2588
2708
|
if !newvm
|
2709
|
+
|
2710
|
+
nic_array = []
|
2711
|
+
|
2712
|
+
# B4897 - Get mac of NICs that were hot-plugged from vCenter extraConfig
|
2713
|
+
hotplugged_nics = []
|
2714
|
+
extraconfig_nics = vm.config.extraConfig.select do |val|
|
2715
|
+
val[:key] == "opennebula.hotplugged_nics"
|
2716
|
+
end
|
2717
|
+
|
2718
|
+
if extraconfig_nics && !extraconfig_nics.empty?
|
2719
|
+
hotplugged_nics = extraconfig_nics[0][:value].to_s.split(";")
|
2720
|
+
end
|
2721
|
+
|
2722
|
+
# Get MACs from NICs inside VM template
|
2723
|
+
one_mac_addresses = Array.new
|
2724
|
+
nics.each{|nic|
|
2725
|
+
mac = nic.elements["MAC"].text
|
2726
|
+
one_mac_addresses << mac
|
2727
|
+
# B4897 - Add NICs that were attached in POWEROFF
|
2728
|
+
if !hotplugged_nics.include?(mac)
|
2729
|
+
hotplugged_nics << mac.to_s
|
2730
|
+
end
|
2731
|
+
}
|
2732
|
+
|
2589
2733
|
vm.config.hardware.device.each{ |dv|
|
2590
2734
|
if is_nic?(dv)
|
2591
2735
|
nics.each{|nic|
|
2592
|
-
if nic.elements["MAC"].text == dv.macAddress
|
2593
|
-
nic.elements["BRIDGE"].text == dv.deviceInfo.summary
|
2736
|
+
if nic.elements["MAC"].text == dv.macAddress
|
2594
2737
|
nics.delete(nic)
|
2595
2738
|
end
|
2596
2739
|
}
|
2740
|
+
# B4897 - Remove detached NICs from vCenter that were unplugged in POWEROFF
|
2741
|
+
if !one_mac_addresses.include?(dv.macAddress) && hotplugged_nics.include?(dv.macAddress)
|
2742
|
+
nic_array << { :operation => :remove, :device => dv}
|
2743
|
+
hotplugged_nics.delete(dv.macAddress)
|
2744
|
+
end
|
2597
2745
|
end
|
2598
2746
|
}
|
2747
|
+
|
2748
|
+
# B4897 - Save what NICs have been attached by OpenNebula in vCenter VM extraconfig
|
2749
|
+
if !hotplugged_nics.empty?
|
2750
|
+
config_array << {
|
2751
|
+
:key => 'opennebula.hotplugged_nics',
|
2752
|
+
:value => hotplugged_nics.join(";")
|
2753
|
+
}
|
2754
|
+
else
|
2755
|
+
config_array << {
|
2756
|
+
:key => 'opennebula.hotplugged_nics',
|
2757
|
+
:value => ""
|
2758
|
+
}
|
2759
|
+
end
|
2760
|
+
|
2761
|
+
device_change += nic_array
|
2762
|
+
else
|
2763
|
+
# B4897 - Add NICs that have been added to the VM template
|
2764
|
+
# to the hotplugged_nics extraconfig so we can track what must be removed
|
2765
|
+
|
2766
|
+
# Get MACs from NICs inside VM template to track NICs added by OpenNebula
|
2767
|
+
one_mac_addresses = []
|
2768
|
+
nics.each{|nic|
|
2769
|
+
one_mac_addresses << nic.elements["MAC"].text
|
2770
|
+
}
|
2771
|
+
|
2772
|
+
if !one_mac_addresses.empty?
|
2773
|
+
config_array << {
|
2774
|
+
:key => 'opennebula.hotplugged_nics',
|
2775
|
+
:value => one_mac_addresses.join(";")
|
2776
|
+
}
|
2777
|
+
end
|
2778
|
+
|
2599
2779
|
end
|
2600
2780
|
|
2601
2781
|
if !nics.nil?
|
@@ -2669,6 +2849,10 @@ private
|
|
2669
2849
|
:memoryMB => memory }
|
2670
2850
|
|
2671
2851
|
# Perform the VM reconfiguration
|
2852
|
+
if config_array != []
|
2853
|
+
context_vnc_spec = {:extraConfig =>config_array}
|
2854
|
+
end
|
2855
|
+
|
2672
2856
|
spec_hash = context_vnc_spec.merge(capacity_spec)
|
2673
2857
|
if device_change.length > 0
|
2674
2858
|
spec_hash.merge!({ :deviceChange => device_change })
|
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: 5.2.
|
4
|
+
version: 5.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenNebula
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
141
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.5.
|
142
|
+
rubygems_version: 2.5.2
|
143
143
|
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: OpenNebula Client API
|