From 688b9d9e8279538d4e169292346841734625a474 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Wed, 8 Oct 2014 22:54:02 -0400 Subject: [PATCH] create default networks in model policy instead of admin --- planetstack/core/admin.py | 22 --------- .../model_policies/model_policy_Slice.py | 45 ++++++++++++++++++- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py index 1ccc1d6..d2a9b53 100644 --- a/planetstack/core/admin.py +++ b/planetstack/core/admin.py @@ -799,28 +799,6 @@ class SliceAdmin(PlanetStackBaseAdmin): inline.model.caller = request.user yield inline.get_formset(request, obj) - def save_model(self, request, obj, form, change): - obj.save() - # create default public slice networks - public_net = Network( - name = obj.name+'-public', - template = NetworkTemplate.objects.get(name='Public dedicated IPv4'), - owner = obj - ) - public_net.save() - public_slice_net = NetworkSlice(network=public_net, slice=obj) - public_slice_net.save() - # create default private slice networks - private_net = Network( - name = obj.name+'-private', - template = NetworkTemplate.objects.get(name='Private'), - owner = obj - ) - private_net.save() - private_slice_net = NetworkSlice(network=private_net, slice=obj) - private_slice_net.save() - - class SlicePrivilegeAdmin(PlanetStackBaseAdmin): fieldsets = [ diff --git a/planetstack/model_policies/model_policy_Slice.py b/planetstack/model_policies/model_policy_Slice.py index 6fd968c..493975f 100644 --- a/planetstack/model_policies/model_policy_Slice.py +++ b/planetstack/model_policies/model_policy_Slice.py @@ -1,6 +1,6 @@ def handle(slice): - from core.models import SiteDeployments,SliceDeployments,Deployment + from core.models import SiteDeployments,SliceDeployments,Deployment,Network,NetworkSlice,NetworkTemplate from collections import defaultdict site_deployments = SiteDeployments.objects.all() site_deploy_lookup = defaultdict(list) @@ -22,3 +22,46 @@ def handle(slice): sd = SliceDeployments(slice=slice, deployment=expected_deployment) sd.save() + # make sure slice has at least 1 public and 1 private networkd + public_net = None + private_net = None + networks = Network.objects.filter(owner=slice) + for network in networks: + if network.template.name == 'Public dedicated IPv4': + public_net = network + elif network.template.name == 'Private': + private_net = network + if not public_net: + public_net = Network( + name = slice.name+'-public', + template = NetworkTemplate.objects.get(name='Public dedicated IPv4'), + owner = slice + ) + public_net.save() + + if not private_net: + private_net = Network( + name = slice.name+'-private', + template = NetworkTemplate.objects.get(name='Private'), + owner = slice + ) + private_net.save() + # create slice networks + public_net_slice = None + private_net_slice = None + net_slices = NetworkSlice.objects.filter(slice=slice, network__in=[public_net,private_net]) + for net_slice in net_slices: + if net_slice.network == public_net: + public_net_slice = net_slice + elif net_slice.network == private_net: + private_net_slice = net_slice + if not public_net_slice: + public_net_slice = NetworkSlice(slice=slice, network=public_net) + public_net_slice.save() + if not private_net_slice: + private_net_slice = NetworkSlice(slice=slice, network=private_net) + private_net_slice.save() + + + + -- 2.43.0