1
2
3 from starcluster.logger import log
4
5 from completers import ClusterCompleter
6
7
9 """
10 stop [options] <cluster_tag> ...
11
12 Stop a running cluster
13
14 Example:
15
16 $ starcluster stop mycluster
17
18 This will stop a currently running cluster tagged "mycluster"
19
20 If the cluster uses EBS-backed instances, all nodes will be put into
21 a 'stopped' state preserving the local disks. You can then use the start
22 command to resume the cluster later on without losing data.
23
24 If the cluster uses instance-store (S3) instances then all nodes wil be
25 terminated and the cluster's security group will be removed. This is the
26 same behavior as the 'terminate' command.
27 """
28 names = ['stop']
29
31 parser.add_option("-c", "--confirm", dest="confirm",
32 action="store_true", default=False,
33 help="Do not prompt for confirmation, " + \
34 "just shutdown the cluster")
35
37 if not args:
38 self.parser.error("please specify a cluster")
39 for cluster_name in args:
40 cl = self.cm.get_cluster(cluster_name)
41 is_ebs = cl.is_ebs_cluster()
42 if not self.opts.confirm:
43 action = "Terminate"
44 if is_ebs:
45 action = "Stop EBS"
46 if cl.spot_bid:
47 action = "Terminate Spot EBS"
48 resp = raw_input("%s cluster %s (y/n)? " %
49 (action, cluster_name))
50 if resp not in ['y', 'Y', 'yes']:
51 log.info("Aborting...")
52 continue
53 cl.stop_cluster()
54 if is_ebs and cl._nodes:
55 log.warn(("All EBS-backed nodes in '%s' are now in a " + \
56 "'stopped' state") % cluster_name)
57 log.warn("You can restart this cluster by passing -x " + \
58 "to the 'start' command")
59 log.warn("Use the 'terminate' command to *completely* " + \
60 "terminate this cluster")
61 log.warn("NOTE: Unless EBS-backed nodes are in a " + \
62 "'running' or 'terminated'")
63 log.warn("state, you are charged for the EBS volumes " + \
64 "backing the nodes.")
65