+ 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)