def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: authenticated ec2 connection object """ source_region = module.params.get('source_region') source_image_id = module.params.get('source_image_id') name = module.params.get('name') description = module.params.get('description') tags = module.params.get('tags') wait_timeout = int(module.params.get('wait_timeout')) wait = module.params.get('wait') try: params = {'source_region': source_region, 'source_image_id': source_image_id, 'name': name, 'description': description } image_id = ec2.copy_image(**params).image_id except boto.exception.BotoServerError, e: module.fail_json(msg="%s: %s" % (e.error_code, e.error_message))
def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: authenticated ec2 connection object """ source_region = module.params.get('source_region') source_image_id = module.params.get('source_image_id') name = module.params.get('name') description = module.params.get('description') tags = module.params.get('tags') wait_timeout = int(module.params.get('wait_timeout')) wait = module.params.get('wait') try: params = { 'source_region': source_region, 'source_image_id': source_image_id, 'name': name, 'description': description } image_id = ec2.copy_image(**params).image_id except boto.exception.BotoServerError, e: module.fail_json(msg="%s: %s" % (e.error_code, e.error_message))
def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: authenticated ec2 connection object """ source_region = module.params.get("source_region") source_image_id = module.params.get("source_image_id") name = module.params.get("name") description = module.params.get("description") tags = module.params.get("tags") wait_timeout = int(module.params.get("wait_timeout")) wait = module.params.get("wait") try: params = { "source_region": source_region, "source_image_id": source_image_id, "name": name, "description": description, } image_id = ec2.copy_image(**params).image_id except boto.exception.BotoServerError, e: module.fail_json(msg="%s: %s" % (e.error_code, e.error_message))
def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: ec2 connection object """ tags = module.params.get('tags') params = { 'SourceRegion': module.params.get('source_region'), 'SourceImageId': module.params.get('source_image_id'), 'Name': module.params.get('name'), 'Description': module.params.get('description'), 'Encrypted': module.params.get('encrypted'), } if module.params.get('kms_key_id'): params['KmsKeyId'] = module.params.get('kms_key_id') try: image_id = ec2.copy_image(**params)['ImageId'] if module.params.get('wait'): ec2.get_waiter('image_available').wait(ImageIds=[image_id]) if module.params.get('tags'): ec2.create_tags(Resources=[image_id], Tags=[{ 'Key': k, 'Value': v } for k, v in module.params.get('tags').items()]) module.exit_json(changed=True, image_id=image_id) except WaiterError as we: module.fail_json( msg= 'An error occurred waiting for the image to become available. (%s)' % str(we), exception=traceback.format_exc()) except ClientError as ce: module.fail_json(msg=ce.message) except NoCredentialsError: module.fail_json( msg='Unable to authenticate, AWS credentials are invalid.') except Exception as e: module.fail_json(msg='Unhandled exception. (%s)' % str(e))
def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: authenticated ec2 connection object """ source_region = module.params.get('source_region') source_image_id = module.params.get('source_image_id') name = module.params.get('name') description = module.params.get('description') encrypted = module.params.get('encrypted') kms_key_id = module.params.get('kms_key_id') tags = module.params.get('tags') wait_timeout = int(module.params.get('wait_timeout')) wait = module.params.get('wait') try: params = { 'source_region': source_region, 'source_image_id': source_image_id, 'name': name, 'description': description, 'encrypted': encrypted, 'kms_key_id': kms_key_id } image_id = ec2.copy_image(**params).image_id except boto.exception.BotoServerError as e: module.fail_json(msg="%s: %s" % (e.error_code, e.error_message)) img = wait_until_image_is_recognized(module, ec2, wait_timeout, image_id, wait) img = wait_until_image_is_copied(module, ec2, wait_timeout, img, image_id, wait) register_tags_if_any(module, ec2, tags, image_id) module.exit_json(msg="AMI copy operation complete", image_id=image_id, state=img.state, changed=True)
def copy_image(ec2, module): """ Copies an AMI module : AnsibleModule object ec2: ec2 connection object """ tags = module.params.get('tags') params = { 'SourceRegion': module.params.get('source_region'), 'SourceImageId': module.params.get('source_image_id'), 'Name': module.params.get('name'), 'Description': module.params.get('description'), 'Encrypted': module.params.get('encrypted'), # 'KmsKeyId': module.params.get('kms_key_id') } if module.params.get('kms_key_id'): params['KmsKeyId'] = module.params.get('kms_key_id') try: image_id = ec2.copy_image(**params)['ImageId'] if module.params.get('wait'): ec2.get_waiter('image_available').wait(ImageIds=[image_id]) if module.params.get('tags'): ec2.create_tags(Resources=[image_id], Tags=[{ 'Key': k, 'Value': v } for k, v in module.params.get('tags').items()]) module.exit_json(changed=True, image_id=image_id) except ClientError as ce: module.fail_json(msg=ce) except NoCredentialsError: module.fail_json(msg="Unable to locate AWS credentials") except Exception as e: module.fail_json(msg=str(e))
def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: ec2 connection object """ tags = module.params.get('tags') params = {'SourceRegion': module.params.get('source_region'), 'SourceImageId': module.params.get('source_image_id'), 'Name': module.params.get('name'), 'Description': module.params.get('description'), 'Encrypted': module.params.get('encrypted'), } if module.params.get('kms_key_id'): params['KmsKeyId'] = module.params.get('kms_key_id') try: image_id = ec2.copy_image(**params)['ImageId'] if module.params.get('wait'): ec2.get_waiter('image_available').wait(ImageIds=[image_id]) if module.params.get('tags'): ec2.create_tags( Resources=[image_id], Tags=[{'Key' : k, 'Value': v} for k,v in module.params.get('tags').items()] ) module.exit_json(changed=True, image_id=image_id) except WaiterError as we: module.fail_json(msg='An error occurred waiting for the image to become available. (%s)' % str(we), exception=traceback.format_exc()) except ClientError as ce: module.fail_json(msg=ce.message) except NoCredentialsError: module.fail_json(msg='Unable to authenticate, AWS credentials are invalid.') except Exception as e: module.fail_json(msg='Unhandled exception. (%s)' % str(e))
def copy_image(module, ec2): """ Copies an AMI module : AnsibleModule object ec2: authenticated ec2 connection object """ source_region = module.params.get('source_region') source_image_id = module.params.get('source_image_id') name = module.params.get('name') description = module.params.get('description') encrypted = module.params.get('encrypted') kms_key_id = module.params.get('kms_key_id') tags = module.params.get('tags') wait_timeout = int(module.params.get('wait_timeout')) wait = module.params.get('wait') try: params = {'source_region': source_region, 'source_image_id': source_image_id, 'name': name, 'description': description, 'encrypted': encrypted, 'kms_key_id': kms_key_id } image_id = ec2.copy_image(**params).image_id except boto.exception.BotoServerError as e: module.fail_json(msg="%s: %s" % (e.error_code, e.error_message)) img = wait_until_image_is_recognized(module, ec2, wait_timeout, image_id, wait) img = wait_until_image_is_copied(module, ec2, wait_timeout, img, image_id, wait) register_tags_if_any(module, ec2, tags, image_id) module.exit_json(msg="AMI copy operation complete", image_id=image_id, state=img.state, changed=True)
def copy_image(ec2, module): """ Copies an AMI module : AnsibleModule object ec2: ec2 connection object """ tags = module.params.get('tags') params = {'SourceRegion': module.params.get('source_region'), 'SourceImageId': module.params.get('source_image_id'), 'Name': module.params.get('name'), 'Description': module.params.get('description'), 'Encrypted': module.params.get('encrypted'), # 'KmsKeyId': module.params.get('kms_key_id') } if module.params.get('kms_key_id'): params['KmsKeyId'] = module.params.get('kms_key_id') try: image_id = ec2.copy_image(**params)['ImageId'] if module.params.get('wait'): ec2.get_waiter('image_available').wait(ImageIds=[image_id]) if module.params.get('tags'): ec2.create_tags( Resources=[image_id], Tags=[{'Key' : k, 'Value': v} for k,v in module.params.get('tags').items()] ) module.exit_json(changed=True, image_id=image_id) except ClientError as ce: module.fail_json(msg=ce) except NoCredentialsError: module.fail_json(msg="Unable to locate AWS credentials") except Exception as e: module.fail_json(msg=str(e))