opennebula 5.12.9 → 6.0.0.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 (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 +1257 -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.rb +32 -0
  17. data/lib/models/role.rb +1126 -0
  18. data/lib/models/service.rb +709 -0
  19. data/lib/network.rb +699 -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.rb +5 -2
  38. data/lib/opennebula/acl.rb +1 -1
  39. data/lib/opennebula/acl_pool.rb +1 -1
  40. data/lib/opennebula/client.rb +10 -2
  41. data/lib/opennebula/cluster.rb +1 -1
  42. data/lib/opennebula/cluster_pool.rb +1 -1
  43. data/lib/opennebula/datastore.rb +1 -1
  44. data/lib/opennebula/datastore_pool.rb +1 -1
  45. data/lib/opennebula/document.rb +8 -29
  46. data/lib/opennebula/document_json.rb +42 -12
  47. data/lib/opennebula/document_pool.rb +1 -1
  48. data/lib/opennebula/document_pool_json.rb +1 -1
  49. data/lib/opennebula/error.rb +4 -1
  50. data/lib/opennebula/flow.rb +23 -0
  51. data/lib/opennebula/flow/grammar.rb +1195 -0
  52. data/lib/opennebula/flow/service_pool.rb +190 -0
  53. data/lib/opennebula/flow/service_template.rb +608 -0
  54. data/lib/opennebula/flow/service_template_ext.rb +84 -0
  55. data/lib/opennebula/flow/service_template_pool.rb +32 -0
  56. data/lib/opennebula/flow/validator.rb +499 -0
  57. data/lib/opennebula/group.rb +1 -1
  58. data/lib/opennebula/group_pool.rb +1 -1
  59. data/lib/opennebula/hook.rb +5 -12
  60. data/lib/opennebula/hook_log.rb +1 -1
  61. data/lib/opennebula/hook_pool.rb +1 -1
  62. data/lib/opennebula/host.rb +1 -1
  63. data/lib/opennebula/host_pool.rb +1 -1
  64. data/lib/opennebula/image.rb +19 -14
  65. data/lib/opennebula/image_pool.rb +1 -1
  66. data/lib/opennebula/ldap_auth.rb +1 -1
  67. data/lib/opennebula/ldap_auth_spec.rb +1 -1
  68. data/lib/opennebula/lockable_ext.rb +163 -0
  69. data/lib/opennebula/marketplace.rb +1 -1
  70. data/lib/opennebula/marketplace_pool.rb +1 -1
  71. data/lib/opennebula/marketplaceapp.rb +9 -119
  72. data/lib/opennebula/marketplaceapp_ext.rb +586 -0
  73. data/lib/opennebula/marketplaceapp_pool.rb +1 -1
  74. data/lib/opennebula/oneflow_client.rb +4 -3
  75. data/lib/opennebula/pool.rb +6 -3
  76. data/lib/opennebula/pool_element.rb +1 -1
  77. data/lib/opennebula/security_group.rb +1 -1
  78. data/lib/opennebula/security_group_pool.rb +1 -1
  79. data/lib/opennebula/server_cipher_auth.rb +1 -1
  80. data/lib/opennebula/server_x509_auth.rb +1 -1
  81. data/lib/opennebula/ssh_auth.rb +1 -1
  82. data/lib/opennebula/system.rb +1 -1
  83. data/lib/opennebula/template.rb +4 -13
  84. data/lib/opennebula/template_ext.rb +342 -0
  85. data/lib/opennebula/template_pool.rb +1 -1
  86. data/lib/opennebula/user.rb +26 -2
  87. data/lib/opennebula/user_pool.rb +1 -1
  88. data/lib/opennebula/utils.rb +1 -1
  89. data/lib/opennebula/vdc.rb +1 -1
  90. data/lib/opennebula/vdc_pool.rb +1 -1
  91. data/lib/opennebula/virtual_machine.rb +26 -206
  92. data/lib/opennebula/virtual_machine_ext.rb +469 -0
  93. data/lib/opennebula/virtual_machine_pool.rb +1 -1
  94. data/lib/opennebula/virtual_network.rb +4 -10
  95. data/lib/opennebula/virtual_network_pool.rb +1 -1
  96. data/lib/opennebula/virtual_router.rb +4 -12
  97. data/lib/opennebula/virtual_router_pool.rb +1 -1
  98. data/lib/opennebula/vm_group.rb +4 -11
  99. data/lib/opennebula/vm_group_pool.rb +1 -1
  100. data/lib/opennebula/vntemplate.rb +4 -13
  101. data/lib/opennebula/vntemplate_pool.rb +1 -1
  102. data/lib/opennebula/wait_ext.rb +257 -0
  103. data/lib/opennebula/x509_auth.rb +1 -1
  104. data/lib/opennebula/xml_element.rb +1 -1
  105. data/lib/opennebula/xml_pool.rb +1 -1
  106. data/lib/opennebula/xml_utils.rb +1 -1
  107. data/lib/opennebula/zone.rb +1 -1
  108. data/lib/opennebula/zone_pool.rb +1 -1
  109. data/lib/rest_client.rb +201 -0
  110. data/lib/scripts_common.rb +183 -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 +313 -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 +1963 -0
  125. data/lib/vmm_importer.rb +121 -0
  126. metadata +140 -27
@@ -0,0 +1,121 @@
1
+ module VCenterDriver
2
+
3
+ # Functionality to import vCenter VMs into OpenNebula
4
+ class VmmImporter < VCenterDriver::VcImporter
5
+
6
+ def initialize(one_client, vi_client)
7
+ super(one_client, vi_client)
8
+ @one_class = OpenNebula::VirtualMachine
9
+ @defaults = {}
10
+ end
11
+
12
+ def list(key, list)
13
+ @list = { key => list }
14
+ end
15
+
16
+ def request_vnc(vc_vm)
17
+ one_vm = vc_vm.one_item
18
+ vnc_port = one_vm['TEMPLATE/GRAPHICS/PORT']
19
+ elapsed_seconds = 0
20
+
21
+ # Let's update the info to gather VNC port
22
+ until vnc_port || elapsed_seconds > 30
23
+ sleep(1)
24
+ one_vm.info
25
+ vnc_port = one_vm['TEMPLATE/GRAPHICS/PORT']
26
+ elapsed_seconds += 1
27
+ end
28
+
29
+ return unless vnc_port
30
+
31
+ extraconfig = []
32
+ extraconfig += vc_vm.extraconfig_vnc
33
+ spec_hash = { :extraConfig => extraconfig }
34
+ spec = RbVmomi::VIM.VirtualMachineConfigSpec(spec_hash)
35
+ vc_vm.item.ReconfigVM_Task(:spec => spec).wait_for_completion
36
+ end
37
+
38
+ def build
39
+ xml = OpenNebula::VirtualMachine.build_xml
40
+ OpenNebula::VirtualMachine.new(xml, @one_client)
41
+ end
42
+
43
+ def import(selected)
44
+ import_tmplt = selected['IMPORT_TEMPLATE']
45
+ import_tmplt = Base64.decode64(import_tmplt) if import_tmplt
46
+ vm_ref = selected['DEPLOY_ID'] || selected[:wild]['DEPLOY_ID']
47
+ vm = selected[:one_item] || build
48
+ template = selected[:template] || import_tmplt
49
+ host_id = selected[:host] || @list.keys[0]
50
+
51
+ vc_uuid = @vi_client.vim.serviceContent.about.instanceUuid
52
+ vc_name = @vi_client.vim.host
53
+ dpool, ipool, npool, hpool = create_pools
54
+
55
+ vc_vm = VCenterDriver::VirtualMachine.new_without_id(@vi_client,
56
+ vm_ref)
57
+ vname = vc_vm['name']
58
+
59
+ type = { :object => 'VM', :id => vname }
60
+ error, template_disks = vc_vm.import_vcenter_disks(vc_uuid, dpool,
61
+ ipool, type)
62
+ raise error unless error.empty?
63
+
64
+ template << template_disks
65
+
66
+ opts = {
67
+ :vi_client => @vi_client,
68
+ :vc_uuid => vc_uuid,
69
+ :npool => npool,
70
+ :hpool => hpool,
71
+ :vcenter => vc_name,
72
+ :template_moref => vm_ref,
73
+ :vm_object => vc_vm
74
+ }
75
+
76
+ # Create images or get nics information for template
77
+ error, template_nics, ar_ids =
78
+ vc_vm.import_vcenter_nics(opts)
79
+ opts = { :uuid => vc_uuid, :npool => npool, :error => error }
80
+ Raction.delete_ars(ar_ids, opts) unless error.empty?
81
+
82
+ template << template_nics
83
+ template << "VCENTER_ESX_HOST = #{vc_vm['runtime.host.name']}\n"
84
+
85
+ # Get DS_ID for the deployment, the wild VM needs a System DS
86
+ dc_ref = vc_vm.datacenter.item._ref
87
+ ds_ref = template.match(/^VCENTER_DS_REF *= *"(.*)" *$/)[1]
88
+
89
+ ds_one = dpool.select do |e|
90
+ e['TEMPLATE/TYPE'] == 'SYSTEM_DS' &&
91
+ e['TEMPLATE/VCENTER_DS_REF'] == ds_ref &&
92
+ e['TEMPLATE/VCENTER_DC_REF'] == dc_ref &&
93
+ e['TEMPLATE/VCENTER_INSTANCE_ID'] == vc_uuid
94
+ end.first
95
+ opts[:error] = "ds with ref #{ds_ref} is not imported, aborting"
96
+ Raction.delete_ars(ar_ids, opts) unless ds_one
97
+
98
+ rc = vm.allocate(template)
99
+ if OpenNebula.is_error?(rc)
100
+ Raction.delete_ars(ar_ids, opts.merge(:error => rc.message))
101
+ end
102
+
103
+ rc = vm.deploy(host_id, false, ds_one.id)
104
+ if OpenNebula.is_error?(rc)
105
+ Raction.delete_ars(ar_ids, opts.merge(:error => rc.message))
106
+ end
107
+
108
+ # Set reference to template disks and nics in VM template
109
+ vc_vm.one_item = vm
110
+
111
+ request_vnc(vc_vm)
112
+
113
+ # Sync disks with extraConfig
114
+ vc_vm.reference_all_disks
115
+
116
+ vm.id
117
+ end
118
+
119
+ end
120
+
121
+ end
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.12.9
4
+ version: 6.0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenNebula
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-22 00:00:00.000000000 Z
11
+ date: 2021-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -52,6 +52,62 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: xmlrpc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: treetop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ipaddress
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: parse-cron
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
55
111
  description: Libraries needed to talk to OpenNebula
56
112
  email: contact@opennebula.io
57
113
  executables: []
@@ -60,35 +116,56 @@ extra_rdoc_files: []
60
116
  files:
61
117
  - lib/opennebula.rb
62
118
  - lib/vcenter_driver.rb
119
+ - lib/datacenter.rb
120
+ - lib/datastore.rb
121
+ - lib/file_helper.rb
122
+ - lib/host.rb
123
+ - lib/memoize.rb
124
+ - lib/network.rb
125
+ - lib/rest_client.rb
126
+ - lib/vcenter_importer.rb
127
+ - lib/vi_client.rb
128
+ - lib/vi_helper.rb
129
+ - lib/virtual_machine.rb
130
+ - lib/vm_device.rb
131
+ - lib/vm_disk.rb
132
+ - lib/vm_nic.rb
133
+ - lib/vm_helper.rb
134
+ - lib/vm_monitor.rb
135
+ - lib/vm_folder.rb
136
+ - lib/vm_template.rb
137
+ - lib/vmm_importer.rb
138
+ - lib/nsx_driver.rb
139
+ - lib/distributed_firewall.rb
140
+ - lib/logical_port.rb
141
+ - lib/logical_switch.rb
142
+ - lib/nsx_client.rb
143
+ - lib/nsx_component.rb
144
+ - lib/nsx_constants.rb
145
+ - lib/nsx_error.rb
146
+ - lib/nsx_rule.rb
147
+ - lib/nsxt_client.rb
148
+ - lib/nsxt_dfw.rb
149
+ - lib/nsxt_logical_port.rb
150
+ - lib/nsxt_rule.rb
151
+ - lib/nsxt_tz.rb
152
+ - lib/nsxv_client.rb
153
+ - lib/nsxv_dfw.rb
154
+ - lib/nsxv_logical_port.rb
155
+ - lib/nsxv_rule.rb
156
+ - lib/nsxv_tz.rb
157
+ - lib/opaque_network.rb
158
+ - lib/transport_zone.rb
159
+ - lib/virtual_wire.rb
63
160
  - lib/VirtualMachineDriver.rb
64
161
  - lib/OpenNebulaDriver.rb
65
162
  - lib/CommandManager.rb
66
163
  - lib/ActionManager.rb
67
164
  - lib/DriverExecHelper.rb
68
- - lib/opennebula/security_group_pool.rb
69
- - lib/opennebula/system.rb
70
- - lib/opennebula/template.rb
71
- - lib/opennebula/template_pool.rb
72
- - lib/opennebula/user.rb
73
- - lib/opennebula/user_pool.rb
74
- - lib/opennebula/utils.rb
75
- - lib/opennebula/vdc.rb
76
- - lib/opennebula/vdc_pool.rb
77
- - lib/opennebula/virtual_machine.rb
78
- - lib/opennebula/virtual_machine_pool.rb
79
- - lib/opennebula/virtual_network.rb
80
- - lib/opennebula/virtual_network_pool.rb
81
- - lib/opennebula/virtual_router.rb
82
- - lib/opennebula/virtual_router_pool.rb
83
- - lib/opennebula/vm_group.rb
84
- - lib/opennebula/vm_group_pool.rb
85
- - lib/opennebula/vntemplate.rb
86
- - lib/opennebula/vntemplate_pool.rb
87
- - lib/opennebula/xml_element.rb
88
- - lib/opennebula/xml_pool.rb
89
- - lib/opennebula/xml_utils.rb
90
- - lib/opennebula/zone.rb
91
- - lib/opennebula/zone_pool.rb
165
+ - lib/scripts_common.rb
166
+ - lib/models.rb
167
+ - lib/models/role.rb
168
+ - lib/models/service.rb
92
169
  - lib/opennebula/acl.rb
93
170
  - lib/opennebula/acl_pool.rb
94
171
  - lib/opennebula/client.rb
@@ -101,6 +178,7 @@ files:
101
178
  - lib/opennebula/document_pool.rb
102
179
  - lib/opennebula/document_pool_json.rb
103
180
  - lib/opennebula/error.rb
181
+ - lib/opennebula/flow.rb
104
182
  - lib/opennebula/group.rb
105
183
  - lib/opennebula/group_pool.rb
106
184
  - lib/opennebula/hook.rb
@@ -110,16 +188,51 @@ files:
110
188
  - lib/opennebula/host_pool.rb
111
189
  - lib/opennebula/image.rb
112
190
  - lib/opennebula/image_pool.rb
191
+ - lib/opennebula/lockable_ext.rb
113
192
  - lib/opennebula/marketplace.rb
114
193
  - lib/opennebula/marketplace_pool.rb
115
194
  - lib/opennebula/marketplaceapp.rb
195
+ - lib/opennebula/marketplaceapp_ext.rb
116
196
  - lib/opennebula/marketplaceapp_pool.rb
117
197
  - lib/opennebula/oneflow_client.rb
118
198
  - lib/opennebula/pool.rb
119
199
  - lib/opennebula/pool_element.rb
120
200
  - lib/opennebula/security_group.rb
121
- - lib/opennebula/ldap_auth_spec.rb
201
+ - lib/opennebula/security_group_pool.rb
202
+ - lib/opennebula/system.rb
203
+ - lib/opennebula/template.rb
204
+ - lib/opennebula/template_ext.rb
205
+ - lib/opennebula/template_pool.rb
206
+ - lib/opennebula/user.rb
207
+ - lib/opennebula/user_pool.rb
208
+ - lib/opennebula/utils.rb
209
+ - lib/opennebula/vdc.rb
210
+ - lib/opennebula/vdc_pool.rb
211
+ - lib/opennebula/virtual_machine.rb
212
+ - lib/opennebula/virtual_machine_ext.rb
213
+ - lib/opennebula/virtual_machine_pool.rb
214
+ - lib/opennebula/virtual_network.rb
215
+ - lib/opennebula/virtual_network_pool.rb
216
+ - lib/opennebula/virtual_router.rb
217
+ - lib/opennebula/virtual_router_pool.rb
218
+ - lib/opennebula/vm_group.rb
219
+ - lib/opennebula/vm_group_pool.rb
220
+ - lib/opennebula/vntemplate.rb
221
+ - lib/opennebula/vntemplate_pool.rb
222
+ - lib/opennebula/wait_ext.rb
223
+ - lib/opennebula/xml_element.rb
224
+ - lib/opennebula/xml_pool.rb
225
+ - lib/opennebula/xml_utils.rb
226
+ - lib/opennebula/zone_pool.rb
227
+ - lib/opennebula/zone.rb
228
+ - lib/opennebula/flow/grammar.rb
229
+ - lib/opennebula/flow/service_pool.rb
230
+ - lib/opennebula/flow/service_template.rb
231
+ - lib/opennebula/flow/service_template_ext.rb
232
+ - lib/opennebula/flow/service_template_pool.rb
233
+ - lib/opennebula/flow/validator.rb
122
234
  - lib/opennebula/ldap_auth.rb
235
+ - lib/opennebula/ldap_auth_spec.rb
123
236
  - lib/opennebula/server_cipher_auth.rb
124
237
  - lib/opennebula/server_x509_auth.rb
125
238
  - lib/opennebula/ssh_auth.rb