X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fmodel_policies%2Fmodel_policy_Slice.py;h=493975f4f3ca6e8d8ce79116c04b7ece01170e5f;hb=688b9d9e8279538d4e169292346841734625a474;hp=5d66903fe33e381c17dfb4d65775c339af610ac3;hpb=6bdf86d7b248c722134ab8fbb6e084cae4496fcd;p=plstackapi.git diff --git a/planetstack/model_policies/model_policy_Slice.py b/planetstack/model_policies/model_policy_Slice.py index 5d66903..493975f 100644 --- a/planetstack/model_policies/model_policy_Slice.py +++ b/planetstack/model_policies/model_policy_Slice.py @@ -1,6 +1,7 @@ -from core.models import * def handle(slice): + from core.models import SiteDeployments,SliceDeployments,Deployment,Network,NetworkSlice,NetworkTemplate + from collections import defaultdict site_deployments = SiteDeployments.objects.all() site_deploy_lookup = defaultdict(list) for site_deployment in site_deployments: @@ -21,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() + + + +