def ip_policy_create(context, **ip_policy_dict): new_policy = models.IPPolicy() exclude = ip_policy_dict.pop("exclude") ip_set = netaddr.IPSet() for excluded_cidr in exclude: cidr_net = netaddr.IPNetwork(excluded_cidr).ipv6() new_policy["exclude"].append( models.IPPolicyCIDR(cidr=excluded_cidr, first_ip=cidr_net.first, last_ip=cidr_net.last)) ip_set.add(excluded_cidr) ip_policy_dict["size"] = ip_set.size new_policy.update(ip_policy_dict) new_policy["tenant_id"] = context.tenant_id context.session.add(new_policy) return new_policy
def ip_policy_update(context, ip_policy, **ip_policy_dict): exclude = ip_policy_dict.pop("exclude", []) if exclude: ip_policy["exclude"] = [] ip_set = netaddr.IPSet() for excluded_cidr in exclude: cidr_net = netaddr.IPNetwork(excluded_cidr).ipv6() ip_policy["exclude"].append( models.IPPolicyCIDR(cidr=excluded_cidr, first_ip=cidr_net.first, last_ip=cidr_net.last)) ip_set.add(excluded_cidr) ip_policy_dict["size"] = ip_set.size ip_policy.update(ip_policy_dict) context.session.add(ip_policy) return ip_policy