Skip to content

Commit

Permalink
Merge branch 'release-1.12.14'
Browse files Browse the repository at this point in the history
* release-1.12.14:
  Bumping version to 1.12.14
  Update to latest models
  Refactor test_args
  • Loading branch information
awstools committed Sep 28, 2018
2 parents 5a158f9 + a8cc17c commit aa6d2cc
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 89 deletions.
12 changes: 12 additions & 0 deletions .changes/1.12.14.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[
{
"category": "``codestar``",
"description": "Update codestar client to latest version",
"type": "api-change"
},
{
"category": "``ec2``",
"description": "Update ec2 client to latest version",
"type": "api-change"
}
]
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
CHANGELOG
=========

1.12.14
=======

* api-change:``codestar``: Update codestar client to latest version
* api-change:``ec2``: Update ec2 client to latest version


1.12.13
=======

Expand Down
2 changes: 1 addition & 1 deletion botocore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import re
import logging

__version__ = '1.12.13'
__version__ = '1.12.14'


class NullHandler(logging.Handler):
Expand Down
37 changes: 35 additions & 2 deletions botocore/data/codestar/2017-04-19/service-2.json
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,10 @@
"clientRequestToken":{
"shape":"ClientRequestToken",
"documentation":"<p>Reserved for future use.</p>"
},
"tags":{
"shape":"Tags",
"documentation":"<p>The tags created for the project.</p>"
}
}
},
Expand Down Expand Up @@ -550,6 +554,10 @@
"projectTemplateId":{
"shape":"ProjectTemplateId",
"documentation":"<p>The ID for the AWS CodeStar project template used to create the project.</p>"
},
"status":{
"shape":"ProjectStatus",
"documentation":"<p>The project creation or deletion status.</p>"
}
}
},
Expand Down Expand Up @@ -863,6 +871,21 @@
"documentation":"<p>The specified AWS CodeStar project was not found.</p>",
"exception":true
},
"ProjectStatus":{
"type":"structure",
"required":["state"],
"members":{
"state":{
"shape":"State",
"documentation":"<p>The phase of completion for a project creation or deletion.</p>"
},
"reason":{
"shape":"Reason",
"documentation":"<p>In the case of a project creation or deletion failure, a reason for the failure.</p>"
}
},
"documentation":"<p>An indication of whether a project creation or deletion is failed or successful.</p>"
},
"ProjectSummary":{
"type":"structure",
"members":{
Expand All @@ -880,12 +903,17 @@
"ProjectTemplateId":{
"type":"string",
"min":1,
"pattern":"^arn:aws[^:\\s]{0,5}:codestar:[^:\\s]+::project-template\\/[a-z0-9-]+$"
"pattern":"^arn:aws[^:\\s]{0,5}:codestar:[^:\\s]+::project-template(\\/(github|codecommit))?\\/[a-z0-9-]+$"
},
"ProjectsList":{
"type":"list",
"member":{"shape":"ProjectSummary"}
},
"Reason":{
"type":"string",
"max":1024,
"pattern":"^$|^\\S(.*\\S)?$"
},
"RemoteAccessAllowed":{"type":"boolean"},
"Resource":{
"type":"structure",
Expand Down Expand Up @@ -920,6 +948,10 @@
"type":"string",
"pattern":"^arn:aws[^:\\s]*:cloudformation:[^:\\s]+:[0-9]{12}:stack\\/[^:\\s]+\\/[^:\\s]+$"
},
"State":{
"type":"string",
"pattern":"^(CreateInProgress|CreateComplete|CreateFailed|DeleteComplete|DeleteFailed|DeleteInProgress|UpdateComplete|UpdateInProgress|UpdateFailed|Unknown)$"
},
"TagKey":{
"type":"string",
"max":128,
Expand Down Expand Up @@ -1165,7 +1197,8 @@
"type":"string",
"max":64,
"min":1,
"pattern":"^\\S(.*\\S)?$"
"pattern":"^\\S(.*\\S)?$",
"sensitive":true
},
"UserProfileNotFoundException":{
"type":"structure",
Expand Down
5 changes: 4 additions & 1 deletion botocore/data/ec2/2016-11-15/service-2.json
Original file line number Diff line number Diff line change
Expand Up @@ -14807,7 +14807,10 @@
"z1d.2xlarge",
"z1d.3xlarge",
"z1d.6xlarge",
"z1d.12xlarge"
"z1d.12xlarge",
"u-6tb1.metal",
"u-9tb1.metal",
"u-12tb1.metal"
]
},
"InstanceTypeList":{
Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
# The short X.Y version.
version = '1.12.'
# The full version, including alpha/beta/rc tags.
release = '1.12.13'
release = '1.12.14'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
150 changes: 66 additions & 84 deletions tests/unit/test_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,61 @@
import mock

from botocore import args
from botocore.client import ClientEndpointBridge
from botocore.config import Config
from botocore.hooks import HierarchicalEmitter
from botocore.model import ServiceModel


class TestCreateClientArgs(unittest.TestCase):
def setUp(self):
self.args_create = args.ClientArgsCreator(None, None, None, None, None)
self.event_emitter = mock.Mock(HierarchicalEmitter)
self.args_create = args.ClientArgsCreator(
self.event_emitter, None, None, None, None)
self.region = 'us-west-2'
self.endpoint_url = 'https://ec2/'
self.service_model = mock.Mock(ServiceModel)
self.service_model.metadata = {
'serviceFullName': 'MyService',
'protocol': 'query'
}
self.service_model.operation_names = []
self.bridge = mock.Mock(ClientEndpointBridge)
self.bridge.resolve.return_value = {
'region_name': self.region, 'signature_version': 'v4',
'endpoint_url': self.endpoint_url,
'signing_name': 'ec2', 'signing_region': self.region,
'metadata': {}}

def call_get_client_args(self, **override_kwargs):
call_kwargs = {
'service_model': self.service_model,
'region_name': self.region,
'is_secure': True,
'endpoint_url': self.endpoint_url,
'verify': True,
'credentials': None,
'scoped_config': {},
'client_config': None,
'endpoint_bridge': self.bridge
}
call_kwargs.update(**override_kwargs)
return self.args_create.get_client_args(**call_kwargs)

def assert_create_endpoint_call(self, mock_endpoint, **override_kwargs):
call_kwargs = {
'endpoint_url': self.endpoint_url,
'region_name': self.region,
'response_parser_factory': None,
'timeout': (60, 60),
'verify': True,
'max_pool_connections': 10,
'proxies': None,
}
call_kwargs.update(**override_kwargs)
mock_endpoint.return_value.create_endpoint.assert_called_with(
self.service_model, **call_kwargs
)

def test_compute_s3_configuration(self):
scoped_config = {}
Expand Down Expand Up @@ -106,68 +155,23 @@ def test_client_s3_dualstack_handles_varying_forms_of_true(self):
)

def test_max_pool_from_client_config_forwarded_to_endpoint_creator(self):
args_create = args.ClientArgsCreator(
mock.Mock(), None, None, None, None)
config = botocore.config.Config(max_pool_connections=20)
service_model = mock.Mock()
service_model.metadata = {
'serviceFullName': 'MyService',
'protocol': 'query'
}
service_model.operation_names = []
bridge = mock.Mock()
bridge.resolve.return_value = {
'region_name': 'us-west-2', 'signature_version': 'v4',
'endpoint_url': 'https://ec2/',
'signing_name': 'ec2', 'signing_region': 'us-west-2',
'metadata': {}}
with mock.patch('botocore.args.EndpointCreator') as m:
args_create.get_client_args(
service_model, 'us-west-2', True, 'https://ec2/', True,
None, {}, config, bridge)
m.return_value.create_endpoint.assert_called_with(
mock.ANY, endpoint_url='https://ec2/', region_name='us-west-2',
response_parser_factory=None, timeout=(60, 60), verify=True,
max_pool_connections=20, proxies=None
)
self.call_get_client_args(client_config=config)
self.assert_create_endpoint_call(m, max_pool_connections=20)

def test_proxies_from_client_config_forwarded_to_endpoint_creator(self):
args_create = args.ClientArgsCreator(
mock.Mock(), None, None, None, None)
proxies = {'http': 'http://foo.bar:1234',
'https': 'https://foo.bar:4321'}
config = botocore.config.Config(proxies=proxies)
service_model = mock.Mock()
service_model.metadata = {
'serviceFullName': 'MyService',
'protocol': 'query'
}
service_model.operation_names = []
bridge = mock.Mock()
bridge.resolve.return_value = {
'region_name': 'us-west-2', 'signature_version': 'v4',
'endpoint_url': 'https://ec2/',
'signing_name': 'ec2', 'signing_region': 'us-west-2',
'metadata': {}}
with mock.patch('botocore.args.EndpointCreator') as m:
args_create.get_client_args(
service_model, 'us-west-2', True, 'https://ec2/', True,
None, {}, config, bridge)
m.return_value.create_endpoint.assert_called_with(
mock.ANY, endpoint_url='https://ec2/', region_name='us-west-2',
response_parser_factory=None, timeout=(60, 60), verify=True,
proxies=proxies, max_pool_connections=10
)
self.call_get_client_args(client_config=config)
self.assert_create_endpoint_call(m, proxies=proxies)

def test_s3_with_endpoint_url_still_resolves_region(self):
self.args_create = args.ClientArgsCreator(
mock.Mock(), None, None, None, None)
service_model = mock.Mock()
service_model.endpoint_prefix = 's3'
service_model.metadata = {'protocol': 'rest-xml'}
config = botocore.config.Config()
bridge = mock.Mock()
bridge.resolve.side_effect = [
self.service_model.endpoint_prefix = 's3'
self.service_model.metadata = {'protocol': 'rest-xml'}
self.bridge.resolve.side_effect = [
{
'region_name': None, 'signature_version': 's3v4',
'endpoint_url': 'http://other.com/', 'signing_name': 's3',
Expand All @@ -180,47 +184,25 @@ def test_s3_with_endpoint_url_still_resolves_region(self):
'metadata': {}
}
]
client_args = self.args_create.get_client_args(
service_model, 'us-west-2', True, 'http://other.com/', True, None,
{}, config, bridge)
client_args = self.call_get_client_args(
endpoint_url='http://other.com/')
self.assertEqual(
client_args['client_config'].region_name, 'us-west-2')

def test_region_does_not_resolve_if_not_s3_and_endpoint_url_provided(self):
self.args_create = args.ClientArgsCreator(
mock.Mock(), None, None, None, None)
service_model = mock.Mock()
service_model.endpoint_prefix = 'ec2'
service_model.metadata = {'protocol': 'query'}
config = botocore.config.Config()
bridge = mock.Mock()
bridge.resolve.side_effect = [{
self.service_model.endpoint_prefix = 'ec2'
self.service_model.metadata = {'protocol': 'query'}
self.bridge.resolve.side_effect = [{
'region_name': None, 'signature_version': 'v4',
'endpoint_url': 'http://other.com/', 'signing_name': 'ec2',
'signing_region': None, 'metadata': {}
}]
client_args = self.args_create.get_client_args(
service_model, 'us-west-2', True, 'http://other.com/', True, None,
{}, config, bridge)
client_args = self.call_get_client_args(
endpoint_url='http://other.com/')
self.assertEqual(client_args['client_config'].region_name, None)

def test_provide_retry_config(self):
self.args_create = args.ClientArgsCreator(
mock.Mock(), None, None, None, None)
service_model = mock.Mock()
service_model.endpoint_prefix = 'ec2'
service_model.metadata = {'protocol': 'query'}
config = botocore.config.Config(
retries={'max_attempts': 10}
)
bridge = mock.Mock()
bridge.resolve.side_effect = [{
'region_name': None, 'signature_version': 'v4',
'endpoint_url': 'http://other.com/', 'signing_name': 'ec2',
'signing_region': None, 'metadata': {}
}]
client_args = self.args_create.get_client_args(
service_model, 'us-west-2', True, 'https://ec2/', True, None,
{}, config, bridge)
config = botocore.config.Config(retries={'max_attempts': 10})
client_args = self.call_get_client_args(client_config=config)
self.assertEqual(
client_args['client_config'].retries, {'max_attempts': 10})

0 comments on commit aa6d2cc

Please sign in to comment.