Remove keys from known_hosts on delete of a vm
This commit is contained in:
		
					parent
					
						
							
								221af96c8b
							
						
					
				
			
			
				commit
				
					
						f94ed011e5
					
				
			
		
					 1 changed files with 51 additions and 3 deletions
				
			
		| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					import subprocess
 | 
				
			||||||
import uuid
 | 
					import uuid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
| 
						 | 
					@ -18,10 +19,10 @@ from django.views.generic import View, CreateView, FormView, ListView, \
 | 
				
			||||||
    DetailView, \
 | 
					    DetailView, \
 | 
				
			||||||
    DeleteView, TemplateView, UpdateView
 | 
					    DeleteView, TemplateView, UpdateView
 | 
				
			||||||
from guardian.mixins import PermissionRequiredMixin
 | 
					from guardian.mixins import PermissionRequiredMixin
 | 
				
			||||||
from oca.pool import WrongNameError, WrongIdError
 | 
					from oca.pool import WrongIdError
 | 
				
			||||||
from stored_messages.settings import stored_messages_settings
 | 
					 | 
				
			||||||
from stored_messages.models import Message
 | 
					 | 
				
			||||||
from stored_messages.api import mark_read
 | 
					from stored_messages.api import mark_read
 | 
				
			||||||
 | 
					from stored_messages.models import Message
 | 
				
			||||||
 | 
					from stored_messages.settings import stored_messages_settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from membership.models import CustomUser, StripeCustomer
 | 
					from membership.models import CustomUser, StripeCustomer
 | 
				
			||||||
from opennebula_api.models import OpenNebulaManager
 | 
					from opennebula_api.models import OpenNebulaManager
 | 
				
			||||||
| 
						 | 
					@ -981,6 +982,53 @@ class VirtualMachineView(LoginRequiredMixin, View):
 | 
				
			||||||
                'VM_ID': opennebula_vm_id}
 | 
					                'VM_ID': opennebula_vm_id}
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Remove all keys belonging to the IP(s)
 | 
				
			||||||
 | 
					        # ssh-keygen -R ip_address
 | 
				
			||||||
 | 
					        if vm_data.ipv4 is not None:
 | 
				
			||||||
 | 
					            if ', ' in vm_data.ipv4:
 | 
				
			||||||
 | 
					                vm_ips = vm_data.ipv4.split(', ')
 | 
				
			||||||
 | 
					                for ip_address in vm_ips:
 | 
				
			||||||
 | 
					                    try:
 | 
				
			||||||
 | 
					                        subprocess.check_output(
 | 
				
			||||||
 | 
					                            ['ssh-keygen', '-R', ip_address])
 | 
				
			||||||
 | 
					                    except subprocess.CalledProcessError as cpe:
 | 
				
			||||||
 | 
					                        logger.debug(
 | 
				
			||||||
 | 
					                            """Could not remove key belonging to {ip}. 
 | 
				
			||||||
 | 
					                            Error details: {details}""".format(ip=ip_address,
 | 
				
			||||||
 | 
					                                                               details=str(
 | 
				
			||||||
 | 
					                                                                   cpe)))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                try:
 | 
				
			||||||
 | 
					                    subprocess.check_output(
 | 
				
			||||||
 | 
					                        ['ssh-keygen', '-R', vm_data.ipv4])
 | 
				
			||||||
 | 
					                except subprocess.CalledProcessError as cpe:
 | 
				
			||||||
 | 
					                    logger.debug(
 | 
				
			||||||
 | 
					                        """Could not remove key belonging to {ip}. 
 | 
				
			||||||
 | 
					                        Error details: {details}""".format(ip=vm_data.ipv4,
 | 
				
			||||||
 | 
					                                                           details=str(cpe)))
 | 
				
			||||||
 | 
					        if vm_data.ipv6 is not None:
 | 
				
			||||||
 | 
					            if ', ' in vm_data.ipv6:
 | 
				
			||||||
 | 
					                vm_ips = vm_data.ipv6.split(', ')
 | 
				
			||||||
 | 
					                for ip_address in vm_ips:
 | 
				
			||||||
 | 
					                    try:
 | 
				
			||||||
 | 
					                        subprocess.check_output(
 | 
				
			||||||
 | 
					                            ['ssh-keygen', '-R', ip_address])
 | 
				
			||||||
 | 
					                    except subprocess.CalledProcessError as cpe:
 | 
				
			||||||
 | 
					                        logger.debug(
 | 
				
			||||||
 | 
					                            """Could not remove key belonging to {ip}. 
 | 
				
			||||||
 | 
					                            Error details: {details}""".format(ip=ip_address,
 | 
				
			||||||
 | 
					                                                               details=str(
 | 
				
			||||||
 | 
					                                                                   cpe)))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                try:
 | 
				
			||||||
 | 
					                    subprocess.check_output(
 | 
				
			||||||
 | 
					                        ['ssh-keygen', '-R', vm_data.ipv6])
 | 
				
			||||||
 | 
					                except subprocess.CalledProcessError as cpe:
 | 
				
			||||||
 | 
					                    logger.debug(
 | 
				
			||||||
 | 
					                        """Could not remove key belonging to {ip}. 
 | 
				
			||||||
 | 
					                        Error details: {details}""".format(ip=vm_data.ipv6,
 | 
				
			||||||
 | 
					                                                           details=str(cpe)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return HttpResponseRedirect(self.get_success_url())
 | 
					        return HttpResponseRedirect(self.get_success_url())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue