X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fmodel_policies%2Fmodel_policy_Slice.py;h=493975f4f3ca6e8d8ce79116c04b7ece01170e5f;hb=688b9d9e8279538d4e169292346841734625a474;hp=6fd968c2e1803d47378e8dffaf09809edc3e6498;hpb=4616dfb31dbe05e84f9ceadb030a9541a371c2f1;p=plstackapi.git 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() + + + +