def get_region(self, params): region = params.get('region', None) if isinstance(region, str) or isinstance(region, unicode): region = boto.ec2.get_region(region) params['region'] = region if not region: prop = self.cls.find_property('region_name') params['region'] = propget.get(prop, choices=boto.ec2.regions)
def get_region(self, params): region = params.get('region', None) if isinstance(region, basestring): region = boto.ec2.get_region(region) params['region'] = region if not region: prop = self.cls.find_property('region_name') params['region'] = propget.get(prop, choices=boto.ec2.regions) self.ec2 = params['region'].connect()
def get_ami_id(self, params): ami = params.get('ami', None) if isinstance(ami, str) or isinstance(ami, unicode): for a in self.ec2.get_all_images(): if a.id == ami: params['ami'] = a if not params.get('ami', None): prop = StringProperty(name='ami', verbose_name='AMI', choices=self.get_ami_list) params['ami'] = propget.get(prop)
def get_group(self, params): group = params.get('group', None) if isinstance(group, basestring): group_list = self.ec2.get_all_security_groups() for g in group_list: if g.name == group: group = g params['group'] = g if not group: prop = StringProperty(name='group', verbose_name='EC2 Security Group', choices=self.ec2.get_all_security_groups) params['group'] = propget.get(prop)
def get_key(self, params): keypair = params.get('keypair', None) if isinstance(keypair, basestring): key_list = self.ec2.get_all_key_pairs() for k in key_list: if k.name == keypair: keypair = k.name params['keypair'] = k.name if not keypair: prop = StringProperty(name='keypair', verbose_name='EC2 KeyPair', choices=self.ec2.get_all_key_pairs) params['keypair'] = propget.get(prop).name
def get_ami_id(self, params): valid = False while not valid: ami = params.get('ami', None) if not ami: prop = StringProperty(name='ami', verbose_name='AMI') ami = propget.get(prop) try: rs = self.ec2.get_all_images([ami]) if len(rs) == 1: valid = True params['ami'] = rs[0] except EC2ResponseError: pass
def get_name(self, params): if not params.get('name', None): prop = self.cls.find_property('name') params['name'] = propget.get(prop)
def get_region(self, params): if not params.get('region', None): prop = StringProperty(name='region', verbose_name='EC2 Region', choices=boto.ec2.regions) params['region'] = propget.get(prop, choices=boto.ec2.regions)
def get_quantity(self, params): if not params.get('quantity', None): prop = IntegerProperty(name='quantity', verbose_name='Number of Instances') params['quantity'] = propget.get(prop)
def get_description(self, params): if not params.get('description', None): prop = self.cls.find_property('description') params['description'] = propget.get(prop)
def get_zone(self, params): if not params.get("zone", None): prop = StringProperty(name="zone", verbose_name="EC2 Availability Zone", choices=self.ec2.get_all_zones) params["zone"] = propget.get(prop)
def get_mount_point(self, params): if not params.get('mount_point', None): prop = self.cls.find_property('mount_point') params['mount_point'] = propget.get(prop)
def get_device(self, params): if not params.get('device', None): prop = self.cls.find_property('device') params['device'] = propget.get(prop)
def get_region(self, params): if not params.get('region', None): prop = self.cls.find_property('region_name') params['region'] = propget.get(prop, choices=boto.ec2.regions)
def get_size(self, params): if not params.get('size', None): prop = IntegerProperty(name='size', verbose_name='Size (GB)') params['size'] = propget.get(prop)
def get_key(self, params): if not params.get('keypair', None): prop = StringProperty(name='keypair', verbose_name='EC2 KeyPair', choices=self.ec2.get_all_key_pairs) params['keypair'] = propget.get(prop)
def get_group(self, params): if not params.get('groups', None): prop = StringProperty(name='groups', verbose_name='EC2 Security Group', choices=self.ec2.get_all_security_groups) params['groups'] = [propget.get(prop)]
def get_ami_id(self, params): if not params.get('ami', None): prop = StringProperty(name='ami', verbose_name='AMI', choices=self.get_ami_list) params['ami'] = propget.get(prop)
def get_device(self, params): if not params.get("device", None): prop = self.cls.find_property("device") params["device"] = propget.get(prop)
def get_instance_type(self, params): if not params.get('instance_type', None): prop = StringProperty(name='instance_type', verbose_name='Instance Type', choices=InstanceTypes) params['instance_type'] = propget.get(prop)
def get_mount_point(self, params): if not params.get("mount_point", None): prop = self.cls.find_property("mount_point") params["mount_point"] = propget.get(prop)
def get_zone(self, params): if not params.get('zone', None): prop = StringProperty(name='zone', verbose_name='EC2 Availability Zone', choices=self.ec2.get_all_zones) params['zone'] = propget.get(prop)
def get_name(self, params): if not params.get("name", None): prop = self.cls.find_property("name") params["name"] = propget.get(prop)
def get_region(self, params): if not params.get("region", None): prop = self.cls.find_property("region_name") params["region"] = propget.get(prop, choices=boto.ec2.regions)
def get_region(): prop = StringProperty(name='region', verbose_name='EC2 Region', choices=boto.ec2.regions) return propget.get(prop, choices=boto.ec2.regions)
def get_size(self, params): if not params.get("size", None): prop = IntegerProperty(name="size", verbose_name="Size (GB)") params["size"] = propget.get(prop)
self.get_instance_type(params) self.get_zone(params) self.get_quantity(params) if __name__ == "__main__": obj = BuyReservation() params = {} obj.get(params) offerings = obj.ec2.get_all_reserved_instances_offerings( instance_type=params['instance_type'], availability_zone=params['zone'].name) print '\nThe following Reserved Instances Offerings are available:\n' for offering in offerings: offering.describe() prop = StringProperty(name='offering', verbose_name='Offering', choices=offerings) offering = propget.get(prop) print '\nYou have chosen this offering:' offering.describe() unit_price = float(offering.fixed_price) total_price = unit_price * params['quantity'] print '!!! You are about to purchase %d of these offerings for a total of $%.2f !!!' % ( params['quantity'], total_price) answer = raw_input('Are you sure you want to do this? If so, enter YES: ') if answer.strip().lower() == 'yes': offering.purchase(params['quantity']) else: print 'Purchase cancelled'
def get(self, params): self.get_region(params) self.ec2 = params['region'].connect() self.get_instance_type(params) self.get_zone(params) self.get_quantity(params) if __name__ == "__main__": obj = BuyReservation() params = {} obj.get(params) offerings = obj.ec2.get_all_reserved_instances_offerings(instance_type=params['instance_type'], availability_zone=params['zone'].name) print('\nThe following Reserved Instances Offerings are available:\n') for offering in offerings: offering.describe() prop = StringProperty(name='offering', verbose_name='Offering', choices=offerings) offering = propget.get(prop) print('\nYou have chosen this offering:') offering.describe() unit_price = float(offering.fixed_price) total_price = unit_price * params['quantity'] print(('!!! You are about to purchase %d of these offerings for a total of $%.2f !!!' % (params['quantity'], total_price))) answer = eval(input('Are you sure you want to do this? If so, enter YES: ')) if answer.strip().lower() == 'yes': offering.purchase(params['quantity']) else: print('Purchase cancelled')