Code cleanup: remove updating ssh keys on live VMs

This commit is contained in:
PCoder 2019-06-25 02:11:57 +02:00
commit 08608c726f
5 changed files with 4 additions and 229 deletions

View file

@ -1,5 +1,4 @@
from datetime import datetime
from time import sleep
from celery import current_task
from celery.exceptions import MaxRetriesExceededError
@ -178,7 +177,7 @@ def create_vm_task(self, vm_template_id, user, specs, template, order_id):
kwargs={'pk': order_id}),
'page_header': _(
'Your New VM %(vm_name)s at Data Center Light') % {
'vm_name': vm.get('name')},
'vm_name': vm.get('name')},
'vm_name': vm.get('name')
}
email_data = {
@ -193,7 +192,8 @@ def create_vm_task(self, vm_template_id, user, specs, template, order_id):
email.send()
logger.debug("New VM ID is {vm_id}".format(vm_id=vm_id))
get_or_create_vm_detail(custom_user, manager, vm_id)
if vm_id > 0:
get_or_create_vm_detail(custom_user, manager, vm_id)
except Exception as e:
logger.error(str(e))
try:
@ -215,84 +215,3 @@ def create_vm_task(self, vm_template_id, user, specs, template, order_id):
return
return vm_id
@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES)
def save_ssh_key_in_vm_template_task(self, user, vm_id, ssh_key_str):
logger.debug("Inside save_ssh_key_in_vm_template_task %s" % vm_id)
on_user = user.get('email')
on_pass = user.get('pass')
if on_user is None or on_pass is None:
logger.error(
"Either email or password not supplied. Can't save ssh key"
)
return
manager = OpenNebulaManager(email=on_user, password=on_pass)
# poweroff the vm
vm = manager.power_off_vm(vm_id)
powered_off = False
for t in range(15):
vm = manager.get_vm(vm_id)
if vm.str_state == 'POWEROFF':
logger.debug(
"VM %s has been powered off. Now adding ssh keys" % vm.id
)
powered_off = True
break
else:
logger.debug(
"VM {} has state {}. Waiting 2 more seconds to see if it "
"powers off".format(vm.id, vm.str_state)
)
sleep(2)
if powered_off:
logger.debug(
"VM %s was powered off by api call" % vm.id
)
if manager.save_key_in_vm_template(vm_id=vm_id, ssh_key=ssh_key_str) > 0:
logger.debug(
"Added ssh_keys of user %s to VM %s successfully" %
(on_user, vm_id)
)
manager.resume(vm_id)
lang = 'en-us'
if user.get('language') is not None:
logger.debug(
"Language is set to {}".format(user.get('language')))
lang = user.get('language')
translation.activate(lang)
# Send notification to the user as soon as VM has been booked
context = {
'page_header': str(_("Adding of SSH key completed")),
'base_url': "{0}://{1}".format(user.get('request_scheme'),
user.get('request_host')),
'vm_detail_url': reverse('hosting:virtual_machines',
kwargs={'pk': vm_id}),
'vm_name': vm.name
}
email_data = {
'subject': context.get('page_header'),
'to': user.get('email'),
'context': context,
'template_name': 'ssh_key_added_to_vm',
'template_path': 'hosting/emails/',
'from_address': settings.DCL_SUPPORT_FROM_ADDRESS,
}
email = BaseEmail(**email_data)
email.send()
else:
logger.error(
"There was an error updating ssh keys of the VM %s" % vm_id
)
else:
logger.error(
"VM {} did not poweroff within 30 seconds after the poweroff api "
"call. Please, ask the admin to poweroff and add the key "
"manually.".format(vm_id)
)