diff --git a/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/js/de.po b/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/js/de.po index aeefbc7..e8f4334 100644 --- a/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/js/de.po +++ b/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/js/de.po @@ -14,7 +14,7 @@ msgstr "" #: umc/js/setup/InterfaceGrid.js: msgid "There are no more physical interfaces to create." -msgstr "Es gibt keine weiteren physikalischen Netzwerkgeräte zum hinzufügen". +msgstr "Es gibt keine weiteren physikalischen Netzwerkgeräte zum hinzufügen." #: umc/js/setup/InterfaceWizard.js: msgid "Ethernet is a standard physical interface. " @@ -95,7 +95,7 @@ msgid "" "Bond interfaces allows two or more physical network interfaces to be " "coupled." msgstr "" -"Bond Geräte erlaubt einen Verbund von einem oder mehreren " +"Bond Netzwerkschnittstellen erlaubt einen Verbund von einem oder mehreren " "physikalischen Netzwerkgeräten." #: umc/js/setup/InterfaceWizard.js: umc/js/setup/InterfaceWizard.js: @@ -103,7 +103,7 @@ msgid "" "Bridge interfaces allows a physical network interface to be shared to " "connect one or more network segments. " msgstr "" -"Bridge Geräte erlaubt physikalischen Netzwerkgeräten gemeinsam " +"Bridge Netzwerkschnittstellen erlaubt physikalischen Netzwerkgeräten gemeinsam " "benutzt zu werden um ein oder mehrere Netzwerksegemente miteinander zu " "verbinden." @@ -120,7 +120,7 @@ msgid "" "VLAN interfaces can be used to separate network traffic logically " "while using only one or more physical network interfaces. " msgstr "" -"VLAN Geräte können benutzt werden, um Netzwerkverkehr logisch mit nur " +"VLAN Netzwerkschnittstellen können benutzt werden, um Netzwerkverkehr logisch mit nur " "einem oder mehreren physikalischen Netzwerkgeräten zu trennen." #: umc/js/setup/BasisPage.js: @@ -193,31 +193,31 @@ msgstr "Bond konfiguration" #: umc/js/setup/InterfaceWizard.js: msgid "Bond interface configuration" -msgstr "Bond Gerätekonfiguration" +msgstr "Bond Netzwekkonfiguration" #: umc/js/setup/InterfaceWizard.js: msgid "Bond primary" -msgstr "" +msgstr "Primäre Bond-Netzwerkschnittstellen" #: umc/js/setup/InterfaceWizard.js: umc/js/setup/Interfaces.js: msgid "Bond slaves" -msgstr "" +msgstr "Bond Kindnetzwerkschnittstellen" #: umc/js/setup/types.js: msgid "Bonding" -msgstr "" +msgstr "Kanalbündelung (Bonding)" #: umc/js/setup/types.js: msgid "Bridge" -msgstr "" +msgstr "Netzwerk-Bridge" #: umc/js/setup/InterfaceWizard.js: msgid "Bridge configuration" -msgstr "Bridge konfiguration" +msgstr "Bridge-Konfiguration" #: umc/js/setup/InterfaceWizard.js: msgid "Bridge interface configuration" -msgstr "Bridge Gerätekonfiguration" +msgstr "Bridge Netzwerkkonfiguration" #: umc/js/setup/InterfaceWizard.js: umc/js/setup/Interfaces.js: msgid "Bridge ports" @@ -376,7 +376,7 @@ msgstr "E-Mailadresse" #: umc/js/setup/types.js: msgid "Ethernet" -msgstr "" +msgstr "Ethernet" #: umc/js/setup/NetworkPage.js: msgid "External name server" @@ -409,7 +409,7 @@ msgstr "" #: umc/js/setup/InterfaceWizard.js: msgid "Forwarding delay" -msgstr "" +msgstr "Forwarding-Verzögerung" #: umc/js/setup/BasisPage.js: msgid "Fully qualified domain name" @@ -625,7 +625,7 @@ msgstr "Standorteinstellungen" #: umc/js/setup/InterfaceWizard.js: msgid "MII link monitoring frequency" -msgstr "" +msgstr "MII-Trägerüberwachungsfrequenz" #: umc/js/setup/SystemRolePage.js: msgid "Member server" diff --git a/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/de.po b/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/de.po index c3c62d5..7d3b11e0 100644 --- a/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/de.po +++ b/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: univention-management-console-module-setup\n" "Report-Msgid-Bugs-To: packages@univention.de\n" -"POT-Creation-Date: 2013-06-29 01:02+0200\n" +"POT-Creation-Date: 2013-10-08 07:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,8 +25,8 @@ msgid "" "At least one domain name server needs to be given if DHCP or SLAAC is not " "specified." msgstr "" -"Mindestens ein Domänen-DNS-Server muss angegeben werden, wenn DHCP oder SLAAC " -"nicht ausgewählt sind." +"Mindestens ein Domänen-DNS-Server muss angegeben werden, wenn DHCP oder " +"SLAAC nicht ausgewählt sind." #: umc/python/setup/__init__.py: msgid "Base systems and already joined systems cannot be joined." @@ -114,8 +114,8 @@ msgid "Invalid IPv6 netmask: %r" msgstr "Ungültige IPv6 Netzmaske: %r" #: umc/python/setup/network.py: -msgid "Invalid VLAN ID. Must be between 1 and 4096." -msgstr "Ungültige VLAN ID. Muss zwischen 1 und 4069 sein." +msgid "Invalid VLAN ID. Must be between 1 and 4095." +msgstr "Ungültige VLAN ID. Muss zwischen 1 und 4095 sein." #: umc/python/setup/network.py: #, python-format diff --git a/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/network.py b/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/network.py index a42a7ea..3417fae 100644 --- a/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/network.py +++ b/branches/ucs-3.2/ucs-3.2-0/base/univention-system-setup/umc/python/setup/network.py @@ -200,6 +200,7 @@ class Interfaces(dict): # set device order device.order = i i += 1 + device.start = True devices = dict((device, (subdevs - leave)) for device, subdevs in devices.iteritems() if device not in leave) @@ -290,10 +291,8 @@ class Device(object): self._remove_old_fallback_variables() self.order = None - self.start = True - - if self.ip4dynamic: - self.type = 'dhcp' + self.start = False + self.type = 'manual' def _remove_old_fallback_variables(self): # removes deprecated UCR variables from UCS <= 3.1-1... can be removed in future @@ -304,6 +303,10 @@ class Device(object): self.validate_name() self.validate_ip4() self.validate_ip6() + if self.ip4dynamic: + self.type = 'dhcp' + elif self.ipv4 or self.ipv6: + self.type = 'static' def validate_name(self): """ @@ -414,9 +417,7 @@ class Device(object): self.start = ucr.is_true(value=vals.pop('interfaces/%s/start' % (name), None)) - type_ = vals.pop('interfaces/%s/type' % (name), None) - if type_ is not None: - self.type = type_ + self.type = vals.pop('interfaces/%s/type' % (name), None) order = vals.pop('interfaces/%s/order' % (name), "") if order.isdigit(): @@ -428,11 +429,14 @@ class Device(object): address, netmask = vals.pop('interfaces/%s/address' % (name), ''), vals.pop('interfaces/%s/netmask' % (name), '24') if address: self.ip4.append((address, netmask)) - # a link local address indicates that this interface is DHCP + # a link-local address probably from a failed DHCP if address.startswith('169.254.'): self.type = 'dhcp' + # FIXME PMH: the above look wrong: a manually configured lla is + # still valid and may be preferred to an ever changing address when + # dhcp fails. - self.ip4dynamic = 'dhcp' == self.type + self.ip4dynamic = self.type in ('dhcp', 'dynamic') self.ip6dynamic = ucr.is_true(value=vals.pop('interfaces/%s/ipv6/acceptRA' % (name), None)) for key in vals.copy(): @@ -456,7 +460,7 @@ class Device(object): self.options.sort() self._leftover.sort() - def to_ucr(self): + def to_ucr(self, extra_options=None): """Returns a dict of UCR variables to set or unset. Values which are None should be unset. """ @@ -474,8 +478,8 @@ class Device(object): if self.start is not None: vals['interfaces/%s/start' % (name)] = str(bool(self.start)).lower() - if isinstance(self.type, str): - if self.type not in ('static', 'manual', 'dhcp', 'appliance-mode-temporary'): + if isinstance(self.type, basestring): + if self.type not in ('static', 'manual', 'dhcp', 'dynamic', 'appliance-mode-temporary'): MODULE.warn('Unknown interfaces/%s/type: %r' % (self.name, self.type)) vals['interfaces/%s/type' % (name)] = self.type @@ -506,7 +510,7 @@ class Device(object): vals['interfaces/%s/ipv6/acceptRA' % (name)] = str(bool(self.ip6dynamic)).lower() - for i, option in enumerate(self.options): + for i, option in enumerate(self.options + (extra_options or [])): vals['interfaces/%s/options/%d' % (name, i)] = option return vals @@ -606,8 +610,8 @@ class VLAN(Device): super(VLAN, self).validate_name() if not '.' in self.name: raise DeviceError(_('Invalid device name: %r') % (self.name,)) - if not (1 <= self.vlan_id <= 4096): - raise DeviceError(_('Invalid VLAN ID. Must be between 1 and 4096.'), self.name) + if not (1 <= self.vlan_id <= 4095): + raise DeviceError(_('Invalid VLAN ID. Must be between 1 and 4095.'), self.name) @property def dict(self): @@ -618,6 +622,27 @@ class VLAN(Device): )) return d + def parse_ucr(self): + super(Bond, self).parse_ucr() + options = [] + for option in self.options: + try: + name, value = option.split(None, 1) + except ValueError: + name, value = option, '' + + if name == 'vlan-raw-device': + pass + else: + options.append(option) + self.options = options + + def to_ucr(self): + options = [ + 'vlan-raw-device %s' % (self.parent_device,), + ] + return super(Bond, self).to_ucr(options) + class Bond(Device): """A network bonding interface""" @@ -649,8 +674,6 @@ class Bond(Device): # make sure that used interfaces does not have any IPv4 or IPv6 address idevice.disable_ips() - self.type = 'manual' - def validate(self): super(Bond, self).validate() @@ -731,15 +754,12 @@ class Bond(Device): 'bond-slaves %s' % (' '.join(self.bond_slaves),), 'bond-mode %s' % (self.bond_mode,), ] - if self.bond_primary: + if self.bind_mode == 1 and self.bond_primary: options.append('bond-primary %s' % (' '.join(self.bond_primary),)) if self.miimon is not None: options.append('miimon %s' % (self.miimon,)) - vals = super(Bond, self).to_ucr() - for i, option in enumerate(options, start=len(self.options)): - vals['interfaces/%s/options/%d' % (self.name, i)] = option - return vals + return super(Bond, self).to_ucr(options) class Bridge(Device): @@ -763,8 +783,6 @@ class Bridge(Device): # make sure that used interfaces does not have any IPv4 or IPv6 address idevice.disable_ips() - self.type = 'manual' - def validate(self): super(Bridge, self).validate() @@ -812,10 +830,7 @@ class Bridge(Device): 'bridge_fd %d' % (self.bridge_fd,), ] - vals = super(Bridge, self).to_ucr() - for i, option in enumerate(options, start=len(self.options)): - vals['interfaces/%s/options/%d' % (self.name, i)] = option - return vals + return super(Bridge, self).to_ucr(options) if __name__ == '__main__':