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…
Reference in a new issue