in ccmlib/common.py [0:0]
def make_cassandra_env(install_dir, node_path, update_conf=True):
version_from_build = extension.get_cluster_class(install_dir).getNodeClass().get_version_from_build(node_path=node_path)
for sh_file_path in [ BIN_DIR, TOOLS_BIN_DIR ]:
if is_win() and version_from_build >= '2.1':
sh_file = os.path.join(CASSANDRA_CONF_DIR, CASSANDRA_WIN_ENV)
else:
sh_file = os.path.join(sh_file_path, CASSANDRA_SH)
orig = os.path.join(install_dir, sh_file)
if os.path.exists(orig):
dst = os.path.join(node_path, sh_file)
if not is_win() or not os.path.exists(dst):
os.makedirs(os.path.dirname(dst), exist_ok=True)
shutil.copy(orig, dst)
if update_conf and not (is_win() and version_from_build >= '2.1'):
replacements = [
('CASSANDRA_HOME=', '\tCASSANDRA_HOME=%s' % install_dir),
('CASSANDRA_CONF=', '\tCASSANDRA_CONF=%s' % os.path.join(node_path, 'conf'))
]
replaces_in_file(dst, replacements)
# If a cluster-wide cassandra.in.sh file exists in the parent
# directory, append it to the node specific one:
cluster_sh_file = os.path.join(node_path, os.path.pardir, 'cassandra.in.sh')
if os.path.exists(cluster_sh_file):
append = open(cluster_sh_file).read()
with open(dst, 'a') as f:
f.write('\n\n### Start Cluster wide config ###\n')
f.write(append)
f.write('\n### End Cluster wide config ###\n\n')
env = os.environ.copy()
env['CASSANDRA_INCLUDE'] = os.path.join(dst)
env['MAX_HEAP_SIZE'] = os.environ.get('CCM_MAX_HEAP_SIZE', '500M')
env['HEAP_NEWSIZE'] = os.environ.get('CCM_HEAP_NEWSIZE', '50M')
env['CASSANDRA_HOME'] = install_dir
env['CASSANDRA_CONF'] = os.path.join(node_path, 'conf')
return env