Code cleanup: remove updating ssh keys on live VMs
This commit is contained in:
parent
39549d5e36
commit
08608c726f
5 changed files with 4 additions and 229 deletions
|
|
@ -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)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue