Skip to content

Commit fc662bd

Browse files
committed
Merge 1.4.0 release into master
2 parents f19b02c + ed542da commit fc662bd

File tree

19 files changed

+1424
-1962
lines changed

19 files changed

+1424
-1962
lines changed

CHANGELOG.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
CHANGELOG
33
=========
44

5+
1.4.0
6+
=====
7+
* change:``cfncluster``: `cfncluster stop` will terminate compute
8+
instances, but not stop the master node.
9+
* feature:``cfncluster``: CfnCluster no longer maintains a whitelist
10+
of supported instance types, so new platforms are supported on day
11+
of launch (including C5).
12+
* bugfix:``cfncluster-cookbook``: Support for NVMe instance store
13+
* updates:``ami``: Update all base AMIs to latest patch levels
14+
* bugfix:``cfncluster-node``: Fixed long scaling times with SLURM
15+
516
1.3.2
617
=====
718
* feature:``cfncluster``: Add support for r2.xlarge/t2.2xlarge,

CONTRIBUTORS.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
List of contributors:
22

33
- Dougal Ballantyne - dougalb at amazon dot com
4+
- Brian Barrett - bbarrett at amazon dot com
45
- Adam Boeglin - boeglina at amazon dot com
6+
- Jordan Cherry - cherryj at amazon dot com
7+
- Mohan Gandhi - mohgan at amazon dot com
8+
- Chris Gorski - cgorski at amazon dot com
9+
- Raghu Raja - craghun at amazon dot com
510
- Sean Smith - sensmit at amazon dot com
6-
- Brian Barrett - bbarrett at amazon dot com
711

12+
- Josh Clausman - jclausman at semanticmachines dot com
813
- Kenneth Daily - kmdaily at gmail dot com
14+
- Karl Gutwin - karl dot gutwin at biogen dot com
915
- John Lilley - johnbot at ltech dot edu
1016
- Nelson R Monserrate - MonserrateNelson at JohnDeere dot com
11-
- Karl Gutwin - karl dot gutwin at biogen dot com
12-
- Josh Clausman - jclausman at semanticmachines dot com
17+

README.rst

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@ CfnCluster
55
:target: https://travis-ci.org/awslabs/cfncluster
66
:alt: Build Status
77

8-
CfnCluster ("cloud formation cluster") is a framework that deploys and maintains high performance computing clusters on Amazon Web Services (AWS). Developed by AWS, CfnCluster facilitates both quick start proof of concepts (POCs) and production deployments. CfnCluster supports many different types of clustered applications and can easily be extended to support different frameworks. The CLI is stateless, everything is done using CloudFormation or resources within AWS.
9-
10-
Known Issues
11-
============
12-
13-
* CfnCluster 1.3.2 supports the I3 and F1 instance families. However,
14-
it will not automatically setup a single, RAIDed volume across all
15-
available instance store volumes (like it will for other instance
16-
families which support instance storage). This will be fixed in a
17-
future release.
8+
CfnCluster ("cloud formation cluster") is a framework that deploys and
9+
maintains high performance computing clusters on Amazon Web Services
10+
(AWS). Developed by AWS, CfnCluster facilitates both quick start proof
11+
of concepts (POCs) and production deployments. CfnCluster supports
12+
many different types of clustered applications and can easily be
13+
extended to support different frameworks. The CLI is stateless,
14+
everything is done using CloudFormation or resources within AWS.
1815

1916
Documentation
2017
=============
2118

22-
Documentation is part of the project and is published to - https://cfncluster.readthedocs.io/. Of most interest to new users is the Getting Started Guide - https://cfncluster.readthedocs.io/en/latest/getting_started.html.
19+
Documentation is part of the project and is published to -
20+
https://cfncluster.readthedocs.io/. Of most interest to new users is
21+
the Getting Started Guide -
22+
https://cfncluster.readthedocs.io/en/latest/getting_started.html.
2323

2424
Issues
2525
======

amis.txt

Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,75 @@
11
# centos6
2-
ap-northeast-1: ami-10686677
3-
ap-northeast-2: ami-bb77abd5
4-
ap-south-1: ami-0a710e65
5-
ap-southeast-1: ami-9b1596f8
6-
ap-southeast-2: ami-c7b9afa4
7-
ca-central-1: ami-a6f847c2
8-
eu-central-1: ami-56d67239
9-
eu-west-1: ami-abd5c9cd
10-
eu-west-2: ami-cabcabae
11-
sa-east-1: ami-b491f9d8
12-
us-east-1: ami-a293c9b4
13-
us-east-2: ami-2cd3f549
14-
us-west-1: ami-65c2e005
15-
us-west-2: ami-6bb1b812
2+
ap-northeast-1: ami-aadd65cc
3+
ap-northeast-2: ami-b204a3dc
4+
ap-south-1: ami-6fb5fb00
5+
ap-southeast-1: ami-4dde8d2e
6+
ap-southeast-2: ami-9eda2ffc
7+
ca-central-1: ami-6855ee0c
8+
eu-central-1: ami-4540cc2a
9+
eu-west-1: ami-2e07b457
10+
eu-west-2: ami-2a4d534e
11+
sa-east-1: ami-3c682c50
12+
us-east-1: ami-2d4ed357
13+
us-east-2: ami-816d44e4
14+
us-west-1: ami-e6d4ef86
15+
us-west-2: ami-376db34f
1616
# centos7
17-
ap-northeast-1: ami-0e6b6569
18-
ap-northeast-2: ami-9377abfd
19-
ap-south-1: ami-546d123b
20-
ap-southeast-1: ami-da1596b9
21-
ap-southeast-2: ami-afa6b0cc
22-
ca-central-1: ami-62f94606
23-
eu-central-1: ami-9cd571f3
24-
eu-west-1: ami-6dd8c40b
25-
eu-west-2: ami-9cb9aef8
26-
sa-east-1: ami-5092fa3c
27-
us-east-1: ami-d29cc6c4
28-
us-east-2: ami-c3d2f4a6
29-
us-west-1: ami-17fcde77
30-
us-west-2: ami-22b2bb5b
17+
ap-northeast-1: ami-73d96115
18+
ap-northeast-2: ami-9107a0ff
19+
ap-south-1: ami-33b7f95c
20+
ap-southeast-1: ami-d8dd8ebb
21+
ap-southeast-2: ami-79c6331b
22+
ca-central-1: ami-3656ed52
23+
eu-central-1: ami-d945c9b6
24+
eu-west-1: ami-aa00b3d3
25+
eu-west-2: ami-984d53fc
26+
sa-east-1: ami-23682c4f
27+
us-east-1: ami-c24ed3b8
28+
us-east-2: ami-bb6c45de
29+
us-west-1: ami-4dd6ed2d
30+
us-west-2: ami-b370aecb
3131
# alinux
32-
ap-northeast-1: ami-586b653f
33-
ap-northeast-2: ami-ea71ad84
34-
ap-south-1: ami-1f720d70
35-
ap-southeast-1: ami-1f1b987c
36-
ap-southeast-2: ami-56b9af35
37-
ca-central-1: ami-65f94601
38-
eu-central-1: ami-7fd17510
39-
eu-west-1: ami-6ddac60b
40-
eu-west-2: ami-f1bbac95
41-
sa-east-1: ami-a990f8c5
42-
us-east-1: ami-2492c832
43-
us-east-2: ami-a6d3f5c3
44-
us-west-1: ami-39c2e059
45-
us-west-2: ami-f4b0b98d
32+
ap-northeast-1: ami-31dd6557
33+
ap-northeast-2: ami-dc07a0b2
34+
ap-south-1: ami-32b7f95d
35+
ap-southeast-1: ami-7edf8c1d
36+
ap-southeast-2: ami-c3c431a1
37+
ca-central-1: ami-8051eae4
38+
eu-central-1: ami-5a4bc735
39+
eu-west-1: ami-ac00b3d5
40+
eu-west-2: ami-044c5260
41+
sa-east-1: ami-aa692dc6
42+
us-east-1: ami-c652cfbc
43+
us-east-2: ami-ed6f4688
44+
us-west-1: ami-10d7ec70
45+
us-west-2: ami-4f6db337
4646
# ubuntu1404
47-
ap-northeast-1: ami-466c6221
48-
ap-northeast-2: ami-2877ab46
49-
ap-south-1: ami-11700f7e
50-
ap-southeast-1: ami-be1497dd
51-
ap-southeast-2: ami-37a4b254
52-
ca-central-1: ami-eefc438a
53-
eu-central-1: ami-bcd773d3
54-
eu-west-1: ami-83d4c8e5
55-
eu-west-2: ami-5cb9ae38
56-
sa-east-1: ami-6d91f901
57-
us-east-1: ami-a192c8b7
58-
us-east-2: ami-e2d3f587
59-
us-west-1: ami-b5c2e0d5
60-
us-west-2: ami-f5b0b98c
47+
ap-northeast-1: ami-12da6274
48+
ap-northeast-2: ami-4c05a222
49+
ap-south-1: ami-16b7f979
50+
ap-southeast-1: ami-cbde8da8
51+
ap-southeast-2: ami-d3c530b1
52+
ca-central-1: ami-0851ea6c
53+
eu-central-1: ami-bd4ac6d2
54+
eu-west-1: ami-2e06b557
55+
eu-west-2: ami-cf4d53ab
56+
sa-east-1: ami-f36a2e9f
57+
us-east-1: ami-3d49d447
58+
us-east-2: ami-8f6d44ea
59+
us-west-1: ami-bcd4efdc
60+
us-west-2: ami-726fb10a
6161
# ubuntu1604
62-
ap-northeast-1: ami-ce6c62a9
63-
ap-northeast-2: ami-d072aebe
64-
ap-south-1: ami-446f102b
65-
ap-southeast-1: ami-951596f6
66-
ap-southeast-2: ami-cca6b0af
67-
ca-central-1: ami-a7fa45c3
68-
eu-central-1: ami-40d6722f
69-
eu-west-1: ami-e6d5c980
70-
eu-west-2: ami-5eb9ae3a
71-
sa-east-1: ami-df90f8b3
72-
us-east-1: ami-8c9fc59a
73-
us-east-2: ami-54d5f331
74-
us-west-1: ami-0dfddf6d
75-
us-west-2: ami-c4b1b8bd
62+
ap-northeast-1: ami-b2da62d4
63+
ap-northeast-2: ami-0a05a264
64+
ap-south-1: ami-11b4fa7e
65+
ap-southeast-1: ami-f8df8c9b
66+
ap-southeast-2: ami-15c73277
67+
ca-central-1: ami-3156ed55
68+
eu-central-1: ami-dd4bc7b2
69+
eu-west-1: ami-9802b1e1
70+
eu-west-2: ami-c14f51a5
71+
sa-east-1: ami-34692d58
72+
us-east-1: ami-6353ce19
73+
us-east-2: ami-2d6e4748
74+
us-west-1: ami-68d5ee08
75+
us-west-2: ami-5e6cb226

cli/cfncluster/cfncluster.py

Lines changed: 33 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424

2525
from . import cfnconfig
2626

27-
logger = logging.getLogger('cfncluster.cfncluster')
28-
2927
def version(args):
3028
config = cfnconfig.CfnClusterConfig(args)
3129
print(config.version)
3230

3331
def create(args):
34-
print('Starting: %s' % (args.cluster_name))
32+
logger = logging.getLogger('cfncluster.cfncluster.create')
33+
logger.info('Beginning cluster creation for cluster: %s' % (args.cluster_name))
3534

35+
logger.debug('Building cluster config based on args')
3636
# Build the config based on args
3737
config = cfnconfig.CfnClusterConfig(args)
3838

@@ -44,6 +44,7 @@ def create(args):
4444
except ValueError:
4545
pass
4646

47+
4748
# Get the MasterSubnetId and use it to determine AvailabilityZone
4849
try:
4950
i = [p[0] for p in config.parameters].index('MasterSubnetId')
@@ -52,22 +53,36 @@ def create(args):
5253
vpcconn = boto.vpc.connect_to_region(config.region,aws_access_key_id=config.aws_access_key_id,
5354
aws_secret_access_key=config.aws_secret_access_key)
5455
availability_zone = str(vpcconn.get_all_subnets(subnet_ids=master_subnet_id)[0].availability_zone)
55-
except boto.exception.BotoServerError as e:
56-
print(e.message)
56+
except Exception as e:
57+
logger.critical(e.message)
5758
sys.exit(1)
5859
config.parameters.append(('AvailabilityZone', availability_zone))
5960
except ValueError:
6061
pass
6162

