From e9b086972beb75f6fb34bbefba6c4881749b9726 Mon Sep 17 00:00:00 2001 From: Tony Mack <tmack@paris.CS.Princeton.EDU> Date: Mon, 7 Apr 2014 19:38:28 -0400 Subject: [PATCH] add NetworkDeployment object --- planetstack/core/models/network.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/planetstack/core/models/network.py b/planetstack/core/models/network.py index 57d5530..c76004b 100644 --- a/planetstack/core/models/network.py +++ b/planetstack/core/models/network.py @@ -1,7 +1,7 @@ import os import socket from django.db import models -from core.models import PlCoreBase, Site, Slice, Sliver +from core.models import PlCoreBase, Site, Slice, Sliver, Deployment from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic @@ -63,6 +63,28 @@ class Network(PlCoreBase): qs = Network.objects.filter(owner__in=slices) return qs +class NetworkDeployments(PlCoreBase): + # Stores the openstack ids at various deployments + network = models.ForeignKey(Network) + deployment = models.ForeignKey(Deployment) + network_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum network") + router_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum router id") + subnet_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum subnet id") + subnet = models.CharField(max_length=32, blank=True) + + def can_update(self, user): + return user.is_admin + + @staticmethod + def select_by_user(user): + if user.is_admin: + qs = NetworkDeployments.objects.all() + else: + slices = Slice.select_by_user(user) + networks = Network.objects.filter(owner__in=slices) + qs = NetworkDeployments.objects.filter(network__in=networks) + return qs + class NetworkSlice(PlCoreBase): # This object exists solely so we can implement the permission check when # adding slices to networks. It adds no additional fields to the relation. -- 2.47.0