commit
2260caa2f9
@ -0,0 +1 @@
|
|||||||
|
SOURCES/boto-2.49.0.tar.gz
|
@ -0,0 +1 @@
|
|||||||
|
300e6b7abd04a77a94f769e6cad6fb9e6e84ffbb SOURCES/boto-2.49.0.tar.gz
|
@ -0,0 +1,54 @@
|
|||||||
|
Index: boto-2.39.0/boto/compat.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.39.0.orig/boto/compat.py
|
||||||
|
+++ boto-2.39.0/boto/compat.py
|
||||||
|
@@ -46,16 +46,27 @@ except (AttributeError, ImportError):
|
||||||
|
# This is probably running on App Engine.
|
||||||
|
expanduser = (lambda x: x)
|
||||||
|
|
||||||
|
-from boto.vendored import six
|
||||||
|
+try:
|
||||||
|
+ import six
|
||||||
|
+ from six import BytesIO, StringIO
|
||||||
|
+ from six.moves import filter, http_client, map, _thread, \
|
||||||
|
+ urllib, zip
|
||||||
|
+ from six.moves.queue import Queue
|
||||||
|
+ from six.moves.urllib.parse import parse_qs, quote, unquote, \
|
||||||
|
+ urlparse, urlsplit
|
||||||
|
+ from six.moves.urllib.parse import unquote_plus
|
||||||
|
+ from six.moves.urllib.request import urlopen
|
||||||
|
+except ImportError:
|
||||||
|
+ from boto.vendored import six
|
||||||
|
|
||||||
|
-from boto.vendored.six import BytesIO, StringIO
|
||||||
|
-from boto.vendored.six.moves import filter, http_client, map, _thread, \
|
||||||
|
- urllib, zip
|
||||||
|
-from boto.vendored.six.moves.queue import Queue
|
||||||
|
-from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
|
||||||
|
- urlparse, urlsplit
|
||||||
|
-from boto.vendored.six.moves.urllib.parse import unquote_plus
|
||||||
|
-from boto.vendored.six.moves.urllib.request import urlopen
|
||||||
|
+ from boto.vendored.six import BytesIO, StringIO
|
||||||
|
+ from boto.vendored.six.moves import filter, http_client, map, _thread, \
|
||||||
|
+ urllib, zip
|
||||||
|
+ from boto.vendored.six.moves.queue import Queue
|
||||||
|
+ from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
|
||||||
|
+ urlparse, urlsplit
|
||||||
|
+ from boto.vendored.six.moves.urllib.parse import unquote_plus
|
||||||
|
+ from boto.vendored.six.moves.urllib.request import urlopen
|
||||||
|
|
||||||
|
if six.PY3:
|
||||||
|
# StandardError was removed, so use the base exception type instead
|
||||||
|
Index: boto-2.39.0/setup.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.39.0.orig/setup.py
|
||||||
|
+++ boto-2.39.0/setup.py
|
||||||
|
@@ -76,7 +76,7 @@ setup(name = "boto",
|
||||||
|
"boto.elastictranscoder", "boto.opsworks", "boto.redshift",
|
||||||
|
"boto.dynamodb2", "boto.support", "boto.cloudtrail",
|
||||||
|
"boto.directconnect", "boto.kinesis", "boto.rds2",
|
||||||
|
- "boto.cloudsearch2", "boto.logs", "boto.vendored",
|
||||||
|
+ "boto.cloudsearch2", "boto.logs",
|
||||||
|
"boto.route53.domains", "boto.cognito",
|
||||||
|
"boto.cognito.identity", "boto.cognito.sync",
|
||||||
|
"boto.cloudsearchdomain", "boto.kms",
|
@ -0,0 +1,13 @@
|
|||||||
|
Index: boto-2.40.0/boto/s3/acl.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/s3/acl.py
|
||||||
|
+++ boto-2.40.0/boto/s3/acl.py
|
||||||
|
@@ -25,7 +25,7 @@ from boto.s3.user import User
|
||||||
|
CannedACLStrings = ['private', 'public-read',
|
||||||
|
'public-read-write', 'authenticated-read',
|
||||||
|
'bucket-owner-read', 'bucket-owner-full-control',
|
||||||
|
- 'log-delivery-write']
|
||||||
|
+ 'log-delivery-write', 'aws-exec-read']
|
||||||
|
|
||||||
|
|
||||||
|
class Policy(object):
|
@ -0,0 +1,91 @@
|
|||||||
|
Index: boto-2.40.0/boto/ec2/instance.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/ec2/instance.py
|
||||||
|
+++ boto-2.40.0/boto/ec2/instance.py
|
||||||
|
@@ -631,7 +631,8 @@ class InstanceAttribute(dict):
|
||||||
|
'disableApiTermination',
|
||||||
|
'instanceInitiatedShutdownBehavior',
|
||||||
|
'rootDeviceName', 'blockDeviceMapping', 'sourceDestCheck',
|
||||||
|
- 'groupSet']
|
||||||
|
+ 'groupSet', 'productCodes', 'ebsOptimized',
|
||||||
|
+ 'sriovNetSupport']
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
dict.__init__(self)
|
||||||
|
Index: boto-2.40.0/tests/unit/ec2/test_attribute.py
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ boto-2.40.0/tests/unit/ec2/test_attribute.py
|
||||||
|
@@ -0,0 +1,72 @@
|
||||||
|
+from tests.unit import unittest
|
||||||
|
+from tests.compat import mock
|
||||||
|
+
|
||||||
|
+from boto.ec2.connection import EC2Connection, Instance
|
||||||
|
+
|
||||||
|
+ATTRIBUTE_GET_TRUE_EBSOPTIMIZED_RESPONSE = b"""
|
||||||
|
+<DescribeInstanceAttributeResponse xmlns="http://ec2.amazonaws.com/doc/2014-10-01/">
|
||||||
|
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
|
||||||
|
+ <instanceId>i-10a64379</instanceId>
|
||||||
|
+ <ebsOptimized>
|
||||||
|
+ <value>true</value>
|
||||||
|
+ </ebsOptimized>
|
||||||
|
+</DescribeInstanceAttributeResponse>
|
||||||
|
+"""
|
||||||
|
+
|
||||||
|
+ATTRIBUTE_GET_FALSE_EBSOPTIMIZED_RESPONSE = b"""
|
||||||
|
+<DescribeInstanceAttributeResponse xmlns="http://ec2.amazonaws.com/doc/2014-10-01/">
|
||||||
|
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
|
||||||
|
+ <instanceId>i-10a64379</instanceId>
|
||||||
|
+ <ebsOptimized>
|
||||||
|
+ <value>false</value>
|
||||||
|
+ </ebsOptimized>
|
||||||
|
+</DescribeInstanceAttributeResponse>
|
||||||
|
+"""
|
||||||
|
+
|
||||||
|
+ATTRIBUTE_GET_EMPTY_PRODUCTCODES_RESPONSE = b"""
|
||||||
|
+<DescribeInstanceAttributeResponse xmlns="http://ec2.amazonaws.com/doc/2014-10-01/">
|
||||||
|
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
|
||||||
|
+ <instanceId>i-10a64379</instanceId>
|
||||||
|
+ <productCodes/>
|
||||||
|
+</DescribeInstanceAttributeResponse>
|
||||||
|
+"""
|
||||||
|
+
|
||||||
|
+# Tests to be run on an InstanceAttributes
|
||||||
|
+# Format:
|
||||||
|
+# (EC2_RESPONSE_STRING, (string_of_attribute_to_test, value) )
|
||||||
|
+ATTRIBUTE_TESTS = [
|
||||||
|
+ (ATTRIBUTE_GET_TRUE_EBSOPTIMIZED_RESPONSE,
|
||||||
|
+ ('ebsOptimized', True)),
|
||||||
|
+ (ATTRIBUTE_GET_FALSE_EBSOPTIMIZED_RESPONSE,
|
||||||
|
+ ('ebsOptimized', False)),
|
||||||
|
+ (ATTRIBUTE_GET_EMPTY_PRODUCTCODES_RESPONSE,
|
||||||
|
+ ('productCodes', None)),
|
||||||
|
+]
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+class TestInstanceAttributes(unittest.TestCase):
|
||||||
|
+ """Tests Instance Attributes."""
|
||||||
|
+ def _setup_mock(self):
|
||||||
|
+ """Sets up a mock ec2 request.
|
||||||
|
+ Returns: response, ec2 connection and Instance
|
||||||
|
+ """
|
||||||
|
+ mock_response = mock.Mock()
|
||||||
|
+ mock_response.status = 200
|
||||||
|
+ ec2 = EC2Connection(aws_access_key_id='aws_access_key_id',
|
||||||
|
+ aws_secret_access_key='aws_secret_access_key')
|
||||||
|
+ ec2.make_request = mock.Mock(return_value=mock_response)
|
||||||
|
+ return mock_response, ec2, Instance(ec2)
|
||||||
|
+
|
||||||
|
+ def test_instance_get_attributes(self):
|
||||||
|
+ """Tests the InstanceAttributes from the EC2 object."""
|
||||||
|
+ mock_response, _, instance = self._setup_mock()
|
||||||
|
+
|
||||||
|
+ for response, attr_test in ATTRIBUTE_TESTS:
|
||||||
|
+ mock_response.read.return_value = response
|
||||||
|
+ expected_value = dict([attr_test])
|
||||||
|
+ actual_value = instance.get_attribute(attr_test[0])
|
||||||
|
+ self.assertEqual(expected_value, actual_value)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+if __name__ == '__main__':
|
||||||
|
+ unittest.main()
|
@ -0,0 +1,72 @@
|
|||||||
|
Index: boto-2.40.0/boto/route53/connection.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/route53/connection.py
|
||||||
|
+++ boto-2.40.0/boto/route53/connection.py
|
||||||
|
@@ -152,8 +152,8 @@ class Route53Connection(AWSAuthConnectio
|
||||||
|
raise exception.DNSServerError(response.status,
|
||||||
|
response.reason,
|
||||||
|
body)
|
||||||
|
- e = boto.jsonresponse.Element(list_marker='NameServers',
|
||||||
|
- item_marker=('NameServer',))
|
||||||
|
+ e = boto.jsonresponse.Element(list_marker=('NameServers', 'VPCs'),
|
||||||
|
+ item_marker=('NameServer', 'VPC'))
|
||||||
|
h = boto.jsonresponse.XmlHandler(e, None)
|
||||||
|
h.parse(body)
|
||||||
|
return e
|
||||||
|
Index: boto-2.40.0/tests/integration/route53/test_zone.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/tests/integration/route53/test_zone.py
|
||||||
|
+++ boto-2.40.0/tests/integration/route53/test_zone.py
|
||||||
|
@@ -186,6 +186,12 @@ class TestRoute53PrivateZone(unittest.Te
|
||||||
|
vpc_id=self.test_vpc.id,
|
||||||
|
vpc_region='us-east-1')
|
||||||
|
|
||||||
|
+ def test_get_hosted_zone_for_private_zone(self):
|
||||||
|
+ self.get_hosted_zone = self.route53.get_hosted_zone_by_name(self.base_domain)
|
||||||
|
+ self.assertEquals(len(self.get_hosted_zone['GetHostedZoneResponse']['VPCs']), 1)
|
||||||
|
+ self.assertEquals(self.get_hosted_zone['GetHostedZoneResponse']['VPCs'][0]['VPCRegion'], 'us-east-1')
|
||||||
|
+ self.assertEquals(self.get_hosted_zone['GetHostedZoneResponse']['VPCs'][0]['VPCId'], self.test_vpc.id)
|
||||||
|
+
|
||||||
|
@classmethod
|
||||||
|
def tearDownClass(self):
|
||||||
|
if self.zone is not None:
|
||||||
|
Index: boto-2.40.0/tests/unit/route53/test_connection.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/tests/unit/route53/test_connection.py
|
||||||
|
+++ boto-2.40.0/tests/unit/route53/test_connection.py
|
||||||
|
@@ -313,6 +313,16 @@ class TestGetHostedZoneRoute53(AWSMockSe
|
||||||
|
<NameServer>ns-1000.awsdns-00.co.uk</NameServer>
|
||||||
|
</NameServers>
|
||||||
|
</DelegationSet>
|
||||||
|
+ <VPCs>
|
||||||
|
+ <VPC>
|
||||||
|
+ <VPCRegion>eu-west-1</VPCRegion>
|
||||||
|
+ <VPCId>vpc-12345</VPCId>
|
||||||
|
+ </VPC>
|
||||||
|
+ <VPC>
|
||||||
|
+ <VPCRegion>us-west-1</VPCRegion>
|
||||||
|
+ <VPCId>vpc-78900</VPCId>
|
||||||
|
+ </VPC>
|
||||||
|
+ </VPCs>
|
||||||
|
</GetHostedZoneResponse>
|
||||||
|
"""
|
||||||
|
|
||||||
|
@@ -330,6 +340,18 @@ class TestGetHostedZoneRoute53(AWSMockSe
|
||||||
|
['DelegationSet']['NameServers'],
|
||||||
|
['ns-1000.awsdns-40.org', 'ns-200.awsdns-30.com',
|
||||||
|
'ns-900.awsdns-50.net', 'ns-1000.awsdns-00.co.uk'])
|
||||||
|
+ self.assertEqual(response['GetHostedZoneResponse']
|
||||||
|
+ ['VPCs'][0]['VPCRegion'],
|
||||||
|
+ 'eu-west-1')
|
||||||
|
+ self.assertEqual(response['GetHostedZoneResponse']
|
||||||
|
+ ['VPCs'][0]['VPCId'],
|
||||||
|
+ 'vpc-12345')
|
||||||
|
+ self.assertEqual(response['GetHostedZoneResponse']
|
||||||
|
+ ['VPCs'][1]['VPCRegion'],
|
||||||
|
+ 'us-west-1')
|
||||||
|
+ self.assertEqual(response['GetHostedZoneResponse']
|
||||||
|
+ ['VPCs'][1]['VPCId'],
|
||||||
|
+ 'vpc-78900')
|
||||||
|
|
||||||
|
|
||||||
|
@attr(route53=True)
|
@ -0,0 +1,319 @@
|
|||||||
|
Index: boto-2.40.0/boto/vpc/__init__.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/vpc/__init__.py
|
||||||
|
+++ boto-2.40.0/boto/vpc/__init__.py
|
||||||
|
@@ -29,6 +29,7 @@ from boto.vpc.vpc import VPC
|
||||||
|
from boto.vpc.customergateway import CustomerGateway
|
||||||
|
from boto.vpc.networkacl import NetworkAcl
|
||||||
|
from boto.vpc.routetable import RouteTable
|
||||||
|
+from boto.vpc.natgateway import NatGateway
|
||||||
|
from boto.vpc.internetgateway import InternetGateway
|
||||||
|
from boto.vpc.vpngateway import VpnGateway, Attachment
|
||||||
|
from boto.vpc.dhcpoptions import DhcpOptions
|
||||||
|
@@ -783,6 +784,76 @@ class VPCConnection(EC2Connection):
|
||||||
|
|
||||||
|
return self.get_status('DeleteNetworkAclEntry', params)
|
||||||
|
|
||||||
|
+ # NAT Gateways
|
||||||
|
+
|
||||||
|
+ def get_all_nat_gateways(self, nat_gateway_ids=None, filters=None, dry_run=False):
|
||||||
|
+ """
|
||||||
|
+ Get a list of NAT gateways. You can filter results to return information
|
||||||
|
+ about only those gateways that you're interested in.
|
||||||
|
+
|
||||||
|
+ :type nat_gateway_ids: list
|
||||||
|
+ :param nat_gateway_ids: A list of strings with the desired gateway IDs.
|
||||||
|
+
|
||||||
|
+ :type filters: list of tuples or dict
|
||||||
|
+ :param filters: A list of tuples or dict containing filters. Each tuple
|
||||||
|
+ or dict item consists of a filter key and a filter value.
|
||||||
|
+
|
||||||
|
+ :type dry_run: bool
|
||||||
|
+ :param dry_run: Set to True if the operation should not actually run.
|
||||||
|
+
|
||||||
|
+ """
|
||||||
|
+ params = {}
|
||||||
|
+
|
||||||
|
+ if nat_gateway_ids:
|
||||||
|
+ self.build_list_params(params, nat_gateway_ids,
|
||||||
|
+ 'NatGatewayId')
|
||||||
|
+ if filters:
|
||||||
|
+ self.build_filter_params(params, filters)
|
||||||
|
+ if dry_run:
|
||||||
|
+ params['DryRun'] = 'true'
|
||||||
|
+ return self.get_list('DescribeNatGateways', params,
|
||||||
|
+ [('item', NatGateway)])
|
||||||
|
+
|
||||||
|
+ def create_nat_gateway(self, subnet_id, allocation_id, dry_run=False):
|
||||||
|
+ """
|
||||||
|
+ Creates a NAT gateway for VPC.
|
||||||
|
+
|
||||||
|
+ :type subnet_id: str
|
||||||
|
+ :param subnet_id: The subnet in which the NAT gateway should be launched.
|
||||||
|
+
|
||||||
|
+ :type allocation_id: str
|
||||||
|
+ :param allocation_id: The allocation ID of an elastic IP address for the public side of the gateway.
|
||||||
|
+
|
||||||
|
+ :type dry_run: bool
|
||||||
|
+ :param dry_run: Set to True if the operation should not actually run.
|
||||||
|
+
|
||||||
|
+ :rtype: Newly created nat gateway.
|
||||||
|
+ :return: `boto.vpc.natgateway.NATGateway`
|
||||||
|
+ """
|
||||||
|
+ params = {'SubnetId': subnet_id,
|
||||||
|
+ 'AllocationId': allocation_id}
|
||||||
|
+ if dry_run:
|
||||||
|
+ params['DryRun'] = 'true'
|
||||||
|
+ return self.get_object('CreateNatGateway', params, NatGateway)
|
||||||
|
+
|
||||||
|
+ def delete_nat_gateway(self, nat_gateway_id, dry_run=False):
|
||||||
|
+ """
|
||||||
|
+ Deletes a NAT gateway from the VPC.
|
||||||
|
+
|
||||||
|
+ :type nat_gateway_id: str
|
||||||
|
+ :param nat_gateway_id: The ID of the NAT gateway to delete.
|
||||||
|
+
|
||||||
|
+ :type dry_run: bool
|
||||||
|
+ :param dry_run: Set to True if the operation should not actually run.
|
||||||
|
+
|
||||||
|
+ :rtype: Bool
|
||||||
|
+ :return: True if successful
|
||||||
|
+ """
|
||||||
|
+ params = {'NatGatewayId': nat_gateway_id}
|
||||||
|
+ if dry_run:
|
||||||
|
+ params['DryRun'] = 'true'
|
||||||
|
+ return self.get_status('DeleteNatGateway', params)
|
||||||
|
+
|
||||||
|
# Internet Gateways
|
||||||
|
|
||||||
|
def get_all_internet_gateways(self, internet_gateway_ids=None,
|
||||||
|
Index: boto-2.40.0/boto/vpc/natgateway.py
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ boto-2.40.0/boto/vpc/natgateway.py
|
||||||
|
@@ -0,0 +1,89 @@
|
||||||
|
+# Copyright (c) 2009-2010 Mitch Garnaat http://garnaat.org/
|
||||||
|
+#
|
||||||
|
+# 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.
|
||||||
|
+
|
||||||
|
+"""
|
||||||
|
+Represents a NAT Gateway
|
||||||
|
+"""
|
||||||
|
+
|
||||||
|
+from boto.ec2.ec2object import TaggedEC2Object
|
||||||
|
+from boto.resultset import ResultSet
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+class NatGateway(TaggedEC2Object):
|
||||||
|
+ def __init__(self, connection=None):
|
||||||
|
+ super(NatGateway, self).__init__(connection)
|
||||||
|
+ self.id = None
|
||||||
|
+ self.vpc_id = None
|
||||||
|
+ self.subnet_id = None
|
||||||
|
+ self.state = None
|
||||||
|
+ self.addresses = []
|
||||||
|
+
|
||||||
|
+ def __repr__(self):
|
||||||
|
+ return 'NatGateway:%s' % self.id
|
||||||
|
+
|
||||||
|
+ def startElement(self, name, attrs, connection):
|
||||||
|
+ result = super(NatGateway, self).startElement(name, attrs, connection)
|
||||||
|
+
|
||||||
|
+ if result is not None:
|
||||||
|
+ # Parent found an interested element, just return it
|
||||||
|
+ return result
|
||||||
|
+
|
||||||
|
+ if name == 'natGatewayAddressSet':
|
||||||
|
+ self.addresses = ResultSet([('item', NatGatewayAddress)])
|
||||||
|
+ return self.addresses
|
||||||
|
+ else:
|
||||||
|
+ return None
|
||||||
|
+
|
||||||
|
+ def endElement(self, name, value, connection):
|
||||||
|
+ if name == 'natGatewayId':
|
||||||
|
+ self.id = value
|
||||||
|
+ elif name == 'vpcId':
|
||||||
|
+ self.vpc_id = value
|
||||||
|
+ elif name == 'subnetId':
|
||||||
|
+ self.subnet_id = value
|
||||||
|
+ elif name == 'state':
|
||||||
|
+ self.state = value
|
||||||
|
+ else:
|
||||||
|
+ setattr(self, name, value)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+class NatGatewayAddress(object):
|
||||||
|
+ def __init__(self, connection=None):
|
||||||
|
+ self.interface_id = None
|
||||||
|
+ self.allocation_id = None
|
||||||
|
+ self.ip_public = None
|
||||||
|
+ self.ip_private = None
|
||||||
|
+
|
||||||
|
+ def __repr__(self):
|
||||||
|
+ return 'NatGatewayAddress:%s' % self.interface_id
|
||||||
|
+
|
||||||
|
+ def startElement(self, name, attrs, connection):
|
||||||
|
+ return None
|
||||||
|
+
|
||||||
|
+ def endElement(self, name, value, connection):
|
||||||
|
+ if name == 'networkInterfaceId':
|
||||||
|
+ self.interface_id = value
|
||||||
|
+ elif name == 'publicIp':
|
||||||
|
+ self.ip_public = value
|
||||||
|
+ elif name == 'allocationId':
|
||||||
|
+ self.allocation_id = value
|
||||||
|
+ elif name == 'privateIp':
|
||||||
|
+ self.ip_private = value
|
||||||
|
Index: boto-2.40.0/docs/source/ref/vpc.rst
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/docs/source/ref/vpc.rst
|
||||||
|
+++ boto-2.40.0/docs/source/ref/vpc.rst
|
||||||
|
@@ -32,6 +32,13 @@ boto.vpc.internetgateway
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
+boto.vpc.natgateway
|
||||||
|
+-------------------
|
||||||
|
+
|
||||||
|
+.. automodule:: boto.vpc.natgateway
|
||||||
|
+ :members:
|
||||||
|
+ :undoc-members:
|
||||||
|
+
|
||||||
|
boto.vpc.routetable
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Index: boto-2.40.0/tests/unit/vpc/test_natgateway.py
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ boto-2.40.0/tests/unit/vpc/test_natgateway.py
|
||||||
|
@@ -0,0 +1,113 @@
|
||||||
|
+from tests.unit import unittest
|
||||||
|
+from tests.unit import AWSMockServiceTestCase
|
||||||
|
+
|
||||||
|
+from boto.vpc import VPCConnection, NatGateway
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+class TestDescribeNatGateway(AWSMockServiceTestCase):
|
||||||
|
+
|
||||||
|
+ connection_class = VPCConnection
|
||||||
|
+
|
||||||
|
+ def default_body(self):
|
||||||
|
+ return b"""
|
||||||
|
+ <DescribeNatGatewaysResponse xmlns="http://ec2.amazonaws.com/doc/2015-10-01/">
|
||||||
|
+ <requestId>bfed02c6-dae9-47c0-86a2-example</requestId>
|
||||||
|
+ <natGatewaySet>
|
||||||
|
+ <item>
|
||||||
|
+ <subnetId>subnet-1a2a3a4a</subnetId>
|
||||||
|
+ <natGatewayAddressSet>
|
||||||
|
+ <item>
|
||||||
|
+ <networkInterfaceId>eni-00e37850</networkInterfaceId>
|
||||||
|
+ <publicIp>198.18.125.129</publicIp>
|
||||||
|
+ <allocationId>eipalloc-37fc1a52</allocationId>
|
||||||
|
+ <privateIp>10.0.2.147</privateIp>
|
||||||
|
+ </item>
|
||||||
|
+ </natGatewayAddressSet>
|
||||||
|
+ <createTime>2015-11-25T14:00:55.416Z</createTime>
|
||||||
|
+ <vpcId>vpc-4e20d42b</vpcId>
|
||||||
|
+ <natGatewayId>nat-04e77a5e9c34432f9</natGatewayId>
|
||||||
|
+ <state>available</state>
|
||||||
|
+ </item>
|
||||||
|
+ </natGatewaySet>
|
||||||
|
+ </DescribeNatGatewaysResponse>
|
||||||
|
+ """
|
||||||
|
+
|
||||||
|
+ def test_describe_nat_gateway(self):
|
||||||
|
+ self.set_http_response(status_code=200)
|
||||||
|
+ api_response = self.service_connection.get_all_nat_gateways(
|
||||||
|
+ 'nat-04e77a5e9c34432f9', filters=[('natGatewayAddress.allocationId', ['eipalloc-37fc1a52'])])
|
||||||
|
+ self.assert_request_parameters({
|
||||||
|
+ 'Action': 'DescribeNatGateways',
|
||||||
|
+ 'NatGatewayId.1': 'nat-04e77a5e9c34432f9',
|
||||||
|
+ 'Filter.1.Name': 'natGatewayAddress.allocationId',
|
||||||
|
+ 'Filter.1.Value.1': 'eipalloc-37fc1a52'},
|
||||||
|
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
|
||||||
|
+ 'SignatureVersion', 'Timestamp',
|
||||||
|
+ 'Version'])
|
||||||
|
+ self.assertEquals(len(api_response), 1)
|
||||||
|
+ self.assertIsInstance(api_response[0], NatGateway)
|
||||||
|
+ self.assertEqual(api_response[0].id, 'nat-04e77a5e9c34432f9')
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+class TestCreateNatGateway(AWSMockServiceTestCase):
|
||||||
|
+
|
||||||
|
+ connection_class = VPCConnection
|
||||||
|
+
|
||||||
|
+ def default_body(self):
|
||||||
|
+ return b"""
|
||||||
|
+ <CreateNatGatewayResponse xmlns="http://ec2.amazonaws.com/doc/2015-10-01/">
|
||||||
|
+ <requestId>1b74dc5c-bcda-403f-867d-example</requestId>
|
||||||
|
+ <natGateway>
|
||||||
|
+ <subnetId>subnet-1a2b3c4d</subnetId>
|
||||||
|
+ <natGatewayAddressSet>
|
||||||
|
+ <item>
|
||||||
|
+ <allocationId>eipalloc-37fc1a52</allocationId>
|
||||||
|
+ </item>
|
||||||
|
+ </natGatewayAddressSet>
|
||||||
|
+ <createTime>2015-11-25T14:00:55.416Z</createTime>
|
||||||
|
+ <vpcId>vpc-4e20d42b</vpcId>
|
||||||
|
+ <natGatewayId>nat-04e77a5e9c34432f9</natGatewayId>
|
||||||
|
+ <state>pending</state>
|
||||||
|
+ </natGateway>
|
||||||
|
+ </CreateNatGatewayResponse>
|
||||||
|
+ """
|
||||||
|
+
|
||||||
|
+ def test_create_nat_gateway(self):
|
||||||
|
+ self.set_http_response(status_code=200)
|
||||||
|
+ api_response = self.service_connection.create_nat_gateway('subnet-1a2b3c4d', 'eipalloc-37fc1a52')
|
||||||
|
+ self.assert_request_parameters({
|
||||||
|
+ 'Action': 'CreateNatGateway',
|
||||||
|
+ 'SubnetId': 'subnet-1a2b3c4d',
|
||||||
|
+ 'AllocationId': 'eipalloc-37fc1a52'},
|
||||||
|
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
|
||||||
|
+ 'SignatureVersion', 'Timestamp',
|
||||||
|
+ 'Version'])
|
||||||
|
+ self.assertIsInstance(api_response, NatGateway)
|
||||||
|
+ self.assertEqual(api_response.id, 'nat-04e77a5e9c34432f9')
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+class TestDeleteNatGateway(AWSMockServiceTestCase):
|
||||||
|
+
|
||||||
|
+ connection_class = VPCConnection
|
||||||
|
+
|
||||||
|
+ def default_body(self):
|
||||||
|
+ return b"""
|
||||||
|
+ <DeleteNatGatewayResponse xmlns="http://ec2.amazonaws.com/doc/2015-10-01/">
|
||||||
|
+ <requestId>741fc8ab-6ebe-452b-b92b-example</requestId>
|
||||||
|
+ <natGatewayId>nat-04ae55e711cec5680</natGatewayId>
|
||||||
|
+ </DeleteNatGatewayResponse>
|
||||||
|
+ """
|
||||||
|
+
|
||||||
|
+ def test_delete_nat_gateway(self):
|
||||||
|
+ self.set_http_response(status_code=200)
|
||||||
|
+ api_response = self.service_connection.delete_nat_gateway('nat-04ae55e711cec5680')
|
||||||
|
+ self.assert_request_parameters({
|
||||||
|
+ 'Action': 'DeleteNatGateway',
|
||||||
|
+ 'NatGatewayId': 'nat-04ae55e711cec5680'},
|
||||||
|
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
|
||||||
|
+ 'SignatureVersion', 'Timestamp',
|
||||||
|
+ 'Version'])
|
||||||
|
+ self.assertEquals(api_response, True)
|
||||||
|
+
|
||||||
|
+if __name__ == '__main__':
|
||||||
|
+ unittest.main()
|
@ -0,0 +1,13 @@
|
|||||||
|
Index: boto-2.40.0/boto/connection.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/connection.py
|
||||||
|
+++ boto-2.40.0/boto/connection.py
|
||||||
|
@@ -920,7 +920,7 @@ class AWSAuthConnection(object):
|
||||||
|
while i <= num_retries:
|
||||||
|
# Use binary exponential backoff to desynchronize client requests.
|
||||||
|
next_sleep = min(random.random() * (2 ** i),
|
||||||
|
- boto.config.get('Boto', 'max_retry_delay', 60))
|
||||||
|
+ boto.config.getfloat('Boto', 'max_retry_delay', 60))
|
||||||
|
try:
|
||||||
|
# we now re-sign each request before it is retried
|
||||||
|
boto.log.debug('Token: %s' % self.provider.security_token)
|
@ -0,0 +1,41 @@
|
|||||||
|
Index: boto-2.40.0/boto/route53/healthcheck.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/route53/healthcheck.py
|
||||||
|
+++ boto-2.40.0/boto/route53/healthcheck.py
|
||||||
|
@@ -56,7 +56,7 @@ class HealthCheck(object):
|
||||||
|
%(ip_addr_part)s
|
||||||
|
<Port>%(port)s</Port>
|
||||||
|
<Type>%(type)s</Type>
|
||||||
|
- <ResourcePath>%(resource_path)s</ResourcePath>
|
||||||
|
+ %(resource_path)s
|
||||||
|
%(fqdn_part)s
|
||||||
|
%(string_match_part)s
|
||||||
|
%(request_interval)s
|
||||||
|
@@ -72,6 +72,8 @@ class HealthCheck(object):
|
||||||
|
|
||||||
|
XMLRequestIntervalPart = """<RequestInterval>%(request_interval)d</RequestInterval>"""
|
||||||
|
|
||||||
|
+ XMLResourcePath = """<ResourcePath>%(resource_path)s</ResourcePath>"""
|
||||||
|
+
|
||||||
|
valid_request_intervals = (10, 30)
|
||||||
|
|
||||||
|
def __init__(self, ip_addr, port, hc_type, resource_path, fqdn=None, string_match=None, request_interval=30, failure_threshold=3):
|
||||||
|
@@ -127,7 +129,7 @@ class HealthCheck(object):
|
||||||
|
'ip_addr_part': '',
|
||||||
|
'port': self.port,
|
||||||
|
'type': self.hc_type,
|
||||||
|
- 'resource_path': self.resource_path,
|
||||||
|
+ 'resource_path': "",
|
||||||
|
'fqdn_part': "",
|
||||||
|
'string_match_part': "",
|
||||||
|
'request_interval': (self.XMLRequestIntervalPart %
|
||||||
|
@@ -140,6 +142,9 @@ class HealthCheck(object):
|
||||||
|
if self.ip_addr:
|
||||||
|
params['ip_addr_part'] = self.XMLIpAddrPart % {'ip_addr': self.ip_addr}
|
||||||
|
|
||||||
|
+ if self.resource_path is not None:
|
||||||
|
+ params['resource_path'] = self.XMLResourcePath % {'resource_path': self.resource_path}
|
||||||
|
+
|
||||||
|
if self.string_match is not None:
|
||||||
|
params['string_match_part'] = self.XMLStringMatchPart % {'string_match': self.string_match}
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
Index: boto-2.40.0/boto/requestlog.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.40.0.orig/boto/requestlog.py
|
||||||
|
+++ boto-2.40.0/boto/requestlog.py
|
||||||
|
@@ -25,7 +25,7 @@ class RequestLogger(RequestHook):
|
||||||
|
duration = (td.microseconds + long_type(td.seconds + td.days * 24 * 3600) * 1e6) / 1e6
|
||||||
|
|
||||||
|
# write output including timestamp, status code, response time, response size, request action
|
||||||
|
- self.request_log_queue.put("'%s', '%s', '%s', '%s', '%s'\n" % (time, response.status, duration, len, request.params['Action']))
|
||||||
|
+ self.request_log_queue.put("'%s', '%s', '%s', '%s', '%s'\n" % (time, response.status, duration, len, request.params.get('Action')))
|
||||||
|
|
||||||
|
def _request_log_worker(self):
|
||||||
|
while True:
|
@ -0,0 +1,73 @@
|
|||||||
|
Index: boto-2.45.0/boto/vpc/__init__.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.45.0.orig/boto/vpc/__init__.py
|
||||||
|
+++ boto-2.45.0/boto/vpc/__init__.py
|
||||||
|
@@ -1269,6 +1269,33 @@ class VPCConnection(EC2Connection):
|
||||||
|
params['DryRun'] = 'true'
|
||||||
|
return self.get_status('DeleteSubnet', params)
|
||||||
|
|
||||||
|
+ def modify_subnet_attribute(self, subnet_id, map_public_ip_on_launch,
|
||||||
|
+ dry_run=False):
|
||||||
|
+ """
|
||||||
|
+ :type subnet_id: str
|
||||||
|
+ :param subnet_id: The ID of the subnet.
|
||||||
|
+
|
||||||
|
+ :type map_public_ip_on_launch: bool
|
||||||
|
+ :param map_public_ip_on_launch: Specifies whether public IP addresses
|
||||||
|
+ are provided for the instances launched into this subnet.
|
||||||
|
+
|
||||||
|
+ :type dry_run: bool
|
||||||
|
+ :param dry_run: Set to True if the operation should not actually run.
|
||||||
|
+
|
||||||
|
+ :rtype: bool
|
||||||
|
+ :return: True if successful
|
||||||
|
+ """
|
||||||
|
+ params = {
|
||||||
|
+ 'SubnetId': subnet_id
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ params['MapPublicIpOnLaunch.Value'] = (
|
||||||
|
+ 'true' if map_public_ip_on_launch else 'false')
|
||||||
|
+
|
||||||
|
+ if dry_run:
|
||||||
|
+ params['DryRun'] = 'true'
|
||||||
|
+ return self.get_status('ModifySubnetAttribute', params)
|
||||||
|
+
|
||||||
|
# DHCP Options
|
||||||
|
|
||||||
|
def get_all_dhcp_options(self, dhcp_options_ids=None, filters=None, dry_run=False):
|
||||||
|
Index: boto-2.45.0/tests/unit/vpc/test_subnet.py
|
||||||
|
===================================================================
|
||||||
|
--- boto-2.45.0.orig/tests/unit/vpc/test_subnet.py
|
||||||
|
+++ boto-2.45.0/tests/unit/vpc/test_subnet.py
|
||||||
|
@@ -129,5 +129,30 @@ class TestDeleteSubnet(AWSMockServiceTes
|
||||||
|
self.assertEquals(api_response, True)
|
||||||
|
|
||||||
|
|
||||||
|
+class TestModifySubnetAttribute(AWSMockServiceTestCase):
|
||||||
|
+
|
||||||
|
+ connection_class = VPCConnection
|
||||||
|
+
|
||||||
|
+ def default_body(self):
|
||||||
|
+ return b"""
|
||||||
|
+ <ModifySubnetAttributeResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/">
|
||||||
|
+ <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>
|
||||||
|
+ <return>true</return>
|
||||||
|
+ </ModifySubnetAttributeResponse>
|
||||||
|
+ """
|
||||||
|
+
|
||||||
|
+ def test_modify_subnet_attribute(self):
|
||||||
|
+ self.set_http_response(status_code=200)
|
||||||
|
+ api_response = self.service_connection.modify_subnet_attribute('subnet-a605r929',
|
||||||
|
+ True)
|
||||||
|
+ self.assert_request_parameters({
|
||||||
|
+ 'Action': 'ModifySubnetAttribute',
|
||||||
|
+ 'SubnetId': 'subnet-a605r929', 'MapPublicIpOnLaunch.Value': 'true'},
|
||||||
|
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
|
||||||
|
+ 'SignatureVersion', 'Timestamp',
|
||||||
|
+ 'Version'])
|
||||||
|
+ self.assertEquals(api_response, True)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
@ -0,0 +1,37 @@
|
|||||||
|
# Copyright (c) 2006-2012 Mitch Garnaat http://garnaat.org/
|
||||||
|
# Copyright (c) 2010, Eucalyptus Systems, Inc.
|
||||||
|
# Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Parts of this code were copied or derived from sample code supplied by AWS.
|
||||||
|
# The following notice applies to that code.
|
||||||
|
#
|
||||||
|
# This software code is made available "AS IS" without warranties of any
|
||||||
|
# kind. You may copy, display, modify and redistribute the software
|
||||||
|
# code either by itself or as incorporated into your code; provided that
|
||||||
|
# you do not remove any proprietary notices. Your use of this software
|
||||||
|
# code is at your own risk and you waive any claim against Amazon
|
||||||
|
# Digital Services, Inc. or its affiliates with respect to your use of
|
||||||
|
# this software code. (c) 2006 Amazon Digital Services, Inc. or its
|
||||||
|
# affiliates.
|
||||||
|
|
@ -0,0 +1,405 @@
|
|||||||
|
Summary: A simple, lightweight interface to Amazon Web Services
|
||||||
|
Name: python-boto
|
||||||
|
Version: 2.49.0
|
||||||
|
Release: 14%{?dist}
|
||||||
|
License: MIT
|
||||||
|
URL: https://github.com/boto/boto
|
||||||
|
Source0: https://pypi.io/packages/source/b/boto/boto-%{version}.tar.gz
|
||||||
|
# Taken from sourcecode 2014-07-31
|
||||||
|
Source1: boto-mit-license.txt
|
||||||
|
|
||||||
|
# Unbundle python-six
|
||||||
|
# https://github.com/boto/boto/pull/3086
|
||||||
|
Patch1: boto-2.39.0-devendor.patch
|
||||||
|
|
||||||
|
# Add NAT gateway support
|
||||||
|
# https://github.com/boto/boto/pull/3472
|
||||||
|
Patch2: boto-2.40.0-nat-gateway.patch
|
||||||
|
|
||||||
|
# Fix max_retry_delay config option
|
||||||
|
# https://github.com/boto/boto/pull/3506
|
||||||
|
# https://github.com/boto/boto/pull/3508
|
||||||
|
Patch4: boto-2.40.0-retry-float.patch
|
||||||
|
|
||||||
|
# Add aws-exec-read to S3's canned ACL list
|
||||||
|
# https://github.com/boto/boto/pull/3332
|
||||||
|
Patch5: boto-2.40.0-aws-exec-read.patch
|
||||||
|
|
||||||
|
# Add new instance attributes
|
||||||
|
# https://github.com/boto/boto/pull/3077
|
||||||
|
# https://github.com/boto/boto/pull/3131
|
||||||
|
Patch6: boto-2.40.0-instance-attributes.patch
|
||||||
|
|
||||||
|
# Fix multi-VPC hosted zone parsing
|
||||||
|
# https://github.com/boto/boto/pull/2882
|
||||||
|
Patch7: boto-2.40.0-multi-vpc-zone.patch
|
||||||
|
|
||||||
|
# Fix request logging for S3 requests
|
||||||
|
# https://github.com/boto/boto/issues/2722
|
||||||
|
# https://github.com/boto/boto/pull/2875
|
||||||
|
Patch8: boto-2.40.0-s3-requestlog.patch
|
||||||
|
|
||||||
|
# Allow route53 health check resource paths to be none
|
||||||
|
# https://github.com/boto/boto/pull/2866
|
||||||
|
Patch9: boto-2.40.0-route53-no-resourcepath.patch
|
||||||
|
|
||||||
|
# Add ModifySubnetAttribute support
|
||||||
|
# https://github.com/boto/boto/pull/3111
|
||||||
|
Patch10: boto-2.45.0-modifysubnetattribute.patch
|
||||||
|
|
||||||
|
BuildRequires: python3-devel
|
||||||
|
BuildRequires: python3-setuptools
|
||||||
|
BuildRequires: python3-six
|
||||||
|
BuildRequires: python3-httpretty
|
||||||
|
BuildRequires: python3-mock
|
||||||
|
BuildRequires: python3-nose
|
||||||
|
BuildRequires: python3-requests
|
||||||
|
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
|
||||||
|
%description
|
||||||
|
Boto is a Python package that provides interfaces to Amazon Web Services.
|
||||||
|
It supports over thirty services, such as S3 (Simple Storage Service),
|
||||||
|
SQS (Simple Queue Service), and EC2 (Elastic Compute Cloud) via their
|
||||||
|
REST and Query APIs. The goal of boto is to support the full breadth
|
||||||
|
and depth of Amazon Web Services. In addition, boto provides support
|
||||||
|
for other public services such as Google Storage in addition to private
|
||||||
|
cloud systems like Eucalyptus, OpenStack and Open Nebula.
|
||||||
|
|
||||||
|
|
||||||
|
%package -n python3-boto
|
||||||
|
Summary: A simple, lightweight interface to Amazon Web Services
|
||||||
|
|
||||||
|
Requires: python3-requests
|
||||||
|
Requires: python3-six
|
||||||
|
Requires: python3-rsa
|
||||||
|
|
||||||
|
|
||||||
|
%description -n python3-boto
|
||||||
|
Boto is a Python package that provides interfaces to Amazon Web Services.
|
||||||
|
It supports over thirty services, such as S3 (Simple Storage Service),
|
||||||
|
SQS (Simple Queue Service), and EC2 (Elastic Compute Cloud) via their
|
||||||
|
REST and Query APIs. The goal of boto is to support the full breadth
|
||||||
|
and depth of Amazon Web Services. In addition, boto provides support
|
||||||
|
for other public services such as Google Storage in addition to private
|
||||||
|
cloud systems like Eucalyptus, OpenStack and Open Nebula.
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n boto-%{version}
|
||||||
|
|
||||||
|
#rm -r boto/vendored
|
||||||
|
|
||||||
|
cp -p %{SOURCE1} .
|
||||||
|
|
||||||
|
|
||||||
|
%build
|
||||||
|
%{__python3} setup.py build
|
||||||
|
|
||||||
|
|
||||||
|
%install
|
||||||
|
%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
||||||
|
rm -f $RPM_BUILD_ROOT/%{_bindir}/*
|
||||||
|
|
||||||
|
|
||||||
|
#%check
|
||||||
|
#%{__python3} tests/test.py default
|
||||||
|
|
||||||
|
|
||||||
|
%files -n python3-boto
|
||||||
|
%license boto-mit-license.txt
|
||||||
|
%{python3_sitelib}/boto*
|
||||||
|
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Sun Nov 19 2023 Arkady L. Shane <tigro@msvsphere-os.ru> - 2.49.0-14
|
||||||
|
- Rebuilt for MSVSphere 9.3
|
||||||
|
|
||||||
|
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-14
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-13
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jun 16 2022 Python Maint <python-maint@redhat.com> - 2.49.0-12
|
||||||
|
- Rebuilt for Python 3.11
|
||||||
|
|
||||||
|
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-11
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-10
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 2.49.0-9
|
||||||
|
- Rebuilt for Python 3.10
|
||||||
|
|
||||||
|
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-8
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun May 24 2020 Miro Hrončok <mhroncok@redhat.com> - 2.49.0-6
|
||||||
|
- Rebuilt for Python 3.9
|
||||||
|
|
||||||
|
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.0-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 2.49.0-4
|
||||||
|
- Rebuilt for Python 3.8.0rc1 (#1748018)
|
||||||
|
|
||||||
|
* Sat Aug 24 2019 Gwyn Ciesla <gwync@protonmail.com> - 2.49.0-3
|
||||||
|
- Disable tests.
|
||||||
|
|
||||||
|
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 2.49.0-2
|
||||||
|
- Rebuilt for Python 3.8
|
||||||
|
|
||||||
|
* Tue Aug 13 2019 Gwyn Ciesla <gwync@protonmail.com> - 2.49.0-1
|
||||||
|
- 2.49.0
|
||||||
|
|
||||||
|
* Tue Aug 13 2019 Gwyn Ciesla <gwync@protonmail.com> - 2.45.0-13
|
||||||
|
- Drop python 2.
|
||||||
|
|
||||||
|
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.0-12
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.0-11
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.0-10
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 2.45.0-9
|
||||||
|
- Rebuilt for Python 3.7
|
||||||
|
|
||||||
|
* Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 2.45.0-8
|
||||||
|
- Update Python 2 dependency declarations to new packaging standards
|
||||||
|
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
|
||||||
|
|
||||||
|
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.0-7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Dec 01 2017 Troy Dawson <tdawson@redhat.com> - 2.45.0-6
|
||||||
|
- Update spec file conditionals
|
||||||
|
|
||||||
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.0-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.0-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jan 27 2017 Garrett Holmstrom <gholms@fedoraproject.org> - 2.45.0-3
|
||||||
|
- Added support for ModifySubnetAttribute
|
||||||
|
|
||||||
|
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 2.45.0-2
|
||||||
|
- Rebuild for Python 3.6
|
||||||
|
|
||||||
|
* Thu Dec 15 2016 Jon Ciesla <limburgher@gmail.com> - 2.45.0-1
|
||||||
|
- 2.40.0.
|
||||||
|
|
||||||
|
* Fri Dec 9 2016 Garrett Holmstrom <gholms@fedoraproject.org> - 2.44.0-1
|
||||||
|
- Updated to 2.44.0 (RH #1403362)
|
||||||
|
|
||||||
|
* Tue Oct 25 2016 Garrett Holmstrom <gholms@fedoraproject.org> - 2.43.0-1
|
||||||
|
- Updated to 2.43.0
|
||||||
|
|
||||||
|
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.41.0-2
|
||||||
|
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||||
|
|
||||||
|
* Tue Jul 5 2016 Garrett Holmstrom <gholms@fedoraproject.org> - 2.41.0-1
|
||||||
|
- Updated to 2.41.0
|
||||||
|
|
||||||
|
* Tue Jun 21 2016 Garrett Holmstrom <gholms@fedoraproject.org> - 2.40.0-2
|
||||||
|
- Cleaned up spec file
|
||||||
|
- Added NAT gateway support
|
||||||
|
- Fixed sigv4 protocol selection
|
||||||
|
- Fixed max_retry_delay config option
|
||||||
|
- Added aws-exec-read to S3's canned ACL list
|
||||||
|
- Added new instance attributes
|
||||||
|
- Fixed multi-VPC hosted zone parsing
|
||||||
|
- Fixed request logging for S3 requests
|
||||||
|
- Allowed route53 health check resource paths to be none
|
||||||
|
|
||||||
|
* Mon May 23 2016 Jon Ciesla <limburgher@gmail.com> - 2.40.0-1
|
||||||
|
- 2.40.0.
|
||||||
|
- Kinesis patch upstreamed.
|
||||||
|
|
||||||
|
* Fri Jan 29 2016 Garrett Holmstrom <gholms@fedoraproject.org> - 2.39.0-1
|
||||||
|
- Updated to 2.39.0 (RH #1300424)
|
||||||
|
- Switched to systemwide copy of python-six on el7
|
||||||
|
- Enabled unit tests on el7
|
||||||
|
- Renamed python-boto to python2-boto to comply with current python
|
||||||
|
packaging standards
|
||||||
|
|
||||||
|
* Mon Nov 30 2015 Ryan S. Brown <sb@ryansb.com> - 2.38.0-5
|
||||||
|
- Add patch for unittest failure https://github.com/boto/boto/pull/3412
|
||||||
|
|
||||||
|
* Tue Nov 10 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.38.0-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5
|
||||||
|
|
||||||
|
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.38.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 9 2015 Garrett Holmstrom <gholms@fedoraproject.org> - 2.38.0-2
|
||||||
|
- Fixed ImportErrors on RHEL 7 (RH #1229863)
|
||||||
|
|
||||||
|
* Fri Apr 10 2015 Garrett Holmstrom <gholms@fedoraproject.org> - 2.38.0-1
|
||||||
|
- Updated to 2.38.0
|
||||||
|
- Added BuildRequires for python-six
|
||||||
|
- Made sample executables doc files in F23
|
||||||
|
|
||||||
|
* Wed Apr 8 2015 Garrett Holmstrom <gholms@fedoraproject.org> - 2.37.0-1
|
||||||
|
- Updated to 2.37.0 (RH #1180861)
|
||||||
|
- Dropped executables in F23
|
||||||
|
- Unbundled python-six (boto #3086)
|
||||||
|
- Enabled unit tests on Fedora (RH #1072946)
|
||||||
|
|
||||||
|
* Sun Nov 9 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.34.0-4
|
||||||
|
- Fixed python3 requires
|
||||||
|
|
||||||
|
* Fri Nov 7 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.34.0-3
|
||||||
|
- Re-fix executables (RH #1152444)
|
||||||
|
|
||||||
|
* Fri Nov 7 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.34.0-2
|
||||||
|
- Added missing python-requests and python-rsa dependencies
|
||||||
|
- Disabled unit tests due to rawhide/F21 python regression (RH #1161166:c4)
|
||||||
|
|
||||||
|
* Fri Nov 7 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.34.0-1
|
||||||
|
- Updated to 2.34.0 (RH #1072925, RH #1072928, RH #1161229)
|
||||||
|
- Made executables point to python2 (RH #1152444)
|
||||||
|
- Enabled unit tests on Fedora (RH #1072946)
|
||||||
|
|
||||||
|
* Thu Aug 21 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.32.1-1
|
||||||
|
- Updated to 2.32.1 (RH #1126056, RH #1132348)
|
||||||
|
- Added python3-boto (RH #1024363)
|
||||||
|
- Added (but did not enable) unit tests (RH #1072946, RH #1072923)
|
||||||
|
|
||||||
|
* Thu Jul 31 2014 Tom Callaway <spot@fedoraproject.org> - 2.27.0-3
|
||||||
|
- fix license handling
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.27.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Mar 21 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.27.0-1
|
||||||
|
- Updated to 2.27.0
|
||||||
|
|
||||||
|
* Wed Feb 12 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.25.0-2
|
||||||
|
- Fixed roboto parameter type conversion (boto #2094, RH #1064550)
|
||||||
|
|
||||||
|
* Mon Feb 10 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.25.0-1
|
||||||
|
- Updated to 2.25.0
|
||||||
|
- This update makes s3.get_bucket use HEAD instead of GET
|
||||||
|
|
||||||
|
* Mon Jan 20 2014 Garrett Holmstrom <gholms@fedoraproject.org> - 2.23.0-1
|
||||||
|
- Updated to 2.23.0
|
||||||
|
- Fixed auth for anonymous S3 requests (boto #1988)
|
||||||
|
|
||||||
|
* Thu Sep 26 2013 Garrett Holmstrom <gholms@fedoraproject.org> - 2.13.3-1
|
||||||
|
- Updated to 2.13.3
|
||||||
|
- Note that this version changes register_image's virtualization_type parameter
|
||||||
|
- Fixed auto-scaling PropagateAtLaunch parsing (#1011682)
|
||||||
|
|
||||||
|
* Mon Jul 29 2013 Garrett Holmstrom <gholms@fedoraproject.org> - 2.9.9-2
|
||||||
|
- Re-fixed autoscaling policy parsing (boto #1538)
|
||||||
|
|
||||||
|
* Thu Jul 25 2013 Orion Poplawski <orion@cora.nwra.com> - 2.9.9-1
|
||||||
|
- Update to 2.9.9
|
||||||
|
|
||||||
|
* Fri Jun 21 2013 Garrett Holmstrom <gholms@fedoraproject.org> - 2.9.6-2
|
||||||
|
- Rebuilt after merge
|
||||||
|
|
||||||
|
* Fri Jun 21 2013 Garrett Holmstrom <gholms@fedoraproject.org> - 2.9.6-1
|
||||||
|
- Updated to 2.9.6
|
||||||
|
- Fixed autoscaling policy parsing (boto #1538)
|
||||||
|
|
||||||
|
* Thu May 9 2013 Orion Poplawski <orion@cora.nwra.com> - 2.9.2-1
|
||||||
|
- Update to 2.9.2 (bug #948714)
|
||||||
|
- Spec cleanup
|
||||||
|
|
||||||
|
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.6.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jan 8 2013 Garrett Holmstrom <gholms@fedoraproject.org> - 2.5.2-3
|
||||||
|
- Fixed parsing of current/previous instance state data (boto #881)
|
||||||
|
|
||||||
|
* Wed Nov 21 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 2.6.0-2
|
||||||
|
- Updated to 2.6.0 (#876517)
|
||||||
|
- Note that this version enables SSL cert verification by default.
|
||||||
|
|
||||||
|
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.5.2-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 6 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 2.5.2-1
|
||||||
|
- Updated to 2.5.2
|
||||||
|
- Fixed failure when metadata is empty (#838076)
|
||||||
|
|
||||||
|
* Thu Jun 14 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 2.5.1-1
|
||||||
|
- Updated to 2.5.1 (last-minute upstream bugfix)
|
||||||
|
|
||||||
|
* Wed Jun 13 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 2.5.0-1
|
||||||
|
- Updated to 2.5.0 (#828912)
|
||||||
|
|
||||||
|
* Wed Mar 21 2012 Robert Scheck <robert@fedoraproject.org> 2.3.0-1
|
||||||
|
- Upgrade to 2.3.0 (#786301 #c10)
|
||||||
|
|
||||||
|
* Tue Mar 13 2012 Robert Scheck <robert@fedoraproject.org> 2.2.2-1
|
||||||
|
- Upgrade to 2.2.2 (#786301, thanks to Bobby Powers)
|
||||||
|
|
||||||
|
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Aug 15 2011 Robert Scheck <robert@fedoraproject.org> 2.0-1
|
||||||
|
- Upgrade to 2.0 (#723088)
|
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9b-7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun Jan 02 2011 Robert Scheck <robert@fedoraproject.org> 1.9b-6
|
||||||
|
- Added a patch for python 2.4 support (#656446, #661233)
|
||||||
|
|
||||||
|
* Thu Dec 02 2010 Lubomir Rintel <lubo.rintel@gooddata.com> 1.9b-5
|
||||||
|
- Apply a patch for python 2.7 support (#659248)
|
||||||
|
|
||||||
|
* Thu Nov 18 2010 Robert Scheck <robert@fedoraproject.org> 1.9b-4
|
||||||
|
- Added patch to fix parameter of build_list_params() (#647005)
|
||||||
|
|
||||||
|
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 1.9b-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
|
||||||
|
|
||||||
|
* Tue Feb 09 2010 Robert Scheck <robert@fedoraproject.org> 1.9b-2
|
||||||
|
- Backported upstream patch for image registration (#561216)
|
||||||
|
|
||||||
|
* Sat Jan 09 2010 Robert Scheck <robert@fedoraproject.org> 1.9b-1
|
||||||
|
- Upgrade to 1.9b
|
||||||
|
|
||||||
|
* Fri Jul 24 2009 Robert Scheck <robert@fedoraproject.org> 1.8d-1
|
||||||
|
- Upgrade to 1.8d (#513560)
|
||||||
|
|
||||||
|
* Wed Jun 03 2009 Luke Macken <lmacken@redhat.com> 1.7a-2
|
||||||
|
- Add python-setuptools-devel to our build requirements, for egg-info
|
||||||
|
|
||||||
|
* Thu Apr 16 2009 Robert Scheck <robert@fedoraproject.org> 1.7a-1
|
||||||
|
- Upgrade to 1.7a
|
||||||
|
|
||||||
|
* Mon Feb 23 2009 Robert Scheck <robert@fedoraproject.org> 1.5c-2
|
||||||
|
- Rebuild against rpm 4.6
|
||||||
|
|
||||||
|
* Sun Dec 07 2008 Robert Scheck <robert@fedoraproject.org> 1.5c-1
|
||||||
|
- Upgrade to 1.5c
|
||||||
|
|
||||||
|
* Fri Dec 05 2008 Jeremy Katz <katzj@redhat.com> 1.2a-2
|
||||||
|
- Rebuild for python 2.6
|
||||||
|
|
||||||
|
* Wed May 07 2008 Robert Scheck <robert@fedoraproject.org> 1.2a-1
|
||||||
|
- Upgrade to 1.2a
|
||||||
|
|
||||||
|
* Sat Feb 09 2008 Robert Scheck <robert@fedoraproject.org> 1.0a-1
|
||||||
|
- Upgrade to 1.0a
|
||||||
|
|
||||||
|
* Sat Dec 08 2007 Robert Scheck <robert@fedoraproject.org> 0.9d-1
|
||||||
|
- Upgrade to 0.9d
|
||||||
|
|
||||||
|
* Thu Aug 30 2007 Robert Scheck <robert@fedoraproject.org> 0.9b-1
|
||||||
|
- Upgrade to 0.9b
|
||||||
|
- Initial spec file for Fedora and Red Hat Enterprise Linux
|
Loading…
Reference in new issue