opennebula 5.12.10 → 5.13.80.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ActionManager.rb +1 -1
  3. data/lib/CommandManager.rb +1 -1
  4. data/lib/DriverExecHelper.rb +44 -28
  5. data/lib/OpenNebulaDriver.rb +8 -4
  6. data/lib/VirtualMachineDriver.rb +9 -2
  7. data/lib/cloud/CloudClient.rb +3 -3
  8. data/lib/datacenter.rb +1258 -0
  9. data/lib/datastore.rb +1025 -0
  10. data/lib/distributed_firewall.rb +280 -0
  11. data/lib/file_helper.rb +370 -0
  12. data/lib/host.rb +1517 -0
  13. data/lib/logical_port.rb +50 -0
  14. data/lib/logical_switch.rb +77 -0
  15. data/lib/memoize.rb +74 -0
  16. data/lib/models/role.rb +1126 -0
  17. data/lib/models/service.rb +709 -0
  18. data/lib/models.rb +32 -0
  19. data/lib/network.rb +635 -0
  20. data/lib/nsx_client.rb +144 -0
  21. data/lib/nsx_component.rb +28 -0
  22. data/lib/nsx_constants.rb +149 -0
  23. data/lib/nsx_driver.rb +78 -0
  24. data/lib/nsx_error.rb +77 -0
  25. data/lib/nsx_rule.rb +193 -0
  26. data/lib/nsxt_client.rb +176 -0
  27. data/lib/nsxt_dfw.rb +196 -0
  28. data/lib/nsxt_logical_port.rb +94 -0
  29. data/lib/nsxt_rule.rb +188 -0
  30. data/lib/nsxt_tz.rb +38 -0
  31. data/lib/nsxv_client.rb +176 -0
  32. data/lib/nsxv_dfw.rb +202 -0
  33. data/lib/nsxv_logical_port.rb +107 -0
  34. data/lib/nsxv_rule.rb +172 -0
  35. data/lib/nsxv_tz.rb +41 -0
  36. data/lib/opaque_network.rb +134 -0
  37. data/lib/opennebula/acl.rb +1 -1
  38. data/lib/opennebula/acl_pool.rb +1 -1
  39. data/lib/opennebula/client.rb +1 -1
  40. data/lib/opennebula/cluster.rb +1 -1
  41. data/lib/opennebula/cluster_pool.rb +1 -1
  42. data/lib/opennebula/datastore.rb +1 -1
  43. data/lib/opennebula/datastore_pool.rb +1 -1
  44. data/lib/opennebula/document.rb +8 -29
  45. data/lib/opennebula/document_json.rb +42 -12
  46. data/lib/opennebula/document_pool.rb +1 -1
  47. data/lib/opennebula/document_pool_json.rb +1 -1
  48. data/lib/opennebula/error.rb +4 -1
  49. data/lib/opennebula/flow/grammar.rb +1195 -0
  50. data/lib/opennebula/flow/service_pool.rb +190 -0
  51. data/lib/opennebula/flow/service_template.rb +572 -0
  52. data/lib/opennebula/flow/service_template_ext.rb +84 -0
  53. data/lib/opennebula/flow/service_template_pool.rb +32 -0
  54. data/lib/opennebula/flow/validator.rb +499 -0
  55. data/lib/opennebula/flow.rb +23 -0
  56. data/lib/opennebula/group.rb +1 -1
  57. data/lib/opennebula/group_pool.rb +1 -1
  58. data/lib/opennebula/hook.rb +5 -12
  59. data/lib/opennebula/hook_log.rb +1 -1
  60. data/lib/opennebula/hook_pool.rb +1 -1
  61. data/lib/opennebula/host.rb +1 -1
  62. data/lib/opennebula/host_pool.rb +1 -1
  63. data/lib/opennebula/image.rb +17 -14
  64. data/lib/opennebula/image_pool.rb +1 -1
  65. data/lib/opennebula/ldap_auth.rb +1 -1
  66. data/lib/opennebula/ldap_auth_spec.rb +1 -1
  67. data/lib/opennebula/lockable_ext.rb +163 -0
  68. data/lib/opennebula/marketplace.rb +1 -1
  69. data/lib/opennebula/marketplace_pool.rb +1 -1
  70. data/lib/opennebula/marketplaceapp.rb +9 -119
  71. data/lib/opennebula/marketplaceapp_ext.rb +522 -0
  72. data/lib/opennebula/marketplaceapp_pool.rb +1 -1
  73. data/lib/opennebula/oneflow_client.rb +4 -3
  74. data/lib/opennebula/pool.rb +4 -3
  75. data/lib/opennebula/pool_element.rb +1 -1
  76. data/lib/opennebula/security_group.rb +1 -1
  77. data/lib/opennebula/security_group_pool.rb +1 -1
  78. data/lib/opennebula/server_cipher_auth.rb +1 -1
  79. data/lib/opennebula/server_x509_auth.rb +1 -1
  80. data/lib/opennebula/ssh_auth.rb +1 -1
  81. data/lib/opennebula/system.rb +1 -1
  82. data/lib/opennebula/template.rb +4 -13
  83. data/lib/opennebula/template_ext.rb +325 -0
  84. data/lib/opennebula/template_pool.rb +1 -1
  85. data/lib/opennebula/user.rb +26 -2
  86. data/lib/opennebula/user_pool.rb +1 -1
  87. data/lib/opennebula/utils.rb +1 -1
  88. data/lib/opennebula/vdc.rb +1 -1
  89. data/lib/opennebula/vdc_pool.rb +1 -1
  90. data/lib/opennebula/virtual_machine.rb +25 -207
  91. data/lib/opennebula/virtual_machine_ext.rb +469 -0
  92. data/lib/opennebula/virtual_machine_pool.rb +1 -1
  93. data/lib/opennebula/virtual_network.rb +4 -10
  94. data/lib/opennebula/virtual_network_pool.rb +1 -1
  95. data/lib/opennebula/virtual_router.rb +4 -12
  96. data/lib/opennebula/virtual_router_pool.rb +1 -1
  97. data/lib/opennebula/vm_group.rb +4 -11
  98. data/lib/opennebula/vm_group_pool.rb +1 -1
  99. data/lib/opennebula/vntemplate.rb +4 -13
  100. data/lib/opennebula/vntemplate_pool.rb +1 -1
  101. data/lib/opennebula/wait_ext.rb +222 -0
  102. data/lib/opennebula/x509_auth.rb +1 -1
  103. data/lib/opennebula/xml_element.rb +1 -1
  104. data/lib/opennebula/xml_pool.rb +1 -1
  105. data/lib/opennebula/xml_utils.rb +1 -1
  106. data/lib/opennebula/zone.rb +1 -1
  107. data/lib/opennebula/zone_pool.rb +1 -1
  108. data/lib/opennebula.rb +5 -2
  109. data/lib/rest_client.rb +201 -0
  110. data/lib/scripts_common.rb +180 -0
  111. data/lib/transport_zone.rb +43 -0
  112. data/lib/vcenter_driver.rb +13 -12
  113. data/lib/vcenter_importer.rb +616 -0
  114. data/lib/vi_client.rb +281 -0
  115. data/lib/vi_helper.rb +312 -0
  116. data/lib/virtual_machine.rb +3477 -0
  117. data/lib/virtual_wire.rb +158 -0
  118. data/lib/vm_device.rb +80 -0
  119. data/lib/vm_disk.rb +202 -0
  120. data/lib/vm_folder.rb +69 -0
  121. data/lib/vm_helper.rb +30 -0
  122. data/lib/vm_monitor.rb +303 -0
  123. data/lib/vm_nic.rb +70 -0
  124. data/lib/vm_template.rb +1961 -0
  125. data/lib/vmm_importer.rb +121 -0
  126. metadata +142 -29
