66"""
77
88from __future__ import print_function
9+
910import sys
1011import time
1112import argparse
@@ -22,19 +23,17 @@ def __init__(self):
2223 try :
2324 # optional aws credentials overrides
2425 credentials = {}
25- credentials = self ._arg_kwargs (credentials , 'aws_access_key' ,
26- 'aws_access_key_id' )
27- credentials = self ._arg_kwargs (credentials , 'aws_secret_key' ,
28- 'aws_secret_access_key' )
26+ credentials = self ._arg_kwargs (credentials , 'aws_access_key' , 'aws_access_key_id' )
27+ credentials = self ._arg_kwargs (credentials , 'aws_secret_key' , 'aws_secret_access_key' )
2928 credentials = self ._arg_kwargs (credentials , 'aws_region' , 'region' )
29+
3030 # init boto3 ecs client
3131 self .client = boto3 .client ('ecs' , ** credentials )
3232 except ClientError as err :
3333 print ('Failed to create boto3 client.\n %s' % err )
3434 sys .exit (1 )
3535
36- if not (self .args .get ('task_definition' ) or
37- self .args .get ('service_name' )):
36+ if not (self .args .get ('task_definition' ) or self .args .get ('service_name' )):
3837 print ('Either task-definition or service-name must be provided.' )
3938 sys .exit (1 )
4039
@@ -43,31 +42,30 @@ def __init__(self):
4342
4443 def _init_parser (self ):
4544 parser = argparse .ArgumentParser (
46- description = 'AWS ECS Deployment Script' ,
47- usage = '''ecs-deploy.py [<args>]
48- ''' )
49-
50- # REQUIRED ARGS : AT LEAST ONE
45+ description = 'AWS ECS Deployment Script' , usage = 'ecs-deploy.py [<args>]' )
5146
5247 parser .add_argument (
5348 '-n' ,
5449 '--service-name' ,
55- help = 'Name of service to deploy (either service-name or \
56- task-definition is required)' )
50+ help = 'Name of service to deploy (either service-name or task-definition is required)' )
5751
5852 parser .add_argument (
5953 '-d' ,
6054 '--task-definition' ,
6155 help = 'Name of task definition to deploy (either task-definition \
6256 or service-name is required)' )
6357
64- # REQUIRED ARGS : AT LEAST SOMEWHERE
58+ # REQUIRED ARGUMENTS
59+ parser .add_argument (
60+ '-c' ,
61+ '--cluster' ,
62+ required = True ,
63+ help = 'Name of ECS cluster' )
6564
6665 parser .add_argument (
6766 '-k' ,
6867 '--aws-access-key' ,
69- help = 'AWS Access Key ID. May also be set as environment variable \
70- AWS_ACCESS_KEY_ID' )
68+ help = 'AWS Access Key ID. May also be set as environment variable AWS_ACCESS_KEY_ID' )
7169
7270 parser .add_argument (
7371 '-s' ,
@@ -78,11 +76,9 @@ def _init_parser(self):
7876 parser .add_argument (
7977 '-r' ,
8078 '--region' ,
81- help = 'AWS Region Name. May also be set as environment variable \
82- AWS_DEFAULT_REGION' )
79+ help = 'AWS Region Name. May also be set as environment variable AWS_DEFAULT_REGION' )
8380
8481 # REQUIRED ARGS : MAYBE NOT REQUIRED
85-
8682 parser .add_argument (
8783 '-p' ,
8884 '--profile' ,
@@ -94,14 +90,6 @@ def _init_parser(self):
9490 action = 'store_true' ,
9591 help = 'Use the IAM role associated with this instance' )
9692
97- # REQUIRED ARGS
98-
99- parser .add_argument (
100- '-c' ,
101- '--cluster' ,
102- required = True ,
103- help = 'Name of ECS cluster' )
104-
10593 parser .add_argument (
10694 '-i' ,
10795 '--image' ,
@@ -112,7 +100,6 @@ def _init_parser(self):
112100 private.registry.com:8000/repo/image:tag' )
113101
114102 # OPTIONAL ARGUMENTS
115-
116103 parser .add_argument (
117104 '-D' ,
118105 '--desired-count' ,
@@ -166,10 +153,8 @@ def _run_parser(self):
166153 self .task_definition_name = self ._task_definition_name ()
167154 self .service_name = self ._service_name ()
168155
169- self .task_definition = \
170- self .client_fn ('describe_task_definition' )['taskDefinition' ]
171- self .new_task_definition = \
172- self .client_fn ('register_task_definition' )['taskDefinition' ]
156+ self .task_definition = self .client_fn ('describe_task_definition' )['taskDefinition' ]
157+ self .new_task_definition = self .client_fn ('register_task_definition' )['taskDefinition' ]
173158
174159 if self .task_definition :
175160 if not self .client_fn ('update_service' ):
@@ -181,12 +166,10 @@ def _run_parser(self):
181166 updated = False
182167 running_tasks = self .client_fn ('describe_tasks' )['tasks' ]
183168 for task in running_tasks :
184- if task ['taskDefinitionArn' ] == \
185- self .new_task_definition ['taskDefinitionArn' ]:
186- print ('SUCCESS' )
169+ if task ['taskDefinitionArn' ] == self .new_task_definition ['taskDefinitionArn' ]:
187170 updated = True
188171 if updated or time .time () > timeout :
189- sys .exit (1 )
172+ sys .exit (0 )
190173 time .sleep (1 )
191174
192175 else :
@@ -233,12 +216,10 @@ def client_kwargs(self, fn):
233216
234217 elif fn == 'register_task_definition' :
235218 kwargs ['family' ] = self .task_definition ['family' ]
236- kwargs ['containerDefinitions' ] = \
237- self .task_definition ['containerDefinitions' ]
219+ kwargs ['containerDefinitions' ] = self .task_definition ['containerDefinitions' ]
238220 # optional kwargs from args
239221 if self .args .get ('image' ):
240- kwargs ['containerDefinitions' ][0 ]['image' ] = \
241- self .args .get ('image' )
222+ kwargs ['containerDefinitions' ][0 ]['image' ] = self .args .get ('image' )
242223
243224 elif fn == 'update_service' :
244225 kwargs ['cluster' ] = self .cluster
0 commit comments