import python-boto-2.49.0-14.el9

i9cf changed/i9cf/python-boto-2.49.0-14.el9
Arkady L. Shane 1 year ago
commit 2260caa2f9
Signed by: tigro
GPG Key ID: 8D1597B4AD3AFAA0

1
.gitignore vendored

@ -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…
Cancel
Save