Skip to content

Commit 4f4d756

Browse files
committed
allow reloading plugins from config
1 parent b4d1ad4 commit 4f4d756

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

starcluster/cluster.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,13 @@ def add_node(self, cluster_name, alias=None, no_create=False,
178178

179179
def add_nodes(self, cluster_name, num_nodes, aliases=None, no_create=False,
180180
image_id=None, instance_type=None, zone=None,
181-
placement_group=None, spot_bid=None):
181+
placement_group=None, spot_bid=None, plugins=None):
182182
"""
183183
Add one or more nodes to cluster
184184
"""
185185
cl = self.get_cluster(cluster_name)
186+
if plugins is not None:
187+
cl.plugins = plugins
186188
return cl.add_nodes(num_nodes, aliases=aliases, image_id=image_id,
187189
instance_type=instance_type, zone=zone,
188190
placement_group=placement_group, spot_bid=spot_bid,

starcluster/commands/addnode.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from starcluster import static
1919
from completers import ClusterCompleter
20+
from starcluster import completion
2021

2122

2223
class CmdAddNode(ClusterCompleter):
@@ -70,6 +71,9 @@ class CmdAddNode(ClusterCompleter):
7071
tag = None
7172

7273
def addopts(self, parser):
74+
templates = []
75+
if self.cfg:
76+
templates = self.cfg.clusters.keys()
7377
parser.add_option(
7478
"-a", "--alias", dest="alias", action="append", type="string",
7579
default=[], help="alias to give to the new node "
@@ -97,6 +101,15 @@ def addopts(self, parser):
97101
"-x", "--no-create", dest="no_create", action="store_true",
98102
default=False, help="do not launch new EC2 instances when "
99103
"adding nodes (use existing instances instead)")
104+
parser.add_option(
105+
"--reload-plugins", dest="reload_plugins", action="store_true",
106+
default=False, help="reload_plugins from config")
107+
opt = parser.add_option("-c", "--cluster-template", action="store",
108+
dest="cluster_template", choices=templates,
109+
default=None, help="cluster template to use "
110+
"from the config file")
111+
if completion:
112+
opt.completer = completion.ListCompleter(opt.choices)
100113

101114
def execute(self, args):
102115
if len(args) != 1:
@@ -121,8 +134,14 @@ def execute(self, args):
121134
if not self.opts.alias and self.opts.no_create:
122135
self.parser.error("you must specify one or more node aliases via "
123136
"the -a option when using -x")
137+
if self.opts.reload_plugins:
138+
template = self.opts.cluster_template or self.cm.get_default_cluster_template()
139+
plugins = self.cm.get_cluster_template(template, tag).plugins
140+
else:
141+
plugins = None
142+
124143
self.cm.add_nodes(tag, num_nodes, aliases=aliases,
125144
image_id=self.opts.image_id,
126145
instance_type=self.opts.instance_type,
127146
zone=self.opts.zone, spot_bid=self.opts.spot_bid,
128-
no_create=self.opts.no_create)
147+
no_create=self.opts.no_create, plugins=plugins)

0 commit comments

Comments
 (0)