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
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from time import sleep
 | 
			
		||||
from urllib import parse
 | 
			
		||||
 | 
			
		||||
from django import forms
 | 
			
		||||
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.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 hosting.models import UserCardDetail
 | 
			
		||||
from utils.hosting_utils import get_all_public_keys
 | 
			
		||||
from membership.models import CustomUser, StripeCustomer
 | 
			
		||||
from opennebula_api.models import OpenNebulaManager
 | 
			
		||||
from opennebula_api.serializers import (
 | 
			
		||||
| 
						 | 
				
			
			@ -47,6 +48,7 @@ from utils.forms import (
 | 
			
		|||
    BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm,
 | 
			
		||||
    ResendActivationEmailForm
 | 
			
		||||
)
 | 
			
		||||
from utils.hosting_utils import get_all_public_keys
 | 
			
		||||
from utils.hosting_utils import get_vm_price_with_vat, HostingUtils
 | 
			
		||||
from utils.mailer import BaseEmail
 | 
			
		||||
from utils.stripe_utils import StripeUtils
 | 
			
		||||
| 
						 | 
				
			
			@ -1512,6 +1514,59 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
 | 
			
		|||
        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):
 | 
			
		||||
    template_name = "hosting/virtual_machine_detail.html"
 | 
			
		||||
    login_url = reverse_lazy('hosting:login')
 | 
			
		||||
| 
						 | 
				
			
			@ -1568,7 +1623,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
 | 
			
		|||
                'virtual_machine': serializer.data,
 | 
			
		||||
                'order': HostingOrder.objects.get(
 | 
			
		||||
                    vm_id=serializer.data['vm_id']
 | 
			
		||||
                )
 | 
			
		||||
                ),
 | 
			
		||||
                'keys': UserHostingKey.objects.filter(user=request.user)
 | 
			
		||||
            }
 | 
			
		||||
        except Exception as ex:
 | 
			
		||||
            logger.debug("Exception generated {}".format(str(ex)))
 | 
			
		||||
| 
						 | 
				
			
			@ -1634,7 +1690,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
 | 
			
		|||
                "manager.delete_vm returned False. Hence, error making "
 | 
			
		||||
                "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:
 | 
			
		||||
            for t in range(15):
 | 
			
		||||
                try:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue