6
6
"""
7
7
8
8
from __future__ import print_function
9
+
9
10
import sys
10
11
import time
11
12
import argparse
@@ -22,19 +23,17 @@ def __init__(self):
22
23
try :
23
24
# optional aws credentials overrides
24
25
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' )
29
28
credentials = self ._arg_kwargs (credentials , 'aws_region' , 'region' )
29
+
30
30
# init boto3 ecs client
31
31
self .client = boto3 .client ('ecs' , ** credentials )
32
32
except ClientError as err :
33
33
print ('Failed to create boto3 client.\n %s' % err )
34
34
sys .exit (1 )
35
35
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' )):
38
37
print ('Either task-definition or service-name must be provided.' )
39
38
sys .exit (1 )
40
39
@@ -43,31 +42,30 @@ def __init__(self):
43
42
44
43
def _init_parser (self ):
45
44
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>]' )
51
46
52
47
parser .add_argument (
53
48
'-n' ,
54
49
'--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)' )
57
51
58
52
parser .add_argument (
59
53
'-d' ,
60
54
'--task-definition' ,
61
55
help = 'Name of task definition to deploy (either task-definition \
62
56
or service-name is required)' )
63
57
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' )
65
64
66
65
parser .add_argument (
67
66
'-k' ,
68
67
'--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' )
71
69
72
70
parser .add_argument (
73
71
'-s' ,
@@ -78,11 +76,9 @@ def _init_parser(self):
78
76
parser .add_argument (
79
77
'-r' ,
80
78
'--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' )
83
80
84
81
# REQUIRED ARGS : MAYBE NOT REQUIRED
85
-
86
82
parser .add_argument (
87
83
'-p' ,
88
84
'--profile' ,
@@ -94,14 +90,6 @@ def _init_parser(self):
94
90
action = 'store_true' ,
95
91
help = 'Use the IAM role associated with this instance' )
96
92
97
- # REQUIRED ARGS
98
-
99
- parser .add_argument (
100
- '-c' ,
101
- '--cluster' ,
102
- required = True ,
103
- help = 'Name of ECS cluster' )
104
-
105
93
parser .add_argument (
106
94
'-i' ,
107
95
'--image' ,
@@ -112,7 +100,6 @@ def _init_parser(self):
112
100
private.registry.com:8000/repo/image:tag' )
113
101
114
102
# OPTIONAL ARGUMENTS
115
-
116
103
parser .add_argument (
117
104
'-D' ,
118
105
'--desired-count' ,
@@ -166,10 +153,8 @@ def _run_parser(self):
166
153
self .task_definition_name = self ._task_definition_name ()
167
154
self .service_name = self ._service_name ()
168
155
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' ]
173
158
174
159
if self .task_definition :
175
160
if not self .client_fn ('update_service' ):
@@ -181,12 +166,10 @@ def _run_parser(self):
181
166
updated = False
182
167
running_tasks = self .client_fn ('describe_tasks' )['tasks' ]
183
168
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' ]:
187
170
updated = True
188
171
if updated or time .time () > timeout :
189
- sys .exit (1 )
172
+ sys .exit (0 )
190
173
time .sleep (1 )
191
174
192
175
else :
@@ -233,12 +216,10 @@ def client_kwargs(self, fn):
233
216
234
217
elif fn == 'register_task_definition' :
235
218
kwargs ['family' ] = self .task_definition ['family' ]
236
- kwargs ['containerDefinitions' ] = \
237
- self .task_definition ['containerDefinitions' ]
219
+ kwargs ['containerDefinitions' ] = self .task_definition ['containerDefinitions' ]
238
220
# optional kwargs from args
239
221
if self .args .get ('image' ):
240
- kwargs ['containerDefinitions' ][0 ]['image' ] = \
241
- self .args .get ('image' )
222
+ kwargs ['containerDefinitions' ][0 ]['image' ] = self .args .get ('image' )
242
223
243
224
elif fn == 'update_service' :
244
225
kwargs ['cluster' ] = self .cluster
0 commit comments