Skip to content

Commit b7c9cc8

Browse files
author
vroyer
committed
Add rack support when adding a node
ccm add --data-center DC1 --rack r1 ....
1 parent 0e5a723 commit b7c9cc8

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

ccmlib/cluster.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -215,14 +215,15 @@ def version(self):
215215
def cassandra_version(self):
216216
return self.version()
217217

218-
def add(self, node, is_seed, data_center=None):
218+
def add(self, node, is_seed, data_center=None, rack=None):
219219
if node.name in self.nodes:
220220
raise common.ArgumentError('Cannot create existing node %s' % node.name)
221221
self.nodes[node.name] = node
222222
if is_seed:
223223
self.seeds.append(node)
224224
self._update_config()
225225
node.data_center = data_center
226+
node.rack = rack
226227
node.set_log_level(self.__log_level)
227228

228229
for debug_class in self._debug:
@@ -620,17 +621,9 @@ def __update_pids(self, started):
620621
node._update_pid(p)
621622

622623
def __update_topology_files(self):
623-
dcs = [('default', 'dc1')]
624624
for node in self.nodelist():
625-
if node.data_center is not None:
626-
dcs.append((node.address(), node.data_center))
627-
628-
content = ""
629-
for k, v in dcs:
630-
content = "%s%s=%s:r1\n" % (content, k, v)
631-
632-
for node in self.nodelist():
633-
topology_file = os.path.join(node.get_conf_dir(), 'cassandra-topology.properties')
625+
content = "dc=%s\nrack=%s\n" % (node.data_center, node.rack)
626+
topology_file = os.path.join(node.get_conf_dir(), 'cassandra-rackdc.properties')
634627
with open(topology_file, 'w') as f:
635628
f.write(content)
636629

ccmlib/cmds/cluster_cmds.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ class ClusterAddCmd(Cmd):
204204
(['-r', '--remote-debug-port'], {'type': "string", 'dest': "remote_debug_port", 'help': "Remote Debugging Port for the node", 'default': "2000"}),
205205
(['-n', '--token'], {'type': "string", 'dest': "initial_token", 'help': "Initial token for the node", 'default': None}),
206206
(['-d', '--data-center'], {'type': "string", 'dest': "data_center", 'help': "Datacenter name this node is part of", 'default': None}),
207+
(['-k', '--rack'], {'type': "string", 'dest': "rack", 'help': "Rack name this node is part of", 'default': 'r1'}),
207208
(['--dse'], {'action': "store_true", 'dest': "dse_node", 'help': "Add node to DSE Cluster", 'default': False}),
208209
]
209210
descr_text = "Add a new node to the current cluster"
@@ -253,7 +254,7 @@ def run(self):
253254
node = DseNode(self.name, self.cluster, self.options.bootstrap, self.thrift, self.storage, self.jmx_port, self.remote_debug_port, self.initial_token, binary_interface=self.binary)
254255
else:
255256
node = Node(self.name, self.cluster, self.options.bootstrap, self.thrift, self.storage, self.jmx_port, self.remote_debug_port, self.initial_token, binary_interface=self.binary)
256-
self.cluster.add(node, self.options.is_seed, self.options.data_center)
257+
self.cluster.add(node, self.options.is_seed, self.options.data_center, self.options.rack)
257258
except common.ArgumentError as e:
258259
print_(str(e), file=sys.stderr)
259260
exit(1)
@@ -867,4 +868,3 @@ def run(self):
867868
except Exception as e:
868869
print_(str(e), file=sys.stderr)
869870
exit(1)
870-

ccmlib/node.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ def __init__(self,
123123
self.initial_token = initial_token
124124
self.pid = None
125125
self.data_center = None
126+
self.rack = 'r1'
126127
self.workloads = []
127128
self._dse_config_options = {}
128129
self.__config_options = {}
@@ -190,6 +191,8 @@ def load(path, name, cluster):
190191
node.__environment_variables = data['environment_variables']
191192
if 'data_center' in data:
192193
node.data_center = data['data_center']
194+
if 'rack' in data:
195+
node.rack = data['rack']
193196
if 'workloads' in data:
194197
node.workloads = data['workloads']
195198
return node
@@ -1542,6 +1545,8 @@ def _update_config(self):
15421545
values['byteman_port'] = self.byteman_port
15431546
if self.data_center:
15441547
values['data_center'] = self.data_center
1548+
if self.rack:
1549+
values['rack'] = self.rack
15451550
if self.workloads is not None:
15461551
values['workloads'] = self.workloads
15471552
with open(filename, 'w') as f:

0 commit comments

Comments
 (0)