from secrets.forms import AddSecret from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.urls import reverse from libvirt import libvirtError from admin.decorators import superuser_only from computes.models import Compute from vrtManager.secrets import wvmSecrets @superuser_only def secrets(request, compute_id): """ :param request: :param compute_id: :return: """ secrets_all = [] error_messages = [] compute = get_object_or_404(Compute, pk=compute_id) try: conn = wvmSecrets(compute.hostname, compute.login, compute.password, compute.type) secrets = conn.get_secrets() for uuid in secrets: secrt = conn.get_secret(uuid) try: secret_value = conn.get_secret_value(uuid) except libvirtError as lib_err: secret_value = None secrets_all.append({ 'usage': secrt.usageID(), 'uuid': secrt.UUIDString(), 'usageType': secrt.usageType(), 'value': secret_value }) if request.method == 'POST': if 'create' in request.POST: form = AddSecret(request.POST) if form.is_valid(): data = form.cleaned_data conn.create_secret(data['ephemeral'], data['private'], data['usage_type'], data['data']) return HttpResponseRedirect(request.get_full_path()) else: for msg_err in form.errors.values(): error_messages.append(msg_err.as_text()) if 'delete' in request.POST: uuid = request.POST.get('uuid', '') conn.delete_secret(uuid) return HttpResponseRedirect(request.get_full_path()) if 'set_value' in request.POST: uuid = request.POST.get('uuid', '') value = request.POST.get('value', '') conn.set_secret_value(uuid, value) return HttpResponseRedirect(request.get_full_path()) except libvirtError as err: error_messages.append(err) return render(request, 'secrets.html', locals())