def _getClientConfig(clusterName, configName = None): """ Gets an Arakoon client object for an existing cluster @type clusterName: string @param clusterName: the name of the cluster for which you want to get a client @return arakoon client object """ clientConfig = X.getConfig('/'.join ([X.cfgDir,"arakoonclients"])) if not clientConfig.has_section(clusterName): X.raiseError("No such client configured for cluster [%s]" % clusterName) else: node_dict = {} clientCfg = ArakoonClient._getConfig(clusterName, configName) cfgFile = X.getConfig( clientCfg ) if not cfgFile.has_section("global") : if configName is not None: msg = "Named client '%s' for cluster '%s' does not exist" % (configName, clusterName) else : msg = "No client available for cluster '%s'" % clusterName X.raiseError(msg ) clusterParam = cfgFile.get("global", "cluster") for node in clusterParam.split(",") : node = node.strip() ips = cfgFile.get(node, "ip") ip_list = map(lambda x: x.strip(), ips.split(',')) port = cfgFile.get(node, "client_port") ip_port = (ip_list, port) node_dict.update({node: ip_port}) clusterId = cfgFile.get('global', 'cluster_id') config = X.arakoon_client.ArakoonClientConfig(clusterId, node_dict) return config
def _getClientConfig(clusterName, configName=None): """ Gets an Arakoon client object for an existing cluster @type clusterName: string @param clusterName: the name of the cluster for which you want to get a client @return arakoon client object """ clientConfig = X.getConfig('/'.join([X.cfgDir, "arakoonclients"])) if not clientConfig.has_section(clusterName): X.raiseError("No such client configured for cluster [%s]" % clusterName) else: node_dict = {} clientCfg = ArakoonClient._getConfig(clusterName, configName) cfgFile = X.getConfig(clientCfg) if not cfgFile.has_section("global"): if configName is not None: msg = "Named client '%s' for cluster '%s' does not exist" % ( configName, clusterName) else: msg = "No client available for cluster '%s'" % clusterName X.raiseError(msg) clusterParam = cfgFile.get("global", "cluster") for node in clusterParam.split(","): node = node.strip() ips = cfgFile.get(node, "ip") ip_list = map(lambda x: x.strip(), ips.split(',')) port = cfgFile.get(node, "client_port") ip_port = (ip_list, port) node_dict.update({node: ip_port}) clusterId = cfgFile.get('global', 'cluster_id') config = X.arakoon_client.ArakoonClientConfig(clusterId, node_dict) return config
def generateFromServerConfig(self): """ Generate the client config file from the servers """ clusterId = self._clusterId fn = '/'.join([X.cfgDir, 'arakoonclusters']) p = X.getConfig(fn) clusterExists = p.has_section(clusterId) if not clusterExists: X.raiseError("No server cluster '%s' is defined." % clusterId) serverConfigDir = p.get(clusterId, "path") serverConfigPath = '/'.join([serverConfigDir, clusterId]) serverConfig = X.getConfig(serverConfigPath) if serverConfig.has_section("global"): nodes = self.__getNodes(serverConfig) for name in nodes: if name in self.getNodes(): self.removeNode(name) ips = serverConfig.get(name, 'ip') ip_list = map(lambda x: x.strip(), ips.split(',')) self.addNode(name, ip_list, serverConfig.get(name, "client_port"))