@@ -0,0 +1,190 @@
1
+ # -------------------------------------------------------------------------- #
2
+ # Copyright 2002-2021, OpenNebula Project, OpenNebula Systems #
3
+ # #
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
+ # not use this file except in compliance with the License. You may obtain #
6
+ # a copy of the License at #
7
+ # #
8
+ # http://www.apache.org/licenses/LICENSE-2.0 #
9
+ # #
10
+ # Unless required by applicable law or agreed to in writing, software #
11
+ # distributed under the License is distributed on an "AS IS" BASIS, #
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
+ # See the License for the specific language governing permissions and #
14
+ # limitations under the License. #
15
+ #--------------------------------------------------------------------------- #
16
+
17
+ module OpenNebula
18
+
19
+ # ServicePool class
20
+ class OpenNebulaServicePool < DocumentPoolJSON
21
+
22
+ DOCUMENT_TYPE = 100
23
+
24
+ def initialize(client, user_id = -2)
25
+ super(client, user_id)
26
+ end
27
+
28
+ def factory(element_xml)
29
+ service = OpenNebula::Service.new(element_xml, @client)
30
+ service.load_body
31
+ service
32
+ end
33
+
34
+ end
35
+
36
+ # ServicePool class
37
+ class ServicePool < Pool
38
+
39
+ # rubocop:disable Style/ClassVars
40
+ @@mutex = Mutex.new
41
+ @@mutex_hash = {}
42
+ # rubocop:enable Style/ClassVars
43
+
44
+ # Class constructor
45
+ #
46
+ # @param [OpenNebula::Client] client the xml-rpc client
47
+ # @param [Integer] user_id the filter flag, see
48
+ # http://docs.opennebula.io/stable/integration/system_interfaces/api.html
49
+ #
50
+ # @return [DocumentPool] the new object
51
+ def initialize(cloud_auth, client)
52
+ # TODO, what if cloud_auth is nil?
53
+ @cloud_auth = cloud_auth
54
+ @client = client
55
+ @one_pool = nil
56
+
57
+ if @client
58
+ info = Nokogiri::XML(@client.call('user.info', -1))
59
+ @user_id = Integer(info.xpath('/USER/ID').text)
60
+ end
61
+
62
+ super('DOCUMENT_POOL', 'DOCUMENT', @client)
63
+ end
64
+
65
+ def client
66
+ # If there's a client defined use it
67
+ return @client unless @client.nil?
68
+
69
+ # If not, get one via cloud_auth
70
+ @cloud_auth.client
71
+ end
72
+
73
+ def info
74
+ osp = OpenNebulaServicePool.new(client)
75
+ rc = osp.info
76
+
77
+ @one_pool = osp
78
+
79
+ rc
80
+ end
81
+
82
+ def info_all
83
+ osp = OpenNebulaServicePool.new(client)
84
+ rc = osp.info_all
85
+
86
+ @one_pool = osp
87
+
88
+ rc
89
+ end
90
+
91
+ # rubocop:disable Lint/ToJSON
92
+ def to_json
93
+ # rubocop:enable Lint/ToJSON
94
+ @one_pool.to_json
95
+ end
96
+
97
+ def each(&block)
98
+ return if @one_pool.nil?
99
+
100
+ @one_pool.each(&block)
101
+ end
102
+
103
+ # Iterates over pool pages
104
+ # size:: nil => default page size
105
+ # > 0 => page size
106
+ # state state of objects
107
+ def each_page(size)
108
+ loop_page(size, Service::DOCUMENT_TYPE, false) do |element, page|
109
+ page.each("//#{element}") do |obj|
110
+ service = Service.new_with_id(obj['ID'], @client)
111
+ service.info
112
+
113
+ yield(service)
114
+ end
115
+
116
+ size
117
+ end
118
+ end
119
+
120
+ # Retrieves a Service element from OpenNebula. The Service::info()
121
+ # method is called
122
+ #
123
+ # @param [Integer] service_id Numerical Id of the service to retrieve
124
+ # @yieldparam [Service] this block will have the service's mutex locked.
125
+ # The mutex will be unlocked after the block execution.
126
+ #
127
+ # @return [Service, OpenNebula::Error] The Service in case of success
128
+ def get(service_id, external_client = nil, &block)
129
+ service_id = service_id.to_i if service_id
130
+ aux_client = nil
131
+
132
+ if external_client.nil?
133
+ aux_client = client
134
+ else
135
+ aux_client = external_client
136
+ end
137
+
138
+ service = Service.new_with_id(service_id, aux_client)
139
+
140
+ if block_given?
141
+ obj_mutex = nil
142
+ entry = nil
143
+
144
+ @@mutex.synchronize do
145
+ # entry is an array of [Mutex, waiting]
146
+ # waiting is the number of threads waiting on this mutex
147
+ entry = @@mutex_hash[service_id]
148
+
149
+ if entry.nil?
150
+ entry = [Mutex.new, 0]
151
+ @@mutex_hash[service_id] = entry
152
+ end
153
+
154
+ obj_mutex = entry[0]
155
+ entry[1] = entry[1] + 1
156
+
157
+ if @@mutex_hash.size > 10000
158
+ @@mutex_hash.delete_if do |_s_id, entry_loop|
159
+ entry_loop[1] == 0
160
+ end
161
+ end
162
+ end
163
+
164
+ rc = obj_mutex.synchronize do
165
+ rc = service.info
166
+
167
+ if OpenNebula.is_error?(rc)
168
+ return rc
169
+ end
170
+
171
+ block.call(service)
172
+ end
173
+
174
+ @@mutex.synchronize do
175
+ entry[1] = entry[1] - 1
176
+ end
177
+
178
+ if OpenNebula.is_error?(rc)
179
+ return rc
180
+ end
181
+ else
182
+ service.info
183
+ end
184
+
185
+ service
186
+ end
187
+
188
+ end
189
+
190
+ end