diff --git a/circle/dashboard/templates/dashboard/storage/detail.html b/circle/dashboard/templates/dashboard/storage/detail.html index aaa9fb1..b6880da 100644 --- a/circle/dashboard/templates/dashboard/storage/detail.html +++ b/circle/dashboard/templates/dashboard/storage/detail.html @@ -9,11 +9,33 @@ {% block content %} + +<div class="row"> + <div class="col-md-12"> + <div class="panel panel-default"> + <div class="panel-body"> + {% for ds in stores %} + {% if ds.name == name %} + <a href="#" class="badge badge-success"> + <i class="fa fa-database"></i> {{ ds.hostname }}/{{ ds.name }} + </a> + {% else %} + <a href="#" class="badge badge-primary"> + {{ ds.hostname }}/{{ ds.name }} + </a> + {% endif %} + {% empty %} + {% trans "None" %} + {% endfor %} + </div> + </div> + </div> +</div> <div class="row"> <div class="col-md-5"> <div class="panel panel-default"> <div class="panel-heading"> - <h3 class="no-margin"><i class="fa fa-database"></i> {% trans "Datastore" %}</h3> + <h3 class="no-margin"><i class="fa fa-database"></i> {{ name }} {% trans "Datastore" %}</h3> </div> <div class="panel-body"> {% crispy form %} diff --git a/circle/dashboard/views/storage.py b/circle/dashboard/views/storage.py index 1126067..a6b2ba6 100644 --- a/circle/dashboard/views/storage.py +++ b/circle/dashboard/views/storage.py @@ -50,11 +50,12 @@ class StorageDetail(SuperuserRequiredMixin, UpdateView): def get_context_data(self, **kwargs): context = super(StorageDetail, self).get_context_data(**kwargs) - + context["stores"] = DataStore.objects.all() ds = self.get_object() try: + context['name'] = ds.name context['stats'] = self._get_stats() - context['missing_disks'] = ds.get_missing_disks() + context['g'] = ds.get_missing_disks() context['orphan_disks'] = ds.get_orphan_disks() except WorkerNotFound: messages.error(self.request, _("The DataStore is offline.")) diff --git a/circle/storage/models.py b/circle/storage/models.py index 5a5b471..4a5822d 100644 --- a/circle/storage/models.py +++ b/circle/storage/models.py @@ -110,7 +110,7 @@ class DataStore(Model): queue_name = self.get_remote_queue_name('storage', "slow") files = set(storage_tasks.list_files.apply_async( args=[self.path], queue=queue_name).get(timeout=timeout)) - disks = Disk.objects.filter(destroyed__isnull=True, is_ready=True) + disks = Disk.objects.filter(destroyed__isnull=True, is_ready=True, datastore=self) return disks.exclude(filename__in=files) @method_cache(120)