Wait for VM to be pingable before doing a manage_public_key

This commit is contained in:
PCoder 2018-08-21 23:49:47 +02:00
parent 91021d7612
commit a55587dbf3

View file

@ -8,6 +8,7 @@ from django.core.mail import EmailMessage
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils import translation from django.utils import translation
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from time import sleep
from dynamicweb.celery import app from dynamicweb.celery import app
from hosting.models import HostingOrder from hosting.models import HostingOrder
@ -18,6 +19,7 @@ from utils.hosting_utils import get_all_public_keys, get_or_create_vm_detail
from utils.mailer import BaseEmail from utils.mailer import BaseEmail
from utils.stripe_utils import StripeUtils from utils.stripe_utils import StripeUtils
from .models import VMPricing from .models import VMPricing
from .utils import ping_ok
logger = get_task_logger(__name__) logger = get_task_logger(__name__)
@ -206,9 +208,32 @@ def create_vm_task(self, vm_template_id, user, specs, template, order_id):
# Let's delay the task by 75 seconds to be sure # Let's delay the task by 75 seconds to be sure
# that we run the cdist configure after the host # that we run the cdist configure after the host
# is up # is up
manager.manage_public_key( did_manage_public_key = False
keys, hosts=[vm_ipv6], countdown=75 for i in range(0, 15):
) if ping_ok(vm_ipv6):
logger.debug(
"{} is pingable. Doing a "
"manage_public_key".format(vm_ipv6)
)
manager.manage_public_key(
keys, hosts=[vm_ipv6]
)
did_manage_public_key = True
break
else:
logger.debug(
"Can't ping {}. Wait 5 secs".format(
vm_ipv6
)
)
sleep(5)
if not did_manage_public_key:
logger.error(
"Waited for over 75 seconds for {} to be "
"pingable. But the VM was not reachable. So,"
"gave up manage_public_key. Do this "
"manually".format(vm_ipv6)
)
except Exception as e: except Exception as e:
logger.error(str(e)) logger.error(str(e))
try: try: