def get()

in community/front-end/ofe/website/ghpcfe/views/clusters.py [0:0]


    def get(self, request, pk):
        cluster = get_object_or_404(Cluster, pk=pk)
        user = request.user

        try:
            user_uid = user.socialaccount_set.first().uid
        except AttributeError:
            # User doesn't have a Google SocialAccount.
            messages.error(
                request,
                "You are not signed in with a Google Account. This is required",
            )
            return HttpResponseRedirect(
                reverse("user-gcp-auth", kwargs={"pk": pk})
            )

        logger.info(
            "Beginning User GCS authorization process for %s on %s",
            user,
            cluster.name,
        )
        task = Task.objects.create(
            owner=user,
            title="Auth User GCP",
            data={"status": "Contacting Cluster"},
        )
        task.save()

        cluster_id = cluster.id
        cluster_name = cluster.name
        task_id = task.id

        def callback(message):
            logger.info(
                "GCS Auth Status message received from cluster %s: %s",
                cluster_name,
                message["status"],
            )
            task = Task.objects.get(pk=task_id)
            task.data.update(message)
            task.save()
            if "exit_status" in message:
                logger.info(
                    "Final result from cluster %s for user auth to GCS was "
                    "status code %s",
                    cluster_name,
                    message["exit_status"],
                )
                task.delete()

        message_data = {
            "login_uid": user_uid,
        }
        comm_id = c2.send_command(
            cluster_id,
            "REGISTER_USER_GCS",
            on_response=callback,
            data=message_data,
        )
        task.data["comm_id"] = comm_id
        task.save()

        return JsonResponse({"taskid": task_id})