63+
64+
6265
capabilities = ["CAPABILITY_IAM"]
63-
cfnconn = boto.cloudformation.connect_to_region(config.region,aws_access_key_id=config.aws_access_key_id,
64-
aws_secret_access_key=config.aws_secret_access_key)
6566
try:
66-
logger.debug((config.template_url, config.parameters))
67-
stack = cfnconn.create_stack(('cfncluster-' + args.cluster_name),template_url=config.template_url,
67+
cfnconn = boto.cloudformation.connect_to_region(config.region,aws_access_key_id=config.aws_access_key_id,
68+
aws_secret_access_key=config.aws_secret_access_key)
69+
except Exception as e:
70+
logger.critical(e.message)
71+
sys.exit(1)
72+
73+
74+
75+
76+
try:
77+
stack_name = 'cfncluster-' + args.cluster_name
78+
logger.info("Creating stack named: " + stack_name)
79+
stack = cfnconn.create_stack(stack_name,template_url=config.template_url,
6880
parameters=config.parameters, capabilities=capabilities,
6981
disable_rollback=args.norollback, tags=config.tags)
82+
logger.info("foo")
7083
status = cfnconn.describe_stacks(stack)[0].stack_status
84+
85+
7186
if not args.nowait:
7287
while status == 'CREATE_IN_PROGRESS':
7388
status = cfnconn.describe_stacks(stack)[0].stack_status
@@ -82,12 +97,13 @@ def create(args):
8297
else:
8398
status = cfnconn.describe_stacks(stack)[0].stack_status
8499
print('Status: %s' % status)
85-
except boto.exception.BotoServerError as e:
86-
print(e.message)
87-
sys.exit(1)
88100
except KeyboardInterrupt:
89101
print('\nExiting...')
90102
sys.exit(0)
103+
except Exception as e:
104+
logger.critical(e.message)
105+
sys.exit(1)
106+
91107

92108
def update(args):
93109
print('Updating: %s' % (args.cluster_name))
@@ -152,27 +168,11 @@ def update(args):
152168
sys.exit(0)
153169

154170
def start(args):
155-
# 1) Start master server
156-
# 2) Set resource limits on compute fleet to min/max/desired = 0/max/0
157-
print('Starting: %s' % args.cluster_name)
171+
# Set resource limits on compute fleet to min/max/desired = 0/max/0
172+
print('Starting compute fleet : %s' % args.cluster_name)
158173
stack_name = ('cfncluster-' + args.cluster_name)
159174
config = cfnconfig.CfnClusterConfig(args)
160-
master_server_id = get_master_server_id(stack_name, config)
161-
ec2conn = boto.ec2.connect_to_region(config.region,aws_access_key_id=config.aws_access_key_id,
162-
aws_secret_access_key=config.aws_secret_access_key)
163-
try:
164-
response = ec2conn.start_instances(master_server_id)
165-
except boto.exception.BotoServerError as e:
166-
if e.message.endswith("does not exist"):
167-
print(e.message)
168-
sys.stdout.flush()
169-
sys.exit(0)
170-
else:
171-
raise e
172-
except KeyboardInterrupt:
173-
print('\nExiting...')
174-
sys.exit(0)
175-
175+
176176
# Set asg limits
177177
max_queue_size = [param[1] for param in config.parameters if param[0] == 'MaxQueueSize']
178178
max_queue_size = max_queue_size[0] if len(max_queue_size) > 0 else 10
@@ -184,40 +184,16 @@ def start(args):
184184
asg = get_asg(stack_name=stack_name, config=config)
185185
set_asg_limits(asg=asg, min=min_queue_size, max=max_queue_size, desired=desired_queue_size)
186186

187-
# Poll for status
188-
poll_master_server_state(stack_name, config)
189-
190187
def stop(args):
191-
# 1) Set resource limits on compute fleet to min/max/desired = 0/0/0
192-
# 2) Stop master server
193-
print('Stopping: %s' % args.cluster_name)
188+
# Set resource limits on compute fleet to min/max/desired = 0/0/0
189+
print('Stopping compute fleet : %s' % args.cluster_name)
194190
stack_name = ('cfncluster-' + args.cluster_name)
195191
config = cfnconfig.CfnClusterConfig(args)
196192

197193
# Set Resource limits
198194
asg = get_asg(stack_name=stack_name, config=config)
199195
set_asg_limits(asg=asg, min=0, max=0, desired=0)
200196

201-
# Stop master Server
202-
master_server_id = get_master_server_id(stack_name, config)
203-
ec2conn = boto.ec2.connect_to_region(config.region,aws_access_key_id=config.aws_access_key_id,
204-
aws_secret_access_key=config.aws_secret_access_key)
205-
try:
206-
response = ec2conn.stop_instances(master_server_id)
207-
except boto.exception.BotoServerError as e:
208-
if e.message.endswith("does not exist"):
209-
print(e.message)
210-
sys.stdout.flush()
211-
sys.exit(0)
212-
else:
213-
raise e
214-
except KeyboardInterrupt:
215-
print('\nExiting...')
216-
sys.exit(0)
217-
218-
# Poll for status
219-
poll_master_server_state(stack_name, config)
220-
221197
def list(args):
222198
config = cfnconfig.CfnClusterConfig(args)
223199
cfnconn = boto.cloudformation.connect_to_region(config.region,aws_access_key_id=config.aws_access_key_id,

cli/cfncluster/cfnconfig.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def __init__(self, args):
178178
compute_subnet_cidr=('ComputeSubnetCidr',None),
179179
compute_subnet_id=('ComputeSubnetId', 'VPCSubnet'), use_public_ips=('UsePublicIps',
180180
None),
181-
ssh_from=('AccessFrom', None), access_from=('AccessFrom', None),
181+
ssh_from=('AccessFrom', None), access_from=('AccessFrom', None),
182182
additional_sg=('AdditionalSG','VPCSecurityGroup'),
183183
vpc_security_group_id=('VPCSecurityGroupId','VPCSecurityGroup')
184184
)
@@ -321,8 +321,8 @@ def __init__(self, args):
321321
# Handle extra parameters supplied on command-line
322322
try:
323323
if self.args.extra_parameters is not None:
324-
self.parameters = dict(self.parameters)
325-
self.__temp_dict = dict(list(self.parameters.items()) + list(self.args.extra_parameters.items()))
324+
self.__temp_dict = dict(self.parameters)
325+
self.__temp_dict.append(dict(self.args.extra_parameters))
326326
self.__dictlist = []
327327
for key, value in self.__temp_dict.items():
328328
temp = [str(key),str(value)]

0 commit comments

Comments
 (0)