Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
    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"))
Beispiel #4
0
    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"))