Merged ansible branch into master
diff --git a/planetstack/core/models/credential.py b/planetstack/core/models/credential.py
index 13bc1c8..b74e540 100644
--- a/planetstack/core/models/credential.py
+++ b/planetstack/core/models/credential.py
@@ -6,7 +6,7 @@
 from core.models import Deployment,DeploymentLinkManager,DeploymentLinkDeletionManager
 
 class UserCredential(PlCoreBase):
-    user = models.ForeignKey(User, related_name='credentials', help_text="The User this credential is associated with")
+    user = models.ForeignKey(User, related_name='usercredentials', help_text="The User this credential is associated with")
 
     name = models.SlugField(help_text="The credential type, e.g. ec2", max_length=128)
     key_id = models.CharField(help_text="The backend id of this credential", max_length=1024)
@@ -17,7 +17,7 @@
         return self.name
 
 class SiteCredential(PlCoreBase):
-    site = models.ForeignKey(Site, related_name='credentials', help_text="The User this credential is associated with")
+    site = models.ForeignKey(Site, related_name='sitecredentials', help_text="The User this credential is associated with")
 
     name = models.SlugField(help_text="The credential type, e.g. ec2", max_length=128)
     key_id = models.CharField(help_text="The backend id of this credential", max_length=1024)
@@ -28,7 +28,7 @@
         return self.name
 
 class SliceCredential(PlCoreBase):
-    slice = models.ForeignKey(Slice, related_name='credentials', help_text="The User this credential is associated with")
+    slice = models.ForeignKey(Slice, related_name='slicecredentials', help_text="The User this credential is associated with")
 
     name = models.SlugField(help_text="The credential type, e.g. ec2", max_length=128)
     key_id = models.CharField(help_text="The backend id of this credential", max_length=1024)
@@ -41,7 +41,7 @@
 class DeploymentCredential(PlCoreBase):
     objects = DeploymentLinkManager()
     deleted_objects = DeploymentLinkDeletionManager()
-    deployment = models.ForeignKey(Deployment, related_name='credentials', help_text="The User this credential is associated with")
+    deployment = models.ForeignKey(Deployment, related_name='deploymentcredentials', help_text="The User this credential is associated with")
 
     name = models.SlugField(help_text="The credential type, e.g. ec2", max_length=128)
     key_id = models.CharField(help_text="The backend id of this credential", max_length=1024)
diff --git a/planetstack/core/models/flavor.py b/planetstack/core/models/flavor.py
index 27b2642..04747af 100644
--- a/planetstack/core/models/flavor.py
+++ b/planetstack/core/models/flavor.py
@@ -32,7 +32,7 @@
     parameter = models.ForeignKey(FlavorParameterType, related_name="parameters", help_text="The type of the parameter")
     value = models.CharField(help_text="The value of this parameter", max_length=1024)
 
-    flavor = models.ForeignKey(Flavor)
+    flavor = models.ForeignKey(Flavor,related_name='flavorparameter')
 
     def __unicode__(self):
         return self.parameter.name
diff --git a/planetstack/core/models/image.py b/planetstack/core/models/image.py
index 752dfe6..fdeb2cc 100644
--- a/planetstack/core/models/image.py
+++ b/planetstack/core/models/image.py
@@ -17,8 +17,8 @@
 class ImageDeployments(PlCoreBase):
     objects = DeploymentLinkManager()
     deleted_objects = DeploymentLinkDeletionManager()
-    image = models.ForeignKey(Image)
-    deployment = models.ForeignKey(Deployment)
+    image = models.ForeignKey(Image,related_name='imagedeployments')
+    deployment = models.ForeignKey(Deployment,related_name='imagedeployments')
     glance_image_id = models.CharField(null=True, blank=True, max_length=200, help_text="Glance image id") 
 
     def __unicode__(self):  return u'%s %s' % (self.image, self.deployment)
diff --git a/planetstack/core/models/slice.py b/planetstack/core/models/slice.py
index 7412fe2..ed10caf 100644
--- a/planetstack/core/models/slice.py
+++ b/planetstack/core/models/slice.py
@@ -124,8 +124,8 @@
     objects = DeploymentLinkManager()
     deleted_objects = DeploymentLinkDeletionManager()
 
-    slice = models.ForeignKey(Slice)
-    deployment = models.ForeignKey(Deployment)
+    slice = models.ForeignKey(Slice, related_name='slicedeployments')
+    deployment = models.ForeignKey(Deployment, related_name='slicedeployments')
     tenant_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone tenant id")
     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")
diff --git a/planetstack/core/models/sliver.py b/planetstack/core/models/sliver.py
index c694a1e..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 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 @@
 
     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")