| Index: tools/telemetry/third_party/gsutilz/third_party/boto/boto/ec2/image.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/boto/boto/ec2/image.py b/tools/telemetry/third_party/gsutilz/third_party/boto/boto/ec2/image.py
|
| deleted file mode 100644
|
| index 612404f07def5e9d929764d7fac68b98841b1dd0..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/boto/boto/ec2/image.py
|
| +++ /dev/null
|
| @@ -1,440 +0,0 @@
|
| -# Copyright (c) 2006-2010 Mitch Garnaat http://garnaat.org/
|
| -# Copyright (c) 2010, Eucalyptus Systems, Inc.
|
| -#
|
| -# Permission is hereby granted, free of charge, to any person obtaining a
|
| -# copy of this software and associated documentation files (the
|
| -# "Software"), to deal in the Software without restriction, including
|
| -# without limitation the rights to use, copy, modify, merge, publish, dis-
|
| -# tribute, sublicense, and/or sell copies of the Software, and to permit
|
| -# persons to whom the Software is furnished to do so, subject to the fol-
|
| -# lowing conditions:
|
| -#
|
| -# The above copyright notice and this permission notice shall be included
|
| -# in all copies or substantial portions of the Software.
|
| -#
|
| -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
| -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
|
| -# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
| -# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
| -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
| -# IN THE SOFTWARE.
|
| -
|
| -from boto.ec2.ec2object import EC2Object, TaggedEC2Object
|
| -from boto.ec2.blockdevicemapping import BlockDeviceMapping
|
| -
|
| -
|
| -class ProductCodes(list):
|
| - def startElement(self, name, attrs, connection):
|
| - pass
|
| -
|
| - def endElement(self, name, value, connection):
|
| - if name == 'productCode':
|
| - self.append(value)
|
| -
|
| -
|
| -class BillingProducts(list):
|
| - def startElement(self, name, attrs, connection):
|
| - pass
|
| -
|
| - def endElement(self, name, value, connection):
|
| - if name == 'billingProduct':
|
| - self.append(value)
|
| -
|
| -
|
| -class Image(TaggedEC2Object):
|
| - """
|
| - Represents an EC2 Image
|
| - """
|
| -
|
| - def __init__(self, connection=None):
|
| - super(Image, self).__init__(connection)
|
| - self.id = None
|
| - self.location = None
|
| - self.state = None
|
| - self.ownerId = None # for backwards compatibility
|
| - self.owner_id = None
|
| - self.owner_alias = None
|
| - self.is_public = False
|
| - self.architecture = None
|
| - self.platform = None
|
| - self.type = None
|
| - self.kernel_id = None
|
| - self.ramdisk_id = None
|
| - self.name = None
|
| - self.description = None
|
| - self.product_codes = ProductCodes()
|
| - self.billing_products = BillingProducts()
|
| - self.block_device_mapping = None
|
| - self.root_device_type = None
|
| - self.root_device_name = None
|
| - self.virtualization_type = None
|
| - self.hypervisor = None
|
| - self.instance_lifecycle = None
|
| - self.sriov_net_support = None
|
| -
|
| - def __repr__(self):
|
| - return 'Image:%s' % self.id
|
| -
|
| - def startElement(self, name, attrs, connection):
|
| - retval = super(Image, self).startElement(name, attrs, connection)
|
| - if retval is not None:
|
| - return retval
|
| - if name == 'blockDeviceMapping':
|
| - self.block_device_mapping = BlockDeviceMapping()
|
| - return self.block_device_mapping
|
| - elif name == 'productCodes':
|
| - return self.product_codes
|
| - elif name == 'billingProducts':
|
| - return self.billing_products
|
| - else:
|
| - return None
|
| -
|
| - def endElement(self, name, value, connection):
|
| - if name == 'imageId':
|
| - self.id = value
|
| - elif name == 'imageLocation':
|
| - self.location = value
|
| - elif name == 'imageState':
|
| - self.state = value
|
| - elif name == 'imageOwnerId':
|
| - self.ownerId = value # for backwards compatibility
|
| - self.owner_id = value
|
| - elif name == 'isPublic':
|
| - if value == 'false':
|
| - self.is_public = False
|
| - elif value == 'true':
|
| - self.is_public = True
|
| - else:
|
| - raise Exception(
|
| - 'Unexpected value of isPublic %s for image %s' % (
|
| - value,
|
| - self.id
|
| - )
|
| - )
|
| - elif name == 'architecture':
|
| - self.architecture = value
|
| - elif name == 'imageType':
|
| - self.type = value
|
| - elif name == 'kernelId':
|
| - self.kernel_id = value
|
| - elif name == 'ramdiskId':
|
| - self.ramdisk_id = value
|
| - elif name == 'imageOwnerAlias':
|
| - self.owner_alias = value
|
| - elif name == 'platform':
|
| - self.platform = value
|
| - elif name == 'name':
|
| - self.name = value
|
| - elif name == 'description':
|
| - self.description = value
|
| - elif name == 'rootDeviceType':
|
| - self.root_device_type = value
|
| - elif name == 'rootDeviceName':
|
| - self.root_device_name = value
|
| - elif name == 'virtualizationType':
|
| - self.virtualization_type = value
|
| - elif name == 'hypervisor':
|
| - self.hypervisor = value
|
| - elif name == 'instanceLifecycle':
|
| - self.instance_lifecycle = value
|
| - elif name == 'sriovNetSupport':
|
| - self.sriov_net_support = value
|
| - else:
|
| - setattr(self, name, value)
|
| -
|
| - def _update(self, updated):
|
| - self.__dict__.update(updated.__dict__)
|
| -
|
| - def update(self, validate=False, dry_run=False):
|
| - """
|
| - Update the image's state information by making a call to fetch
|
| - the current image attributes from the service.
|
| -
|
| - :type validate: bool
|
| - :param validate: By default, if EC2 returns no data about the
|
| - image the update method returns quietly. If
|
| - the validate param is True, however, it will
|
| - raise a ValueError exception if no data is
|
| - returned from EC2.
|
| - """
|
| - rs = self.connection.get_all_images([self.id], dry_run=dry_run)
|
| - if len(rs) > 0:
|
| - img = rs[0]
|
| - if img.id == self.id:
|
| - self._update(img)
|
| - elif validate:
|
| - raise ValueError('%s is not a valid Image ID' % self.id)
|
| - return self.state
|
| -
|
| - def run(self, min_count=1, max_count=1, key_name=None,
|
| - security_groups=None, user_data=None,
|
| - addressing_type=None, instance_type='m1.small', placement=None,
|
| - kernel_id=None, ramdisk_id=None,
|
| - monitoring_enabled=False, subnet_id=None,
|
| - block_device_map=None,
|
| - disable_api_termination=False,
|
| - instance_initiated_shutdown_behavior=None,
|
| - private_ip_address=None,
|
| - placement_group=None, security_group_ids=None,
|
| - additional_info=None, instance_profile_name=None,
|
| - instance_profile_arn=None, tenancy=None, dry_run=False):
|
| -
|
| - """
|
| - Runs this instance.
|
| -
|
| - :type min_count: int
|
| - :param min_count: The minimum number of instances to start
|
| -
|
| - :type max_count: int
|
| - :param max_count: The maximum number of instances to start
|
| -
|
| - :type key_name: string
|
| - :param key_name: The name of the key pair with which to
|
| - launch instances.
|
| -
|
| - :type security_groups: list of strings
|
| - :param security_groups: The names of the security groups with which to
|
| - associate instances.
|
| -
|
| - :type user_data: string
|
| - :param user_data: The Base64-encoded MIME user data to be made
|
| - available to the instance(s) in this reservation.
|
| -
|
| - :type instance_type: string
|
| - :param instance_type: The type of instance to run:
|
| -
|
| - * t1.micro
|
| - * m1.small
|
| - * m1.medium
|
| - * m1.large
|
| - * m1.xlarge
|
| - * m3.medium
|
| - * m3.large
|
| - * m3.xlarge
|
| - * m3.2xlarge
|
| - * c1.medium
|
| - * c1.xlarge
|
| - * m2.xlarge
|
| - * m2.2xlarge
|
| - * m2.4xlarge
|
| - * cr1.8xlarge
|
| - * hi1.4xlarge
|
| - * hs1.8xlarge
|
| - * cc1.4xlarge
|
| - * cg1.4xlarge
|
| - * cc2.8xlarge
|
| - * g2.2xlarge
|
| - * c3.large
|
| - * c3.xlarge
|
| - * c3.2xlarge
|
| - * c3.4xlarge
|
| - * c3.8xlarge
|
| - * i2.xlarge
|
| - * i2.2xlarge
|
| - * i2.4xlarge
|
| - * i2.8xlarge
|
| - * t2.micro
|
| - * t2.small
|
| - * t2.medium
|
| -
|
| - :type placement: string
|
| - :param placement: The Availability Zone to launch the instance into.
|
| -
|
| - :type kernel_id: string
|
| - :param kernel_id: The ID of the kernel with which to launch the
|
| - instances.
|
| -
|
| - :type ramdisk_id: string
|
| - :param ramdisk_id: The ID of the RAM disk with which to launch the
|
| - instances.
|
| -
|
| - :type monitoring_enabled: bool
|
| - :param monitoring_enabled: Enable CloudWatch monitoring on
|
| - the instance.
|
| -
|
| - :type subnet_id: string
|
| - :param subnet_id: The subnet ID within which to launch the instances
|
| - for VPC.
|
| -
|
| - :type private_ip_address: string
|
| - :param private_ip_address: If you're using VPC, you can
|
| - optionally use this parameter to assign the instance a
|
| - specific available IP address from the subnet (e.g.,
|
| - 10.0.0.25).
|
| -
|
| - :type block_device_map: :class:`boto.ec2.blockdevicemapping.BlockDeviceMapping`
|
| - :param block_device_map: A BlockDeviceMapping data structure
|
| - describing the EBS volumes associated with the Image.
|
| -
|
| - :type disable_api_termination: bool
|
| - :param disable_api_termination: If True, the instances will be locked
|
| - and will not be able to be terminated via the API.
|
| -
|
| - :type instance_initiated_shutdown_behavior: string
|
| - :param instance_initiated_shutdown_behavior: Specifies whether the
|
| - instance stops or terminates on instance-initiated shutdown.
|
| - Valid values are:
|
| -
|
| - * stop
|
| - * terminate
|
| -
|
| - :type placement_group: string
|
| - :param placement_group: If specified, this is the name of the placement
|
| - group in which the instance(s) will be launched.
|
| -
|
| - :type additional_info: string
|
| - :param additional_info: Specifies additional information to make
|
| - available to the instance(s).
|
| -
|
| - :type security_group_ids: list of strings
|
| - :param security_group_ids: The ID of the VPC security groups with
|
| - which to associate instances.
|
| -
|
| - :type instance_profile_name: string
|
| - :param instance_profile_name: The name of
|
| - the IAM Instance Profile (IIP) to associate with the instances.
|
| -
|
| - :type instance_profile_arn: string
|
| - :param instance_profile_arn: The Amazon resource name (ARN) of
|
| - the IAM Instance Profile (IIP) to associate with the instances.
|
| -
|
| - :type tenancy: string
|
| - :param tenancy: The tenancy of the instance you want to
|
| - launch. An instance with a tenancy of 'dedicated' runs on
|
| - single-tenant hardware and can only be launched into a
|
| - VPC. Valid values are:"default" or "dedicated".
|
| - NOTE: To use dedicated tenancy you MUST specify a VPC
|
| - subnet-ID as well.
|
| -
|
| - :rtype: Reservation
|
| - :return: The :class:`boto.ec2.instance.Reservation` associated with
|
| - the request for machines
|
| -
|
| - """
|
| -
|
| - return self.connection.run_instances(self.id, min_count, max_count,
|
| - key_name, security_groups,
|
| - user_data, addressing_type,
|
| - instance_type, placement,
|
| - kernel_id, ramdisk_id,
|
| - monitoring_enabled, subnet_id,
|
| - block_device_map, disable_api_termination,
|
| - instance_initiated_shutdown_behavior,
|
| - private_ip_address, placement_group,
|
| - security_group_ids=security_group_ids,
|
| - additional_info=additional_info,
|
| - instance_profile_name=instance_profile_name,
|
| - instance_profile_arn=instance_profile_arn,
|
| - tenancy=tenancy, dry_run=dry_run)
|
| -
|
| - def deregister(self, delete_snapshot=False, dry_run=False):
|
| - return self.connection.deregister_image(
|
| - self.id,
|
| - delete_snapshot,
|
| - dry_run=dry_run
|
| - )
|
| -
|
| - def get_launch_permissions(self, dry_run=False):
|
| - img_attrs = self.connection.get_image_attribute(
|
| - self.id,
|
| - 'launchPermission',
|
| - dry_run=dry_run
|
| - )
|
| - return img_attrs.attrs
|
| -
|
| - def set_launch_permissions(self, user_ids=None, group_names=None,
|
| - dry_run=False):
|
| - return self.connection.modify_image_attribute(self.id,
|
| - 'launchPermission',
|
| - 'add',
|
| - user_ids,
|
| - group_names,
|
| - dry_run=dry_run)
|
| -
|
| - def remove_launch_permissions(self, user_ids=None, group_names=None,
|
| - dry_run=False):
|
| - return self.connection.modify_image_attribute(self.id,
|
| - 'launchPermission',
|
| - 'remove',
|
| - user_ids,
|
| - group_names,
|
| - dry_run=dry_run)
|
| -
|
| - def reset_launch_attributes(self, dry_run=False):
|
| - return self.connection.reset_image_attribute(
|
| - self.id,
|
| - 'launchPermission',
|
| - dry_run=dry_run
|
| - )
|
| -
|
| - def get_kernel(self, dry_run=False):
|
| - img_attrs = self.connection.get_image_attribute(
|
| - self.id,
|
| - 'kernel',
|
| - dry_run=dry_run
|
| - )
|
| - return img_attrs.kernel
|
| -
|
| - def get_ramdisk(self, dry_run=False):
|
| - img_attrs = self.connection.get_image_attribute(
|
| - self.id,
|
| - 'ramdisk',
|
| - dry_run=dry_run
|
| - )
|
| - return img_attrs.ramdisk
|
| -
|
| -
|
| -class ImageAttribute(object):
|
| - def __init__(self, parent=None):
|
| - self.name = None
|
| - self.kernel = None
|
| - self.ramdisk = None
|
| - self.attrs = {}
|
| -
|
| - def startElement(self, name, attrs, connection):
|
| - if name == 'blockDeviceMapping':
|
| - self.attrs['block_device_mapping'] = BlockDeviceMapping()
|
| - return self.attrs['block_device_mapping']
|
| - else:
|
| - return None
|
| -
|
| - def endElement(self, name, value, connection):
|
| - if name == 'launchPermission':
|
| - self.name = 'launch_permission'
|
| - elif name == 'group':
|
| - if 'groups' in self.attrs:
|
| - self.attrs['groups'].append(value)
|
| - else:
|
| - self.attrs['groups'] = [value]
|
| - elif name == 'userId':
|
| - if 'user_ids' in self.attrs:
|
| - self.attrs['user_ids'].append(value)
|
| - else:
|
| - self.attrs['user_ids'] = [value]
|
| - elif name == 'productCode':
|
| - if 'product_codes' in self.attrs:
|
| - self.attrs['product_codes'].append(value)
|
| - else:
|
| - self.attrs['product_codes'] = [value]
|
| - elif name == 'imageId':
|
| - self.image_id = value
|
| - elif name == 'kernel':
|
| - self.kernel = value
|
| - elif name == 'ramdisk':
|
| - self.ramdisk = value
|
| - else:
|
| - setattr(self, name, value)
|
| -
|
| -
|
| -class CopyImage(object):
|
| - def __init__(self, parent=None):
|
| - self._parent = parent
|
| - self.image_id = None
|
| -
|
| - def startElement(self, name, attrs, connection):
|
| - pass
|
| -
|
| - def endElement(self, name, value, connection):
|
| - if name == 'imageId':
|
| - self.image_id = value
|
|
|