foreman_azure_rm 2.2.2 → 2.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +6 -7
- data/app/models/concerns/foreman_azure_rm/vm_extensions/managed_vm.rb +40 -1
- data/app/models/foreman_azure_rm/azure_rm.rb +41 -5
- data/app/models/foreman_azure_rm/azure_rm_compute.rb +35 -4
- data/app/views/api/v2/compute_resources/azurerm.json.rabl +1 -1
- data/app/views/compute_resources_vms/form/azurerm/_base.html.erb +17 -1
- data/lib/foreman_azure_rm/version.rb +1 -1
- data/locale/ca/foreman_azure_rm.po +231 -3
- data/locale/cs_CZ/foreman_azure_rm.po +231 -3
- data/locale/de/foreman_azure_rm.po +231 -3
- data/locale/en/foreman_azure_rm.po +231 -3
- data/locale/en_GB/foreman_azure_rm.po +231 -3
- data/locale/es/foreman_azure_rm.po +231 -3
- data/locale/foreman_azure_rm.pot +339 -28
- data/locale/fr/foreman_azure_rm.po +231 -3
- data/locale/gl/foreman_azure_rm.po +231 -3
- data/locale/it/foreman_azure_rm.po +231 -3
- data/locale/ja/foreman_azure_rm.po +231 -3
- data/locale/ko/foreman_azure_rm.po +232 -5
- data/locale/nl_NL/foreman_azure_rm.po +231 -4
- data/locale/pl/foreman_azure_rm.po +232 -5
- data/locale/pt_BR/foreman_azure_rm.po +232 -5
- data/locale/ru/foreman_azure_rm.po +232 -5
- data/locale/sv_SE/foreman_azure_rm.po +231 -3
- data/locale/zh_CN/foreman_azure_rm.po +231 -3
- data/locale/zh_TW/foreman_azure_rm.po +231 -3
- metadata +24 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4c5017c30e0067522ca79641d307a2aaef0073ee2c60eb2ec26bf7ca88c72047
|
4
|
+
data.tar.gz: e62b30ff6d8594136a724e0995ba7b5de4b14832cd015996d3186f0a1f4daaff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 944bbf2ce53335d33f7ed2f97ac4658408546458103be05ce6cd94bb7cc8f273d49d233adf2cbd7a137154437c0188749123e8ec73eff4d446b59a4d7f068677
|
7
|
+
data.tar.gz: 676ed07015b420ace8897695ba252f387577ab4b2b55d1bff62b97381ff3b53aac6ac57af99104351ec068af01af44f90770a54100a7aef1de148be039538278
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Foreman AzureRm Plugin
|
2
2
|
|
3
3
|
## Description
|
4
|
-
```foreman_azure_rm``` adds [Microsoft Azure Resource Manager](http://azure.com/) as a
|
4
|
+
```foreman_azure_rm``` adds [Microsoft Azure Resource Manager](http://azure.com/) as a Compute Resource for The Foreman
|
5
5
|
|
6
6
|
* Website: [TheForeman.org](http://theforeman.org)
|
7
7
|
* ForemanAzureRm: [Plugin manual](https://theforeman.org/plugins/foreman_azure)
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
### Bundle (Gem)
|
13
13
|
|
14
|
-
Add the following to bundler.d/Gemfile.local.rb in your Foreman installation directory
|
14
|
+
Add the following to `bundler.d/Gemfile.local.rb` in your Foreman installation directory `/usr/share/foreman`
|
15
15
|
|
16
16
|
```console
|
17
17
|
$ gem 'foreman_azure_rm'
|
@@ -55,7 +55,6 @@ Then run `bundle install` from the same directory
|
|
55
55
|
* VM creation
|
56
56
|
* Provisions using Finish and User data templates from Foreman
|
57
57
|
* Supports cloud-config provisioning
|
58
|
-
* Currently supports only provisioning of Linux platforms
|
59
58
|
* Provisioning using [Public Images](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/cli-ps-findimage)
|
60
59
|
* Provision using custom images
|
61
60
|
* Provision using shared image galleries
|
@@ -64,6 +63,7 @@ Then run `bundle install` from the same directory
|
|
64
63
|
* Support to add multiple data disks/volumes (standard or premium)
|
65
64
|
* VM Extension with Custom Script and File URIs support
|
66
65
|
* Static or dynamic addresses on a per NIC basis
|
66
|
+
* Support for NVIDIA Drivers or CUDA on Linux and Windows
|
67
67
|
* Limited extension support
|
68
68
|
* Microsoft's custom script extension
|
69
69
|
* Puppet Lab's Puppet agent extension for Windows
|
@@ -74,16 +74,16 @@ Go to **Infrastructure > Compute Resources** and click on "New Compute Resource"
|
|
74
74
|
|
75
75
|
Choose the **Azure Resource Manager provider**, and fill in all the fields. You need a Subscription ID, Tenant ID, Client ID and a Client Secret which you can generate from your [Microsoft Azure subscription](https://docs.bmc.com/docs/cloudlifecyclemanagement/46/setting-up-a-tenant-id-client-id-and-client-secret-for-azure-resource-manager-provisioning-669202145.html#SettingupaTenantID,ClientID,andClientSecretforAzureResourceManagerprovisioning-SetupTenantIDPrereqPrerequisites)
|
76
76
|
|
77
|
-
That's it. You're now ready to create and manage Azure resources in your new Azure Resource Manager
|
77
|
+
That's it. You're now ready to create and manage Azure resources in your new Azure Resource Manager Compute Resource. You should see something like this in the Compute Resource page:
|
78
78
|
|
79
79
|
|
80
|
-
![](https://i.imgur.com/
|
80
|
+
![](https://i.imgur.com/yMGg3A6.png)
|
81
81
|
|
82
82
|
|
83
83
|
![](https://i.imgur.com/Ag9tH55.png)
|
84
84
|
|
85
85
|
|
86
|
-
![](https://i.imgur.com/
|
86
|
+
![](https://i.imgur.com/OKoGgUY.png)
|
87
87
|
|
88
88
|
|
89
89
|
## Planned Features
|
@@ -91,7 +91,6 @@ That's it. You're now ready to create and manage Azure resources in your new Azu
|
|
91
91
|
|
92
92
|
## Known Limitations
|
93
93
|
* Please note that currently username is expected to be the same on both Virtual Machine tab for Host creation and during Image creation for Compute Resource. The password field for Image creation is optional.
|
94
|
-
* Unable to provision using Windows Images
|
95
94
|
|
96
95
|
## Links
|
97
96
|
* [Issue tracker](https://projects.theforeman.org/projects/azurerm)
|
@@ -123,7 +123,7 @@ module ForemanAzureRm
|
|
123
123
|
def create_nics(region, args = {})
|
124
124
|
nics = []
|
125
125
|
args[:interfaces_attributes].each do |nic, attrs|
|
126
|
-
private_ip = (attrs[:private_ip]
|
126
|
+
private_ip = Foreman::Cast.to_bool(attrs[:private_ip])
|
127
127
|
priv_ip_alloc = if private_ip
|
128
128
|
NetworkModels::IPAllocationMethod::Static
|
129
129
|
else
|
@@ -176,6 +176,14 @@ module ForemanAzureRm
|
|
176
176
|
logger.debug msg
|
177
177
|
vm_create_params = ComputeModels::VirtualMachine.new.tap do |vm|
|
178
178
|
vm.location = vm_hash[:location]
|
179
|
+
vm.tags = {}
|
180
|
+
unless vm_hash[:tags].nil?
|
181
|
+
arr = vm_hash[:tags].split(',')
|
182
|
+
arr.each do |item|
|
183
|
+
kv = item.split('=')
|
184
|
+
vm.tags[kv[0].strip] = kv[1].strip
|
185
|
+
end
|
186
|
+
end
|
179
187
|
unless vm_hash[:availability_set_id].nil?
|
180
188
|
sub_resource = MsRestAzure::SubResource.new
|
181
189
|
sub_resource.id = vm_hash[:availability_set_id]
|
@@ -261,12 +269,43 @@ module ForemanAzureRm
|
|
261
269
|
'commandToExecute' => args[:script_command],
|
262
270
|
'fileUris' => args[:script_uris].split(',')
|
263
271
|
}
|
272
|
+
|
273
|
+
extension_for_log = "#{extension.publisher}/#{extension.virtual_machine_extension_type}/#{extension.type_handler_version}"
|
274
|
+
Foreman::Logging.logger('app').info "Azure RM machine #{args[:name]}: creating #{extension_for_log} extension"
|
264
275
|
sdk.create_or_update_vm_extensions(args[:resource_group],
|
265
276
|
args[:vm_name],
|
266
277
|
'ForemanCustomScript',
|
267
278
|
extension)
|
268
279
|
end
|
269
280
|
end
|
281
|
+
|
282
|
+
def create_vm_nvidia_gpu_extension(region, args = {})
|
283
|
+
extension = ComputeModels::VirtualMachineExtension.new
|
284
|
+
extension.publisher = 'Microsoft.HpcCompute'
|
285
|
+
extension.type_handler_version = '1.3'
|
286
|
+
extension.auto_upgrade_minor_version = true
|
287
|
+
extension.location = region
|
288
|
+
|
289
|
+
case args[:platform]
|
290
|
+
# https://docs.microsoft.com/fr-fr/azure/virtual-machines/extensions/hpccompute-gpu-linux
|
291
|
+
when 'Linux'
|
292
|
+
extension_name = 'NvidiaGpuDriverLinux'
|
293
|
+
# https://docs.microsoft.com/fr-fr/azure/virtual-machines/extensions/hpccompute-gpu-windows
|
294
|
+
when 'Windows'
|
295
|
+
extension_name = 'NvidiaGpuDriverWindows'
|
296
|
+
else
|
297
|
+
raise RuntimeError, "Unsupported platform #{args[:platform]}"
|
298
|
+
end
|
299
|
+
extension.virtual_machine_extension_type = extension_name
|
300
|
+
|
301
|
+
extension_for_log = "#{extension.publisher}/#{extension.virtual_machine_extension_type}/#{extension.type_handler_version}"
|
302
|
+
Foreman::Logging.logger('app').info "Azure RM machine #{args[:name]}: creating #{extension_for_log} extension"
|
303
|
+
sdk.create_or_update_vm_extensions(args[:resource_group],
|
304
|
+
args[:vm_name],
|
305
|
+
extension_name,
|
306
|
+
extension)
|
307
|
+
end
|
308
|
+
|
270
309
|
end
|
271
310
|
end
|
272
311
|
end
|
@@ -43,7 +43,7 @@ module ForemanAzureRm
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def cloud
|
46
|
-
attrs[:cloud]
|
46
|
+
attrs[:cloud] || 'azure'
|
47
47
|
end
|
48
48
|
|
49
49
|
def cloud=(name)
|
@@ -59,7 +59,7 @@ module ForemanAzureRm
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def ensure_attributes_and_values
|
62
|
-
validate_region
|
62
|
+
validate_region if validate_cloud?
|
63
63
|
end
|
64
64
|
|
65
65
|
def validate_region
|
@@ -67,6 +67,15 @@ module ForemanAzureRm
|
|
67
67
|
errors.add(:region, "is not valid, must be lowercase eg. 'eastus'. No special characters allowed.") unless regions.collect(&:second).include?(region)
|
68
68
|
end
|
69
69
|
|
70
|
+
def validate_cloud?
|
71
|
+
valid_clouds = ['azure', 'azureusgovernment', 'azurechina', 'azuregermancloud']
|
72
|
+
unless valid_clouds.include?(cloud)
|
73
|
+
errors.add(:cloud, "is not valid. Valid choices are #{valid_clouds.join(", ")}.")
|
74
|
+
return false
|
75
|
+
end
|
76
|
+
true
|
77
|
+
end
|
78
|
+
|
70
79
|
def self.model_name
|
71
80
|
ComputeResource.model_name
|
72
81
|
end
|
@@ -116,7 +125,8 @@ module ForemanAzureRm
|
|
116
125
|
ssh_key_data: opts[:ssh_key_data],
|
117
126
|
os_disk_caching: opts[:os_disk_caching],
|
118
127
|
premium_os_disk: opts[:premium_os_disk],
|
119
|
-
os_disk_size_gb: opts[:os_disk_size_gb]
|
128
|
+
os_disk_size_gb: opts[:os_disk_size_gb],
|
129
|
+
nvidia_gpu_extension: opts[:nvidia_gpu_extension],
|
120
130
|
)
|
121
131
|
if opts[:interfaces].present?
|
122
132
|
ifaces = []
|
@@ -127,7 +137,16 @@ module ForemanAzureRm
|
|
127
137
|
|
128
138
|
vols = opts.fetch(:volumes, []).map { |vols_attrs| new_volume(vols_attrs) } if opts[:volumes].present?
|
129
139
|
|
130
|
-
AzureRmCompute.new(
|
140
|
+
AzureRmCompute.new(
|
141
|
+
azure_vm: raw_vm,
|
142
|
+
sdk: sdk,
|
143
|
+
resource_group: opts[:resource_group],
|
144
|
+
nics: ifaces,
|
145
|
+
volumes: vols,
|
146
|
+
script_command: opts[:script_command],
|
147
|
+
script_uris: opts[:script_uris],
|
148
|
+
nvidia_gpu_extension: Foreman::Cast.to_bool(opts[:nvidia_gpu_extension]),
|
149
|
+
)
|
131
150
|
end
|
132
151
|
|
133
152
|
def provided_attributes
|
@@ -310,11 +329,28 @@ module ForemanAzureRm
|
|
310
329
|
custom_data: args[:user_data],
|
311
330
|
script_command: args[:script_command],
|
312
331
|
script_uris: args[:script_uris],
|
332
|
+
nvidia_gpu_extension: args[:nvidia_gpu_extension],
|
333
|
+
tags: args[:tags],
|
313
334
|
)
|
314
335
|
logger.debug "Virtual Machine #{args[:vm_name]} Created Successfully."
|
336
|
+
# request NVIDIA GPU driver and CUDA stack
|
337
|
+
if Foreman::Cast.to_bool(args[:nvidia_gpu_extension])
|
338
|
+
create_vm_nvidia_gpu_extension(region, args)
|
339
|
+
end
|
340
|
+
# as this extension may contains postinstall script, call it after others
|
315
341
|
create_vm_extension(region, args)
|
316
342
|
# return the vm object using azure_vm
|
317
|
-
AzureRmCompute.new(
|
343
|
+
AzureRmCompute.new(
|
344
|
+
azure_vm: vm,
|
345
|
+
sdk: sdk,
|
346
|
+
resource_group: args[:resource_group],
|
347
|
+
nics: vm_nics(vm),
|
348
|
+
volumes: vm_disks(vm),
|
349
|
+
script_command: user_command,
|
350
|
+
script_uris: args[:script_uris],
|
351
|
+
nvidia_gpu_extension: Foreman::Cast.to_bool(args[:nvidia_gpu_extension]),
|
352
|
+
tags: args[:tags],
|
353
|
+
)
|
318
354
|
rescue RuntimeError => e
|
319
355
|
Foreman::Logging.exception('Unhandled AzureRm error', e)
|
320
356
|
destroy_vm vm.id if vm
|
@@ -5,7 +5,9 @@ module ForemanAzureRm
|
|
5
5
|
attr_accessor :resource_group
|
6
6
|
attr_accessor :nics
|
7
7
|
attr_accessor :script_command, :script_uris
|
8
|
+
attr_accessor :nvidia_gpu_extension
|
8
9
|
attr_accessor :volumes
|
10
|
+
attr_accessor :tags
|
9
11
|
|
10
12
|
delegate :name, to: :azure_vm, allow_nil: true
|
11
13
|
|
@@ -15,7 +17,9 @@ module ForemanAzureRm
|
|
15
17
|
nics: [],
|
16
18
|
volumes: [],
|
17
19
|
script_command: nil,
|
18
|
-
script_uris: nil
|
20
|
+
script_uris: nil,
|
21
|
+
nvidia_gpu_extension: false,
|
22
|
+
tags: [])
|
19
23
|
|
20
24
|
@azure_vm = azure_vm
|
21
25
|
@sdk = sdk
|
@@ -24,6 +28,8 @@ module ForemanAzureRm
|
|
24
28
|
@volumes ||= volumes
|
25
29
|
@script_command ||= script_command
|
26
30
|
@script_uris ||= script_uris
|
31
|
+
@nvidia_gpu_extension ||= nvidia_gpu_extension
|
32
|
+
@tags ||= tags
|
27
33
|
@azure_vm.hardware_profile ||= ComputeModels::HardwareProfile.new
|
28
34
|
@azure_vm.os_profile ||= ComputeModels::OSProfile.new
|
29
35
|
@azure_vm.os_profile.linux_configuration ||= ComputeModels::LinuxConfiguration.new
|
@@ -208,8 +214,24 @@ module ForemanAzureRm
|
|
208
214
|
def vm_extension
|
209
215
|
return nil unless @azure_vm.resources
|
210
216
|
@vm_extension ||= begin
|
211
|
-
|
212
|
-
|
217
|
+
@azure_vm.resources.each do |ext|
|
218
|
+
ext_name = ext.id.split('/')[-1]
|
219
|
+
next unless ext_name == 'ForemanCustomScript'
|
220
|
+
return sdk.get_vm_extension(@azure_vm.resource_group, name, ext_name)
|
221
|
+
end
|
222
|
+
nil
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
def vm_nvidia_gpu_extension
|
227
|
+
return nil unless @azure_vm.resources
|
228
|
+
@vm_nvidia_gpu_extension ||= begin
|
229
|
+
@azure_vm.resources.each do |ext|
|
230
|
+
ext_name = ext.id.split('/')[-1]
|
231
|
+
next unless ['NvidiaGpuDriverLinux', 'NvidiaGpuDriverWindows'].include? ext_name
|
232
|
+
return sdk.get_vm_extension(@azure_vm.resource_group, name, ext_name)
|
233
|
+
end
|
234
|
+
nil
|
213
235
|
end
|
214
236
|
end
|
215
237
|
|
@@ -219,7 +241,7 @@ module ForemanAzureRm
|
|
219
241
|
# Index is based on script_command that is being injected
|
220
242
|
# from the code in #create_vm. It can be partly hard-coded
|
221
243
|
# since the command shall no change frequently.
|
222
|
-
if ssh_key_data.nil?
|
244
|
+
if ssh_key_data.nil? && platform == 'Linux'
|
223
245
|
user_cmd_index = (vm_extension.settings["commandToExecute"].index("-c"))+ 4
|
224
246
|
script_command = vm_extension.settings["commandToExecute"][user_cmd_index..-2]
|
225
247
|
else
|
@@ -238,5 +260,14 @@ module ForemanAzureRm
|
|
238
260
|
@script_uris
|
239
261
|
end
|
240
262
|
end
|
263
|
+
|
264
|
+
def nvidia_gpu_extension
|
265
|
+
if vm_nvidia_gpu_extension.present?
|
266
|
+
true
|
267
|
+
else
|
268
|
+
@nvidia_gpu_extension
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
241
272
|
end
|
242
273
|
end
|
@@ -1 +1 @@
|
|
1
|
-
attributes :
|
1
|
+
attributes :cloud, :tenant, :app_ident, :sub_id, :region
|
@@ -132,7 +132,6 @@
|
|
132
132
|
<%= password_f f, :password,
|
133
133
|
{
|
134
134
|
:label => _('Password'),
|
135
|
-
:required => true,
|
136
135
|
:placeholder => "********",
|
137
136
|
:value => f.object.password
|
138
137
|
|
@@ -186,6 +185,23 @@
|
|
186
185
|
}
|
187
186
|
%>
|
188
187
|
|
188
|
+
<%= text_f f, :tags,
|
189
|
+
{
|
190
|
+
:label => _('Azure Tags'),
|
191
|
+
:label_help => _('Comma seperated list of name=value pairs for tags on this VM in Azure')
|
192
|
+
}
|
193
|
+
%>
|
194
|
+
|
195
|
+
<%= checkbox_f f, :nvidia_gpu_extension,
|
196
|
+
{
|
197
|
+
:label => _('NVIDIA driver / CUDA'),
|
198
|
+
:label_size => "col-md-2",
|
199
|
+
:label_help => _("Deploy NVIDIA GPU driver and CUDA (Azure Extension Microsoft.HpcCompute/NvidiaGpuDriver{Linux,Windows}/1.3)"),
|
200
|
+
},
|
201
|
+
'true',
|
202
|
+
'false'
|
203
|
+
%>
|
204
|
+
|
189
205
|
<div id="image_selection">
|
190
206
|
<%= select_f f, :image_id, images, :uuid, :name,
|
191
207
|
{ :include_blank => (images.empty? or images.size == 1) ? false : _('Please select an image') },
|
@@ -22,6 +22,9 @@ msgstr ""
|
|
22
22
|
msgid "%{vm_size} VM Size"
|
23
23
|
msgstr ""
|
24
24
|
|
25
|
+
msgid "Abstract async task"
|
26
|
+
msgstr ""
|
27
|
+
|
25
28
|
msgid "Action with sub plans"
|
26
29
|
msgstr ""
|
27
30
|
|
@@ -31,6 +34,18 @@ msgstr "Accions"
|
|
31
34
|
msgid "Additional number of disks can be added based on VM Size. For more details, please refer to Microsoft Azure's documentation"
|
32
35
|
msgstr ""
|
33
36
|
|
37
|
+
msgid "Agent action"
|
38
|
+
msgstr ""
|
39
|
+
|
40
|
+
msgid "Attach subscriptions"
|
41
|
+
msgstr ""
|
42
|
+
|
43
|
+
msgid "Auto attach subscriptions"
|
44
|
+
msgstr ""
|
45
|
+
|
46
|
+
msgid "Azure Image Name"
|
47
|
+
msgstr ""
|
48
|
+
|
34
49
|
msgid "Azure Region"
|
35
50
|
msgstr ""
|
36
51
|
|
@@ -46,6 +61,9 @@ msgstr ""
|
|
46
61
|
msgid "Azure's default"
|
47
62
|
msgstr ""
|
48
63
|
|
64
|
+
msgid "Bulk generate applicability for hosts"
|
65
|
+
msgstr ""
|
66
|
+
|
49
67
|
msgid "Client ID"
|
50
68
|
msgstr ""
|
51
69
|
|
@@ -58,9 +76,30 @@ msgstr ""
|
|
58
76
|
msgid "Client Secret for AzureRm"
|
59
77
|
msgstr ""
|
60
78
|
|
79
|
+
msgid "Cloud"
|
80
|
+
msgstr ""
|
81
|
+
|
82
|
+
msgid "Combined Profile Update"
|
83
|
+
msgstr ""
|
84
|
+
|
61
85
|
msgid "Comma seperated file URIs"
|
62
86
|
msgstr ""
|
63
87
|
|
88
|
+
msgid "Copy version units to library"
|
89
|
+
msgstr ""
|
90
|
+
|
91
|
+
msgid "Create"
|
92
|
+
msgstr ""
|
93
|
+
|
94
|
+
msgid "Create Export History"
|
95
|
+
msgstr ""
|
96
|
+
|
97
|
+
msgid "Create Import History"
|
98
|
+
msgstr ""
|
99
|
+
|
100
|
+
msgid "Create Package Group"
|
101
|
+
msgstr ""
|
102
|
+
|
64
103
|
msgid "Custom Script Command"
|
65
104
|
msgstr ""
|
66
105
|
|
@@ -70,25 +109,121 @@ msgstr ""
|
|
70
109
|
msgid "Default ReadWrite"
|
71
110
|
msgstr ""
|
72
111
|
|
112
|
+
msgid "Delete"
|
113
|
+
msgstr ""
|
114
|
+
|
115
|
+
msgid "Delete Activation Key"
|
116
|
+
msgstr ""
|
117
|
+
|
118
|
+
msgid "Delete Lifecycle Environment"
|
119
|
+
msgstr ""
|
120
|
+
|
121
|
+
msgid "Delete Package Group"
|
122
|
+
msgstr ""
|
123
|
+
|
124
|
+
msgid "Delete Product"
|
125
|
+
msgstr ""
|
126
|
+
|
127
|
+
msgid "Deploy NVIDIA GPU driver and CUDA (Azure Extension Microsoft.HpcCompute/NvidiaGpuDriver{Linux,Windows}/1.3)"
|
128
|
+
msgstr ""
|
129
|
+
|
130
|
+
msgid "Destroy"
|
131
|
+
msgstr ""
|
132
|
+
|
133
|
+
msgid "Destroy Content Host"
|
134
|
+
msgstr ""
|
135
|
+
|
136
|
+
msgid "Disable"
|
137
|
+
msgstr ""
|
138
|
+
|
139
|
+
msgid "Discover"
|
140
|
+
msgstr ""
|
141
|
+
|
73
142
|
msgid "Does this image support user data input?"
|
74
143
|
msgstr "La imatge admet l'entrada de dades d'usuari?"
|
75
144
|
|
145
|
+
msgid "Enable"
|
146
|
+
msgstr ""
|
147
|
+
|
148
|
+
msgid "Errata mail"
|
149
|
+
msgstr ""
|
150
|
+
|
151
|
+
msgid "Export"
|
152
|
+
msgstr ""
|
153
|
+
|
154
|
+
msgid "Export Library"
|
155
|
+
msgstr ""
|
156
|
+
|
157
|
+
msgid "Fetch pxe files"
|
158
|
+
msgstr ""
|
159
|
+
|
160
|
+
msgid "Filtered index content"
|
161
|
+
msgstr ""
|
162
|
+
|
163
|
+
msgid "For custom or shared gallery image, use prefix 'custom://' or 'gallery://'. For public and RHEL-byos images, prefix the uuid with 'marketplace://'. (e.g. 'marketplace://OpenLogic:CentOS:7.5:latest' or 'custom://image-name')"
|
164
|
+
msgstr ""
|
165
|
+
|
166
|
+
msgid "Generate host applicability"
|
167
|
+
msgstr ""
|
168
|
+
|
169
|
+
msgid "Generate repository applicability"
|
170
|
+
msgstr ""
|
171
|
+
|
172
|
+
msgid "Hypervisors"
|
173
|
+
msgstr ""
|
174
|
+
|
175
|
+
msgid "Hypervisors update"
|
176
|
+
msgstr ""
|
177
|
+
|
76
178
|
msgid "Image"
|
77
179
|
msgstr "Imatge"
|
78
180
|
|
181
|
+
msgid "Import"
|
182
|
+
msgstr ""
|
183
|
+
|
184
|
+
msgid "Import Content View Version"
|
185
|
+
msgstr ""
|
186
|
+
|
187
|
+
msgid "Import Default Content View"
|
188
|
+
msgstr ""
|
189
|
+
|
79
190
|
msgid "Import Puppet classes"
|
80
191
|
msgstr ""
|
81
192
|
|
82
193
|
msgid "Import facts"
|
83
194
|
msgstr ""
|
84
195
|
|
85
|
-
msgid "
|
196
|
+
msgid "Incremental Update"
|
197
|
+
msgstr ""
|
198
|
+
|
199
|
+
msgid "Incremental Update of Content View Version(s) "
|
86
200
|
msgstr ""
|
87
201
|
|
88
|
-
msgid "
|
202
|
+
msgid "Index content"
|
89
203
|
msgstr ""
|
90
204
|
|
91
|
-
msgid "
|
205
|
+
msgid "Index errata"
|
206
|
+
msgstr ""
|
207
|
+
|
208
|
+
msgid "Index module streams"
|
209
|
+
msgstr ""
|
210
|
+
|
211
|
+
msgid "Index package groups"
|
212
|
+
msgstr ""
|
213
|
+
|
214
|
+
msgid "Install Applicable Errata"
|
215
|
+
msgstr ""
|
216
|
+
|
217
|
+
msgid "Instance update"
|
218
|
+
msgstr ""
|
219
|
+
|
220
|
+
msgid "Leave empty to use default image size"
|
221
|
+
msgstr ""
|
222
|
+
|
223
|
+
msgid "Load Regions"
|
224
|
+
msgstr ""
|
225
|
+
|
226
|
+
msgid "NVIDIA driver / CUDA"
|
92
227
|
msgstr ""
|
93
228
|
|
94
229
|
msgid "Name"
|
@@ -97,6 +232,12 @@ msgstr "Nom"
|
|
97
232
|
msgid "OS Disk Caching"
|
98
233
|
msgstr ""
|
99
234
|
|
235
|
+
msgid "Override OS Disk Size (GB)"
|
236
|
+
msgstr ""
|
237
|
+
|
238
|
+
msgid "Package Profile Update"
|
239
|
+
msgstr ""
|
240
|
+
|
100
241
|
msgid "Password"
|
101
242
|
msgstr "Contrasenya"
|
102
243
|
|
@@ -118,24 +259,66 @@ msgstr "Si us plau, seleccioneu una imatge"
|
|
118
259
|
msgid "Premium OS Disk"
|
119
260
|
msgstr ""
|
120
261
|
|
262
|
+
msgid "Product Create"
|
263
|
+
msgstr ""
|
264
|
+
|
265
|
+
msgid "Promote"
|
266
|
+
msgstr ""
|
267
|
+
|
268
|
+
msgid "Promotion to Environment"
|
269
|
+
msgstr ""
|
270
|
+
|
121
271
|
msgid "Properties"
|
122
272
|
msgstr "Propietats"
|
123
273
|
|
124
274
|
msgid "Public IP"
|
125
275
|
msgstr ""
|
126
276
|
|
277
|
+
msgid "Publish"
|
278
|
+
msgstr ""
|
279
|
+
|
280
|
+
msgid "Publish Lifecycle Environment Repositories"
|
281
|
+
msgstr ""
|
282
|
+
|
127
283
|
msgid "Region"
|
128
284
|
msgstr "Regió"
|
129
285
|
|
286
|
+
msgid "Reindex subscriptions"
|
287
|
+
msgstr ""
|
288
|
+
|
130
289
|
msgid "Reload Images, Sizes, vNets"
|
131
290
|
msgstr ""
|
132
291
|
|
133
292
|
msgid "Remote action:"
|
134
293
|
msgstr ""
|
135
294
|
|
295
|
+
msgid "Remove Content"
|
296
|
+
msgstr ""
|
297
|
+
|
298
|
+
msgid "Remove Version"
|
299
|
+
msgstr ""
|
300
|
+
|
301
|
+
msgid "Remove Versions and Associations"
|
302
|
+
msgstr ""
|
303
|
+
|
304
|
+
msgid "Remove from Environment"
|
305
|
+
msgstr ""
|
306
|
+
|
307
|
+
msgid "Remove subscriptions"
|
308
|
+
msgstr ""
|
309
|
+
|
310
|
+
msgid "Report"
|
311
|
+
msgstr ""
|
312
|
+
|
313
|
+
msgid "Republish Version Repositories"
|
314
|
+
msgstr ""
|
315
|
+
|
136
316
|
msgid "Resource Group"
|
137
317
|
msgstr ""
|
138
318
|
|
319
|
+
msgid "Run Sync Plan:"
|
320
|
+
msgstr ""
|
321
|
+
|
139
322
|
msgid "SSH Key"
|
140
323
|
msgstr ""
|
141
324
|
|
@@ -160,6 +343,15 @@ msgstr "ID de subscripció"
|
|
160
343
|
msgid "Subscription ID for AzureRm"
|
161
344
|
msgstr ""
|
162
345
|
|
346
|
+
msgid "Sync capsule"
|
347
|
+
msgstr ""
|
348
|
+
|
349
|
+
msgid "Synchronize"
|
350
|
+
msgstr ""
|
351
|
+
|
352
|
+
msgid "Synchronize smart proxy"
|
353
|
+
msgstr ""
|
354
|
+
|
163
355
|
msgid "Tenant ID"
|
164
356
|
msgstr ""
|
165
357
|
|
@@ -178,8 +370,44 @@ msgstr ""
|
|
178
370
|
msgid "To perform commands as root, prefix it with 'sudo'"
|
179
371
|
msgstr ""
|
180
372
|
|
373
|
+
msgid "Update"
|
374
|
+
msgstr ""
|
375
|
+
|
376
|
+
msgid "Update Content Overrides"
|
377
|
+
msgstr ""
|
378
|
+
|
379
|
+
msgid "Update content urls"
|
380
|
+
msgstr ""
|
381
|
+
|
382
|
+
msgid "Update for host"
|
383
|
+
msgstr ""
|
384
|
+
|
385
|
+
msgid "Update http proxy"
|
386
|
+
msgstr ""
|
387
|
+
|
388
|
+
msgid "Update http proxy details"
|
389
|
+
msgstr ""
|
390
|
+
|
391
|
+
msgid "Update redhat repository"
|
392
|
+
msgstr ""
|
393
|
+
|
394
|
+
msgid "Update release version for host"
|
395
|
+
msgstr ""
|
396
|
+
|
397
|
+
msgid "Updating System Purpose for host"
|
398
|
+
msgstr ""
|
399
|
+
|
400
|
+
msgid "Upload errata into"
|
401
|
+
msgstr ""
|
402
|
+
|
403
|
+
msgid "Upload into"
|
404
|
+
msgstr ""
|
405
|
+
|
181
406
|
msgid "Username"
|
182
407
|
msgstr "Nom d'usuari"
|
183
408
|
|
184
409
|
msgid "VM Size"
|
185
410
|
msgstr ""
|
411
|
+
|
412
|
+
msgid "Verify checksum"
|
413
|
+
msgstr ""
|