def __init__(self, path, name, partitioner=None, cassandra_dir=None, create_directory=True, cassandra_version=None, verbose=False): self.name = name self.nodes = {} self.seeds = [] self.partitioner = partitioner self._config_options = {} self.__log_level = "INFO" self.__path = path self.__version = None if create_directory: # we create the dir before potentially downloading to throw an error sooner if need be os.mkdir(self.get_path()) try: if cassandra_version is None: # at this point, cassandra_dir should always not be None, but # we keep this for backward compatibility (in loading old cluster) if cassandra_dir is not None: if common.is_win(): self.__cassandra_dir = cassandra_dir else: self.__cassandra_dir = os.path.abspath(cassandra_dir) self.__version = self.__get_version_from_build() else: dir, v = repository.setup(cassandra_version, verbose) self.__cassandra_dir = dir self.__version = v if v is not None else self.__get_version_from_build() if create_directory: common.validate_cassandra_dir(self.__cassandra_dir) self.__update_config() except: if create_directory: shutil.rmtree(self.get_path()) raise
def set_install_dir(self, install_dir=None, version=None, verbose=False): if version is None: self.__install_dir = install_dir common.validate_install_dir(install_dir) self.__version = self.__get_version_from_build() else: dir, v = repository.setup(version, verbose) self.__install_dir = dir self.__version = v if v is not None else self.__get_version_from_build( ) if not isinstance(self.__version, LooseVersion): self.__version = LooseVersion(self.__version) self._update_config() for node in list(self.nodes.values()): node._cassandra_version = self.__version node.import_config_files() # if any nodes have a data center, let's update the topology if any([node.data_center for node in self.nodes.values()]): self.__update_topology_files() if self.cassandra_version() >= '4': self.set_configuration_options({'start_rpc': None}, delete_empty=True, delete_always=True) else: self.set_configuration_options(common.CCM_40_YAML_OPTIONS, delete_empty=True, delete_always=True) return self
def set_cassandra_dir(self, cassandra_dir=None, cassandra_version=None, verbose=False): """ Sets the path to the cassandra source directory for use by this node. """ if cassandra_version is None: self.__cassandra_dir = cassandra_dir if cassandra_dir is not None: common.validate_cassandra_dir(cassandra_dir) else: dir, v = setup(cassandra_version, verbose=verbose) self.__cassandra_dir = dir self.import_config_files() return self
def set_cassandra_dir(self, cassandra_dir=None, cassandra_version=None, verbose=False): if cassandra_version is None: self.__cassandra_dir = cassandra_dir common.validate_cassandra_dir(cassandra_dir) self.__version = self.__get_version_from_build() else: dir, v = repository.setup(cassandra_version, verbose) self.__cassandra_dir = dir self.__version = v if v is not None else self.__get_version_from_build() self.__update_config() for node in list(self.nodes.values()): node.import_config_files() return self
def set_install_dir(self, install_dir=None, version=None, verbose=False): if version is None: self.__install_dir = install_dir common.validate_install_dir(install_dir) self.__version = self.__get_version_from_build() else: dir, v = repository.setup(version, verbose) self.__install_dir = dir self.__version = v if v is not None else self.__get_version_from_build() self._update_config() for node in list(self.nodes.values()): node.import_config_files() # if any nodes have a data center, let's update the topology if any([node.data_center for node in self.nodes.values()]): self.__update_topology_files() return self
def load_from_repository(self, version, verbose): return repository.setup(version, verbose)
def load_from_repository(self, version, verbose): return repository.setup(version, verbose, elassandra_version=self.elassandra_version)