foreman_kubevirt 0.1.3 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +5 -3
- data/app/assets/javascripts/bundle.js +1 -0
- data/app/controllers/foreman_kubevirt/concerns/api/compute_resources_controller_extensions.rb +8 -16
- data/app/models/foreman_kubevirt/compute_attribute_extensions.rb +8 -0
- data/app/models/foreman_kubevirt/kubevirt.rb +65 -17
- data/app/validators/volume_validator.rb +13 -0
- data/app/views/compute_resources/form/_kubevirt.html.erb +5 -3
- data/app/views/compute_resources_vms/form/kubevirt/_volume.html.erb +5 -2
- data/lib/foreman_kubevirt/engine.rb +2 -0
- data/lib/foreman_kubevirt/version.rb +1 -1
- data/locale/action_names.rb +5 -0
- data/locale/ca/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/ca/foreman_kubevirt.po +170 -0
- data/locale/cs_CZ/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/cs_CZ/foreman_kubevirt.po +170 -0
- data/locale/de/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/de/foreman_kubevirt.po +170 -0
- data/locale/en/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/en/foreman_kubevirt.edit.po +219 -0
- data/locale/en/foreman_kubevirt.po +162 -11
- data/locale/en/foreman_kubevirt.po.time_stamp +0 -0
- data/locale/en_GB/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/en_GB/foreman_kubevirt.po +170 -0
- data/locale/es/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/es/foreman_kubevirt.po +170 -0
- data/locale/foreman_kubevirt.pot +232 -8
- data/locale/fr/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/fr/foreman_kubevirt.po +170 -0
- data/locale/gemspec.rb +1 -1
- data/locale/gl/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/gl/foreman_kubevirt.po +170 -0
- data/locale/it/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/it/foreman_kubevirt.po +170 -0
- data/locale/ja/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/ja/foreman_kubevirt.po +170 -0
- data/locale/ko/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/ko/foreman_kubevirt.po +170 -0
- data/locale/nl_NL/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/nl_NL/foreman_kubevirt.po +177 -0
- data/locale/pl/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/pl/foreman_kubevirt.po +176 -0
- data/locale/pt_BR/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/pt_BR/foreman_kubevirt.po +178 -0
- data/locale/ru/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/ru/foreman_kubevirt.po +180 -0
- data/locale/sv_SE/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/sv_SE/foreman_kubevirt.po +176 -0
- data/locale/zh_CN/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/zh_CN/foreman_kubevirt.po +177 -0
- data/locale/zh_TW/LC_MESSAGES/foreman_kubevirt.mo +0 -0
- data/locale/zh_TW/foreman_kubevirt.po +175 -0
- data/test/factories/compute_resource_factories.rb +6 -6
- data/test/factories/host_factories.rb +41 -41
- data/test/factories/nic_factories.rb +25 -25
- data/test/models/compute_resources/kubevirt_test.rb +1 -1
- data/test/unit/foreman_kubevirt_test.rb +12 -1
- metadata +52 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4a1ecc0522a29b6588b3f51feb09fcab28786f871ddea07b4042149a0c5a7e74
|
4
|
+
data.tar.gz: c7047e7a253dc251fc2efe3c3032e9d1dd0f298d0d3346a82532b9dc131b0b41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02f1b764a26dc6211936b39bb6f6210622c59590f62de0eec90f5aa0017400547f798b94238847153a859dd35dd0c812f5407a20c9fce8c85278d9beb49a0b80
|
7
|
+
data.tar.gz: 434056ac6b789c39ea7334cc83923d30e5cec21f66908d1ddccb48a6e702c2d60774315367e895329459f12d79b15f98971bcb18d08e43bcd1d4a41b0b7d5df8
|
data/README.md
CHANGED
@@ -55,9 +55,11 @@ To verify that the installation was successful, go to Foreman, top bar **Adminis
|
|
55
55
|
|
56
56
|
## Compatibility
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
|
58
|
+
|
59
|
+
|
60
|
+
| Foreman Version | Plugin Version | Kubevirt API Version |
|
61
|
+
| --------------- | --------------:| -------------------- |
|
62
|
+
| >= 1.21.x | ~> 0.1.x | v1alpha3 |
|
61
63
|
|
62
64
|
## Usage
|
63
65
|
Go to **Infrastructure > Compute Resources** and click on **New Compute Resource**.
|
@@ -0,0 +1 @@
|
|
1
|
+
window.tfm = { kubevirt: { require('./foreman_kubevirt/kubevirt.js') };
|
data/app/controllers/foreman_kubevirt/concerns/api/compute_resources_controller_extensions.rb
CHANGED
@@ -2,25 +2,17 @@ module ForemanKubevirt
|
|
2
2
|
module Concerns
|
3
3
|
module Api
|
4
4
|
module ComputeResourcesControllerExtensions
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
param :
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
param :api_port, String, :desc => N_("API port for KubeVirt only")
|
14
|
-
end
|
5
|
+
extend ::Apipie::DSL::Concern
|
6
|
+
update_api(:create, :update) do
|
7
|
+
param :compute_resource, Hash do
|
8
|
+
param :token, String, :desc => N_("Token for KubeVirt only")
|
9
|
+
param :hostname, String, :desc => N_("Host name for KubeVirt only")
|
10
|
+
param :namespace, String, :desc => N_("Namespace for KubeVirt only")
|
11
|
+
param :ca_crt, String, :desc => N_("CA crt for KubeVirt only")
|
12
|
+
param :api_port, String, :desc => N_("API port for KubeVirt only")
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
18
|
-
|
19
|
-
extend ActiveSupport::Concern
|
20
|
-
|
21
|
-
included do
|
22
|
-
include ApiPieExtensions
|
23
|
-
end
|
24
16
|
end
|
25
17
|
end
|
26
18
|
end
|
@@ -6,7 +6,7 @@ module ForemanKubevirt
|
|
6
6
|
alias_attribute :token, :password
|
7
7
|
alias_attribute :namespace, :user
|
8
8
|
validates :hostname, :api_port, :namespace, :token, :presence => true
|
9
|
-
|
9
|
+
after_validation :validate_connectivity unless Rails.env.test?
|
10
10
|
|
11
11
|
def ca_cert
|
12
12
|
attrs[:ca_cert]
|
@@ -52,10 +52,29 @@ module ForemanKubevirt
|
|
52
52
|
ComputeResource.model_name
|
53
53
|
end
|
54
54
|
|
55
|
-
def test_connection(
|
55
|
+
def test_connection(options = {})
|
56
|
+
super
|
57
|
+
validate_connectivity(options)
|
58
|
+
end
|
59
|
+
|
60
|
+
def caching_enabled
|
61
|
+
false
|
62
|
+
end
|
63
|
+
|
64
|
+
def validate_connectivity(options = {})
|
65
|
+
return unless connection_properties_valid?
|
66
|
+
return false if errors.any?
|
56
67
|
client&.valid? && client&.virt_supported?
|
57
68
|
rescue StandardError => e
|
58
|
-
|
69
|
+
if e.message =~ /401/
|
70
|
+
errors[:base] << _('The compute resource could not be authenticated')
|
71
|
+
else
|
72
|
+
errors[:base] << e.message
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def connection_properties_valid?
|
77
|
+
errors[:hostname].empty? && errors[:token].empty? && errors[:namespace].empty? && errors[:api_port].empty?
|
59
78
|
end
|
60
79
|
|
61
80
|
def networks
|
@@ -85,11 +104,12 @@ module ForemanKubevirt
|
|
85
104
|
storage_classes.map { |sc| OpenStruct.new(id: sc.name, description: "#{sc.name} (#{sc.provisioner})") }
|
86
105
|
end
|
87
106
|
|
88
|
-
def new_volume(
|
107
|
+
def new_volume(attrs = {})
|
89
108
|
return unless new_volume_errors.empty?
|
90
|
-
|
91
|
-
|
92
|
-
vol
|
109
|
+
capacity = attrs.delete(:capacity)
|
110
|
+
args = {capacity: capacity}.merge(attrs)
|
111
|
+
vol = Fog::Kubevirt::Compute::Volume.new(args)
|
112
|
+
vol.boot_order = 1 if args[:bootable] == "on" || args[:bootable] == "true"
|
93
113
|
vol
|
94
114
|
end
|
95
115
|
|
@@ -139,12 +159,12 @@ module ForemanKubevirt
|
|
139
159
|
options = vm_instance_defaults.merge(args.to_hash.deep_symbolize_keys)
|
140
160
|
logger.debug("creating VM with the following options: #{options.inspect}")
|
141
161
|
|
142
|
-
volumes = create_volumes_for_vm(options)
|
143
|
-
interfaces, networks = create_network_devices_for_vm(options, volumes)
|
144
162
|
# Add clound init user data
|
145
163
|
user_data = { "userData" => options[:user_data] } if options[:user_data].present?
|
146
164
|
|
147
165
|
begin
|
166
|
+
volumes = create_volumes_for_vm(options)
|
167
|
+
interfaces, networks = create_network_devices_for_vm(options, volumes)
|
148
168
|
client.vms.create(:vm_name => options[:name],
|
149
169
|
:cpus => options[:cpu_cores].to_i,
|
150
170
|
:memory_size => convert_memory(options[:memory] + "b", :mi).to_s,
|
@@ -154,8 +174,8 @@ module ForemanKubevirt
|
|
154
174
|
:networks => networks,
|
155
175
|
:interfaces => interfaces)
|
156
176
|
client.servers.get(options[:name])
|
157
|
-
rescue
|
158
|
-
delete_pvcs(volumes)
|
177
|
+
rescue Exception => e
|
178
|
+
delete_pvcs(volumes) if volumes
|
159
179
|
raise e
|
160
180
|
end
|
161
181
|
end
|
@@ -271,11 +291,33 @@ module ForemanKubevirt
|
|
271
291
|
convert_memory(memory, :b)
|
272
292
|
end
|
273
293
|
|
294
|
+
def plain_kubevirt_protocol
|
295
|
+
"plain.kubevirt.io".freeze
|
296
|
+
end
|
297
|
+
|
298
|
+
def token_protocol(token)
|
299
|
+
"base64url.bearer.authorization.k8s.io.#{token}"
|
300
|
+
end
|
301
|
+
|
302
|
+
def console(uuid)
|
303
|
+
vm = find_vm_by_uuid(uuid)
|
304
|
+
vnc_details = client.vminstances.get_vnc_console_details(vm.name, namespace)
|
305
|
+
token = Base64.encode64(vnc_details[:token]).delete!("\n").delete("==")
|
306
|
+
{
|
307
|
+
:host => vnc_details[:host],
|
308
|
+
:port => vnc_details[:port],
|
309
|
+
:path => vnc_details[:path],
|
310
|
+
:token_protocol => token_protocol(token),
|
311
|
+
:plain_protocol => plain_kubevirt_protocol,
|
312
|
+
:type => 'vnc',
|
313
|
+
:encrypt => true
|
314
|
+
}
|
315
|
+
end
|
316
|
+
|
274
317
|
protected
|
275
318
|
|
276
319
|
def client
|
277
320
|
return @client if @client
|
278
|
-
|
279
321
|
@client ||= Fog::Kubevirt::Compute.new(
|
280
322
|
:kubevirt_hostname => hostname,
|
281
323
|
:kubevirt_port => api_port,
|
@@ -283,7 +325,8 @@ module ForemanKubevirt
|
|
283
325
|
:kubevirt_token => token,
|
284
326
|
:kubevirt_log => logger,
|
285
327
|
:kubevirt_verify_ssl => ca_cert.present?,
|
286
|
-
:kubevirt_ca_cert => ca_cert
|
328
|
+
:kubevirt_ca_cert => ca_cert,
|
329
|
+
:kubevirt_version => "v1alpha3"
|
287
330
|
)
|
288
331
|
rescue OpenSSL::X509::CertificateError
|
289
332
|
raise_certification_failure_exception
|
@@ -332,19 +375,24 @@ module ForemanKubevirt
|
|
332
375
|
end
|
333
376
|
|
334
377
|
def validate_volume_capacity(volumes_attributes)
|
335
|
-
volumes_attributes.each
|
378
|
+
volumes_attributes.each do |_, vol|
|
379
|
+
if vol[:capacity].to_s.empty? || /\A\d+G?\Z/.match(vol[:capacity].to_s).nil?
|
380
|
+
raise Foreman::Exception.new(N_("Volume size #{vol[:capacity]} is not valid"))
|
381
|
+
end
|
382
|
+
end
|
336
383
|
end
|
337
384
|
|
338
385
|
def validate_only_single_bootable_volume(volumes_attributes)
|
339
|
-
raise ::Foreman::Exception.new N_('Only one volume can be bootable') if volumes_attributes.
|
386
|
+
raise ::Foreman::Exception.new N_('Only one volume can be bootable') if volumes_attributes.count { |_, v| v[:bootable] == "true" } > 1
|
340
387
|
end
|
341
388
|
|
342
389
|
def create_new_pvc(pvc_name, capacity, storage_class)
|
390
|
+
capacity = capacity + "G" unless capacity.end_with? "G"
|
343
391
|
client.pvcs.create(:name => pvc_name,
|
344
392
|
:namespace => namespace,
|
345
393
|
:storage_class => storage_class,
|
346
394
|
:access_modes => ['ReadWriteOnce'],
|
347
|
-
:requests => { :storage => capacity
|
395
|
+
:requests => { :storage => capacity })
|
348
396
|
end
|
349
397
|
|
350
398
|
def delete_pvcs(volumes)
|
@@ -421,8 +469,8 @@ module ForemanKubevirt
|
|
421
469
|
def create_network_devices_for_vm(options, volumes)
|
422
470
|
interfaces = []
|
423
471
|
networks = []
|
424
|
-
|
425
472
|
options[:interfaces_attributes].values.each do |iface|
|
473
|
+
raise ::Foreman::Exception.new N_('cni_provider or network are missing') unless (iface.key?(:cni_provider) && iface.key?(:network))
|
426
474
|
if iface[:cni_provider] == 'pod'
|
427
475
|
nic, net = create_pod_network_element
|
428
476
|
else
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class VolumeValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record, attribute, value)
|
3
|
+
if value[:volumes_attributes].present?
|
4
|
+
value[:volumes_attributes].each do |_, attrs|
|
5
|
+
if attrs.key?("capacity") && attrs.key?("storage_class")
|
6
|
+
if attrs["capacity"].to_s.empty? || /\A\d+G?\Z/.match(attrs["capacity"].to_s).nil?
|
7
|
+
record.errors.add(attribute, _("Volume size #{attrs['capacity']} is not valid"))
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
|
-
<%= text_f f, :hostname, :label => _("Hostname") %>
|
1
|
+
<%= text_f f, :hostname, :label => _("Hostname"), :required => true %>
|
2
2
|
<%= text_f f, :api_port, :label => _("API Port"), :required => true %>
|
3
3
|
<%= text_f f, :namespace, :label => _("Namespace"), :required => true %>
|
4
|
-
<%= password_f f, :
|
4
|
+
<%= password_f f, :token, :label => _("Token"), :required => true,
|
5
5
|
:keep_value => true, :unset => unset_password?,
|
6
6
|
:help_block => _("e.g. eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9..."),
|
7
7
|
:help_inline => documentation_button('/foreman_kubevirt/0.x/index.html#4.1SettingComputeResourceTokenandX509CAvalues',
|
8
|
-
|
8
|
+
:root_url => 'https://theforeman.org/plugins'),
|
9
|
+
:id => "compute_resource_password"
|
10
|
+
%>
|
9
11
|
|
10
12
|
<%= textarea_f f, :ca_cert, :label => _("X509 Certification Authorities"),
|
11
13
|
:placeholder => _("Optionally provide a CA, or a correctly ordered CA chain or a path to a file. If left blank - insecure.") %>
|
@@ -1,6 +1,10 @@
|
|
1
1
|
<% if f.object.type.nil? || f.object.type == 'persistentVolumeClaim' %>
|
2
|
+
<% if @set %>
|
3
|
+
<% @set.errors[:vm_attrs].each do | error| %>
|
4
|
+
<%= alert :class => 'alert-danger', :header => '', :text => error %>
|
5
|
+
<% end %>
|
6
|
+
<% end %>
|
2
7
|
<% storage_classes = compute_resource.storage_classes %>
|
3
|
-
|
4
8
|
<%= select_f f, :storage_class,
|
5
9
|
compute_resource.storage_classes_for_select,
|
6
10
|
:id,
|
@@ -10,7 +14,6 @@
|
|
10
14
|
:label_size => "col-md-2",
|
11
15
|
:disabled => !new_vm,
|
12
16
|
:class => "col-md-2" %>
|
13
|
-
|
14
17
|
<%= text_f f,:capacity, :label => _('Size (GB)'), :label_size => "col-md-2", :disabled => !new_vm, :class => "col-md-2 pvc-size" %>
|
15
18
|
|
16
19
|
<% bootable = f.object.boot_order.nil? ? false : f.object.bootable %>
|
@@ -62,6 +62,8 @@ module ForemanKubevirt
|
|
62
62
|
require "fog/kubevirt/compute/models/networkattachmentdef"
|
63
63
|
require File.expand_path("../../app/models/concerns/fog_extensions/kubevirt/network", __dir__)
|
64
64
|
Fog::Kubevirt::Compute::Networkattachmentdef.send(:include, ::FogExtensions::Kubevirt::Network)
|
65
|
+
ComputeAttribute.send :include, ForemanKubevirt::ComputeAttributeExtensions
|
66
|
+
|
65
67
|
rescue StandardError => e
|
66
68
|
Rails.logger.warn "Foreman-Kubevirt: skipping engine hook (#{e})"
|
67
69
|
end
|
Binary file
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# Catalan translations for foreman_kubevirt package.
|
2
|
+
# Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER
|
3
|
+
# This file is distributed under the same license as the foreman_kubevirt package.
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
5
|
+
#
|
6
|
+
msgid ""
|
7
|
+
msgstr ""
|
8
|
+
"Project-Id-Version: foreman_kubevirt 1.0.0\n"
|
9
|
+
"Report-Msgid-Bugs-To: \n"
|
10
|
+
"PO-Revision-Date: 2020-05-26 13:16+0530\n"
|
11
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
12
|
+
"Language-Team: Catalan\n"
|
13
|
+
"Language: ca\n"
|
14
|
+
"MIME-Version: 1.0\n"
|
15
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
16
|
+
"Content-Transfer-Encoding: 8bit\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18
|
+
"\n"
|
19
|
+
|
20
|
+
msgid "%{cpu_cores} Cores and %{memory} memory"
|
21
|
+
msgstr ""
|
22
|
+
|
23
|
+
msgid "API Port"
|
24
|
+
msgstr ""
|
25
|
+
|
26
|
+
msgid "API port for KubeVirt only"
|
27
|
+
msgstr ""
|
28
|
+
|
29
|
+
msgid "Actions"
|
30
|
+
msgstr ""
|
31
|
+
|
32
|
+
msgid "Bootable"
|
33
|
+
msgstr ""
|
34
|
+
|
35
|
+
msgid "CA crt for KubeVirt only"
|
36
|
+
msgstr ""
|
37
|
+
|
38
|
+
msgid "CNI Provider"
|
39
|
+
msgstr ""
|
40
|
+
|
41
|
+
msgid "CPUs"
|
42
|
+
msgstr ""
|
43
|
+
|
44
|
+
msgid "Disk"
|
45
|
+
msgstr ""
|
46
|
+
|
47
|
+
msgid "Does this image support user data input (e.g. via cloud-init)?"
|
48
|
+
msgstr ""
|
49
|
+
|
50
|
+
msgid "Host name for KubeVirt only"
|
51
|
+
msgstr ""
|
52
|
+
|
53
|
+
msgid "Hostname"
|
54
|
+
msgstr ""
|
55
|
+
|
56
|
+
msgid "Image"
|
57
|
+
msgstr ""
|
58
|
+
|
59
|
+
msgid "It is not possible to set a bootable volume and image based provisioning."
|
60
|
+
msgstr ""
|
61
|
+
|
62
|
+
msgid "Memory"
|
63
|
+
msgstr ""
|
64
|
+
|
65
|
+
msgid "NIC"
|
66
|
+
msgstr ""
|
67
|
+
|
68
|
+
msgid "Name"
|
69
|
+
msgstr ""
|
70
|
+
|
71
|
+
msgid "Namespace"
|
72
|
+
msgstr ""
|
73
|
+
|
74
|
+
msgid "Namespace for KubeVirt only"
|
75
|
+
msgstr ""
|
76
|
+
|
77
|
+
msgid "Network"
|
78
|
+
msgstr ""
|
79
|
+
|
80
|
+
msgid "Only one volume can be bootable"
|
81
|
+
msgstr ""
|
82
|
+
|
83
|
+
msgid "Optionally provide a CA, or a correctly ordered CA chain or a path to a file. If left blank - insecure."
|
84
|
+
msgstr ""
|
85
|
+
|
86
|
+
msgid "Password to authenticate with - used for SSH finish step."
|
87
|
+
msgstr ""
|
88
|
+
|
89
|
+
msgid "Please select an image"
|
90
|
+
msgstr ""
|
91
|
+
|
92
|
+
msgid "Power"
|
93
|
+
msgstr ""
|
94
|
+
|
95
|
+
msgid "Power ON this machine"
|
96
|
+
msgstr ""
|
97
|
+
|
98
|
+
msgid "Properties"
|
99
|
+
msgstr ""
|
100
|
+
|
101
|
+
msgid "Provision and manage Kubevirt Virtual Machines from Foreman."
|
102
|
+
msgstr ""
|
103
|
+
|
104
|
+
msgid "Running on"
|
105
|
+
msgstr ""
|
106
|
+
|
107
|
+
msgid "Size (GB)"
|
108
|
+
msgstr ""
|
109
|
+
|
110
|
+
msgid "Start"
|
111
|
+
msgstr ""
|
112
|
+
|
113
|
+
msgid "Storage Class"
|
114
|
+
msgstr ""
|
115
|
+
|
116
|
+
msgid "The compute resource could not be authenticated"
|
117
|
+
msgstr ""
|
118
|
+
|
119
|
+
msgid "The name of the image in the registry."
|
120
|
+
msgstr ""
|
121
|
+
|
122
|
+
msgid ""
|
123
|
+
"The remote system presented a public key signed by an unidentified certificate authority.\n"
|
124
|
+
" If you are sure the remote system is authentic, go to the compute resource edit page, press the 'Test Connection' button and submit"
|
125
|
+
msgstr ""
|
126
|
+
|
127
|
+
msgid "The user that is used to ssh into the instance, normally cloud-user, ec2-user, ubuntu, root etc"
|
128
|
+
msgstr ""
|
129
|
+
|
130
|
+
msgid "Token"
|
131
|
+
msgstr ""
|
132
|
+
|
133
|
+
msgid "Token for KubeVirt only"
|
134
|
+
msgstr ""
|
135
|
+
|
136
|
+
msgid "Type"
|
137
|
+
msgstr ""
|
138
|
+
|
139
|
+
msgid "UUID"
|
140
|
+
msgstr ""
|
141
|
+
|
142
|
+
msgid "VCPU(s)"
|
143
|
+
msgstr ""
|
144
|
+
|
145
|
+
msgid "VM should be created based on Persistent Volume Claim or Image"
|
146
|
+
msgstr ""
|
147
|
+
|
148
|
+
msgid "VM should be created based on an image"
|
149
|
+
msgstr ""
|
150
|
+
|
151
|
+
msgid "X509 Certification Authorities"
|
152
|
+
msgstr ""
|
153
|
+
|
154
|
+
msgid "cni_provider or network are missing"
|
155
|
+
msgstr ""
|
156
|
+
|
157
|
+
msgid "e.g. eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9..."
|
158
|
+
msgstr ""
|
159
|
+
|
160
|
+
msgid "genie"
|
161
|
+
msgstr ""
|
162
|
+
|
163
|
+
msgid "multus"
|
164
|
+
msgstr ""
|
165
|
+
|
166
|
+
msgid "no Storage Classes available on provider"
|
167
|
+
msgstr ""
|
168
|
+
|
169
|
+
msgid "pod"
|
170
|
+
msgstr ""
|