def test_simple(self): import datetime from amitools.tools.ami_describe_ancestors import ( get_args, main, CHAIN_SUCCESS, CHAIN_NO_AMI, ) from amitools.util import ( calc_tags, tag_image, ) # Start by creating test AMIs from amitools.util import random_name from amitools.watch import EC2ImageWatcher self.log('Creating test AMIs') now = datetime.datetime.utcnow() # child AMI child_image_id = self.conn.create_image(self.instance.id, random_name(), no_reboot=True) self.log('Test child AMI id will be {} - setting up tags'.format(child_image_id)) child_tags = calc_tags( self.instance.image_id, self.instance.id, 'us-east-1', now - datetime.timedelta(seconds=5), ) child_watcher = EC2ImageWatcher(child_image_id, self.conn) child_watcher.waiton_exists() tag_image(self.conn, child_image_id, child_tags) self.log('Waiting for child AMI {} to be available'.format(child_image_id)) child_watcher.waiton('available') # grandchild AMI grandchild_image_id = self.conn.create_image(self.instance.id, random_name(), no_reboot=True) self.log('Grandchild AMI ID will be {} - setting up tags'.format(grandchild_image_id)) grandchild_tags = calc_tags( child_image_id, 'i-12345678', 'us-east-1', now, ) grandchild_watcher = EC2ImageWatcher(grandchild_image_id, self.conn) grandchild_watcher.waiton_exists() tag_image(self.conn, grandchild_image_id, grandchild_tags) self.log('Waiting for grandchild AMI {} to be available'.format(grandchild_image_id)) grandchild_watcher.waiton('available') child_image = self.get_image(child_image_id) grandchild_image = self.get_image(grandchild_image_id) # now ready to run tests self.log('Test AMIs available, proceeding with test') args = get_args([ grandchild_image_id, ]) result = main(args) self.assertEqual(CHAIN_SUCCESS, result['exit_code']) expected_chain = [ grandchild_image_id, child_image_id, self.instance.image_id, ] self.assertSequenceEqual(expected_chain, result['chain'])
def main(args): import datetime from amitools.dt import dateparse from amitools.util import ( calc_tags, tag_image, ) from amitools import ec2connect if args.create_date is None: when = datetime.datetime.utcfromtimestamp(args.create_timestamp) else: assert args.create_timestamp is None, args.create_timestamp when = dateparse(args.create_date) conn = ec2connect(args.region) tags = calc_tags( args.source_image, args.source_instance, args.source_region, when, ) tag_image( conn, args.image_id, tags, )
def main(args): import datetime import time from amitools.watch import EC2ImageWatcher from amitools.util import ( get_instance, random_name, ) from amitools import ec2connect from amitools.util import ( calc_tags, tag_image, ) if args.name is None: args.name = random_name(args.random_name_prefix) conn = ec2connect(args.region) image_id = conn.create_image( args.instance_id, args.name, description=args.description, no_reboot = args.no_reboot, ) image_watcher = EC2ImageWatcher(image_id, conn) image_watcher.waiton_exists() # AMI image creation started. While that's cooking, set up tags image = image_watcher.resource source_instance = get_instance(conn, args.instance_id) source_region = source_instance.region.name tags = calc_tags( source_instance.image_id, args.instance_id, source_region, datetime.datetime.utcnow(), ) tag_image( conn, image.id, tags, ) return { 'image_id' : image_id, }
def main(args): import datetime import time from amitools.watch import EC2ImageWatcher from amitools.util import ( get_instance, random_name, ) from amitools import ec2connect from amitools.util import ( calc_tags, tag_image, ) if args.name is None: args.name = random_name(args.random_name_prefix) conn = ec2connect(args.region) image_id = conn.create_image( args.instance_id, args.name, description=args.description, no_reboot=args.no_reboot, ) image_watcher = EC2ImageWatcher(image_id, conn) image_watcher.waiton_exists() # AMI image creation started. While that's cooking, set up tags image = image_watcher.resource source_instance = get_instance(conn, args.instance_id) source_region = source_instance.region.name tags = calc_tags( source_instance.image_id, args.instance_id, source_region, datetime.datetime.utcnow(), ) tag_image( conn, image.id, tags, ) return { 'image_id': image_id, }
def test_simple(self): import datetime from amitools.tools.ami_describe_ancestors import get_args, main, CHAIN_SUCCESS, CHAIN_NO_AMI from amitools.util import calc_tags, tag_image # Start by creating test AMIs from amitools.util import random_name from amitools.watch import EC2ImageWatcher self.log("Creating test AMIs") now = datetime.datetime.utcnow() # child AMI child_image_id = self.conn.create_image(self.instance.id, random_name(), no_reboot=True) self.log("Test child AMI id will be {} - setting up tags".format(child_image_id)) child_tags = calc_tags(self.instance.image_id, self.instance.id, now - datetime.timedelta(seconds=5)) child_watcher = EC2ImageWatcher(child_image_id, self.conn) child_watcher.waiton_exists() tag_image(self.conn, child_image_id, child_tags) self.log("Waiting for child AMI {} to be available".format(child_image_id)) child_watcher.waiton("available") # grandchild AMI grandchild_image_id = self.conn.create_image(self.instance.id, random_name(), no_reboot=True) self.log("Grandchild AMI ID will be {} - setting up tags".format(grandchild_image_id)) grandchild_tags = calc_tags(child_image_id, "i-12345678", now) grandchild_watcher = EC2ImageWatcher(grandchild_image_id, self.conn) grandchild_watcher.waiton_exists() tag_image(self.conn, grandchild_image_id, grandchild_tags) self.log("Waiting for grandchild AMI {} to be available".format(grandchild_image_id)) grandchild_watcher.waiton("available") child_image = self.get_image(child_image_id) grandchild_image = self.get_image(grandchild_image_id) # now ready to run tests self.log("Test AMIs available, proceeding with test") args = get_args([grandchild_image_id]) result = main(args) self.assertEqual(CHAIN_SUCCESS, result["exit_code"]) expected_chain = [grandchild_image_id, child_image_id, self.instance.image_id] self.assertSequenceEqual(expected_chain, result["chain"])
def test_simple(self): import datetime from amitools.tools.ami_describe_ancestors import ( get_args, main, CHAIN_SUCCESS, CHAIN_NO_AMI, ) from amitools.util import ( calc_tags, tag_image, ) # Start by creating test AMIs from amitools.util import random_name from amitools.watch import EC2ImageWatcher self.log('Creating test AMIs') now = datetime.datetime.utcnow() # child AMI child_image_id = self.conn.create_image(self.instance.id, random_name(), no_reboot=True) self.log('Test child AMI id will be {} - setting up tags'.format( child_image_id)) child_tags = calc_tags( self.instance.image_id, self.instance.id, now - datetime.timedelta(seconds=5), ) child_watcher = EC2ImageWatcher(child_image_id, self.conn) child_watcher.waiton_exists() tag_image(self.conn, child_image_id, child_tags) self.log( 'Waiting for child AMI {} to be available'.format(child_image_id)) child_watcher.waiton('available') # grandchild AMI grandchild_image_id = self.conn.create_image(self.instance.id, random_name(), no_reboot=True) self.log('Grandchild AMI ID will be {} - setting up tags'.format( grandchild_image_id)) grandchild_tags = calc_tags( child_image_id, 'i-12345678', now, ) grandchild_watcher = EC2ImageWatcher(grandchild_image_id, self.conn) grandchild_watcher.waiton_exists() tag_image(self.conn, grandchild_image_id, grandchild_tags) self.log('Waiting for grandchild AMI {} to be available'.format( grandchild_image_id)) grandchild_watcher.waiton('available') child_image = self.get_image(child_image_id) grandchild_image = self.get_image(grandchild_image_id) # now ready to run tests self.log('Test AMIs available, proceeding with test') args = get_args([ grandchild_image_id, ]) result = main(args) self.assertEqual(CHAIN_SUCCESS, result['exit_code']) expected_chain = [ grandchild_image_id, child_image_id, self.instance.image_id, ] self.assertSequenceEqual(expected_chain, result['chain'])