Add AddSshKeyToVMView
This commit is contained in:
parent
0104a804c2
commit
09ab9a714d
1 changed files with 59 additions and 3 deletions
|
@ -2,6 +2,7 @@ import logging
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from urllib import parse
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -34,9 +35,9 @@ from stored_messages.settings import stored_messages_settings
|
||||||
|
|
||||||
from datacenterlight.cms_models import DCLCalculatorPluginModel
|
from datacenterlight.cms_models import DCLCalculatorPluginModel
|
||||||
from datacenterlight.models import VMTemplate, VMPricing
|
from datacenterlight.models import VMTemplate, VMPricing
|
||||||
|
from datacenterlight.tasks import save_ssh_key_in_vm_template_task
|
||||||
from datacenterlight.utils import create_vm, get_cms_integration
|
from datacenterlight.utils import create_vm, get_cms_integration
|
||||||
from hosting.models import UserCardDetail
|
from hosting.models import UserCardDetail
|
||||||
from utils.hosting_utils import get_all_public_keys
|
|
||||||
from membership.models import CustomUser, StripeCustomer
|
from membership.models import CustomUser, StripeCustomer
|
||||||
from opennebula_api.models import OpenNebulaManager
|
from opennebula_api.models import OpenNebulaManager
|
||||||
from opennebula_api.serializers import (
|
from opennebula_api.serializers import (
|
||||||
|
@ -47,6 +48,7 @@ from utils.forms import (
|
||||||
BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm,
|
BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm,
|
||||||
ResendActivationEmailForm
|
ResendActivationEmailForm
|
||||||
)
|
)
|
||||||
|
from utils.hosting_utils import get_all_public_keys
|
||||||
from utils.hosting_utils import get_vm_price_with_vat, HostingUtils
|
from utils.hosting_utils import get_vm_price_with_vat, HostingUtils
|
||||||
from utils.mailer import BaseEmail
|
from utils.mailer import BaseEmail
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
|
@ -1512,6 +1514,59 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
|
||||||
return redirect(reverse('hosting:payment'))
|
return redirect(reverse('hosting:payment'))
|
||||||
|
|
||||||
|
|
||||||
|
class AddSshKeyToVMView(LoginRequiredMixin, View):
|
||||||
|
|
||||||
|
def respond_with_error(self):
|
||||||
|
response = {'status': False}
|
||||||
|
response['msg_title'] = str(_("No ssh keys provided"))
|
||||||
|
response['msg_body'] = str(
|
||||||
|
_("Please retry and select one of the keys"))
|
||||||
|
json_response = JsonResponse(response)
|
||||||
|
return json_response
|
||||||
|
|
||||||
|
@method_decorator(decorators)
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
vm_id = int(self.kwargs.get('pk'))
|
||||||
|
except ValueError as ve:
|
||||||
|
logger.error("Value error {}".format(str(ve)))
|
||||||
|
self.respond_with_error()
|
||||||
|
if 'selected_key' not in request.POST:
|
||||||
|
self.respond_with_error()
|
||||||
|
else:
|
||||||
|
posted_keys = parse.unquote_plus(request.POST['selected_key'])
|
||||||
|
if posted_keys.strip() == "":
|
||||||
|
self.respond_with_error()
|
||||||
|
keys = posted_keys.split(",")
|
||||||
|
uh_keys = [
|
||||||
|
UserHostingKey.objects.get(
|
||||||
|
user=request.user, name=key)
|
||||||
|
for key in keys if key is not None and key is not ""
|
||||||
|
]
|
||||||
|
# Add public_keys to vm_id now
|
||||||
|
public_keys = [uh_key.public_key for uh_key in uh_keys]
|
||||||
|
keys_str = '\n'.join(public_keys)
|
||||||
|
user = {
|
||||||
|
'email': request.user.email,
|
||||||
|
'pass': request.user.password,
|
||||||
|
'request_scheme': request.scheme,
|
||||||
|
'request_host': request.get_host(),
|
||||||
|
'language': get_language(),
|
||||||
|
}
|
||||||
|
save_ssh_key_in_vm_template_task(user,vm_id, keys_str)
|
||||||
|
response = dict()
|
||||||
|
response['status'] = True
|
||||||
|
response['msg_title'] = str(_(
|
||||||
|
"Adding of your SSH key add is under process"
|
||||||
|
))
|
||||||
|
response['msg_body'] = str(_(
|
||||||
|
"Your keys %s will be added to the VM in the next couple of "
|
||||||
|
"minutes. You will receive a confirmation email once this has "
|
||||||
|
"been done. Thank you." % posted_keys
|
||||||
|
))
|
||||||
|
return JsonResponse(response)
|
||||||
|
|
||||||
|
|
||||||
class VirtualMachineView(LoginRequiredMixin, View):
|
class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
template_name = "hosting/virtual_machine_detail.html"
|
template_name = "hosting/virtual_machine_detail.html"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
|
@ -1568,7 +1623,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
'virtual_machine': serializer.data,
|
'virtual_machine': serializer.data,
|
||||||
'order': HostingOrder.objects.get(
|
'order': HostingOrder.objects.get(
|
||||||
vm_id=serializer.data['vm_id']
|
vm_id=serializer.data['vm_id']
|
||||||
)
|
),
|
||||||
|
'keys': UserHostingKey.objects.filter(user=request.user)
|
||||||
}
|
}
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logger.debug("Exception generated {}".format(str(ex)))
|
logger.debug("Exception generated {}".format(str(ex)))
|
||||||
|
@ -1634,7 +1690,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
"manager.delete_vm returned False. Hence, error making "
|
"manager.delete_vm returned False. Hence, error making "
|
||||||
"xml-rpc call to delete vm failed."
|
"xml-rpc call to delete vm failed."
|
||||||
)
|
)
|
||||||
response['text'] = ugettext('Error terminating VM') + vm.id
|
response['text'] = str(_('Error terminating VM ')) + str(vm.id)
|
||||||
else:
|
else:
|
||||||
for t in range(15):
|
for t in range(15):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue