X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fmodels%2Fsliver.py;h=d9d2028b34619d3197221cfc3b99dc71e28acc04;hb=1e2a0962d5a15b1a1eabacb2ce837afada1dd848;hp=ec7f2666ef85c918b04cbcce9c9b10e817f92b59;hpb=29ad9b6ad3a49bda4c8a1c6ee03271b1997d63c1;p=plstackapi.git diff --git a/planetstack/core/models/sliver.py b/planetstack/core/models/sliver.py index ec7f266..d9d2028 100644 --- a/planetstack/core/models/sliver.py +++ b/planetstack/core/models/sliver.py @@ -1,7 +1,8 @@ import os from django.db import models +from django.db.models import Q from django.core import exceptions -from core.models import PlCoreBase +from core.models import PlCoreBase,PlCoreBaseManager,PlCoreBaseDeletionManager from core.models import Image from core.models import Slice from core.models import Node @@ -11,6 +12,9 @@ from core.models import User from core.models import Tag from core.models import Flavor from django.contrib.contenttypes import generic +from planetstack.config import Config + +config = Config() def get_default_flavor(deployment = None): # Find a default flavor that can be used for a sliver. This is particularly @@ -31,8 +35,49 @@ def get_default_flavor(deployment = None): return flavors[0] +class SliverDeletionManager(PlCoreBaseDeletionManager): + def get_queryset(self): + parent=super(SliverDeletionManager, self) + try: + backend_type = config.observer_backend_type + except AttributeError: + backend_type = None + + parent_queryset = parent.get_queryset() if hasattr(parent, "get_queryset") else parent.get_query_set() + if (backend_type): + return parent_queryset.filter(Q(node__deployment__backend_type=backend_type)) + else: + return parent_queryset + + # deprecated in django 1.7 in favor of get_queryset(). + def get_query_set(self): + return self.get_queryset() + + +class SliverManager(PlCoreBaseManager): + def get_queryset(self): + parent=super(SliverManager, self) + + try: + backend_type = config.observer_backend_type + except AttributeError: + backend_type = None + + parent_queryset = parent.get_queryset() if hasattr(parent, "get_queryset") else parent.get_query_set() + + if backend_type: + return parent_queryset.filter(Q(node__deployment__backend_type=backend_type)) + else: + return parent_queryset + + # deprecated in django 1.7 in favor of get_queryset(). + def get_query_set(self): + return self.get_queryset() + # Create your models here. class Sliver(PlCoreBase): + objects = SliverManager() + deleted_objects = SliverDeletionManager() instance_id = models.CharField(null=True, blank=True, max_length=200, help_text="Nova instance id") name = models.CharField(max_length=200, help_text="Sliver name") instance_name = models.CharField(blank=True, null=True, max_length=200, help_text="OpenStack generated name") @@ -59,8 +104,7 @@ class Sliver(PlCoreBase): return u'unsaved-sliver' def save(self, *args, **kwds): - if not self.name: - self.name = self.slice.name + self.name = self.slice.slicename if not self.creator and hasattr(self, 'caller'): self.creator = self.caller self.deploymentNetwork = self.node.deployment