Skip to content

Commit c7c9263

Browse files
committed
closes #11, dev reqs file is updated, fixed some code styling and added a setup.cfg
1 parent 3f282cd commit c7c9263

File tree

5 files changed

+61
-74
lines changed

5 files changed

+61
-74
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ branches:
1313
install:
1414
- pip install -r requirements-dev.txt
1515
- pip install coveralls
16-
script: py.test --cov ecs_deploy.py --cov-report term-missing --pep8
16+
script: py.test --cov ecs_deploy.py --cov-report term-missing --pep8 --flakes
1717
after_success:
1818
- coveralls
1919
notifications:

ecs_deploy.py

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"""
77

88
from __future__ import print_function
9+
910
import sys
1011
import time
1112
import 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

requirements-dev.txt

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,41 @@
11
apipkg==1.4
2-
boto==2.42.0
2+
appdirs==1.4.3
3+
boto==2.47.0
34
boto3==1.4.0
45
botocore==1.4.56
5-
click==6.6
6-
coverage==4.2
6+
certifi==2017.4.17
7+
chardet==3.0.3
8+
cookies==2.2.1
9+
coverage==4.4.1
10+
dicttoxml==1.7.4
711
docutils==0.12
812
execnet==1.4.1
9-
Flask==0.11.1
10-
freezegun==0.3.7
11-
httpretty==0.8.10
12-
itsdangerous==0.24
13-
Jinja2==2.8
13+
funcsigs==1.0.2
14+
futures==3.0.5
15+
idna==2.5
16+
Jinja2==2.9.6
1417
jmespath==0.9.0
15-
MarkupSafe==0.23
18+
MarkupSafe==1.0
1619
mock==2.0.0
17-
moto==0.4.27
18-
pbr==1.10.0
20+
moto==1.0.0
21+
packaging==16.8
22+
pbr==3.0.1
1923
pep8==1.7.0
20-
py==1.4.31
21-
pytest==3.0.2
24+
py==1.4.33
25+
pyaml==16.12.2
26+
pyflakes==1.5.0
27+
pyparsing==2.2.0
28+
pytest==3.1.0
2229
pytest-cache==1.0
23-
pytest-cov==2.3.1
30+
pytest-cov==2.5.1
31+
pytest-flakes==2.0.0
2432
pytest-pep8==1.0.6
2533
python-dateutil==2.5.3
26-
requests==2.11.1
34+
pytz==2017.2
35+
PyYAML==3.12
36+
requests==2.16.4
2737
s3transfer==0.1.4
2838
six==1.10.0
29-
sure==1.4.0
30-
Werkzeug==0.11.11
31-
xmltodict==0.10.2
39+
urllib3==1.21.1
40+
Werkzeug==0.12.2
41+
xmltodict==0.11.0

setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ def run_tests(self):
3333
import pytest
3434
from pkg_resources import normalize_path, _namespace_packages
3535

36-
if sys.version_info >= (3,) and getattr(self.distribution,
37-
'use_2to3', False):
36+
if sys.version_info >= (3,) and getattr(self.distribution, 'use_2to3', False):
3837
module = self.test_package_name
3938
if module in _namespace_packages:
4039
del_modules = []

tests/test_script.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import pytest
21
import mock
32
import boto3
43
from moto import mock_ecs
@@ -20,8 +19,7 @@ def setUp(self):
2019

2120
mock_task = self.client.register_task_definition(
2221
family='mock_task',
23-
taskRoleArn='arn:aws:ecs:us-east-1:999999999999:task-definition/ \
24-
mock_task:99',
22+
taskRoleArn='arn:aws:ecs:us-east-1:999999999999:task-definition/mock_task:99',
2523
networkMode='none',
2624
containerDefinitions=[
2725
{
@@ -113,14 +111,13 @@ def setUp(self):
113111
}
114112
},
115113
]
116-
)
114+
)
117115

118-
mock_service = self.client.create_service(cluster='mock_cluster',
119-
serviceName='mock_task' +
120-
'-service',
121-
taskDefinition='mock_task',
122-
desiredCount=1
123-
)
116+
mock_service = self.client.create_service(
117+
cluster='mock_cluster',
118+
serviceName='mock_task-service',
119+
taskDefinition='mock_task',
120+
desiredCount=1)
124121

125122
self.mock_cli.args = {
126123
'cluster': mock_cluster['cluster']['clusterName'],
@@ -359,11 +356,11 @@ def test_client_kwargs_with_describe_tasks(self):
359356
mock_cli.args['cluster']
360357
assert mock_kwargs['tasks'] == mock_list_tasks_response['taskArns']
361358

362-
def test_client_kwargs_with_describe_tasks(self):
359+
def test_client_kwargs_with_list_services_deux(self):
363360
mock_cli, client = self.setUp()
364361
mock_cli.client = client
365362

366-
with mock.patch.object(client, 'list_services',
367-
return_value={'key': 'value'}) as mock_client:
363+
with mock.patch.object(
364+
client, 'list_services', return_value={'key': 'value'}) as mock_client:
368365
mock_cli.client_fn('list_services')
369366
mock_client.assert_called_once

0 commit comments

Comments
 (0)