From: Tony Mack Date: Mon, 7 Apr 2014 23:38:28 +0000 (-0400) Subject: add NetworkDeployment object X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=e9b086972beb75f6fb34bbefba6c4881749b9726;p=plstackapi.git add NetworkDeployment object --- 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.