Skip to content

Commit 52ee1a1

Browse files
authored
Add nested client creation utility method (aws#9602)
1 parent 5a30498 commit 52ee1a1

File tree

25 files changed

+106
-61
lines changed

25 files changed

+106
-61
lines changed

awscli/clidriver.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
ServiceHelpCommand,
4949
)
5050
from awscli.plugin import load_plugins
51-
from awscli.utils import emit_top_level_args_parsed_event, write_exception
51+
from awscli.utils import emit_top_level_args_parsed_event, write_exception, create_nested_client
5252
from botocore import __version__ as botocore_version
5353
from botocore import xform_name
5454

@@ -692,7 +692,8 @@ def invoke(self, service_name, operation_name, parameters, parsed_globals):
692692
value is returned.
693693
694694
"""
695-
client = self._session.create_client(
695+
client = create_nested_client(
696+
self._session,
696697
service_name,
697698
region_name=parsed_globals.region,
698699
endpoint_url=parsed_globals.endpoint_url,

awscli/customizations/cloudformation/deploy.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
from awscli.customizations.commands import BasicCommand
2626
from awscli.compat import get_stdout_text_writer
27-
from awscli.utils import write_exception
27+
from awscli.utils import create_nested_client, write_exception
2828

2929
LOG = logging.getLogger(__name__)
3030

@@ -267,8 +267,8 @@ class DeployCommand(BasicCommand):
267267

268268
def _run_main(self, parsed_args, parsed_globals):
269269
cloudformation_client = \
270-
self._session.create_client(
271-
'cloudformation', region_name=parsed_globals.region,
270+
create_nested_client(
271+
self._session, 'cloudformation', region_name=parsed_globals.region,
272272
endpoint_url=parsed_globals.endpoint_url,
273273
verify=parsed_globals.verify_ssl)
274274

@@ -300,7 +300,8 @@ def _run_main(self, parsed_args, parsed_globals):
300300

301301
bucket = parsed_args.s3_bucket
302302
if bucket:
303-
s3_client = self._session.create_client(
303+
s3_client = create_nested_client(
304+
self._session,
304305
"s3",
305306
config=Config(signature_version='s3v4'),
306307
region_name=parsed_globals.region,

awscli/customizations/cloudformation/package.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from awscli.customizations.cloudformation import exceptions
2525
from awscli.customizations.commands import BasicCommand
2626
from awscli.customizations.s3uploader import S3Uploader
27+
from awscli.utils import create_nested_client
2728

2829
LOG = logging.getLogger(__name__)
2930

@@ -124,8 +125,8 @@ class PackageCommand(BasicCommand):
124125
]
125126

126127
def _run_main(self, parsed_args, parsed_globals):
127-
s3_client = self._session.create_client(
128-
"s3",
128+
s3_client = create_nested_client(
129+
self._session, "s3",
129130
config=Config(signature_version='s3v4'),
130131
region_name=parsed_globals.region,
131132
verify=parsed_globals.verify_ssl)

awscli/customizations/cloudfront.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from awscli.arguments import CustomArgument
2222
from awscli.customizations.utils import validate_mutually_exclusive_handler
2323
from awscli.customizations.commands import BasicCommand
24+
from awscli.utils import create_nested_client
2425

2526

2627
def register(event_handler):
@@ -172,7 +173,8 @@ def __init__(self, context, argument_table):
172173

173174
def add_to_params(self, parameters, value):
174175
if value is not None:
175-
client = self.context['session'].create_client(
176+
client = create_nested_client(
177+
self.context['session'],
176178
'cloudfront',
177179
region_name=self.context['parsed_args'].region,
178180
endpoint_url=self.context['parsed_args'].endpoint_url,

awscli/customizations/cloudtrail/subscribe.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
from .utils import get_account_id
1818
from awscli.customizations.commands import BasicCommand
1919
from awscli.customizations.utils import s3_bucket_exists
20+
from awscli.utils import create_nested_client
2021
from botocore.exceptions import ClientError
2122

22-
2323
LOG = logging.getLogger(__name__)
2424
S3_POLICY_TEMPLATE = 'policy/S3/AWSCloudTrail-S3BucketPolicy-2014-12-17.json'
2525
SNS_POLICY_TEMPLATE = 'policy/SNS/AWSCloudTrail-SnsTopicPolicy-2014-12-17.json'
@@ -80,16 +80,16 @@ def setup_services(self, args, parsed_globals):
8080

8181
# Initialize services
8282
LOG.debug('Initializing S3, SNS and CloudTrail...')
83-
self.sts = self._session.create_client('sts', **client_args)
84-
self.s3 = self._session.create_client('s3', **client_args)
85-
self.sns = self._session.create_client('sns', **client_args)
83+
self.sts = create_nested_client(self._session, 'sts', **client_args)
84+
self.s3 = create_nested_client(self._session, 's3', **client_args)
85+
self.sns = create_nested_client(self._session, 'sns', **client_args)
8686
self.region_name = self.s3.meta.region_name
8787

8888
# If the endpoint is specified, it is designated for the cloudtrail
8989
# service. Not all of the other services will use it.
9090
if parsed_globals.endpoint_url is not None:
9191
client_args['endpoint_url'] = parsed_globals.endpoint_url
92-
self.cloudtrail = self._session.create_client('cloudtrail', **client_args)
92+
self.cloudtrail = create_nested_client(self._session, 'cloudtrail', **client_args)
9393

9494
def _call(self, options, parsed_globals):
9595
"""

