View | Details | Raw Unified | Return to bug 36289
Collapse All | Expand All

(-)umc/js/uvmm/InstanceWizard.js (-5 / +46 lines)
 Lines 52-58    Link Here 
52
		}
52
		}
53
		on.once(dojo.body(), 'click', function(evt) {
53
		on.once(dojo.body(), 'click', function(evt) {
54
			Tooltip.hide(node);
54
			Tooltip.hide(node);
55
			dojoEvent.stop(evt);
55
			//dojoEvent.stop(evt); // links in tooltip should be clickable
56
		});
56
		});
57
	};
57
	};
58
58
 Lines 87-101    Link Here 
87
		},
87
		},
88
88
89
		_setupJavaScriptLinks: function() {
89
		_setupJavaScriptLinks: function() {
90
			array.forEach([
90
			array.forEach(this._getTooltipLinkArray(), function(iitem) {
91
					['details', 'keyname'],
92
					['details', 'security_group_ids']
93
				], function(iitem) {
94
				var iwidget = this.getWidget(iitem[0], iitem[1]);
91
				var iwidget = this.getWidget(iitem[0], iitem[1]);
95
				iwidget.set('label', lang.replace(iwidget.label, this));
92
				iwidget.set('label', lang.replace(iwidget.label, this));
96
			}, this);
93
			}, this);
97
		},
94
		},
98
95
96
		_getTooltipLinkArray: function() {
97
			if (this.cloud.type == 'OpenStack') {
98
				return [
99
					['details', 'keyname'],
100
					['details', 'security_group_ids']
101
				]
102
			} else if (this.cloud.type == 'EC2') {
103
				return [
104
					['details', 'keyname'],
105
					['details', 'security_group_ids'],
106
					['details', 'network_id']
107
				]
108
			}
109
		},
110
99
		showTooltip: function(evt, type) {
111
		showTooltip: function(evt, type) {
100
			var msg = '';
112
			var msg = '';
101
			if (type == 'keyname') {
113
			if (type == 'keyname') {
 Lines 104-109    Link Here 
104
			else if (type == 'security_group_ids') {
116
			else if (type == 'security_group_ids') {
105
				msg = _('A security group acts as a virtual firewall that controls the traffic of the instance. To enable access, correct rules have to be configured (for example, a UCS instance needs at least TCP ports 22 (ssh) and 443 (https)). The security group configuration has to be done at the provider\'s administration interface.');
117
				msg = _('A security group acts as a virtual firewall that controls the traffic of the instance. To enable access, correct rules have to be configured (for example, a UCS instance needs at least TCP ports 22 (ssh) and 443 (https)). The security group configuration has to be done at the provider\'s administration interface.');
106
			}
118
			}
119
			else if (type == 'network_id') {
120
				msg = _('Select a network in which the new virtual machine instance should be launched. The network configuration has to be done at the provider\'s administration interface. <a href="https://aws.amazon.com/documentation/vpc/" target="_blank">Use this link for more information about Amazon VPC</a> and <a href="https://console.aws.amazon.com/vpc/home?#s=vpcs" target="_blank">this link to configure VPC</a>.');
121
			}
107
			if (msg) {
122
			if (msg) {
108
				_showTooltip(evt.target, msg, evt);
123
				_showTooltip(evt.target, msg, evt);
109
			}
124
			}
 Lines 239-244    Link Here 
239
						'image_id',
254
						'image_id',
240
						'size_id',
255
						'size_id',
241
						'size_info_text',
256
						'size_info_text',
257
						['network_id', 'subnet_id'],
242
						['keyname', 'security_group_ids']
258
						['keyname', 'security_group_ids']
243
					],
259
					],
244
					widgets: [{
260
					widgets: [{
 Lines 294-299    Link Here 
294
						required: true,
310
						required: true,
295
						size: 'Two'
311
						size: 'Two'
296
					}, {
312
					}, {
313
						name: 'network_id',
314
						type: ComboBox,
315
						label: _('Configure Network') +
316
						' (<a href="javascript:void(0);" onclick="require(\'dijit/registry\').byId(\'{id}\').showTooltip(event, \'network_id\');">' +
317
						_('more information') +
318
						'</a>)' +
319
						' [<a href="javascript:void(0);" onclick="require(\'dijit/registry\').byId(\'{id}\').getWidget(\'details\', \'network_id\').reloadDynamicValues();">' +
320
						_('Reload') +
321
						'</a>]',
322
						dynamicOptions: {conn_name: this.cloud.name},
323
						dynamicValues: types.getCloudListNetwork,
324
						staticValues: [ { id: 'default', label: _('Launch into default Network') } ],
325
						onChange: lang.hitch(this, function(newVal) {
326
							var widget = this.getWidget('details', 'subnet_id');
327
							widget.set('disabled', newVal == 'default');
328
						}),
329
					}, {
330
						name: 'subnet_id',
331
						type: ComboBox,
332
						label: _('Configure Subnet'),
333
						dynamicOptions: {conn_name: this.cloud.name},
334
						dynamicValues: types.getCloudListSubnet,
335
						depends: 'network_id'
336
					}, {
297
						name: 'security_group_ids',
337
						name: 'security_group_ids',
298
						type: ComboBox,
338
						type: ComboBox,
299
						label: _('Configure Security Group') +
339
						label: _('Configure Security Group') +
 Lines 302-307    Link Here 
302
						'</a>)',
342
						'</a>)',
303
						dynamicOptions: {conn_name: this.cloud.name},
343
						dynamicOptions: {conn_name: this.cloud.name},
304
						dynamicValues: types.getCloudListSecgroup,
344
						dynamicValues: types.getCloudListSecgroup,
345
						depends: 'network_id',
305
						required: true
346
						required: true
306
					}]
347
					}]
307
				};
348
				};
(-)umc/js/uvmm/types.js (+10 lines)
 Lines 333-338    Link Here 
333
				return data.result;
333
				return data.result;
334
			});
334
			});
335
		},
335
		},
336
		getCloudListNetwork: function(options) {
337
			return tools.umcpCommand('uvmm/cloud/list/network', options).then(function(data) {
338
				return data.result;
339
			});
340
		},
341
		getCloudListSubnet: function(options) {
342
			return tools.umcpCommand('uvmm/cloud/list/subnet', options).then(function(data) {
343
				return data.result;
344
			});
345
		},
