diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py
index e8d0569..734d284 100644
--- a/planetstack/core/admin.py
+++ b/planetstack/core/admin.py
@@ -1240,7 +1240,7 @@
 
 class DashboardViewAdmin(PlanetStackBaseAdmin):
     fieldsets = [('Dashboard View Details',
-                   {'fields': ['backend_status_text', 'name', 'url', 'enabled'],
+                   {'fields': ['backend_status_text', 'name', 'url', 'enabled', 'deployments'],
                     'classes': ['suit-tab suit-tab-general']})
                ]
     list_display = ["name", "enabled", "url"]
diff --git a/planetstack/core/models/dashboard.py b/planetstack/core/models/dashboard.py
index 39dcf07..328a2ba 100644
--- a/planetstack/core/models/dashboard.py
+++ b/planetstack/core/models/dashboard.py
@@ -1,6 +1,6 @@
 import os
 from django.db import models
-from core.models import PlCoreBase, Controller
+from core.models import PlCoreBase, Controller, Deployment
 from core.models.site import ControllerLinkManager, ControllerLinkDeletionManager
 from django.contrib.contenttypes import generic
 
@@ -9,6 +9,7 @@
     url = models.CharField(max_length=1024, help_text="URL of Dashboard")
     controllers = models.ManyToManyField(Controller, blank=True, related_name="dashboardviews", through='ControllerDashboardView')
     enabled = models.BooleanField(default=True)
+    deployments = models.ManyToManyField(Deployment, blank=True, null=True, related_name="dashboardviews", help_text="Deployments that should be included in this view")
 
     def __unicode__(self):  return u'%s' % (self.name)
 
diff --git a/planetstack/core/xoslib/methods/tenantview.py b/planetstack/core/xoslib/methods/tenantview.py
index 77adf57..10323a2 100644
--- a/planetstack/core/xoslib/methods/tenantview.py
+++ b/planetstack/core/xoslib/methods/tenantview.py
@@ -12,19 +12,23 @@
 # This REST API endpoint contains a bunch of misc information that the
 # tenant view needs to display
 
-BLESSED_DEPLOYMENTS = ["ViCCI"] # ["US-MaxPlanck", "US-GeorgiaTech", "US-Princeton", "US-Washington", "US-Stanford"]
-
 def getTenantViewDict(user):
-    blessed_deployments = []
-    for deployment in Deployment.objects.all():
-        if deployment.name in BLESSED_DEPLOYMENTS:
-            blessed_deployments.append(deployment)
+    # compute blessed_deployments by looking for the tenant view, and seeing what
+    # deployments are attached to it.
+    blessed_deployments=[]
+    for dash in DashboardView.objects.all():
+        if (dash.url=="template:xosTenant"):
+            for deployment in dash.deployments.all():
+                if deployment not in blessed_deployments:
+                    blessed_deployments.append(deployment)
+
+    blessed_deployment_ids = [d.id for d in blessed_deployments]
 
     blessed_sites = []
     for site in Site.objects.all():
         good=False
         for deployment in site.deployments.all():
-            if deployment.name in BLESSED_DEPLOYMENTS:
+            if deployment.id in blessed_deployment_ids:
                 # only bless sites that have at least one node in the deployment
                 sitedeployments = SiteDeployment.objects.filter(site=site, deployment=deployment)
                 for sd in sitedeployments.all():
@@ -37,7 +41,7 @@
     for image in Image.objects.all():
         good = False
         for deployment in image.deployments.all():
-            if deployment.name in BLESSED_DEPLOYMENTS:
+            if deployment.id in blessed_deployment_ids:
                  good=True
         if good:
             blessed_images.append(image)
@@ -46,7 +50,7 @@
     for flavor in Flavor.objects.all():
         good = False
         for deployment in flavor.deployments.all():
-            if deployment.name in BLESSED_DEPLOYMENTS:
+            if deployment.id in blessed_deployment_ids:
                  good=True
         if good:
             blessed_flavors.append(flavor)
@@ -74,7 +78,7 @@
     blessed_service_classes = [ServiceClass.objects.get(name="Best Effort")]
 
     return {"id": 0,
-            "blessed_deployment_names": BLESSED_DEPLOYMENTS,
+            "blessed_deployment_names": [deployment.name for deployment in blessed_deployments],
             "blessed_deployments": [deployment.id for deployment in blessed_deployments],
             "blessed_site_names": [site.name for site in blessed_sites],
             "blessed_sites": [site.id for site in blessed_sites],
