Commit b27573f6 by Czémán Arnold

dashboard: add refresh credential button

parent ef1332c6
Pipeline #173 passed with stage
in 0 seconds
...@@ -18,6 +18,11 @@ ...@@ -18,6 +18,11 @@
{% include "dashboard/storage/form_chunk.html" %} {% include "dashboard/storage/form_chunk.html" %}
<fieldset> <fieldset>
<input type="submit" value="{% trans "Save" %}" class="btn btn-primary"> <input type="submit" value="{% trans "Save" %}" class="btn btn-primary">
{% if object.type == "ceph_block" %}
<a class="btn btn-success pull-right" href="{% url "dashboard.views.storage-refresh_credential" pk=object.pk %}">
<i class="fa fa-key"></i> {% trans "Refresh credential on all node" %}
</a>
{% endif %}
</fieldset> </fieldset>
</form> </form>
</div><!-- .panel-body --> </div><!-- .panel-body -->
......
...@@ -54,7 +54,7 @@ from .views import ( ...@@ -54,7 +54,7 @@ from .views import (
NodeActivityView, NodeActivityView,
UserList, UserList,
StorageDetail, StorageList, StorageChoose, StorageCreate, DiskDetail, StorageDetail, StorageList, StorageChoose, StorageCreate, DiskDetail,
StorageDelete, StorageRestore, StorageDelete, StorageRestore, StorageRefreshCredential,
MessageList, MessageDetail, MessageCreate, MessageDelete, MessageList, MessageDetail, MessageCreate, MessageDelete,
) )
from .views.vm import vm_ops, vm_mass_ops from .views.vm import vm_ops, vm_mass_ops
...@@ -250,6 +250,9 @@ urlpatterns = patterns( ...@@ -250,6 +250,9 @@ urlpatterns = patterns(
name="dashboard.views.storage-delete"), name="dashboard.views.storage-delete"),
url(r"^storage/restore/(?P<pk>\d+)/$", StorageRestore.as_view(), url(r"^storage/restore/(?P<pk>\d+)/$", StorageRestore.as_view(),
name="dashboard.views.storage-restore"), name="dashboard.views.storage-restore"),
url(r'^storage/(?P<pk>\d+)/refresh_credential/$',
StorageRefreshCredential.as_view(),
name='dashboard.views.storage-refresh_credential'),
url(r'^disk/(?P<pk>\d+)/$', DiskDetail.as_view(), url(r'^disk/(?P<pk>\d+)/$', DiskDetail.as_view(),
name="dashboard.views.disk-detail"), name="dashboard.views.disk-detail"),
......
...@@ -23,7 +23,7 @@ from django.core.urlresolvers import reverse, reverse_lazy ...@@ -23,7 +23,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import Q from django.db.models import Q
from django.utils.translation import ugettext_lazy as _, ugettext from django.utils.translation import ugettext_lazy as _, ugettext
from django.views.generic import ( from django.views.generic import (
UpdateView, TemplateView, CreateView, DeleteView UpdateView, TemplateView, CreateView, DeleteView, DetailView
) )
from django.contrib.messages.views import SuccessMessageMixin from django.contrib.messages.views import SuccessMessageMixin
from django.shortcuts import redirect from django.shortcuts import redirect
...@@ -288,15 +288,8 @@ class StorageDetail(SuperuserRequiredMixin, UpdateView): ...@@ -288,15 +288,8 @@ class StorageDetail(SuperuserRequiredMixin, UpdateView):
changed = (self.object.type == "ceph_block" and changed = (self.object.type == "ceph_block" and
self.object.ceph_user_changed) self.object.ceph_user_changed)
if changed: if changed:
try: Node.refresh_crendential_on_all(self.request.user,
nodes = Node.objects.all() self.object.ceph_user)
for node in nodes:
if node.get_online():
node.refresh_credential(
user=self.request.user,
username=self.object.ceph_user)
except Exception as e:
messages.error(self.request, unicode(e))
return response return response
...@@ -378,6 +371,18 @@ class StorageRestore(SuperuserRequiredMixin, UpdateView): ...@@ -378,6 +371,18 @@ class StorageRestore(SuperuserRequiredMixin, UpdateView):
kwargs={"pk": ds.id}) kwargs={"pk": ds.id})
class StorageRefreshCredential(SuperuserRequiredMixin, DetailView):
model = DataStore
def get(self, request, *args, **kwargs):
if self.get_object().type == 'ceph_block':
Node.refresh_crendential_on_all(self.request.user,
self.get_object().ceph_user)
return redirect('dashboard.views.storage-detail',
pk=self.get_object().pk)
class DiskDetail(SuperuserRequiredMixin, UpdateView): class DiskDetail(SuperuserRequiredMixin, UpdateView):
model = Disk model = Disk
form_class = DiskForm form_class = DiskForm
......
...@@ -460,3 +460,10 @@ class Node(OperatedMixin, TimeStampedModel): ...@@ -460,3 +460,10 @@ class Node(OperatedMixin, TimeStampedModel):
@property @property
def metric_prefix(self): def metric_prefix(self):
return 'circle.%s' % self.host.hostname return 'circle.%s' % self.host.hostname
@classmethod
def refresh_crendential_on_all(cls, user, ceph_user):
nodes = cls.objects.all()
for node in nodes:
if node.get_online():
node.refresh_credential.async(user=user, username=ceph_user)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment