Skip to content

Commit 313aba7

Browse files
committed
provider: add get_session method and convert all hooks and lookups
This makes hooks respect the universal region and profile settings add in the config.
1 parent 8a38040 commit 313aba7

24 files changed

Lines changed: 717 additions & 675 deletions

stacker/hooks/aws_lambda.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
import hashlib
1212
from io import BytesIO as StringIO
1313
from zipfile import ZipFile, ZIP_DEFLATED
14+
1415
import botocore
1516
import formic
1617
from troposphere.awslambda import Code
17-
from stacker.session_cache import get_session
1818

1919
from stacker.util import (
2020
get_config_directory,
@@ -508,7 +508,7 @@ def create_template(self):
508508
payload_acl = kwargs.get('payload_acl', 'private')
509509

510510
# Always use the global client for s3
511-
session = get_session(bucket_region)
511+
session = provider.get_session(region=bucket_region)
512512
s3_client = session.client('s3')
513513

514514
ensure_s3_bucket(s3_client, bucket_name, bucket_region)

stacker/hooks/ecs.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from past.builtins import basestring
88
import logging
99

10-
from stacker.session_cache import get_session
1110

1211
logger = logging.getLogger(__name__)
1312

@@ -26,7 +25,7 @@ def create_clusters(provider, context, **kwargs):
2625
Returns: boolean for whether or not the hook succeeded.
2726
2827
"""
29-
conn = get_session(provider.region).client('ecs')
28+
conn = provider.get_session().client('ecs')
3029

3130
try:
3231
clusters = kwargs["clusters"]

stacker/hooks/iam.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import copy
66
import logging
77

8-
from stacker.session_cache import get_session
98
from botocore.exceptions import ClientError
109

1110
from awacs.aws import Statement, Allow, Policy
@@ -32,7 +31,7 @@ def create_ecs_service_role(provider, context, **kwargs):
3231
3332
"""
3433
role_name = kwargs.get("role_name", "ecsServiceRole")
35-
client = get_session(provider.region).client('iam')
34+
client = provider.get_session().client('iam')
3635

3736
try:
3837
client.create_role(
@@ -125,7 +124,7 @@ def get_cert_contents(kwargs):
125124

126125

127126
def ensure_server_cert_exists(provider, context, **kwargs):
128-
client = get_session(provider.region).client('iam')
127+
client = provider.get_session().client('iam')
129128
cert_name = kwargs["cert_name"]
130129
status = "unknown"
131130
try:

stacker/hooks/keypair.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import logging
66
import os
77

8-
from stacker.session_cache import get_session
9-
108
from . import utils
119

1210
logger = logging.getLogger(__name__)
@@ -32,7 +30,7 @@ def ensure_keypair_exists(provider, context, **kwargs):
3230
Returns: boolean for whether or not the hook succeeded.
3331
3432
"""
35-
session = get_session(provider.region)
33+
session = provider.get_session()
3634
client = session.client("ec2")
3735
keypair_name = kwargs.get("keypair")
3836
resp = client.describe_key_pairs()

stacker/hooks/route53.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
from __future__ import absolute_import
44
import logging
55

6-
from stacker.session_cache import get_session
7-
86
from stacker.util import create_route53_zone
97

108
logger = logging.getLogger(__name__)
@@ -21,7 +19,7 @@ def create_domain(provider, context, **kwargs):
2119
Returns: boolean for whether or not the hook succeeded.
2220
2321
"""
24-
session = get_session(provider.region)
22+
session = provider.get_session()
2523
client = session.client("route53")
2624
domain = kwargs.get("domain")
2725
if not domain:

stacker/lookups/handlers/ami.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import print_function
22
from __future__ import division
33
from __future__ import absolute_import
4-
from stacker.session_cache import get_session
4+
55
import re
66
import operator
77

@@ -22,31 +22,31 @@ def __init__(self, search_string):
2222

2323
class AmiLookup(LookupHandler):
2424
@classmethod
25-
def handle(cls, value, provider, **kwargs):
25+
def handle(cls, value, context, provider):
2626
"""Fetch the most recent AMI Id using a filter
27-
27+
2828
For example:
29-
29+
3030
${ami [<region>@]owners:self,account,amazon name_regex:serverX-[0-9]+ architecture:x64,i386}
31-
31+
3232
The above fetches the most recent AMI where owner is self
3333
account or amazon and the ami name matches the regex described,
3434
the architecture will be either x64 or i386
35-
35+
3636
You can also optionally specify the region in which to perform the
3737
AMI lookup.
38-
38+
3939
Valid arguments:
40-
40+
4141
owners (comma delimited) REQUIRED ONCE:
4242
aws_account_id | amazon | self
43-
43+
4444
name_regex (a regex) REQUIRED ONCE:
4545
e.g. my-ubuntu-server-[0-9]+
46-
46+
4747
executable_users (comma delimited) OPTIONAL ONCE:
4848
aws_account_id | amazon | self
49-
49+
5050
Any other arguments specified are sent as filters to the aws api
5151
For example, "architecture:x86_64" will add a filter
5252
""" # noqa
@@ -57,7 +57,7 @@ def handle(cls, value, provider, **kwargs):
5757
else:
5858
region = provider.region
5959

60-
ec2 = get_session(region).client('ec2')
60+
ec2 = provider.get_session(region=region).client('ec2')
6161

6262
values = {}
6363
describe_args = {}

stacker/lookups/handlers/dynamodb.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from builtins import str
55
from botocore.exceptions import ClientError
66
import re
7-
from stacker.session_cache import get_session
87

98
from . import LookupHandler
109
from ...util import read_value_from_path
@@ -14,7 +13,7 @@
1413

1514
class DynamodbLookup(LookupHandler):
1615
@classmethod
17-
def handle(cls, value, **kwargs):
16+
def handle(cls, value, context, provider):
1817
"""Get a value from a dynamodb table
1918
2019
dynamodb field types should be in the following format:
@@ -53,7 +52,7 @@ def handle(cls, value, **kwargs):
5352
projection_expression = _build_projection_expression(clean_table_keys)
5453

5554
# lookup the data from dynamodb
56-
dynamodb = get_session(region).client('dynamodb')
55+
dynamodb = provider.get_session(region=region).client('dynamodb')
5756
try:
5857
response = dynamodb.get_item(
5958
TableName=table_name,

stacker/lookups/handlers/kms.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from __future__ import division
33
from __future__ import absolute_import
44
import codecs
5-
from stacker.session_cache import get_session
65

76
from . import LookupHandler
87
from ...util import read_value_from_path
@@ -12,7 +11,7 @@
1211

1312
class KmsLookup(LookupHandler):
1413
@classmethod
15-
def handle(cls, value, **kwargs):
14+
def handle(cls, value, context, provider):
1615
"""Decrypt the specified value with a master key in KMS.
1716
1817
kmssimple field types should be in the following format:
@@ -55,7 +54,7 @@ def handle(cls, value, **kwargs):
5554
if "@" in value:
5655
region, value = value.split("@", 1)
5756

58-
kms = get_session(region).client('kms')
57+
kms = provider.get_session(region=region).client('kms')
5958

6059
# encode str value as an utf-8 bytestring for use with codecs.decode.
6160
value = value.encode('utf-8')

stacker/lookups/handlers/output.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
class OutputLookup(LookupHandler):
1919
@classmethod
20-
def handle(cls, value, context, provider, **kwargs):
20+
def handle(cls, value, context, provider):
2121
"""Fetch an output from the designated stack."""
2222

2323
d = deconstruct(value)

stacker/lookups/handlers/rxref.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
class RxrefLookup(LookupHandler):
2424
@classmethod
25-
def handle(cls, value, provider=None, context=None, **kwargs):
25+
def handle(cls, value, context, provider):
2626
"""Fetch an output from the designated stack.
2727
2828
Args:

0 commit comments

Comments
 (0)