awscli/customizations/cloudtrail/validation.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from awscli.customizations.commands import BasicCommand
3131
from botocore.exceptions import ClientError
3232
from awscli.schema import ParameterRequiredError
33-
33+
from awscli.utils import create_nested_client
3434

3535
LOG = logging.getLogger(__name__)
3636
DATE_FORMAT = '%Y%m%dT%H%M%SZ'
@@ -193,7 +193,7 @@ def _get_bucket_region(self, bucket_name):
193193
def _create_client(self, region_name):
194194
"""Creates an Amazon S3 client for the given region name"""
195195
if region_name not in self._client_cache:
196-
client = self._session.create_client('s3', region_name)
196+
client = create_nested_client(self._session, 's3', region_name=region_name)
197197
# Remove the CLI error event that prevents exceptions.
198198
self._client_cache[region_name] = client
199199
return self._client_cache[region_name]
@@ -753,13 +753,13 @@ def setup_services(self, parsed_globals):
753753
self._session, self._source_region)
754754
client_args = {'region_name': parsed_globals.region,
755755
'verify': parsed_globals.verify_ssl}
756-
self.organization_client = self._session.create_client(
757-
'organizations', **client_args)
756+
self.organization_client = create_nested_client(
757+
self._session, 'organizations', **client_args)
758758

759759
if parsed_globals.endpoint_url is not None:
760760
client_args['endpoint_url'] = parsed_globals.endpoint_url
761-
self.cloudtrail_client = self._session.create_client(
762-
'cloudtrail', **client_args)
761+
self.cloudtrail_client = create_nested_client(
762+
self._session, 'cloudtrail', **client_args)
763763

764764
def _call(self):
765765
traverser = create_digest_traverser(

awscli/customizations/codedeploy/deregister.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from awscli.customizations.commands import BasicCommand
1919
from awscli.customizations.codedeploy.utils import \
2020
validate_region, validate_instance_name, INSTANCE_NAME_ARG
21+
from awscli.utils import create_nested_client
2122

2223

2324
class Deregister(BasicCommand):
@@ -48,13 +49,15 @@ def _run_main(self, parsed_args, parsed_globals):
4849
validate_region(params, parsed_globals)
4950
validate_instance_name(params)
5051

51-
self.codedeploy = self._session.create_client(
52+
self.codedeploy = create_nested_client(
53+
self._session,
5254
'codedeploy',
5355
region_name=params.region,
5456
endpoint_url=parsed_globals.endpoint_url,
5557
verify=parsed_globals.verify_ssl
5658
)
57-
self.iam = self._session.create_client(
59+
self.iam = create_nested_client(
60+
self._session,
5861
'iam',
5962
region_name=params.region
6063
)

awscli/customizations/codedeploy/push.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from awscli.customizations.codedeploy.utils import validate_s3_location
2424
from awscli.customizations.commands import BasicCommand
2525
from awscli.compat import BytesIO, ZIP_COMPRESSION_MODE
26-
26+
from awscli.utils import create_nested_client
2727

2828
ONE_MB = 1 << 20
2929
MULTIPART_LIMIT = 6 * ONE_MB
@@ -107,13 +107,15 @@ class Push(BasicCommand):
107107

108108
def _run_main(self, parsed_args, parsed_globals):
109109
self._validate_args(parsed_args)
110-
self.codedeploy = self._session.create_client(
110+
self.codedeploy = create_nested_client(
111+
self._session,
111112
'codedeploy',
112113
region_name=parsed_globals.region,
113114
endpoint_url=parsed_globals.endpoint_url,
114115
verify=parsed_globals.verify_ssl
115116
)
116-
self.s3 = self._session.create_client(
117+
self.s3 = create_nested_client(
118+
self._session,
117119
's3',
118120
region_name=parsed_globals.region
119121
)

awscli/customizations/codedeploy/register.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from awscli.customizations.codedeploy.utils import \
1919
validate_region, validate_instance_name, validate_tags, \
2020
validate_iam_user_arn, INSTANCE_NAME_ARG, IAM_USER_ARN_ARG
21+
from awscli.utils import create_nested_client
2122

2223

2324
class Register(BasicCommand):
@@ -73,13 +74,15 @@ def _run_main(self, parsed_args, parsed_globals):
7374
validate_tags(params)
7475
validate_iam_user_arn(params)
7576

76-
self.codedeploy = self._session.create_client(
77+
self.codedeploy = create_nested_client(
78+
self._session,
7779
'codedeploy',
7880
region_name=params.region,
7981
endpoint_url=parsed_globals.endpoint_url,
8082
verify=parsed_globals.verify_ssl
8183
)
82-
self.iam = self._session.create_client(
84+
self.iam = create_nested_client(
85+
self._session,
8386
'iam',
8487
region_name=params.region
8588
)

awscli/customizations/codedeploy/systems.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import ctypes
1515
import os
1616
import subprocess
17+
from awscli.utils import create_nested_client
1718

1819
DEFAULT_CONFIG_FILE = 'codedeploy.onpremises.yml'
1920

@@ -26,7 +27,8 @@ class System:
2627

2728
def __init__(self, params):
2829
self.session = params.session
29-
self.s3 = self.session.create_client(
30+
self.s3 = create_nested_client(
31+
self.session,
3032
's3',
3133
region_name=params.region
3234
)

0 commit comments

Comments
 (0)