From 2bc3a923340772253568983f4f77e547e29dec29 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Wed, 18 Apr 2012 20:48:42 -0400 Subject: [PATCH] ipv6 addresses only require ip address and gateway --- PLC/Interfaces.py | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/PLC/Interfaces.py b/PLC/Interfaces.py index f4ddcc8..0e6c728 100644 --- a/PLC/Interfaces.py +++ b/PLC/Interfaces.py @@ -208,26 +208,31 @@ class Interface(Row): # DHCP! elif method == "static": - for key in ['gateway', 'dns1']: - if key not in self or not self[key]: - if 'is_primary' in self and self['is_primary'] is True: - raise PLCInvalidArgument, "For static method primary network, %s is required" % key - else: + if self['type'] == 'ipv4': + for key in ['gateway', 'dns1']: + if key not in self or not self[key]: + if 'is_primary' in self and self['is_primary'] is True: + raise PLCInvalidArgument, "For static method primary network, %s is required" % key + else: + globals()[key] = self[key] + for key in ['ip', 'network', 'broadcast', 'netmask']: + if key not in self or not self[key]: + raise PLCInvalidArgument, "For static method, %s is required" % key + globals()[key] = self[key] + if not in_same_network(ip, network, netmask): + raise PLCInvalidArgument, "IP address %s is inconsistent with network %s/%s" % \ + (ip, network, netmask) + if not in_same_network(broadcast, network, netmask): + raise PLCInvalidArgument, "Broadcast address %s is inconsistent with network %s/%s" % \ + (broadcast, network, netmask) + if 'gateway' in globals() and not in_same_network(ip, gateway, netmask): + raise PLCInvalidArgument, "Gateway %s is not reachable from %s/%s" % \ + (gateway, ip, netmask) + elif self['type'] == 'ipv6': + for key in ['ip', 'gateway']: + if key not in self or not self[key]: + raise PLCInvalidArgument, "For static ipv6 method, %s is required" % key globals()[key] = self[key] - for key in ['ip', 'network', 'broadcast', 'netmask']: - if key not in self or not self[key]: - raise PLCInvalidArgument, "For static method, %s is required" % key - globals()[key] = self[key] - if not in_same_network(ip, network, netmask): - raise PLCInvalidArgument, "IP address %s is inconsistent with network %s/%s" % \ - (ip, network, netmask) - if not in_same_network(broadcast, network, netmask): - raise PLCInvalidArgument, "Broadcast address %s is inconsistent with network %s/%s" % \ - (broadcast, network, netmask) - if 'gateway' in globals() and not in_same_network(ip, gateway, netmask): - raise PLCInvalidArgument, "Gateway %s is not reachable from %s/%s" % \ - (gateway, ip, netmask) - elif method == "ipmi": if 'ip' not in self or not self['ip']: raise PLCInvalidArgument, "For ipmi method, ip is required" -- 2.43.0