Wait for VM to be pingable before doing a manage_public_key
This commit is contained in:
		
					parent
					
						
							
								91021d7612
							
						
					
				
			
			
				commit
				
					
						a55587dbf3
					
				
			
		
					 1 changed files with 28 additions and 3 deletions
				
			
		| 
						 | 
					@ -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,8 +208,31 @@ 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
 | 
				
			||||||
 | 
					                        did_manage_public_key = False
 | 
				
			||||||
 | 
					                        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(
 | 
					                                manager.manage_public_key(
 | 
				
			||||||
                            keys, hosts=[vm_ipv6], countdown=75
 | 
					                                    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))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue