def validate_new_image(image_id, machine_request_id): machine_request = MachineRequest.objects.get(id=machine_request_id) new_status, _ = StatusType.objects.get_or_create(name="validating") machine_request.status = new_status machine_request.old_status = 'validating' machine_request.save() accounts = get_account_driver(machine_request.new_machine.provider) accounts.clear_cache() from service.instance import launch_machine_instance admin_driver = accounts.admin_driver admin_ident = machine_request.new_admin_identity() if not admin_driver: celery_logger.warn( "Need admin_driver functionality to auto-validate instance") return False if not admin_ident: celery_logger.warn( "Need to know the AccountProvider to auto-validate instance") return False # Attempt to launch using the admin_driver admin_driver.identity.user = admin_ident.created_by machine = admin_driver.get_machine(image_id) small_size = admin_driver.list_sizes()[0] instance = launch_machine_instance(admin_driver, admin_ident, machine, small_size, 'Automated Image Verification - %s' % image_id, username='******', using_admin=True) return instance.id
def validate_new_image(image_id, machine_request_id): machine_request = MachineRequest.objects.get(id=machine_request_id) new_status, _ = StatusType.objects.get_or_create(name="validating") machine_request.status = new_status machine_request.old_status = 'validating' machine_request.save() accounts = get_account_driver(machine_request.new_machine.provider) accounts.clear_cache() from service.instance import launch_machine_instance admin_driver = accounts.admin_driver admin_ident = machine_request.new_admin_identity() if not admin_driver: celery_logger.warn( "Need admin_driver functionality to auto-validate instance") return False if not admin_ident: celery_logger.warn( "Need to know the AccountProvider to auto-validate instance") return False # Attempt to launch using the admin_driver admin_driver.identity.user = admin_ident.created_by machine = admin_driver.get_machine(image_id) small_size = admin_driver.list_sizes()[0] instance = launch_machine_instance( admin_driver, admin_ident, machine, small_size, 'Automated Image Verification - %s' % image_id, username='******', using_admin=True) return instance.id
def validate_new_image(image_id, machine_request_id): if not getattr(settings, 'ENABLE_IMAGE_VALIDATION', True): celery_logger.warn("Skip validation: ENABLE_IMAGE_VALIDATION is False") return True machine_request = MachineRequest.objects.get(id=machine_request_id) new_status, _ = StatusType.objects.get_or_create(name="validating") machine_request.status = new_status machine_request.old_status = 'validating' local_username = machine_request.created_by.username #NOTE: Change local_username accordingly when this assumption is no longer true. machine_request.save() accounts = get_account_driver(machine_request.new_machine.provider) accounts.clear_cache() from service.instance import launch_machine_instance admin_driver = accounts.admin_driver admin_ident = machine_request.new_admin_identity() if not admin_driver: celery_logger.warn( "Need admin_driver functionality to auto-validate instance" ) return False if not admin_ident: celery_logger.warn( "Need to know the AccountProvider to auto-validate instance" ) return False # Attempt to launch using the admin_driver user = admin_ident.created_by admin_driver.identity.user = user machine = admin_driver.get_machine(image_id) sorted_sizes = admin_driver.list_sizes() size_index = 0 while size_index < len(sorted_sizes): selected_size = sorted_sizes[size_index] size_index += 1 try: instance = launch_machine_instance( admin_driver, user, admin_ident, machine, selected_size, 'Automated Image Verification - %s' % image_id, username=local_username, using_admin=True ) return instance.provider_alias except BaseHTTPError as http_error: if "Flavor's disk is too small for requested image" in http_error.message: continue logger.exception(http_error) raise except Exception as exc: logger.exception(exc) raise # End of while loop raise Exception("Validation of new Image %s has *FAILED*" % image_id)
def validate_new_image(image_id, machine_request_id): machine_request = MachineRequest.objects.get(id=machine_request_id) new_status, _ = StatusType.objects.get_or_create(name="validating") machine_request.status = new_status machine_request.old_status = 'validating' machine_request.save() accounts = get_account_driver(machine_request.new_machine.provider) accounts.clear_cache() from service.instance import launch_machine_instance admin_driver = accounts.admin_driver admin_ident = machine_request.new_admin_identity() if not admin_driver: celery_logger.warn( "Need admin_driver functionality to auto-validate instance") return False if not admin_ident: celery_logger.warn( "Need to know the AccountProvider to auto-validate instance") return False # Attempt to launch using the admin_driver admin_driver.identity.user = admin_ident.created_by machine = admin_driver.get_machine(image_id) sorted_sizes = admin_driver.list_sizes() size_index = 0 while size_index < len(sorted_sizes): selected_size = sorted_sizes[size_index] size_index += 1 try: instance = launch_machine_instance( admin_driver, admin_ident, machine, selected_size, 'Automated Image Verification - %s' % image_id, username='******', using_admin=True) return instance.id except BaseHTTPError as http_error: if "Flavor's disk is too small for requested image" in http_error.message: continue except Exception as exc: logger.exception(exc) raise raise Exception("Validation of new Image %s has *FAILED*" % image_id)
def validate_new_image(image_id, machine_request_id): machine_request = MachineRequest.objects.get(id=machine_request_id) new_status, _ = StatusType.objects.get_or_create(name="validating") machine_request.status = new_status machine_request.old_status = 'validating' machine_request.save() accounts = get_account_driver(machine_request.new_machine.provider) accounts.clear_cache() from service.instance import launch_machine_instance admin_driver = accounts.admin_driver admin_ident = machine_request.new_admin_identity() if not admin_driver: celery_logger.warn( "Need admin_driver functionality to auto-validate instance") return False if not admin_ident: celery_logger.warn( "Need to know the AccountProvider to auto-validate instance") return False # Attempt to launch using the admin_driver admin_driver.identity.user = admin_ident.created_by machine = admin_driver.get_machine(image_id) sorted_sizes = admin_driver.list_sizes() size_index = 0 while size_index < len(sorted_sizes): selected_size = sorted_sizes[size_index] size_index += 1 try: instance = launch_machine_instance( admin_driver, admin_ident, machine, selected_size, 'Automated Image Verification - %s' % image_id, username='******', using_admin=True) return instance.id except Exception as exc: raise # FIXME: Determine if this exception is based on 'size too small' logger.exception(exc) pass raise Exception("Validation of new Image %s has *FAILED*" % image_id)