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