Package starcluster :: Package commands :: Module removeimage
[hide private]
[frames] | no frames]

Source Code for Module starcluster.commands.removeimage

 1  #!/usr/bin/env python 
 2   
 3  from starcluster.logger import log 
 4   
 5  from completers import ImageCompleter 
 6   
 7   
8 -class CmdRemoveImage(ImageCompleter):
9 """ 10 removeimage [options] <imageid> 11 12 Deregister an EC2 image (AMI) 13 14 WARNING: This command, by default, will *permanently* remove an AMI from 15 EC2. This includes removing any AMI files in the S3-backed case and the 16 root volume snapshot in the EBS-backed case. Be careful! 17 18 Example: 19 20 $ starcluster removeimage ami-999999 21 22 If the image is S3-backed then the image files on S3 will be removed in 23 addition to deregistering the AMI. 24 25 If the image is EBS-backed then the image's snapshot on EBS will be removed 26 in addition to deregistering the AMI. 27 28 If you'd rather keep the S3 files/EBS Snapshot backing the image use the 29 --keep-image-data: 30 31 $ starcluster removeimage -k ami-999999 32 33 For S3-backed images this will leave the AMI's files on S3 instead of 34 deleting them. For EBS-backed images this will leave the root volume 35 snapshot on EBS instead of deleting it. 36 """ 37 names = ['removeimage', 'ri'] 38
39 - def addopts(self, parser):
40 parser.add_option("-p", "--pretend", dest="pretend", 41 action="store_true", default=False, 42 help="pretend run, dont actually remove anything") 43 parser.add_option("-c", "--confirm", dest="confirm", 44 action="store_true", default=False, 45 help="do not prompt for confirmation, " 46 "just remove the image") 47 parser.add_option("-k", "--keep-image-data", dest="keep_image_data", 48 action="store_true", default=False, 49 help="only deregister the AMI, do not remove files " 50 "from S3 or delete EBS snapshot")
51
52 - def execute(self, args):
53 if not args: 54 self.parser.error("no images specified. exiting...") 55 for arg in args: 56 imageid = arg 57 self.ec2.get_image(imageid) 58 confirmed = self.opts.confirm 59 pretend = self.opts.pretend 60 keep_image_data = self.opts.keep_image_data 61 if not confirmed: 62 if not pretend: 63 resp = raw_input("**PERMANENTLY** delete %s (y/n)? " % \ 64 imageid) 65 if resp not in ['y', 'Y', 'yes']: 66 log.info("Aborting...") 67 return 68 self.ec2.remove_image(imageid, pretend=pretend, 69 keep_image_data=keep_image_data)
70