Univention Bugzilla – Attachment 6988 Details for
Bug 36289
Support new EC2 region EU-Frankfurt
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for Bug #36289 and Bug #36141
bug_36289_franfurt_bug_36141_vpc.patch (text/plain), 33.37 KB, created by
Andreas Peichert
on 2015-07-01 12:14 CEST
(
hide
)
Description:
Patch for Bug #36289 and Bug #36141
Filename:
MIME Type:
Creator:
Andreas Peichert
Created:
2015-07-01 12:14 CEST
Size:
33.37 KB
patch
obsolete
>Index: umc/js/uvmm/InstanceWizard.js >=================================================================== >--- umc/js/uvmm/InstanceWizard.js (Revision 59571) >+++ umc/js/uvmm/InstanceWizard.js (Arbeitskopie) >@@ -52,7 +52,7 @@ > } > on.once(dojo.body(), 'click', function(evt) { > Tooltip.hide(node); >- dojoEvent.stop(evt); >+ //dojoEvent.stop(evt); // links in tooltip should be clickable > }); > }; > >@@ -87,15 +87,27 @@ > }, > > _setupJavaScriptLinks: function() { >- array.forEach([ >- ['details', 'keyname'], >- ['details', 'security_group_ids'] >- ], function(iitem) { >+ array.forEach(this._getTooltipLinkArray(), function(iitem) { > var iwidget = this.getWidget(iitem[0], iitem[1]); > iwidget.set('label', lang.replace(iwidget.label, this)); > }, this); > }, > >+ _getTooltipLinkArray: function() { >+ if (this.cloud.type == 'OpenStack') { >+ return [ >+ ['details', 'keyname'], >+ ['details', 'security_group_ids'] >+ ] >+ } else if (this.cloud.type == 'EC2') { >+ return [ >+ ['details', 'keyname'], >+ ['details', 'security_group_ids'], >+ ['details', 'network_id'] >+ ] >+ } >+ }, >+ > showTooltip: function(evt, type) { > var msg = ''; > if (type == 'keyname') { >@@ -104,6 +116,9 @@ > else if (type == 'security_group_ids') { > 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.'); > } >+ else if (type == 'network_id') { >+ 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>.'); >+ } > if (msg) { > _showTooltip(evt.target, msg, evt); > } >@@ -239,6 +254,7 @@ > 'image_id', > 'size_id', > 'size_info_text', >+ ['network_id', 'subnet_id'], > ['keyname', 'security_group_ids'] > ], > widgets: [{ >@@ -294,6 +310,30 @@ > required: true, > size: 'Two' > }, { >+ name: 'network_id', >+ type: ComboBox, >+ label: _('Configure Network') + >+ ' (<a href="javascript:void(0);" onclick="require(\'dijit/registry\').byId(\'{id}\').showTooltip(event, \'network_id\');">' + >+ _('more information') + >+ '</a>)' + >+ ' [<a href="javascript:void(0);" onclick="require(\'dijit/registry\').byId(\'{id}\').getWidget(\'details\', \'network_id\').reloadDynamicValues();">' + >+ _('Reload') + >+ '</a>]', >+ dynamicOptions: {conn_name: this.cloud.name}, >+ dynamicValues: types.getCloudListNetwork, >+ staticValues: [ { id: 'default', label: _('Launch into default Network') } ], >+ onChange: lang.hitch(this, function(newVal) { >+ var widget = this.getWidget('details', 'subnet_id'); >+ widget.set('disabled', newVal == 'default'); >+ }), >+ }, { >+ name: 'subnet_id', >+ type: ComboBox, >+ label: _('Configure Subnet'), >+ dynamicOptions: {conn_name: this.cloud.name}, >+ dynamicValues: types.getCloudListSubnet, >+ depends: 'network_id' >+ }, { > name: 'security_group_ids', > type: ComboBox, > label: _('Configure Security Group') + >@@ -302,6 +342,7 @@ > '</a>)', > dynamicOptions: {conn_name: this.cloud.name}, > dynamicValues: types.getCloudListSecgroup, >+ depends: 'network_id', > required: true > }] > }; >Index: umc/js/uvmm/types.js >=================================================================== >--- umc/js/uvmm/types.js (Revision 59571) >+++ umc/js/uvmm/types.js (Arbeitskopie) >@@ -333,6 +333,16 @@ > return data.result; > }); > }, >+ getCloudListNetwork: function(options) { >+ return tools.umcpCommand('uvmm/cloud/list/network', options).then(function(data) { >+ return data.result; >+ }); >+ }, >+ getCloudListSubnet: function(options) { >+ return tools.umcpCommand('uvmm/cloud/list/subnet', options).then(function(data) { >+ return data.result; >+ }); >+ }, > getNodeType: function( uri ) { > var colon = uri.indexOf( ':' ); > if ( colon == -1 ) { >Index: umc/js/uvmm/EC2.js >=================================================================== >--- umc/js/uvmm/EC2.js (Revision 59571) >+++ umc/js/uvmm/EC2.js (Arbeitskopie) >@@ -71,7 +71,8 @@ > name: 'region', > type: ComboBox, > staticValues: [ >- { id: 'EC2_EU_WEST', label: 'EU (Ireland)' }, >+ { id: 'EC2_EU_WEST', label: 'EU West (Ireland)' }, >+ { id: 'EC2_EU_CENTRAL', label: 'EU Central (Frankfurt)' }, > { id: 'EC2_US_EAST', label: 'US East (N. Virginia)' }, > { id: 'EC2_US_WEST', label: 'US West (N. California)' }, > { id: 'EC2_US_WEST_OREGON', label: 'US West (Oregon)' }, >Index: umc/js/de.po >=================================================================== >--- umc/js/de.po (Revision 59571) >+++ umc/js/de.po (Arbeitskopie) >@@ -34,7 +34,7 @@ > msgstr "" > "Project-Id-Version: univention-virtual-machina-manager-daemon 1.0.103-1\n" > "Report-Msgid-Bugs-To: packages@univention.de\n" >-"POT-Creation-Date: 2015-02-13 09:59+0100\n" >+"POT-Creation-Date: 2015-03-25 13:30+0100\n" > "PO-Revision-Date: 2013-07-24 19:03+0200\n" > "Last-Translator: Univention GmbH <packages@univention.de>\n" > "Language-Team: German <de@li.org>\n" >@@ -150,7 +150,7 @@ > "docs.univention.de/handbuch-4.0.html#uvmm:chapter\" target=\"_blank\">im " > "Handbuch</a> zu finden." > >-#: umc/js/uvmm/InstanceWizard.js:102 >+#: umc/js/uvmm/InstanceWizard.js:103 > msgid "" > "A key pair consists of a public and private key to log in using SSH. The " > "configuration of all keys takes place directly via the administration page " >@@ -171,7 +171,7 @@ > "Der Name für die virtuelle Maschine wird benötigt und sollte nicht der " > "vorgeschlagenen Namenspräfix entsprechen" > >-#: umc/js/uvmm/InstanceWizard.js:105 >+#: umc/js/uvmm/InstanceWizard.js:106 > msgid "" > "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 " >@@ -283,9 +283,9 @@ > msgid "Authentication URL endpoint" > msgstr "URL des Authentifizierungs-Endpunktes" > >-#: umc/js/uvmm/DomainPage.js:91 umc/js/uvmm/DomainWizard.js:215 >-#: umc/js/uvmm/CreatePage.js:104 umc/js/uvmm/CloudConnectionWizard.js:62 >-#: umc/js/uvmm/InstancePage.js:72 umc/js/uvmm/InstanceWizard.js:75 >+#: umc/js/uvmm/DomainWizard.js:215 umc/js/uvmm/InstancePage.js:72 >+#: umc/js/uvmm/InstanceWizard.js:75 umc/js/uvmm/CreatePage.js:104 >+#: umc/js/uvmm/DomainPage.js:91 umc/js/uvmm/CloudConnectionWizard.js:62 > msgid "Back to overview" > msgstr "Zurück zur Ãbersicht" > >@@ -334,9 +334,9 @@ > msgid "Caching" > msgstr "Caching" > >+#: umc/js/uvmm/DriveGrid.js:303 umc/js/uvmm/DriveGrid.js:332 > #: umc/js/uvmm/SnapshotGrid.js:181 umc/js/uvmm/SnapshotGrid.js:207 > #: umc/js/uvmm/SnapshotGrid.js:244 umc/js/uvmm/InterfaceGrid.js:134 >-#: umc/js/uvmm/DriveGrid.js:303 umc/js/uvmm/DriveGrid.js:332 > #: umc/js/uvmm.js:476 umc/js/uvmm.js:595 umc/js/uvmm.js:656 umc/js/uvmm.js:935 > #: umc/js/uvmm.js:1104 > msgid "Cancel" >@@ -347,15 +347,15 @@ > msgid "Change medium" > msgstr "Medium wechseln" > >-#: umc/js/uvmm/InstanceWizard.js:288 >+#: umc/js/uvmm/InstanceWizard.js:293 > msgid "Choose an AMI" > msgstr "Wählen Sie ein AMI aus" > >-#: umc/js/uvmm/InstanceWizard.js:197 >+#: umc/js/uvmm/InstanceWizard.js:201 > msgid "Choose an Image" > msgstr "Auswahl eines Images" > >-#: umc/js/uvmm/InstanceWizard.js:207 umc/js/uvmm/InstanceWizard.js:271 >+#: umc/js/uvmm/InstanceWizard.js:211 umc/js/uvmm/InstanceWizard.js:276 > msgid "Choose an Instance Size" > msgstr "Wahl der InstanzgröÃe" > >@@ -379,10 +379,18 @@ > msgid "Cloud instance" > msgstr "Cloud-Instanz" > >-#: umc/js/uvmm/InstanceWizard.js:224 umc/js/uvmm/InstanceWizard.js:299 >+#: umc/js/uvmm/InstanceWizard.js:304 >+msgid "Configure Network" >+msgstr "Netzwerk konfigurieren" >+ >+#: umc/js/uvmm/InstanceWizard.js:228 umc/js/uvmm/InstanceWizard.js:328 > msgid "Configure Security Group" > msgstr "Konfigurieren einer Sicherheitsgruppe" > >+#: umc/js/uvmm/InstanceWizard.js:321 >+msgid "Configure Subnet" >+msgstr "Subnetz konfigurieren" >+ > #: umc/js/uvmm/DriveGrid.js:291 > msgid "Configure cache behaviour of host." > msgstr "Cache-Verhalten des Hosts konfigurieren." >@@ -412,7 +420,7 @@ > msgid "Create a new cloud connection service account." > msgstr "Erstellen einer neuen Cloud-Verbindung." > >-#: umc/js/uvmm/OpenStack.js:52 umc/js/uvmm/EC2.js:46 >+#: umc/js/uvmm/EC2.js:46 umc/js/uvmm/OpenStack.js:52 > msgid "Create a new cloud connection." > msgstr "Erstellen einer neuen Cloud-Verbindung." > >@@ -420,7 +428,7 @@ > msgid "Create a new image" > msgstr "Erstellen einer neuen Image-Datei" > >-#: umc/js/uvmm/CreatePage.js:122 umc/js/uvmm/InstanceWizard.js:117 >+#: umc/js/uvmm/InstanceWizard.js:121 umc/js/uvmm/CreatePage.js:122 > msgid "Create a new virtual machine instance." > msgstr "Erstellen einer neuen virtuellen Instanz." > >@@ -482,9 +490,10 @@ > msgid "Default (RealTek RTL-8139)" > msgstr "Voreinstellung (RealTek RTL-8139)" > >+#: umc/js/uvmm/DriveGrid.js:97 umc/js/uvmm/DriveGrid.js:328 > #: umc/js/uvmm/SnapshotGrid.js:64 umc/js/uvmm/SnapshotGrid.js:240 >-#: umc/js/uvmm/DriveGrid.js:97 umc/js/uvmm/DriveGrid.js:328 umc/js/uvmm.js:283 >-#: umc/js/uvmm.js:587 umc/js/uvmm.js:648 umc/js/uvmm.js:1355 >+#: umc/js/uvmm.js:283 umc/js/uvmm.js:587 umc/js/uvmm.js:648 >+#: umc/js/uvmm.js:1355 > msgid "Delete" > msgstr "Löschen" > >@@ -496,7 +505,7 @@ > msgid "Delete an instance" > msgstr "Löschen einer Instanz" > >-#: umc/js/uvmm/DomainPage.js:140 umc/js/uvmm/DomainWizard.js:171 >+#: umc/js/uvmm/DomainWizard.js:171 umc/js/uvmm/DomainPage.js:140 > msgid "Description" > msgstr "Beschreibung" > >@@ -512,7 +521,7 @@ > msgid "Devices" > msgstr "Geräte" > >-#: umc/js/uvmm/DomainPage.js:228 umc/js/uvmm/DomainWizard.js:205 >+#: umc/js/uvmm/DomainWizard.js:205 umc/js/uvmm/DomainPage.js:228 > msgid "Direct access (VNC)" > msgstr "Direktzugriff (VNC)" > >@@ -528,11 +537,11 @@ > msgid "Drive type" > msgstr "Laufwerktyp" > >-#: umc/js/uvmm/InterfaceGrid.js:75 umc/js/uvmm/InterfaceWizard.js:76 >+#: umc/js/uvmm/InterfaceWizard.js:76 umc/js/uvmm/InterfaceGrid.js:75 > msgid "Driver" > msgstr "Treiber" > >-#: umc/js/uvmm/DomainPage.js:295 umc/js/uvmm/DomainWizard.js:113 >+#: umc/js/uvmm/DomainWizard.js:113 umc/js/uvmm/DomainPage.js:295 > msgid "Drives" > msgstr "Laufwerke" > >@@ -571,7 +580,7 @@ > "Speicherbereich ausgewählt, wird die Liste der verfügbaren ISO-Images " > "aktualisiert." > >-#: umc/js/uvmm/InterfaceGrid.js:91 umc/js/uvmm/DriveGrid.js:86 >+#: umc/js/uvmm/DriveGrid.js:86 umc/js/uvmm/InterfaceGrid.js:91 > #: umc/js/uvmm.js:271 umc/js/uvmm.js:1290 umc/js/uvmm.js:1377 > msgid "Edit" > msgstr "Bearbeiten" >@@ -654,7 +663,7 @@ > msgid "General" > msgstr "Allgemein" > >-#: umc/js/uvmm/DomainPage.js:110 umc/js/uvmm/InstancePage.js:64 >+#: umc/js/uvmm/InstancePage.js:64 umc/js/uvmm/DomainPage.js:110 > msgid "General settings" > msgstr "Allgemeine Einstellungen" > >@@ -678,8 +687,8 @@ > msgid "Guest controlled" > msgstr "Gast-gesteuert" > >-#: umc/js/uvmm/types.js:54 umc/js/uvmm/types.js:204 >-#: umc/js/uvmm/InstanceWizard.js:154 >+#: umc/js/uvmm/InstanceWizard.js:158 umc/js/uvmm/types.js:54 >+#: umc/js/uvmm/types.js:204 > msgid "Hard drive" > msgstr "Festplatte" > >@@ -738,7 +747,7 @@ > "gewechselt und zu dieser wieder zurückgesprungen werden. Das neue ISO-Image " > "sollte angezeigt werden." > >-#: umc/js/uvmm/InstancePage.js:116 umc/js/uvmm/DriveGrid.js:75 >+#: umc/js/uvmm/DriveGrid.js:75 umc/js/uvmm/InstancePage.js:116 > msgid "Image" > msgstr "Image" > >@@ -750,7 +759,7 @@ > msgid "Inherit MAC addresses" > msgstr "MAC-Adressen übernehmen" > >-#: umc/js/uvmm/InstanceWizard.js:181 umc/js/uvmm/InstanceWizard.js:255 >+#: umc/js/uvmm/InstanceWizard.js:185 umc/js/uvmm/InstanceWizard.js:260 > msgid "Instance Name" > msgstr "Instanzname" > >@@ -790,6 +799,10 @@ > msgid "Latvian" > msgstr "Lettisch" > >+#: umc/js/uvmm/InstanceWizard.js:313 >+msgid "Launch into default Network" >+msgstr "In Standard-Netzwerk starten" >+ > #: umc/js/uvmm/types.js:157 > msgid "Lithuanian" > msgstr "Litauisch" >@@ -798,7 +811,7 @@ > msgid "Local time zone" > msgstr "Lokale Zeitzone" > >-#: umc/js/uvmm/InterfaceGrid.js:81 umc/js/uvmm/InterfaceWizard.js:93 >+#: umc/js/uvmm/InterfaceWizard.js:93 umc/js/uvmm/InterfaceGrid.js:81 > msgid "MAC address" > msgstr "MAC-Adresse" > >@@ -814,7 +827,7 @@ > msgid "Machine" > msgstr "Maschine" > >-#: umc/js/uvmm/DomainPage.js:211 umc/js/uvmm/InstanceWizard.js:153 >+#: umc/js/uvmm/InstanceWizard.js:157 umc/js/uvmm/DomainPage.js:211 > msgid "Memory" > msgstr "Speicher" > >@@ -838,10 +851,10 @@ > msgid "NAT" > msgstr "NAT" > >-#: umc/js/uvmm/DomainPage.js:121 umc/js/uvmm/SnapshotGrid.js:56 >-#: umc/js/uvmm/OpenStack.js:74 umc/js/uvmm/DomainWizard.js:165 >-#: umc/js/uvmm/InstancePage.js:90 umc/js/uvmm/EC2.js:58 umc/js/uvmm.js:1151 >-#: umc/js/uvmm.js:1169 umc/js/uvmm.js:1184 >+#: umc/js/uvmm/DomainWizard.js:165 umc/js/uvmm/InstancePage.js:90 >+#: umc/js/uvmm/EC2.js:58 umc/js/uvmm/DomainPage.js:121 >+#: umc/js/uvmm/SnapshotGrid.js:56 umc/js/uvmm/OpenStack.js:74 >+#: umc/js/uvmm.js:1151 umc/js/uvmm.js:1169 umc/js/uvmm.js:1184 > msgid "Name" > msgstr "Name" > >@@ -886,8 +899,8 @@ > msgid "Not removable" > msgstr "Nicht löschbar" > >-#: umc/js/uvmm/DomainPage.js:187 umc/js/uvmm/DomainWizard.js:199 >-#: umc/js/uvmm/InstanceWizard.js:151 >+#: umc/js/uvmm/DomainWizard.js:199 umc/js/uvmm/InstanceWizard.js:155 >+#: umc/js/uvmm/DomainPage.js:187 > msgid "Number of CPUs" > msgstr "Anzahl der CPUs" > >@@ -1059,7 +1072,7 @@ > msgid "Read/write caching, sync filtered out (unsafe)" > msgstr "Lese-/Schreib-Caching, herausgefiltertes sync (unsafe)" > >-#: umc/js/uvmm.js:290 >+#: umc/js/uvmm/InstanceWizard.js:309 umc/js/uvmm.js:290 > msgid "Reload" > msgstr "Neu laden" > >@@ -1096,7 +1109,7 @@ > msgid "Russian" > msgstr "Russisch" > >-#: umc/js/uvmm/DomainPage.js:96 umc/js/uvmm/DriveGrid.js:296 >+#: umc/js/uvmm/DriveGrid.js:296 umc/js/uvmm/DomainPage.js:96 > msgid "Save" > msgstr "Speichern" > >@@ -1116,10 +1129,27 @@ > msgid "Security group" > msgstr "Sicherheitsgruppe" > >-#: umc/js/uvmm/InstanceWizard.js:187 umc/js/uvmm/InstanceWizard.js:261 >+#: umc/js/uvmm/InstanceWizard.js:191 umc/js/uvmm/InstanceWizard.js:266 > msgid "Select a key pair" > msgstr "Auswahl eines Schlüsselpaares" > >+#: umc/js/uvmm/InstanceWizard.js:109 >+msgid "" >+"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>." >+msgstr "" >+"Wählen Sie das Netzwerk aus, in welchem die neue virtuelle Instanz gestartet " >+"werden soll. Die Netzwerkkonfiguration erfolgt direkt über die " >+"Verwaltungsseite der Cloud. <a href=\"https://aws.amazon.com/de/" >+"documentation/vpc/\" target=\"_blank\">Nutzen Sie diesen Link um weitere " >+"Informationen über Amazon VPC zu erhalten</a> und <a href=\"https://console." >+"aws.amazon.com/vpc/home?#s=vpcs\" target=\"_blank\">diesen Link um VPC zu " >+"konfigurieren</a>." >+ > #: umc/js/uvmm/CreatePage.js:116 > msgid "" > "Select if you want to create a new machine using an established connection, " >@@ -1134,7 +1164,7 @@ > "Select the cloud in which a new virtual machine instance is going to be " > "created. Alternatively, it is possible to register a new cloud connection." > msgstr "" >-"Wählen sie die Cloud aus, in der eine neue virtuelle Instanz erzeugt werden " >+"Wählen Sie die Cloud aus, in der eine neue virtuelle Instanz erzeugt werden " > "soll. Alternativ ist es ebenfalls möglich, eine neue Cloud-Verbindung " > "einzutragen." > >@@ -1158,7 +1188,7 @@ > msgid "Service type" > msgstr "Servicetyp" > >-#: umc/js/uvmm/DomainPage.js:153 umc/js/uvmm/InstancePage.js:126 >+#: umc/js/uvmm/InstancePage.js:126 umc/js/uvmm/DomainPage.js:153 > msgid "Settings" > msgstr "Einstellungen" > >@@ -1237,7 +1267,7 @@ > msgid "Snapshots settings" > msgstr "Einstellungen für Sicherungspunkte" > >-#: umc/js/uvmm/InterfaceGrid.js:72 umc/js/uvmm/InterfaceWizard.js:83 >+#: umc/js/uvmm/InterfaceWizard.js:83 umc/js/uvmm/InterfaceGrid.js:72 > msgid "Source" > msgstr "Quelle" > >@@ -1309,7 +1339,7 @@ > msgid "The device cannot be modified by the guest." > msgstr "Das Gerät kann nicht vom Gast modifiziert werden." > >-#: umc/js/uvmm/DomainPage.js:382 umc/js/uvmm/InstancePage.js:152 >+#: umc/js/uvmm/InstancePage.js:152 umc/js/uvmm/DomainPage.js:382 > #: umc/js/uvmm/DriveWizard.js:363 > msgid "The entered data is not valid. Please correct your input." > msgstr "" >@@ -1337,7 +1367,7 @@ > "Die Instanz {label} läuft noch nicht. Bitte warten und klicken Sie auf " > "\"Suchen\", um die Ansicht zu aktualisieren." > >-#: umc/js/uvmm/DomainPage.js:210 umc/js/uvmm/DomainWizard.js:194 >+#: umc/js/uvmm/DomainWizard.js:194 umc/js/uvmm/DomainPage.js:210 > msgid "The memory size is invalid (e.g. 3GB or 1024 MB), minimum 4 MB" > msgstr "" > "Die angegebenen Speicherkapazität is ungültig (bspw. 3GB oder 1024 MB), " >@@ -1463,8 +1493,8 @@ > "univention.de/handbuch-4.0.html#uvmm:networkinterfaces\" target=\"_blank" > "\">im Handbuch</a> zu finden." > >-#: umc/js/uvmm/InterfaceGrid.js:59 umc/js/uvmm/DriveGrid.js:69 >-#: umc/js/uvmm/InterfaceWizard.js:62 >+#: umc/js/uvmm/DriveGrid.js:69 umc/js/uvmm/InterfaceWizard.js:62 >+#: umc/js/uvmm/InterfaceGrid.js:59 > msgid "Type" > msgstr "Typ" > >@@ -1538,8 +1568,9 @@ > msgid "automatic" > msgstr "Automatisch" > >-#: umc/js/uvmm/InstanceWizard.js:189 umc/js/uvmm/InstanceWizard.js:226 >-#: umc/js/uvmm/InstanceWizard.js:263 umc/js/uvmm/InstanceWizard.js:301 >+#: umc/js/uvmm/InstanceWizard.js:193 umc/js/uvmm/InstanceWizard.js:230 >+#: umc/js/uvmm/InstanceWizard.js:268 umc/js/uvmm/InstanceWizard.js:306 >+#: umc/js/uvmm/InstanceWizard.js:330 > msgid "more information" > msgstr "mehr Informationen" > >@@ -1575,8 +1606,8 @@ > msgid "terminated" > msgstr "terminiert" > >-#: umc/js/uvmm/InterfaceGrid.js:61 umc/js/uvmm/InterfaceGrid.js:77 >-#: umc/js/uvmm/DriveGrid.js:71 >+#: umc/js/uvmm/DriveGrid.js:71 umc/js/uvmm/InterfaceGrid.js:61 >+#: umc/js/uvmm/InterfaceGrid.js:77 > msgid "unknown" > msgstr "Unbekannt" > >@@ -1587,6 +1618,9 @@ > #~ msgid "Boot device" > #~ msgstr "Bootmedium" > >+#~ msgid "Create new Network" >+#~ msgstr "Erstellen einer neuen Image-Datei" >+ > #~ msgid "Full virtualization (KVM)" > #~ msgstr "Voll-Virtualisierung (KVM)" > >Index: umc/python/uvmm/de.po >=================================================================== >--- umc/python/uvmm/de.po (Revision 59571) >+++ umc/python/uvmm/de.po (Arbeitskopie) >@@ -34,7 +34,7 @@ > msgstr "" > "Project-Id-Version: univention-management-console-module-uvmm 2.0.40-1\n" > "Report-Msgid-Bugs-To: packages@univention.de\n" >-"POT-Creation-Date: 2015-02-02 13:33+0100\n" >+"POT-Creation-Date: 2015-03-25 09:15+0100\n" > "PO-Revision-Date: 2013-05-23 09:17+0100\n" > "Last-Translator: Univention GmbH <packages@univention.de>\n" > "Language-Team: German <de@li.org>\n" >@@ -93,7 +93,7 @@ > "Weitere Informationen können in den folgenden Protokolldateien gefunden " > "werden:" > >-#: umc/python/uvmm/nodes.py:98 umc/python/uvmm/__init__.py:144 >+#: umc/python/uvmm/__init__.py:144 umc/python/uvmm/nodes.py:98 > msgid "Physical servers" > msgstr "Physikalische Server" > >@@ -101,14 +101,18 @@ > msgid "" > "The connection to the univention-virtual-machine-manager-daemon service " > "failed." >-msgstr "Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist fehlgeschlagen." >+msgstr "" >+"Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist " >+"fehlgeschlagen." > > #: umc/python/uvmm/uvmmd.py:66 > #, python-format > msgid "" > "The connection to the univention-virtual-machine-manager-daemon service " > "failed: %s" >-msgstr "Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist fehlgeschlagen: %s" >+msgstr "" >+"Die Verbindung zum univention-virtual-machine-manager-daemon-Dienst ist " >+"fehlgeschlagen: %s" > > #: umc/python/uvmm/uvmmd.py:85 > msgid "The given UVMM command is not known" >@@ -118,7 +122,9 @@ > msgid "" > "This might be a temporary problem. Please wait some minutes for the " > "connection to reestablish or restart the UVMM service." >-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." >+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." > > #: umc/python/uvmm/domains.py:420 > #, python-format >Index: umc/python/uvmm/cloud.py >=================================================================== >--- umc/python/uvmm/cloud.py (Revision 59571) >+++ umc/python/uvmm/cloud.py (Arbeitskopie) >@@ -285,6 +285,7 @@ > """ > self.required_options(request, 'conn_name') > conn_name = request.options.get('conn_name') >+ network_id = request.options.get('network_id') > > def _finished(thread, result, request): > """ >@@ -298,7 +299,7 @@ > secgroup_list = [ > {'id': item.id, 'label': item.name} > for conn_name, images in data.items() >- for item in images >+ for item in images if network_id in ('default', item.network_id) > ] > > self.finished(request.id, secgroup_list) >@@ -316,6 +317,87 @@ > conn_name=conn_name > ) > >+ def cloud_list_network(self, request): >+ """ >+ Returns a list of networks for the given cloud conn_name. >+ """ >+ self.required_options(request, 'conn_name') >+ conn_name = request.options.get('conn_name') >+ >+ def _finished(thread, result, request): >+ """ >+ Process asynchronous UVMM L_CLOUD_NETWORK_LIST answer. >+ """ >+ if self._check_thread_error(thread, result, request): >+ return >+ >+ success, data = result >+ if success: >+ network_list = [ >+ { >+ 'id': item.id, >+ 'label': '%s %s' % (item.name, item.cidr or "") >+ } >+ for conn_name, images in data.items() >+ for item in images >+ ] >+ >+ self.finished(request.id, network_list) >+ else: >+ self.finished( >+ request.id, >+ None, >+ message=str(data), >+ status=MODULE_ERR_COMMAND_FAILED >+ ) >+ >+ self.uvmm.send( >+ 'L_CLOUD_NETWORK_LIST', >+ Callback(_finished, request), >+ conn_name=conn_name >+ ) >+ >+ def cloud_list_subnet(self, request): >+ """ >+ Returns a list of subnet for the given cloud conn_name. >+ """ >+ self.required_options(request, 'conn_name') >+ conn_name = request.options.get('conn_name') >+ network_id = request.options.get('network_id') >+ >+ def _finished(thread, result, request): >+ """ >+ Process asynchronous UVMM L_CLOUD_SUBNET_LIST answer. >+ """ >+ if self._check_thread_error(thread, result, request): >+ return >+ >+ success, data = result >+ if success: >+ subnet_list = [ >+ { >+ 'id': item.id, >+ 'label': '%s %s' % (item.name, item.cidr or "") >+ } >+ for conn_name, images in data.items() >+ for item in images if network_id == item.network_id >+ ] >+ >+ self.finished(request.id, subnet_list) >+ else: >+ self.finished( >+ request.id, >+ None, >+ message=str(data), >+ status=MODULE_ERR_COMMAND_FAILED >+ ) >+ >+ self.uvmm.send( >+ 'L_CLOUD_SUBNET_LIST', >+ Callback(_finished, request), >+ conn_name=conn_name >+ ) >+ > @sanitize(domainPattern=SearchSanitizer(default='*')) > def instance_query(self, request): > """ >Index: umc/uvmm.xml >=================================================================== >--- umc/uvmm.xml (Revision 59571) >+++ umc/uvmm.xml (Arbeitskopie) >@@ -46,6 +46,8 @@ > <command name="uvmm/cloud/list/size" function="cloud_list_size"/> > <command name="uvmm/cloud/list/image" function="cloud_list_image"/> > <command name="uvmm/cloud/list/secgroup" function="cloud_list_secgroup"/> >+ <command name="uvmm/cloud/list/network" function="cloud_list_network"/> >+ <command name="uvmm/cloud/list/subnet" function="cloud_list_subnet"/> > <command name="uvmm/instance/query" function="instance_query"/> > <command name="uvmm/instance/state" function="instance_state"/> > <command name="uvmm/instance/remove" function="instance_remove"/> >Index: src/univention/uvmm/cloudnode.py >=================================================================== >--- src/univention/uvmm/cloudnode.py (Revision 59571) >+++ src/univention/uvmm/cloudnode.py (Arbeitskopie) >@@ -205,6 +205,15 @@ > > return networks > >+ def list_conn_subnets(self, conn_name="*"): >+ connection_list = self._get_connections(conn_name) >+ >+ subnets = {} >+ for connection in connection_list: >+ subnets[connection.publicdata.name] = connection.list_subnets() >+ >+ return subnets >+ > def instance_state(self, conn_name, instance_id, state): > self._check_if_connection_exists(conn_name) > self[conn_name].instance_state(instance_id, state) >Index: src/univention/uvmm/openstackcloud.py >=================================================================== >--- src/univention/uvmm/openstackcloud.py (Revision 59571) >+++ src/univention/uvmm/openstackcloud.py (Arbeitskopie) >@@ -266,6 +266,9 @@ > > return networks > >+ def list_subnets(self): >+ return [] >+ > def _boot_instance(self, instance): > self._exec_libcloud(lambda: self.driver.ex_hard_reboot_node(instance)) > >Index: src/univention/uvmm/ec2cloud.py >=================================================================== >--- src/univention/uvmm/ec2cloud.py (Revision 59571) >+++ src/univention/uvmm/ec2cloud.py (Arbeitskopie) >@@ -47,7 +47,7 @@ > from node import PersistentCached > from helpers import N_ as _ > from cloudconnection import CloudConnection, CloudConnectionError >-from protocol import Cloud_Data_Instance, Cloud_Data_Location, Cloud_Data_Secgroup, Cloud_Data_Size, Cloud_Data_Network >+from protocol import Cloud_Data_Instance, Cloud_Data_Location, Cloud_Data_Secgroup, Cloud_Data_Size, Cloud_Data_Network, Cloud_Data_Subnet > import univention.config_registry as ucr > > configRegistry = ucr.ConfigRegistry() >@@ -72,7 +72,7 @@ > "location": "location", > "keyname": "ex_keyname", > "userdata": "ex_userdata", >- "security_group_ids": "ex_security_groups", >+ "security_group_ids": {'group_name': "ex_security_groups", 'group_id': 'ex_security_group_ids'}, > "metadata": "ex_metadata", > "min_instance_count": "ex_mincount", > "max_instance_count": "ex_maxcount", >@@ -80,7 +80,7 @@ > "blockdevicemappings": "ex_blockdevicemappings", > "iamprofile": "ex_iamprofile", > "ebs_optimized": "ex_ebs_optimized", >- "subnet": "ex_subnet" >+ "subnet_id": "ex_subnet" > } > > >@@ -94,14 +94,15 @@ > > > PROVIDER_MAPPING = { >- "EC2_US_EAST": Provider.EC2_US_EAST, >- "EC2_EU_WEST": Provider.EC2_EU_WEST, >- "EC2_US_WEST": Provider.EC2_US_WEST, >- "EC2_US_WEST_OREGON": Provider.EC2_US_WEST_OREGON, >- "EC2_AP_SOUTHEAST": Provider.EC2_AP_SOUTHEAST, >- "EC2_AP_NORTHEAST": Provider.EC2_AP_NORTHEAST, >- "EC2_SA_EAST": Provider.EC2_SA_EAST, >- "EC2_AP_SOUTHEAST2": Provider.EC2_AP_SOUTHEAST2, >+ "EC2_US_EAST": "us-east-1", >+ "EC2_EU_WEST": "eu-west-1", >+ "EC2_US_WEST": "us-west-1", >+ "EC2_US_WEST_OREGON": "us-west-2", >+ "EC2_AP_SOUTHEAST": "ap-southeast-1", >+ "EC2_AP_NORTHEAST": "ap-northeast-1", >+ "EC2_SA_EAST": "sa-east-1", >+ "EC2_AP_SOUTHEAST2": "ap-southeast-2", >+ "EC2_EU_CENTRAL": "eu-central-1", > } > > >@@ -138,7 +139,8 @@ > if 'secure' not in params: > params['secure'] = True > >- os = get_driver(PROVIDER_MAPPING[cloud["region"]]) >+ os = get_driver(Provider.EC2) >+ params['region'] = PROVIDER_MAPPING[cloud["region"]] > > p = params.copy() > p["secret"] = "******" >@@ -165,6 +167,7 @@ > self._keypairs = self._exec_libcloud(lambda: self.driver.list_key_pairs()) > self._security_groups = self._exec_libcloud(lambda: self.driver.ex_get_security_groups()) # ex_get_ for ec2! > self._networks = self._exec_libcloud(lambda: self.driver.ex_list_networks()) >+ self._subnets = self._exec_libcloud(lambda: self.driver.ex_list_subnets()) > self._last_expensive_update = time.time() > > def list_instances(self, pattern="*"): >@@ -228,6 +231,8 @@ > s.out_rules = secgroup.egress_rules > s.extra = secgroup.extra > s.tenant_id = secgroup.extra["owner_id"] >+ s.driver = self.driver.name # missing in libcloud EC2SecurityGroup >+ s.network_id = secgroup.extra["vpc_id"] > > secgroups.append(s) > >@@ -258,6 +263,7 @@ > s = Cloud_Data_Network() > s.id = network.id > s.name = network.name >+ s.driver = self.driver.name # missing in libcloud EC2Network > s.extra = network.extra > s.cidr = network.cidr_block > >@@ -265,6 +271,21 @@ > > return networks > >+ def list_subnets(self): >+ subnets = [] >+ for subnet in self._subnets: >+ s = Cloud_Data_Subnet() >+ s.id = subnet.id >+ s.name = subnet.name >+ s.driver = self.driver.name # missing in libcloud EC2NetworkSubnet >+ s.cidr = subnet.extra['cidr_block'] >+ s.network_id = subnet.extra["vpc_id"] >+ s.extra = subnet.extra >+ >+ subnets.append(s) >+ >+ return subnets >+ > def to_cloud_data_image(self, image): > cloud_data_image = super(EC2CloudConnection, self).to_cloud_data_image(image) > cloud_data_image.name = "%s (%s)" % (image.name, image.id) >@@ -421,7 +442,10 @@ > if not secgroups: > raise EC2CloudConnectionError("No security group with id %s found." % args["security_group_ids"]) > >- kwargs[EC2_CREATE_ATTRIBUTES["security_group_ids"]] = [s.name for s in secgroups] >+ if "subnet_id" in args and args["subnet_id"] != '': # vpc >+ kwargs[EC2_CREATE_ATTRIBUTES["security_group_ids"]["group_id"]] = [s.id for s in secgroups] >+ else: # default >+ kwargs[EC2_CREATE_ATTRIBUTES["security_group_ids"]["group_name"]] = [s.name for s in secgroups] > > if "min_instance_count" in args: > if not (isinstance(args["min_instance_count"], int)): >@@ -457,10 +481,13 @@ > raise EC2CloudConnectionError("<ebs_optimized> attribute must be a bool") > kwargs[EC2_CREATE_ATTRIBUTES["ebs_optimized"]] = args["ebs_optimized"] > >- if "subnet" in args: >- if not (isinstance(args["subnet"], str)): >- raise EC2CloudConnectionError("<subnet> attribute must be a string") >- kwargs[EC2_CREATE_ATTRIBUTES["subnet"]] = args["subnet"] >+ if "subnet_id" in args and args["subnet_id"] != '': >+ if not (isinstance(args["subnet_id"], str) or isinstance(args["userdata"], unicode)): >+ raise EC2CloudConnectionError("<subnet_id> attribute must be a string") >+ subnet = [s for s in self._subnets if s.id == args["subnet_id"]] >+ if not subnet: >+ raise EC2CloudConnectionError("No subnet with id %s found." % args["subnet_id"]) >+ kwargs[EC2_CREATE_ATTRIBUTES["subnet_id"]] = subnet[0] > > # libcloud call > try: >Index: src/univention/uvmm/commands.py >=================================================================== >--- src/univention/uvmm/commands.py (Revision 59571) >+++ src/univention/uvmm/commands.py (Arbeitskopie) >@@ -204,6 +204,19 @@ > raise CommandError('L_CLOUD_NETWORK_LIST', e) > > @staticmethod >+ def L_CLOUD_SUBNET_LIST(server, request): >+ """List available cloud subnets of cloud connections""" >+ logger.debug('L_CLOUD_SUBNET_LIST') >+ if not isinstance(request.conn_name, basestring): >+ raise CommandError('L_CLOUD_SUBNET_LIST', _('conn_name != string: %(conn_name)s'), conn_name=request.conn_name) >+ try: >+ res = protocol.Response_DUMP() >+ res.data = cloudnode.cloudconnections.list_conn_subnets(request.conn_name) >+ return res >+ except cloudnode.CloudConnectionError, e: >+ raise CommandError('L_CLOUD_SUBNET_LIST', e) >+ >+ @staticmethod > def L_CLOUD_INSTANCE_STATE(server, request): > """Change instance state""" > logger.debug('L_CLOUD_INSTANCE_STATE') >Index: src/univention/uvmm/protocol.py >=================================================================== >--- src/univention/uvmm/protocol.py (Revision 59571) >+++ src/univention/uvmm/protocol.py (Arbeitskopie) >@@ -340,6 +340,12 @@ > self.command = 'L_CLOUD_NETWORK_LIST' > self.conn_name = None > >+class Request_L_CLOUD_SUBNET_LIST(Request): >+ """List available cloud subnets of cloud connections""" >+ def _default(self): >+ self.command = 'L_CLOUD_SUBNET_LIST' >+ self.conn_name = None >+ > class Request_L_CLOUD_INSTANCE_STATE(Request): > """Change instance state""" > def _default(self): >@@ -542,6 +548,7 @@ > self.in_rules = {} > self.out_rules = {} > self.extra = {} >+ self.network_id = None > > > class Cloud_Data_Secgroup_Rule(object): >@@ -569,6 +576,17 @@ > self.extra = {} > > >+class Cloud_Data_Subnet(object): >+ """Container for libcloud subnet statistics""" >+ def __init__(self): >+ self.name = None >+ self.id = None >+ self.driver = None >+ self.cidr = None >+ self.network_id = None >+ self.extra = {} >+ >+ > class Data_Snapshot(object): > """Container for snapshot data.""" > def __init__(self): >Index: src/univention/uvmm/cloudconnection.py >=================================================================== >--- src/univention/uvmm/cloudconnection.py (Revision 59571) >+++ src/univention/uvmm/cloudconnection.py (Arbeitskopie) >@@ -98,6 +98,7 @@ > self._images = [] > self._sizes = [] > self._networks = [] >+ self._subnets = [] > > def _create_connection(self, cloud, testconnection=True): > pass >Index: src/univention-virtual-machine-manager >=================================================================== >--- src/univention-virtual-machine-manager (Revision 59571) >+++ src/univention-virtual-machine-manager (Arbeitskopie) >@@ -719,6 +719,15 @@ > """ > return protocol.Request_L_CLOUD_NETWORK_LIST(conn_name=name) > >+ def cloud_subnet_list(self, name="*"): >+ """ >+ %prog cloud_subnet_list <name> >+ >+ List available cloud subnets >+ name is the cloud connection name. If empty, list information from all connections >+ """ >+ return protocol.Request_L_CLOUD_SUBNET_LIST(conn_name=name) >+ > def cloud_instance_state(self, name, instance_id, state): > """ > %prog cloud_instance_state <name> <instance_id> <state>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 36289
: 6988