def createAddressTypes(sources, destinations, protocols): src_types = addressTypes(sources) dst_types = addressTypes(destinations) if not checkAddressTypes(src_types, dst_types): raise RulesetError( tr("Invalid address types combination! Source: %s; destination: %s."), formatAddressTypes(src_types), formatAddressTypes(dst_types)) address_types = (src_types & dst_types) - set((INTERFACE_ADDRESS,)) for protocol in protocols: new_types = address_types & protocol.getAddressTypes() if not len(new_types): raise RulesetError( tr("The %s protocol can not be used with the address types: %s"), protocol.formatID(), ', '.join(address_types)) address_types = new_types return address_types
def setAttributes(self, attr, is_modify): if "address_type" not in attr: families = self.parent.getAddressTypes() if len(families) != 1: raise RulesetError( tr("The %s network has multiple address families: %s!"), self.parent.formatID(), formatAddressTypes(families), ) attr["address_type"] = list(families)[0] Resource.setAttributes(self, attr, is_modify) if is_modify or (not self.addresses): self.addresses = set(self.resolveHostname())