def poweroff(self, request, frontend_cluster_name, format=None): """Power off the frontend of a named cluster.""" clust = get_object_or_404(Cluster, name=frontend_cluster_name) if not clust.project in request.user.groups.all(): raise PermissionDenied() poweroff_nodes.delay([clust.frontend.rocks_name], "poweroff") return Response(status=204)
def reset(self, request, compute_name_cluster_name, compute_name, format=None): """Reset the named compute resource in a named cluster. """ compute = get_object_or_404( Compute, name=compute_name, cluster__name=compute_name_cluster_name) if not compute.cluster.project in request.user.groups.all(): raise PermissionDenied() poweroff_nodes.delay([compute.rocks_name], "reset") return Response(status=204)
def reboot(self, request, compute_name_cluster_name, compute_name, format=None): """Reboot the named compute resource in a named cluster. """ compute = get_object_or_404(Compute, name=compute_name, cluster__name=compute_name_cluster_name) if not compute.cluster.project in request.user.groups.all(): raise PermissionDenied() if not compute.computeset.filter(state=ComputeSet.CSET_STATE_RUNNING).exists(): return Response("Compute is not a member of an active computeset", status=status.HTTP_400_BAD_REQUEST) poweroff_nodes.delay([compute.rocks_name], "reboot") return Response(status=204)
def reset(self, request, computeset_id, format=None): """Reset the nodes in the identified ComputeSet.""" cset = ComputeSet.objects.get(pk=computeset_id) if not cset.cluster.project in request.user.groups.all(): raise PermissionDenied() computes = [] for compute in cset.computes.all(): computes.append(compute.rocks_name) poweroff_nodes.delay(computes, "reset") return Response(status=204)
def shutdown(self, request, computeset_id, format=None): """Shutdown the nodes in the identified ComputeSet.""" cset = ComputeSet.objects.get(pk=computeset_id) if not cset.cluster.project in request.user.groups.all(): raise PermissionDenied() computes = [] for compute in cset.computes.all(): computes.append(compute.rocks_name) poweroff_nodes.delay(computes, "shutdown") cancel_computeset.delay(FullComputeSetSerializer(cset).data) return Response(status=204)