def _deploy_init_to(driverCls, provider, identity, instance_id, username=None, password=None, redeploy=False, **celery_task_args): try: logger.debug("_deploy_init_to task started at %s." % datetime.now()) #Check if instance still exists driver = get_driver(driverCls, provider, identity) instance = driver.get_instance(instance_id) if not instance: logger.debug("Instance has been teminated: %s." % instance_id) return #NOTE: This is unrelated to the password argument logger.info(instance.extra) instance._node.extra['password'] = None msd = init(instance, identity.user.username, password, redeploy) kwargs = _generate_ssh_kwargs() kwargs.update({'deploy': msd}) driver.deploy_to(instance, **kwargs) _update_status_log(instance, "Deploy Finished") logger.debug("_deploy_init_to task finished at %s." % datetime.now()) except DeploymentError as exc: logger.exception(exc) if isinstance(exc.value, NonZeroDeploymentException): #The deployment was successful, but the return code on one or more # steps is bad. Log the exception and do NOT try again! raise exc.value #TODO: Check if all exceptions thrown at this time #fall in this category, and possibly don't retry if #you hit the Exception block below this. _deploy_init_to.retry(exc=exc) except Exception as exc: logger.exception(exc) _deploy_init_to.retry(exc=exc)
def _deploy_init_to(driverCls, provider, identity, instance_id, password=None, **celery_task_args): try: logger.debug("_deploy_init_to task started at %s." % datetime.now()) #Check if instance still exists driver = get_driver(driverCls, provider, identity) instance = driver.get_instance(instance_id) if not instance: logger.debug("Instance has been teminated: %s." % instance_id) return #NOTE: This is NOT the password passed by argument #Deploy with no password to use ssh keys logger.info(instance.extra) instance._node.extra['password'] = None kwargs = {} private_key = "/opt/dev/atmosphere/extras/ssh/id_rsa" kwargs.update({'ssh_key': private_key}) kwargs.update({'timeout': 120}) msd = init(instance, identity.user.username, password) kwargs.update({'deploy': msd}) driver.deploy_to(instance, **kwargs) logger.debug("_deploy_init_to task finished at %s." % datetime.now()) except DeploymentError as exc: logger.exception(exc) if isinstance(exc.value, NonZeroDeploymentException): #The deployment was successful, but the return code on one or more # steps is bad. Log the exception and do NOT try again! raise exc.value #TODO: Check if all exceptions thrown at this time #fall in this category, and possibly don't retry if #you hit the Exception block below this. _deploy_init_to.retry(exc=exc) except Exception as exc: logger.exception(exc) _deploy_init_to.retry(exc=exc)
def _deploy_init_to(driverCls, provider, identity, instance_id, username=None, password=None, token=None, redeploy=False, **celery_task_args): #Note: Splitting preperation (Of the MultiScriptDeployment) and execution # This makes it easier to output scripts for debugging of users. try: logger.debug("_deploy_init_to task started at %s." % datetime.now()) #Check if instance still exists driver = get_driver(driverCls, provider, identity) instance = driver.get_instance(instance_id) if not instance: logger.debug("Instance has been teminated: %s." % instance_id) return #NOTE: This is required to use ssh to connect. #TODO: Is this still necessary? What about times when we want to use # the adminPass? --Steve logger.info(instance.extra) instance._node.extra['password'] = None msd = init(instance, identity.user.username, password, token, redeploy) except Exception as exc: logger.exception(exc) _deploy_init_to.retry(exc=exc) try: kwargs = _generate_ssh_kwargs() kwargs.update({'deploy': msd}) driver.deploy_to(instance, **kwargs) _update_status_log(instance, "Deploy Finished") logger.debug("_deploy_init_to task finished at %s." % datetime.now()) except DeploymentError as exc: logger.exception(exc) full_deploy_output = _parse_steps_output(msd) if isinstance(exc.value, NonZeroDeploymentException): #The deployment was successful, but the return code on one or more # steps is bad. Log the exception and do NOT try again! raise NonZeroDeploymentException,\ "One or more Script(s) reported a NonZeroDeployment:%s"\ % full_deploy_output,\ sys.exc_info()[2] #TODO: Check if all exceptions thrown at this time #fall in this category, and possibly don't retry if #you hit the Exception block below this. _deploy_init_to.retry(exc=exc) except SystemExit as bad_ssh: logger.exception("ERROR: Someone has raised a SystemExit!") _deploy_init_to.retry(exc=bad_ssh) except Exception as exc: logger.exception(exc) _deploy_init_to.retry(exc=exc)
def _deploy_init_to(driverCls, provider, identity, instance_id, username=None, password=None, redeploy=False, **celery_task_args): try: logger.debug("_deploy_init_to task started at %s." % datetime.now()) #Check if instance still exists driver = get_driver(driverCls, provider, identity) instance = driver.get_instance(instance_id) if not instance: logger.debug("Instance has been teminated: %s." % instance_id) return #NOTE: This is unrelated to the password argument logger.info(instance.extra) instance._node.extra['password'] = None if not username: username = identity.user.username msd = init(instance, username, password, redeploy) kwargs = _generate_ssh_kwargs() kwargs.update({'deploy': msd}) driver.deploy_to(instance, **kwargs) _update_status_log(instance, "Deploy Finished") logger.debug("_deploy_init_to task finished at %s." % datetime.now()) except DeploymentError as exc: logger.exception(exc) if isinstance(exc.value, NonZeroDeploymentException): #The deployment was successful, but the return code on one or more # steps is bad. Log the exception and do NOT try again! raise exc.value #TODO: Check if all exceptions thrown at this time #fall in this category, and possibly don't retry if #you hit the Exception block below this. _deploy_init_to.retry(exc=exc) except Exception as exc: logger.exception(exc) _deploy_init_to.retry(exc=exc)
def _deploy_init_to(driverCls, provider, identity, instance_id, password=None): try: logger.debug("_deploy_init_to task started at %s." % datetime.now()) #Check if instance still exists driver = get_driver(driverCls, provider, identity) instance = driver.get_instance(instance_id) if not instance: logger.debug("Instance has been teminated: %s." % instance_id) return #NOTE: This is NOT the password passed by argument #Deploy with no password to use ssh keys logger.info(instance.extra) instance._node.extra['password'] = None kwargs = {} private_key = "/opt/dev/atmosphere/extras/ssh/id_rsa" kwargs.update({'ssh_key': private_key}) kwargs.update({'timeout': 120}) msd = init(instance, identity.user.username, password) kwargs.update({'deploy': msd}) driver.deploy_to(instance, **kwargs) logger.debug("_deploy_init_to task finished at %s." % datetime.now()) except Exception as exc: logger.exception(exc) _deploy_init_to.retry(exc=exc)