336
		getNodeType: function( uri ) {
346
		getNodeType: function( uri ) {
337
			var colon = uri.indexOf( ':' );
347
			var colon = uri.indexOf( ':' );
338
			if ( colon == -1 ) {
348
			if ( colon == -1 ) {
(-)umc/js/uvmm/EC2.js (-1 / +2 lines)
 Lines 71-77    Link Here 
71
					name: 'region',
71
					name: 'region',
72
					type: ComboBox,
72
					type: ComboBox,
73
					staticValues: [
73
					staticValues: [
74
						{ id: 'EC2_EU_WEST', label: 'EU (Ireland)' },
74
						{ id: 'EC2_EU_WEST', label: 'EU West (Ireland)' },
75
						{ id: 'EC2_EU_CENTRAL', label: 'EU Central (Frankfurt)' },
75
						{ id: 'EC2_US_EAST', label: 'US East (N. Virginia)' },
76
						{ id: 'EC2_US_EAST', label: 'US East (N. Virginia)' },
76
						{ id: 'EC2_US_WEST', label: 'US West (N. California)' },
77
						{ id: 'EC2_US_WEST', label: 'US West (N. California)' },
77
						{ id: 'EC2_US_WEST_OREGON', label: 'US West (Oregon)' },
78
						{ id: 'EC2_US_WEST_OREGON', label: 'US West (Oregon)' },
(-)umc/js/de.po (-47 / +81 lines)
 Lines 34-40    Link Here 
34
msgstr ""
34
msgstr ""
35
"Project-Id-Version: univention-virtual-machina-manager-daemon 1.0.103-1\n"
35
"Project-Id-Version: univention-virtual-machina-manager-daemon 1.0.103-1\n"
36
"Report-Msgid-Bugs-To: packages@univention.de\n"
36
"Report-Msgid-Bugs-To: packages@univention.de\n"
37
"POT-Creation-Date: 2015-02-13 09:59+0100\n"
37
"POT-Creation-Date: 2015-03-25 13:30+0100\n"
38
"PO-Revision-Date: 2013-07-24 19:03+0200\n"
38
"PO-Revision-Date: 2013-07-24 19:03+0200\n"
39
"Last-Translator: Univention GmbH <packages@univention.de>\n"
39
"Last-Translator: Univention GmbH <packages@univention.de>\n"
40
"Language-Team: German <de@li.org>\n"
40
"Language-Team: German <de@li.org>\n"
 Lines 150-156    Link Here 
150
"docs.univention.de/handbuch-4.0.html#uvmm:chapter\" target=\"_blank\">im "
150
"docs.univention.de/handbuch-4.0.html#uvmm:chapter\" target=\"_blank\">im "
151
"Handbuch</a> zu finden."
151
"Handbuch</a> zu finden."
152
152
153
#: umc/js/uvmm/InstanceWizard.js:102
153
#: umc/js/uvmm/InstanceWizard.js:103
154
msgid ""
154
msgid ""
155
"A key pair consists of a public and private key to log in using SSH. The "
155
"A key pair consists of a public and private key to log in using SSH. The "
156
"configuration of all keys takes place directly via the administration page "
156
"configuration of all keys takes place directly via the administration page "
 Lines 171-177    Link Here 
171
"Der Name für die virtuelle Maschine wird benötigt und sollte nicht der "
171
"Der Name für die virtuelle Maschine wird benötigt und sollte nicht der "
172
"vorgeschlagenen Namenspräfix entsprechen"
172
"vorgeschlagenen Namenspräfix entsprechen"
173
173
174
#: umc/js/uvmm/InstanceWizard.js:105
174
#: umc/js/uvmm/InstanceWizard.js:106
175
msgid ""
175
msgid ""
176
"A security group acts as a virtual firewall that controls the traffic of the "
176
"A security group acts as a virtual firewall that controls the traffic of the "
177
"instance. To enable access, correct rules have to be configured (for "
177
"instance. To enable access, correct rules have to be configured (for "
 Lines 283-291    Link Here 
283
msgid "Authentication URL endpoint"
283
msgid "Authentication URL endpoint"
284
msgstr "URL des Authentifizierungs-Endpunktes"
284
msgstr "URL des Authentifizierungs-Endpunktes"
285
285
286
#: umc/js/uvmm/DomainPage.js:91 umc/js/uvmm/DomainWizard.js:215
286
#: umc/js/uvmm/DomainWizard.js:215 umc/js/uvmm/InstancePage.js:72
287
#: umc/js/uvmm/CreatePage.js:104 umc/js/uvmm/CloudConnectionWizard.js:62
287
#: umc/js/uvmm/InstanceWizard.js:75 umc/js/uvmm/CreatePage.js:104
288
#: umc/js/uvmm/InstancePage.js:72 umc/js/uvmm/InstanceWizard.js:75
288
#: umc/js/uvmm/DomainPage.js:91 umc/js/uvmm/CloudConnectionWizard.js:62
289
msgid "Back to overview"
289
msgid "Back to overview"
290
msgstr "Zurück zur Übersicht"
290
msgstr "Zurück zur Übersicht"
291
291
 Lines 334-342    Link Here 
334
msgid "Caching"
334
msgid "Caching"
335
msgstr "Caching"
335
msgstr "Caching"
336
336
337
#: umc/js/uvmm/DriveGrid.js:303 umc/js/uvmm/DriveGrid.js:332
337
#: umc/js/uvmm/SnapshotGrid.js:181 umc/js/uvmm/SnapshotGrid.js:207
338
#: umc/js/uvmm/SnapshotGrid.js:181 umc/js/uvmm/SnapshotGrid.js:207
338
#: umc/js/uvmm/SnapshotGrid.js:244 umc/js/uvmm/InterfaceGrid.js:134
339
#: umc/js/uvmm/SnapshotGrid.js:244 umc/js/uvmm/InterfaceGrid.js:134
339
#: umc/js/uvmm/DriveGrid.js:303 umc/js/uvmm/DriveGrid.js:332
340
#: umc/js/uvmm.js:476 umc/js/uvmm.js:595 umc/js/uvmm.js:656 umc/js/uvmm.js:935
340
#: umc/js/uvmm.js:476 umc/js/uvmm.js:595 umc/js/uvmm.js:656 umc/js/uvmm.js:935
341
#: umc/js/uvmm.js:1104
341
#: umc/js/uvmm.js:1104
342
msgid "Cancel"
342
msgid "Cancel"
 Lines 347-361    Link Here 
347
msgid "Change medium"
347
msgid "Change medium"
348
msgstr "Medium wechseln"
348
msgstr "Medium wechseln"
349
349
350
#: umc/js/uvmm/InstanceWizard.js:288
350
#: umc/js/uvmm/InstanceWizard.js:293
351
msgid "Choose an AMI"
351
msgid "Choose an AMI"
352
msgstr "Wählen Sie ein AMI aus"
352
msgstr "Wählen Sie ein AMI aus"
353
353
354
#: umc/js/uvmm/InstanceWizard.js:197
354
#: umc/js/uvmm/InstanceWizard.js:201
355
msgid "Choose an Image"
355
msgid "Choose an Image"
356
msgstr "Auswahl eines Images"
356
msgstr "Auswahl eines Images"
357
357
358
#: umc/js/uvmm/InstanceWizard.js:207 umc/js/uvmm/InstanceWizard.js:271
358
#: umc/js/uvmm/InstanceWizard.js:211 umc/js/uvmm/InstanceWizard.js:276
359
msgid "Choose an Instance Size"
359
msgid "Choose an Instance Size"
360
msgstr "Wahl der Instanzgröße"
360
msgstr "Wahl der Instanzgröße"
361
361
 Lines 379-388    Link Here 
379
msgid "Cloud instance"
379
msgid "Cloud instance"
380
msgstr "Cloud-Instanz"
380
msgstr "Cloud-Instanz"
381
381
382
#: umc/js/uvmm/InstanceWizard.js:224 umc/js/uvmm/InstanceWizard.js:299
382
#: umc/js/uvmm/InstanceWizard.js:304
383
msgid "Configure Network"
384
msgstr "Netzwerk konfigurieren"
385
386
#: umc/js/uvmm/InstanceWizard.js:228 umc/js/uvmm/InstanceWizard.js:328
383
msgid "Configure Security Group"
387
msgid "Configure Security Group"
384
msgstr "Konfigurieren einer Sicherheitsgruppe"
388
msgstr "Konfigurieren einer Sicherheitsgruppe"
385
389
390
#: umc/js/uvmm/InstanceWizard.js:321
391
msgid "Configure Subnet"
392
msgstr "Subnetz konfigurieren"
393
386
#: umc/js/uvmm/DriveGrid.js:291
394
#: umc/js/uvmm/DriveGrid.js:291
387
msgid "Configure cache behaviour of host."
395
msgid "Configure cache behaviour of host."
388
msgstr "Cache-Verhalten des Hosts konfigurieren."
396
msgstr "Cache-Verhalten des Hosts konfigurieren."
 Lines 412-418    Link Here 
412
msgid "Create a new cloud connection service account."
420
msgid "Create a new cloud connection service account."
413
msgstr "Erstellen einer neuen Cloud-Verbindung."
421
msgstr "Erstellen einer neuen Cloud-Verbindung."
414
422
415
#: umc/js/uvmm/OpenStack.js:52 umc/js/uvmm/EC2.js:46
423
#: umc/js/uvmm/EC2.js:46 umc/js/uvmm/OpenStack.js:52
416
msgid "Create a new cloud connection."
424
msgid "Create a new cloud connection."
417
msgstr "Erstellen einer neuen Cloud-Verbindung."
425
msgstr "Erstellen einer neuen Cloud-Verbindung."
418
426
 Lines 420-426    Link Here 
420
msgid "Create a new image"
428
msgid "Create a new image"
421
msgstr "Erstellen einer neuen Image-Datei"
429
msgstr "Erstellen einer neuen Image-Datei"
422
430
423
#: umc/js/uvmm/CreatePage.js:122 umc/js/uvmm/InstanceWizard.js:117
431
#: umc/js/uvmm/InstanceWizard.js:121 umc/js/uvmm/CreatePage.js:122
424
msgid "Create a new virtual machine instance."
432
msgid "Create a new virtual machine instance."
425
msgstr "Erstellen einer neuen virtuellen Instanz."
433
msgstr "Erstellen einer neuen virtuellen Instanz."
426
434
 Lines 482-490    Link Here 
482
msgid "Default (RealTek RTL-8139)"
490
msgid "Default (RealTek RTL-8139)"
483
msgstr "Voreinstellung (RealTek RTL-8139)"
491
msgstr "Voreinstellung (RealTek RTL-8139)"
484
492
493
#: umc/js/uvmm/DriveGrid.js:97 umc/js/uvmm/DriveGrid.js:328
485
#: umc/js/uvmm/SnapshotGrid.js:64 umc/js/uvmm/SnapshotGrid.js:240
494
#: umc/js/uvmm/SnapshotGrid.js:64 umc/js/uvmm/SnapshotGrid.js:240
486
#: umc/js/uvmm/DriveGrid.js:97 umc/js/uvmm/DriveGrid.js:328 umc/js/uvmm.js:283
495
#: umc/js/uvmm.js:283 umc/js/uvmm.js:587 umc/js/uvmm.js:648
487
#: umc/js/uvmm.js:587 umc/js/uvmm.js:648 umc/js/uvmm.js:1355
496
#: umc/js/uvmm.js:1355
488
msgid "Delete"
497
msgid "Delete"
489
msgstr "Löschen"
498
msgstr "Löschen"
490
499
 Lines 496-502    Link Here 
496
msgid "Delete an instance"
505
msgid "Delete an instance"
497
msgstr "Löschen einer Instanz"
506
msgstr "Löschen einer Instanz"
498
507
499
#: umc/js/uvmm/DomainPage.js:140 umc/js/uvmm/DomainWizard.js:171
508
#: umc/js/uvmm/DomainWizard.js:171 umc/js/uvmm/DomainPage.js:140
500
msgid "Description"
509
msgid "Description"
501
msgstr "Beschreibung"
510
msgstr "Beschreibung"
502
511
 Lines 512-518    Link Here 
512
msgid "Devices"
521
msgid "Devices"
513
msgstr "Geräte"
522
msgstr "Geräte"
514
523
515
#: umc/js/uvmm/DomainPage.js:228 umc/js/uvmm/DomainWizard.js:205
524
#: umc/js/uvmm/DomainWizard.js:205 umc/js/uvmm/DomainPage.js:228
516
msgid "Direct access (VNC)"
525
msgid "Direct access (VNC)"
517
msgstr "Direktzugriff (VNC)"
526
msgstr "Direktzugriff (VNC)"
518
527
 Lines 528-538    Link Here 
528
msgid "Drive type"
537
msgid "Drive type"
529
msgstr "Laufwerktyp"
538
msgstr "Laufwerktyp"
530
539
531
#: umc/js/uvmm/InterfaceGrid.js:75 umc/js/uvmm/InterfaceWizard.js:76
540
#: umc/js/uvmm/InterfaceWizard.js:76 umc/js/uvmm/InterfaceGrid.js:75
532
msgid "Driver"
541
msgid "Driver"
533
msgstr "Treiber"
542
msgstr "Treiber"
534
543
535
#: umc/js/uvmm/DomainPage.js:295 umc/js/uvmm/DomainWizard.js:113
544
#: umc/js/uvmm/DomainWizard.js:113 umc/js/uvmm/DomainPage.js:295
536
msgid "Drives"
545
msgid "Drives"
537
msgstr "Laufwerke"
546
msgstr "Laufwerke"
538
547
 Lines 571-577    Link Here 
571
"Speicherbereich ausgewählt, wird die Liste der verfügbaren ISO-Images "
580
"Speicherbereich ausgewählt, wird die Liste der verfügbaren ISO-Images "
572
"aktualisiert."
581
"aktualisiert."
573
582
574
#: umc/js/uvmm/InterfaceGrid.js:91 umc/js/uvmm/DriveGrid.js:86
583
#: umc/js/uvmm/DriveGrid.js:86 umc/js/uvmm/InterfaceGrid.js:91
575
#: umc/js/uvmm.js:271 umc/js/uvmm.js:1290 umc/js/uvmm.js:1377
584
#: umc/js/uvmm.js:271 umc/js/uvmm.js:1290 umc/js/uvmm.js:1377
576
msgid "Edit"
585
msgid "Edit"
577
msgstr "Bearbeiten"
586
msgstr "Bearbeiten"
 Lines 654-660    Link Here 
654
msgid "General"
663
msgid "General"
655
msgstr "Allgemein"
664
msgstr "Allgemein"
656
665
657
#: umc/js/uvmm/DomainPage.js:110 umc/js/uvmm/InstancePage.js:64
666
#: umc/js/uvmm/InstancePage.js:64 umc/js/uvmm/DomainPage.js:110
658
msgid "General settings"
667
msgid "General settings"
659
msgstr "Allgemeine Einstellungen"
668
msgstr "Allgemeine Einstellungen"
660
669
 Lines 678-685    Link Here 
678
msgid "Guest controlled"
687
msgid "Guest controlled"
679
msgstr "Gast-gesteuert"
688
msgstr "Gast-gesteuert"
680
689
681
#: umc/js/uvmm/types.js:54 umc/js/uvmm/types.js:204
690
#: umc/js/uvmm/InstanceWizard.js:158 umc/js/uvmm/types.js:54
682
#: umc/js/uvmm/InstanceWizard.js:154
691
#: umc/js/uvmm/types.js:204
683
msgid "Hard drive"
692
msgid "Hard drive"
684
msgstr "Festplatte"
693
msgstr "Festplatte"
685
694
 Lines 738-744    Link Here 
738
"gewechselt und zu dieser wieder zurückgesprungen werden. Das neue ISO-Image "
747
"gewechselt und zu dieser wieder zurückgesprungen werden. Das neue ISO-Image "
739
"sollte angezeigt werden."
748
"sollte angezeigt werden."
740
749
741
#: umc/js/uvmm/InstancePage.js:116 umc/js/uvmm/DriveGrid.js:75
750
#: umc/js/uvmm/DriveGrid.js:75 umc/js/uvmm/InstancePage.js:116
742
msgid "Image"
751
msgid "Image"
743
msgstr "Image"
752
msgstr "Image"
744
753
 Lines 750-756    Link Here 
750
msgid "Inherit MAC addresses"
759
msgid "Inherit MAC addresses"
751
msgstr "MAC-Adressen übernehmen"
760
msgstr "MAC-Adressen übernehmen"
752
761
753
#: umc/js/uvmm/InstanceWizard.js:181 umc/js/uvmm/InstanceWizard.js:255
762
#: umc/js/uvmm/InstanceWizard.js:185 umc/js/uvmm/InstanceWizard.js:260
754
msgid "Instance Name"
763
msgid "Instance Name"
755
msgstr "Instanzname"
764
msgstr "Instanzname"
756
765
 Lines 790-795    Link Here 
790
msgid "Latvian"
799
msgid "Latvian"
791
msgstr "Lettisch"
800
msgstr "Lettisch"
792
801
802
#: umc/js/uvmm/InstanceWizard.js:313
803
msgid "Launch into default Network"
804
msgstr "In Standard-Netzwerk starten"
805
793
#: umc/js/uvmm/types.js:157
806
#: umc/js/uvmm/types.js:157
794
msgid "Lithuanian"
807
msgid "Lithuanian"
795
msgstr "Litauisch"
808
msgstr "Litauisch"
 Lines 798-804    Link Here 
798
msgid "Local time zone"
811
msgid "Local time zone"
799
msgstr "Lokale Zeitzone"
812
msgstr "Lokale Zeitzone"
800
813
801
#: umc/js/uvmm/InterfaceGrid.js:81 umc/js/uvmm/InterfaceWizard.js:93
814
#: umc/js/uvmm/InterfaceWizard.js:93 umc/js/uvmm/InterfaceGrid.js:81
802
msgid "MAC address"
815
msgid "MAC address"
803
msgstr "MAC-Adresse"
816
msgstr "MAC-Adresse"
804
817
 Lines 814-820    Link Here 
814
msgid "Machine"
827
msgid "Machine"
815
msgstr "Maschine"
828
msgstr "Maschine"
816
829
817
#: umc/js/uvmm/DomainPage.js:211 umc/js/uvmm/InstanceWizard.js:153
830
#: umc/js/uvmm/InstanceWizard.js:157 umc/js/uvmm/DomainPage.js:211
818
msgid "Memory"
831
msgid "Memory"
819
msgstr "Speicher"
832
msgstr "Speicher"
820
833
 Lines 838-847    Link Here 
838
msgid "NAT"
851
msgid "NAT"
839
msgstr "NAT"
852
msgstr "NAT"
840
853
841
#: umc/js/uvmm/DomainPage.js:121 umc/js/uvmm/SnapshotGrid.js:56
854
#: umc/js/uvmm/DomainWizard.js:165 umc/js/uvmm/InstancePage.js:90
842
#: umc/js/uvmm/OpenStack.js:74 umc/js/uvmm/DomainWizard.js:165
855
#: umc/js/uvmm/EC2.js:58 umc/js/uvmm/DomainPage.js:121
843
#: umc/js/uvmm/InstancePage.js:90 umc/js/uvmm/EC2.js:58 umc/js/uvmm.js:1151
856
#: umc/js/uvmm/SnapshotGrid.js:56 umc/js/uvmm/OpenStack.js:74
844
#: umc/js/uvmm.js:1169 umc/js/uvmm.js:1184
857
#: umc/js/uvmm.js:1151 umc/js/uvmm.js:1169 umc/js/uvmm.js:1184
845
msgid "Name"
858
msgid "Name"
846
msgstr "Name"
859
msgstr "Name"
847
860
 Lines 886-893    Link Here 
886
msgid "Not removable"
899
msgid "Not removable"
887
msgstr "Nicht löschbar"
900
msgstr "Nicht löschbar"
888
901
889
#: umc/js/uvmm/DomainPage.js:187 umc/js/uvmm/DomainWizard.js:199
902
#: umc/js/uvmm/DomainWizard.js:199 umc/js/uvmm/InstanceWizard.js:155
890
#: umc/js/uvmm/InstanceWizard.js:151
903
#: umc/js/uvmm/DomainPage.js:187
891
msgid "Number of CPUs"
904
msgid "Number of CPUs"
892
msgstr "Anzahl der CPUs"
905
msgstr "Anzahl der CPUs"
893
906
 Lines 1059-1065    Link Here 
1059
msgid "Read/write caching, sync filtered out (unsafe)"
1072
msgid "Read/write caching, sync filtered out (unsafe)"
1060
msgstr "Lese-/Schreib-Caching, herausgefiltertes sync (unsafe)"
1073
msgstr "Lese-/Schreib-Caching, herausgefiltertes sync (unsafe)"
1061
1074
1062
#: umc/js/uvmm.js:290
1075
#: umc/js/uvmm/InstanceWizard.js:309 umc/js/uvmm.js:290
1063
msgid "Reload"
1076
msgid "Reload"
1064
msgstr "Neu laden"
1077
msgstr "Neu laden"
1065
1078
 Lines 1096-1102    Link Here 
1096
msgid "Russian"
1109
msgid "Russian"
1097
msgstr "Russisch"
1110
msgstr "Russisch"
1098
1111
1099
#: umc/js/uvmm/DomainPage.js:96 umc/js/uvmm/DriveGrid.js:296
1112
#: umc/js/uvmm/DriveGrid.js:296 umc/js/uvmm/DomainPage.js:96
1100
msgid "Save"
1113
msgid "Save"
1101
msgstr "Speichern"
1114
msgstr "Speichern"
1102
1115
 Lines 1116-1125    Link Here 
1116
msgid "Security group"
1129
msgid "Security group"
1117
msgstr "Sicherheitsgruppe"
1130
msgstr "Sicherheitsgruppe"
1118
1131
1119
#: umc/js/uvmm/InstanceWizard.js:187 umc/js/uvmm/InstanceWizard.js:261
1132
#: umc/js/uvmm/InstanceWizard.js:191 umc/js/uvmm/InstanceWizard.js:266
1120
msgid "Select a key pair"
1133
msgid "Select a key pair"
1121
msgstr "Auswahl eines Schlüsselpaares"
1134
msgstr "Auswahl eines Schlüsselpaares"
1122
1135
1136
#: umc/js/uvmm/InstanceWizard.js:109
1137
msgid ""
1138
"Select a network in which the new virtual machine instance should be "
1139
"launched. The network configuration has to be done at the provider's "
1140
"administration interface. <a href=\"https://aws.amazon.com/documentation/vpc/"
1141
"\" target=\"_blank\">Use this link for more information about Amazon VPC</a> "
1142
"and <a href=\"https://console.aws.amazon.com/vpc/home?#s=vpcs\" target="
1143
"\"_blank\">this link to configure VPC</a>."
1144
msgstr ""
1145
"Wählen Sie das Netzwerk aus, in welchem die neue virtuelle Instanz gestartet "
1146
"werden soll. Die Netzwerkkonfiguration erfolgt direkt über die "
1147
"Verwaltungsseite der Cloud. <a href=\"https://aws.amazon.com/de/"
1148
"documentation/vpc/\" target=\"_blank\">Nutzen Sie diesen Link um weitere "
1149
"Informationen über Amazon VPC zu erhalten</a> und <a href=\"https://console."
1150
"aws.amazon.com/vpc/home?#s=vpcs\" target=\"_blank\">diesen Link um VPC zu "
1151
"konfigurieren</a>."
1152
1123
#: umc/js/uvmm/CreatePage.js:116
1153
#: umc/js/uvmm/CreatePage.js:116
1124
msgid ""
1154
msgid ""
1125
"Select if you want to create a new machine using an established connection, "
1155
"Select if you want to create a new machine using an established connection, "
 Lines 1134-1140    Link Here 
1134
"Select the cloud in which a new virtual machine instance is going to be "
1164
"Select the cloud in which a new virtual machine instance is going to be "
1135
"created. Alternatively, it is possible to register a new cloud connection."
1165
"created. Alternatively, it is possible to register a new cloud connection."
1136
msgstr ""
1166
msgstr ""
1137
"Wählen sie die Cloud aus, in der eine neue virtuelle Instanz erzeugt werden "
1167
"Wählen Sie die Cloud aus, in der eine neue virtuelle Instanz erzeugt werden "
1138
"soll. Alternativ ist es ebenfalls möglich, eine neue Cloud-Verbindung "
1168
"soll. Alternativ ist es ebenfalls möglich, eine neue Cloud-Verbindung "
1139
"einzutragen."
1169
"einzutragen."
1140
1170
 Lines 1158-1164    Link Here 
1158
msgid "Service type"
1188
msgid "Service type"
1159
msgstr "Servicetyp"
1189
msgstr "Servicetyp"
1160
1190
1161
#: umc/js/uvmm/DomainPage.js:153 umc/js/uvmm/InstancePage.js:126
1191
#: umc/js/uvmm/InstancePage.js:126 umc/js/uvmm/DomainPage.js:153
1162
msgid "Settings"
1192
msgid "Settings"
1163
msgstr "Einstellungen"
1193
msgstr "Einstellungen"
1164
1194
 Lines 1237-1243    Link Here 
1237
msgid "Snapshots settings"
1267
msgid "Snapshots settings"
1238
msgstr "Einstellungen für Sicherungspunkte"
1268
msgstr "Einstellungen für Sicherungspunkte"
1239
1269
1240
#: umc/js/uvmm/InterfaceGrid.js:72 umc/js/uvmm/InterfaceWizard.js:83
1270
#: umc/js/uvmm/InterfaceWizard.js:83 umc/js/uvmm/InterfaceGrid.js:72
1241
msgid "Source"
1271
msgid "Source"
1242
msgstr "Quelle"
1272
msgstr "Quelle"
1243
1273
 Lines 1309-1315    Link Here 
1309
msgid "The device cannot be modified by the guest."
1339
msgid "The device cannot be modified by the guest."
1310
msgstr "Das Gerät kann nicht vom Gast modifiziert werden."
1340
msgstr "Das Gerät kann nicht vom Gast modifiziert werden."
1311
1341
1312
#: umc/js/uvmm/DomainPage.js:382 umc/js/uvmm/InstancePage.js:152
1342
#: umc/js/uvmm/InstancePage.js:152 umc/js/uvmm/DomainPage.js:382
1313
#: umc/js/uvmm/DriveWizard.js:363
1343
#: umc/js/uvmm/DriveWizard.js:363
1314
msgid "The entered data is not valid. Please correct your input."
1344
msgid "The entered data is not valid. Please correct your input."
1315
msgstr ""
1345
msgstr ""
 Lines 1337-1343    Link Here 
1337
"Die Instanz {label} läuft noch nicht. Bitte warten und klicken Sie auf "
1367
"Die Instanz {label} läuft noch nicht. Bitte warten und klicken Sie auf "
1338
"\"Suchen\", um die Ansicht zu aktualisieren."
1368
"\"Suchen\", um die Ansicht zu aktualisieren."
1339
1369
1340
#: umc/js/uvmm/DomainPage.js:210 umc/js/uvmm/DomainWizard.js:194
1370
#: umc/js/uvmm/DomainWizard.js:194 umc/js/uvmm/DomainPage.js:210
1341
msgid "The memory size is invalid (e.g. 3GB or 1024 MB), minimum 4 MB"
1371
msgid "The memory size is invalid (e.g. 3GB or 1024 MB), minimum 4 MB"
1342
msgstr ""
1372
msgstr ""
1343
"Die angegebenen Speicherkapazität is ungültig (bspw. 3GB oder 1024 MB), "
1373
"Die angegebenen Speicherkapazität is ungültig (bspw. 3GB oder 1024 MB), "
 Lines 1463-1470    Link Here 
1463
"univention.de/handbuch-4.0.html#uvmm:networkinterfaces\" target=\"_blank"
1493
"univention.de/handbuch-4.0.html#uvmm:networkinterfaces\" target=\"_blank"
1464
"\">im Handbuch</a> zu finden."
1494
"\">im Handbuch</a> zu finden."
1465
1495
1466
#: umc/js/uvmm/InterfaceGrid.js:59 umc/js/uvmm/DriveGrid.js:69
1496
#: umc/js/uvmm/DriveGrid.js:69 umc/js/uvmm/InterfaceWizard.js:62
1467
#: umc/js/uvmm/InterfaceWizard.js:62
1497
#: umc/js/uvmm/InterfaceGrid.js:59
1468
msgid "Type"
1498
msgid "Type"
1469
msgstr "Typ"
1499
msgstr "Typ"
1470
1500
 Lines 1538-1545    Link Here 
1538
msgid "automatic"
1568
msgid "automatic"
1539
msgstr "Automatisch"
1569
msgstr "Automatisch"
1540
1570
1541
#: umc/js/uvmm/InstanceWizard.js:189 umc/js/uvmm/InstanceWizard.js:226
1571
#: umc/js/uvmm/InstanceWizard.js:193 umc/js/uvmm/InstanceWizard.js:230
1542
#: umc/js/uvmm/InstanceWizard.js:263 umc/js/uvmm/InstanceWizard.js:301
1572
#: umc/js/uvmm/InstanceWizard.js:268 umc/js/uvmm/InstanceWizard.js:306
1573
#: umc/js/uvmm/InstanceWizard.js:330
1543
msgid "more information"
1574
msgid "more information"
1544
msgstr "mehr Informationen"
1575
msgstr "mehr Informationen"
1545
1576
 Lines 1575-1582    Link Here 
1575
msgid "terminated"
1606
msgid "terminated"
1576
msgstr "terminiert"
1607
msgstr "terminiert"
1577
1608
1578
#: umc/js/uvmm/InterfaceGrid.js:61 umc/js/uvmm/InterfaceGrid.js:77
1609
#: umc/js/uvmm/DriveGrid.js:71 umc/js/uvmm/InterfaceGrid.js:61
1579
#: umc/js/uvmm/DriveGrid.js:71
1610
#: umc/js/uvmm/InterfaceGrid.js:77
1580
msgid "unknown"
1611
msgid "unknown"
1581
msgstr "Unbekannt"
1612
msgstr "Unbekannt"
1582
1613
 Lines 1587-1592    Link Here 
1587
#~ msgid "Boot device"
1618
#~ msgid "Boot device"
1588
#~ msgstr "Bootmedium"
1619
#~ msgstr "Bootmedium"
1589
1620
1621
#~ msgid "Create new Network"
1622
#~ msgstr "Erstellen einer neuen Image-Datei"
1623
1590
#~ msgid "Full virtualization (KVM)"
1624
#~ msgid "Full virtualization (KVM)"
1591
#~ msgstr "Voll-Virtualisierung (KVM)"
1625
#~ msgstr "Voll-Virtualisierung (KVM)"
1592
1626
(-)umc/python/uvmm/de.po (-5 / +11 lines)
 Lines 34-40    Link Here 
34
msgstr ""
34
msgstr ""
35
"Project-Id-Version: univention-management-console-module-uvmm 2.0.40-1\n"
35
"Project-Id-Version: univention-management-console-module-uvmm 2.0.40-1\n"
36
"Report-Msgid-Bugs-To: packages@univention.de\n"
36
"Report-Msgid-Bugs-To: packages@univention.de\n"
37
"POT-Creation-Date: 2015-02-02 13:33+0100\n"
37
"POT-Creation-Date: 2015-03-25 09:15+0100\n"
38
"PO-Revision-Date: 2013-05-23 09:17+0100\n"
38
"PO-Revision-Date: 2013-05-23 09:17+0100\n"
39
"Last-Translator: Univention GmbH <packages@univention.de>\n"
39
"Last-Translator: Univention GmbH <packages@univention.de>\n"
40
"Language-Team: German <de@li.org>\n"
40
"Language-Team: German <de@li.org>\n"
 Lines 93-99    Link Here 
93
"Weitere Informationen können in den folgenden Protokolldateien gefunden "
93
"Weitere Informationen können in den folgenden Protokolldateien gefunden "
94
"werden:"
94
"werden:"
95
95
96
#: umc/python/uvmm/nodes.py:98 umc/python/uvmm/__init__.py:144
96
#: umc/python/uvmm/__init__.py:144 umc/python/uvmm/nodes.py:98
97
msgid "Physical servers"
97
msgid "Physical servers"
98
msgstr "Physikalische Server"
98
msgstr "Physikalische Server"
99
99
 Lines 101-114    Link Here 
101
msgid ""
101
msgid ""
102
"The connection to the univention-virtual-machine-manager-daemon service "
102
"The connection to the univention-virtual-machine-manager-daemon service "
103
"failed."
103
"failed."
104
msgstr "Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist fehlgeschlagen."
104
msgstr ""
105
"Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist "
106
"fehlgeschlagen."
105
107
106
#: umc/python/uvmm/uvmmd.py:66
108
#: umc/python/uvmm/uvmmd.py:66
107
#, python-format
109
#, python-format
108
msgid ""
110
msgid ""
109
"The connection to the univention-virtual-machine-manager-daemon service "
111
"The connection to the univention-virtual-machine-manager-daemon service "
110
"failed: %s"
112
"failed: %s"
111
msgstr "Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist fehlgeschlagen: %s"
113
msgstr ""
114
"Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist "
115
"fehlgeschlagen: %s"
112
116
113
#: umc/python/uvmm/uvmmd.py:85
117
#: umc/python/uvmm/uvmmd.py:85
114
msgid "The given UVMM command is not known"
118
msgid "The given UVMM command is not known"
 Lines 118-124    Link Here 
118
msgid ""
122
msgid ""
119
"This might be a temporary problem. Please wait some minutes for the "
123
"This might be a temporary problem. Please wait some minutes for the "
120
"connection to reestablish or restart the UVMM service."
124
"connection to reestablish or restart the UVMM service."
121
msgstr "Dies kann ein temporäres Problem sein. Bitte warten Sie einige Minuten damit die Verbindung wiederhergestellt wird oder starten Sie den UVMM-Dienst neu."
125
msgstr ""
126
"Dies kann ein temporäres Problem sein. Bitte warten Sie einige Minuten damit "
127
"die Verbindung wiederhergestellt wird oder starten Sie den UVMM-Dienst neu."
122
128
123
#: umc/python/uvmm/domains.py:420
129
#: umc/python/uvmm/domains.py:420
124
#, python-format
130
#, python-format
(-)umc/python/uvmm/cloud.py (-1 / +83 lines)
 Lines 285-290    Link Here 
285
		"""
285
		"""
286
		self.required_options(request, 'conn_name')
286
		self.required_options(request, 'conn_name')
287
		conn_name = request.options.get('conn_name')
287
		conn_name = request.options.get('conn_name')
288
		network_id = request.options.get('network_id')
288
289
289
		def _finished(thread, result, request):
290
		def _finished(thread, result, request):
290
			"""
291
			"""
 Lines 298-304    Link Here 
298
				secgroup_list = [
299
				secgroup_list = [
299
						{'id': item.id, 'label': item.name}
300
						{'id': item.id, 'label': item.name}
300
						for conn_name, images in data.items()
301
						for conn_name, images in data.items()
301
						for item in images
302
						for item in images if network_id in ('default', item.network_id)
302
						]
303
						]
303
304
304
				self.finished(request.id, secgroup_list)
305
				self.finished(request.id, secgroup_list)
 Lines 316-321    Link Here 
316
				conn_name=conn_name
317
				conn_name=conn_name
317
				)
318
				)
318
319
320
	def cloud_list_network(self, request):
321
		"""
322
		Returns a list of networks for the given cloud conn_name.
323
		"""
324
		self.required_options(request, 'conn_name')
325
		conn_name = request.options.get('conn_name')
326
327
		def _finished(thread, result, request):
328
			"""
329
			Process asynchronous UVMM L_CLOUD_NETWORK_LIST answer.
330
			"""
331
			if self._check_thread_error(thread, result, request):
332
				return
333
334
			success, data = result
335
			if success:
336
				network_list = [
337
						{
338
							'id': item.id,
339
							'label': '%s %s' % (item.name, item.cidr or "")
340
						}
341
						for conn_name, images in data.items()
342
						for item in images
343
						]
344
345
				self.finished(request.id, network_list)
346
			else:
347
				self.finished(
348
						request.id,
349
						None,
350
						message=str(data),
351
						status=MODULE_ERR_COMMAND_FAILED
352
						)
353
354
		self.uvmm.send(
355
				'L_CLOUD_NETWORK_LIST',
356
				Callback(_finished, request),
357
				conn_name=conn_name
358
				)
359
360
	def cloud_list_subnet(self, request):
361
		"""
362
		Returns a list of subnet for the given cloud conn_name.
363
		"""
364
		self.required_options(request, 'conn_name')
365
		conn_name = request.options.get('conn_name')
366
		network_id = request.options.get('network_id')
367
368
		def _finished(thread, result, request):
369
			"""
370
			Process asynchronous UVMM L_CLOUD_SUBNET_LIST answer.
371
			"""
372
			if self._check_thread_error(thread, result, request):
373
				return
374
375
			success, data = result
376
			if success:
377
				subnet_list = [
378
						{
379
							'id': item.id,
380
							'label': '%s %s' % (item.name, item.cidr or "")
381
						}
382
						for conn_name, images in data.items()
383
						for item in images if network_id == item.network_id
384
						]
385
386
				self.finished(request.id, subnet_list)
387
			else:
388
				self.finished(
389
						request.id,
390
						None,
391
						message=str(data),
392
						status=MODULE_ERR_COMMAND_FAILED
393
						)
394
395
		self.uvmm.send(
396
				'L_CLOUD_SUBNET_LIST',
397
				Callback(_finished, request),
398
				conn_name=conn_name
399
				)
400
319
	@sanitize(domainPattern=SearchSanitizer(default='*'))
401
	@sanitize(domainPattern=SearchSanitizer(default='*'))
320
	def instance_query(self, request):
402
	def instance_query(self, request):
321
		"""
403
		"""
(-)umc/uvmm.xml (+2 lines)
 Lines 46-51    Link Here 
46
		<command name="uvmm/cloud/list/size" function="cloud_list_size"/>
46
		<command name="uvmm/cloud/list/size" function="cloud_list_size"/>
47
		<command name="uvmm/cloud/list/image" function="cloud_list_image"/>
47
		<command name="uvmm/cloud/list/image" function="cloud_list_image"/>
48
		<command name="uvmm/cloud/list/secgroup" function="cloud_list_secgroup"/>
48
		<command name="uvmm/cloud/list/secgroup" function="cloud_list_secgroup"/>
49
		<command name="uvmm/cloud/list/network" function="cloud_list_network"/>
50
		<command name="uvmm/cloud/list/subnet" function="cloud_list_subnet"/>
49
		<command name="uvmm/instance/query" function="instance_query"/>
51
		<command name="uvmm/instance/query" function="instance_query"/>
50
		<command name="uvmm/instance/state" function="instance_state"/>
52
		<command name="uvmm/instance/state" function="instance_state"/>
51
		<command name="uvmm/instance/remove" function="instance_remove"/>
53
		<command name="uvmm/instance/remove" function="instance_remove"/>
(-)src/univention/uvmm/cloudnode.py (+9 lines)
 Lines 205-210    Link Here 
205
205
206
		return networks
206
		return networks
207
207
208
	def list_conn_subnets(self, conn_name="*"):
209
		connection_list = self._get_connections(conn_name)
210
211
		subnets = {}
212
		for connection in connection_list:
213
			subnets[connection.publicdata.name] = connection.list_subnets()
214
215
		return subnets
216
208
	def instance_state(self, conn_name, instance_id, state):
217
	def instance_state(self, conn_name, instance_id, state):
209
		self._check_if_connection_exists(conn_name)
218
		self._check_if_connection_exists(conn_name)
210
		self[conn_name].instance_state(instance_id, state)
219
		self[conn_name].instance_state(instance_id, state)
(-)src/univention/uvmm/openstackcloud.py (+3 lines)
 Lines 266-271    Link Here 
266
266
267
		return networks
267
		return networks
268
268
269
	def list_subnets(self):
270
		return []
271
269
	def _boot_instance(self, instance):
272
	def _boot_instance(self, instance):
270
		self._exec_libcloud(lambda: self.driver.ex_hard_reboot_node(instance))
273
		self._exec_libcloud(lambda: self.driver.ex_hard_reboot_node(instance))
271
274
(-)src/univention/uvmm/ec2cloud.py (-17 / +44 lines)
 Lines 47-53    Link Here 
47
from node import PersistentCached
47
from node import PersistentCached
48
from helpers import N_ as _
48
from helpers import N_ as _
49
from cloudconnection import CloudConnection, CloudConnectionError
49
from cloudconnection import CloudConnection, CloudConnectionError
50
from protocol import Cloud_Data_Instance, Cloud_Data_Location, Cloud_Data_Secgroup, Cloud_Data_Size, Cloud_Data_Network
50
from protocol import Cloud_Data_Instance, Cloud_Data_Location, Cloud_Data_Secgroup, Cloud_Data_Size, Cloud_Data_Network, Cloud_Data_Subnet
51
import univention.config_registry as ucr
51
import univention.config_registry as ucr
52
52
53
configRegistry = ucr.ConfigRegistry()
53
configRegistry = ucr.ConfigRegistry()
 Lines 72-78    Link Here 
72
		"location": "location",
72
		"location": "location",
73
		"keyname": "ex_keyname",
73
		"keyname": "ex_keyname",
74
		"userdata": "ex_userdata",
74
		"userdata": "ex_userdata",
75
		"security_group_ids": "ex_security_groups",
75
		"security_group_ids": {'group_name': "ex_security_groups", 'group_id': 'ex_security_group_ids'},
76
		"metadata": "ex_metadata",
76
		"metadata": "ex_metadata",
77
		"min_instance_count": "ex_mincount",
77
		"min_instance_count": "ex_mincount",
78
		"max_instance_count": "ex_maxcount",
78
		"max_instance_count": "ex_maxcount",
 Lines 80-86    Link Here 
80
		"blockdevicemappings": "ex_blockdevicemappings",
80
		"blockdevicemappings": "ex_blockdevicemappings",
81
		"iamprofile": "ex_iamprofile",
81
		"iamprofile": "ex_iamprofile",
82
		"ebs_optimized": "ex_ebs_optimized",
82
		"ebs_optimized": "ex_ebs_optimized",
83
		"subnet": "ex_subnet"
83
		"subnet_id": "ex_subnet"
84
	}
84
	}
85
85
86
86
 Lines 94-107    Link Here 
94
94
95
95
96
PROVIDER_MAPPING = {
96
PROVIDER_MAPPING = {
97
		"EC2_US_EAST": Provider.EC2_US_EAST,
97
		"EC2_US_EAST": "us-east-1",
98
		"EC2_EU_WEST": Provider.EC2_EU_WEST,
98
		"EC2_EU_WEST": "eu-west-1",
99
		"EC2_US_WEST": Provider.EC2_US_WEST,
99
		"EC2_US_WEST": "us-west-1",
100
		"EC2_US_WEST_OREGON": Provider.EC2_US_WEST_OREGON,
100
		"EC2_US_WEST_OREGON": "us-west-2",
101
		"EC2_AP_SOUTHEAST": Provider.EC2_AP_SOUTHEAST,
101
		"EC2_AP_SOUTHEAST": "ap-southeast-1",
102
		"EC2_AP_NORTHEAST": Provider.EC2_AP_NORTHEAST,
102
		"EC2_AP_NORTHEAST": "ap-northeast-1",
103
		"EC2_SA_EAST": Provider.EC2_SA_EAST,
103
		"EC2_SA_EAST": "sa-east-1",
104
		"EC2_AP_SOUTHEAST2": Provider.EC2_AP_SOUTHEAST2,
104
		"EC2_AP_SOUTHEAST2": "ap-southeast-2",
105
		"EC2_EU_CENTRAL": "eu-central-1",
105
		}
106
		}
106
107
107
108
 Lines 138-144    Link Here 
138
		if 'secure' not in params:
139
		if 'secure' not in params:
139
			params['secure'] = True
140
			params['secure'] = True
140
141
141
		os = get_driver(PROVIDER_MAPPING[cloud["region"]])
142
		os = get_driver(Provider.EC2)
143
		params['region'] = PROVIDER_MAPPING[cloud["region"]]
142
144
143
		p = params.copy()
145
		p = params.copy()
144
		p["secret"] = "******"
146
		p["secret"] = "******"
 Lines 165-170    Link Here 
165
		self._keypairs = self._exec_libcloud(lambda: self.driver.list_key_pairs())
167
		self._keypairs = self._exec_libcloud(lambda: self.driver.list_key_pairs())
166
		self._security_groups = self._exec_libcloud(lambda: self.driver.ex_get_security_groups())  # ex_get_ for ec2!
168
		self._security_groups = self._exec_libcloud(lambda: self.driver.ex_get_security_groups())  # ex_get_ for ec2!
167
		self._networks = self._exec_libcloud(lambda: self.driver.ex_list_networks())
169
		self._networks = self._exec_libcloud(lambda: self.driver.ex_list_networks())
170
		self._subnets = self._exec_libcloud(lambda: self.driver.ex_list_subnets())
168
		self._last_expensive_update = time.time()
171
		self._last_expensive_update = time.time()
169
172
170
	def list_instances(self, pattern="*"):
173
	def list_instances(self, pattern="*"):
 Lines 228-233    Link Here 
228
			s.out_rules = secgroup.egress_rules
231
			s.out_rules = secgroup.egress_rules
229
			s.extra = secgroup.extra
232
			s.extra = secgroup.extra
230
			s.tenant_id = secgroup.extra["owner_id"]
233
			s.tenant_id = secgroup.extra["owner_id"]
234
			s.driver = self.driver.name  # missing in libcloud EC2SecurityGroup
235
			s.network_id = secgroup.extra["vpc_id"]
231
236
232
			secgroups.append(s)
237
			secgroups.append(s)
233
238
 Lines 258-263    Link Here 
258
			s = Cloud_Data_Network()
263
			s = Cloud_Data_Network()
259
			s.id = network.id
264
			s.id = network.id
260
			s.name = network.name
265
			s.name = network.name
266
			s.driver = self.driver.name  # missing in libcloud EC2Network
261
			s.extra = network.extra
267
			s.extra = network.extra
262
			s.cidr = network.cidr_block
268
			s.cidr = network.cidr_block
263
269
 Lines 265-270    Link Here 
265
271
266
		return networks
272
		return networks
267
273
274
	def list_subnets(self):
275
		subnets = []
276
		for subnet in self._subnets:
277
			s = Cloud_Data_Subnet()
278
			s.id = subnet.id
279
			s.name = subnet.name
280
			s.driver = self.driver.name  # missing in libcloud EC2NetworkSubnet
281
			s.cidr = subnet.extra['cidr_block']
282
			s.network_id = subnet.extra["vpc_id"]
283
			s.extra = subnet.extra
284
285
			subnets.append(s)
286
287
		return subnets
288
268
	def to_cloud_data_image(self, image):
289
	def to_cloud_data_image(self, image):
269
		cloud_data_image = super(EC2CloudConnection, self).to_cloud_data_image(image)
290
		cloud_data_image = super(EC2CloudConnection, self).to_cloud_data_image(image)
270
		cloud_data_image.name = "%s (%s)" % (image.name, image.id)
291
		cloud_data_image.name = "%s (%s)" % (image.name, image.id)
 Lines 421-427    Link Here 
421
			if not secgroups:
442
			if not secgroups:
422
				raise EC2CloudConnectionError("No security group with id %s found." % args["security_group_ids"])
443
				raise EC2CloudConnectionError("No security group with id %s found." % args["security_group_ids"])
423
444
424
			kwargs[EC2_CREATE_ATTRIBUTES["security_group_ids"]] = [s.name for s in secgroups]
445
			if "subnet_id" in args and args["subnet_id"] != '':  # vpc
446
				kwargs[EC2_CREATE_ATTRIBUTES["security_group_ids"]["group_id"]] = [s.id for s in secgroups]
447
			else:  # default
448
				kwargs[EC2_CREATE_ATTRIBUTES["security_group_ids"]["group_name"]] = [s.name for s in secgroups]
425
449
426
		if "min_instance_count" in args:
450
		if "min_instance_count" in args:
427
			if not (isinstance(args["min_instance_count"], int)):
451
			if not (isinstance(args["min_instance_count"], int)):
 Lines 457-466    Link Here 
457
				raise EC2CloudConnectionError("<ebs_optimized> attribute must be a bool")
481
				raise EC2CloudConnectionError("<ebs_optimized> attribute must be a bool")
458
			kwargs[EC2_CREATE_ATTRIBUTES["ebs_optimized"]] = args["ebs_optimized"]
482
			kwargs[EC2_CREATE_ATTRIBUTES["ebs_optimized"]] = args["ebs_optimized"]
459
483
460
		if "subnet" in args:
484
		if "subnet_id" in args and args["subnet_id"] != '':
461
			if not (isinstance(args["subnet"], str)):
485
			if not (isinstance(args["subnet_id"], str) or isinstance(args["userdata"], unicode)):
462
				raise EC2CloudConnectionError("<subnet> attribute must be a string")
486
				raise EC2CloudConnectionError("<subnet_id> attribute must be a string")
463
			kwargs[EC2_CREATE_ATTRIBUTES["subnet"]] = args["subnet"]
487
			subnet = [s for s in self._subnets if s.id == args["subnet_id"]]
488
			if not subnet:
489
				raise EC2CloudConnectionError("No subnet with id %s found." % args["subnet_id"])
490
			kwargs[EC2_CREATE_ATTRIBUTES["subnet_id"]] = subnet[0]
464
491
465
		# libcloud call
492
		# libcloud call
466
		try:
493
		try:
(-)src/univention/uvmm/commands.py (+13 lines)
 Lines 204-209    Link Here 
204
			raise CommandError('L_CLOUD_NETWORK_LIST', e)
204
			raise CommandError('L_CLOUD_NETWORK_LIST', e)
205
205
206
	@staticmethod
206
	@staticmethod
207
	def L_CLOUD_SUBNET_LIST(server, request):
208
		"""List available cloud subnets of cloud connections"""
209
		logger.debug('L_CLOUD_SUBNET_LIST')
210
		if not isinstance(request.conn_name, basestring):
211
			raise CommandError('L_CLOUD_SUBNET_LIST', _('conn_name != string: %(conn_name)s'), conn_name=request.conn_name)
212
		try:
213
			res = protocol.Response_DUMP()
214
			res.data = cloudnode.cloudconnections.list_conn_subnets(request.conn_name)
215
			return res
216
		except cloudnode.CloudConnectionError, e:
217
			raise CommandError('L_CLOUD_SUBNET_LIST', e)
218
219
	@staticmethod
207
	def L_CLOUD_INSTANCE_STATE(server, request):
220
	def L_CLOUD_INSTANCE_STATE(server, request):
208
		"""Change instance state"""
221
		"""Change instance state"""
209
		logger.debug('L_CLOUD_INSTANCE_STATE')
222
		logger.debug('L_CLOUD_INSTANCE_STATE')
(-)src/univention/uvmm/protocol.py (+18 lines)
 Lines 340-345    Link Here 
340
		self.command = 'L_CLOUD_NETWORK_LIST'
340
		self.command = 'L_CLOUD_NETWORK_LIST'
341
		self.conn_name = None
341
		self.conn_name = None
342
342
343
class Request_L_CLOUD_SUBNET_LIST(Request):
344
	"""List available cloud subnets of cloud connections"""
345
	def _default(self):
346
		self.command = 'L_CLOUD_SUBNET_LIST'
347
		self.conn_name = None
348
343
class Request_L_CLOUD_INSTANCE_STATE(Request):
349
class Request_L_CLOUD_INSTANCE_STATE(Request):
344
	"""Change instance state"""
350
	"""Change instance state"""
345
	def _default(self):
351
	def _default(self):
 Lines 542-547    Link Here 
542
		self.in_rules = {}
548
		self.in_rules = {}
543
		self.out_rules = {}
549
		self.out_rules = {}
544
		self.extra = {}
550
		self.extra = {}
551
		self.network_id = None
545
552
546
553
547
class Cloud_Data_Secgroup_Rule(object):
554
class Cloud_Data_Secgroup_Rule(object):
 Lines 569-574    Link Here 
569
		self.extra = {}
576
		self.extra = {}
570
577
571
578
579
class Cloud_Data_Subnet(object):
580
	"""Container for libcloud subnet statistics"""
581
	def __init__(self):
582
		self.name = None
583
		self.id = None
584
		self.driver = None
585
		self.cidr = None
586
		self.network_id = None
587
		self.extra = {}
588
589
572
class Data_Snapshot(object):
590
class Data_Snapshot(object):
573
	"""Container for snapshot data."""
591
	"""Container for snapshot data."""
574
	def __init__(self):
592
	def __init__(self):
(-)src/univention/uvmm/cloudconnection.py (+1 lines)
 Lines 98-103    Link Here 
98
		self._images = []
98
		self._images = []
99
		self._sizes = []
99
		self._sizes = []
100
		self._networks = []
100
		self._networks = []
101
		self._subnets = []
101
102
102
	def _create_connection(self, cloud, testconnection=True):
103
	def _create_connection(self, cloud, testconnection=True):
103
		pass
104
		pass
(-)src/univention-virtual-machine-manager (+9 lines)
 Lines 719-724    Link Here 
719
		"""
719
		"""
720
		return protocol.Request_L_CLOUD_NETWORK_LIST(conn_name=name)
720
		return protocol.Request_L_CLOUD_NETWORK_LIST(conn_name=name)
721
721
722
	def cloud_subnet_list(self, name="*"):
723
		"""
724
		%prog cloud_subnet_list <name>
725
726
		List available cloud subnets
727
		name is the cloud connection name. If empty, list information from all connections
728
		"""
729
		return protocol.Request_L_CLOUD_SUBNET_LIST(conn_name=name)
730
722
	def cloud_instance_state(self, name, instance_id, state):
731
	def cloud_instance_state(self, name, instance_id, state):
723
		"""
732
		"""
724
		%prog cloud_instance_state <name> <instance_id> <state>
733
		%prog cloud_instance_state <name> <instance_id> <state>

Return to bug 36289