def getFailoverdomainPrefNode(self, failoverdomain):
     """
     @param failoverdomain: failoverdomain
     @type failoverdomain: string
     @return: Name of node which is prefered in failovercase of given failoverdomain
     @rtype: string
     """
     #no defaultvalue specified because every dailoverdomain needs to have one or more failoverdomainnodes and priority is a needed attribute
     _tmp1 = self.getFailoverdomainNodes(failoverdomain)
     
     #search for lowest priority
     minprio = "0"
     for i in range(len(_tmp1)):
         _xpath=xpathjoin(RedHatClusterRepository.getDefaultClusterFailoverDomain(failoverdomain), RedHatClusterRepository.element_failoverdomainnode+"[@"+RedHatClusterRepository.attribute_failoverdomainnode_name+"=\""+_tmp1[i]+"\"]", "@"+RedHatClusterRepository.attribute_failoverdomainnode_priority)
         self.log.debug("query lowest priority of failoverdomainnodes belonging to %s : %s" %(failoverdomain,_xpath))
         _tmp2 = self.queryValue(_xpath)[0]
         if (minprio == "0") or (_tmp2 < minprio):
             minprio = _tmp2
     #get node with lowest priority
     try:
         _xpath=xpathjoin(RedHatClusterRepository.getDefaultClusterFailoverDomain(failoverdomain), RedHatClusterRepository.element_failoverdomainnode+"[@"+RedHatClusterRepository.attribute_failoverdomainnode_priority+"=\""+str(minprio)+"\"]", "@"+RedHatClusterRepository.attribute_failoverdomainnode_name)
         self.log.debug("get failoverprefdomainnode from failoverdomain %s: %s" %(failoverdomain, _xpath))
         return self.queryValue(_xpath)[0]
     except IndexError:
         raise NameError("Cannot find prefered failoverdomainnode for domain %s." %failoverdomain) 
def commonoptparseroptions(parser):
    """
    Sets the give optparser to the common options needed by all cdsl commands.
    """
    import logging
    from comoonics.cluster.ComClusterRepository import RedHatClusterRepository
    
    logging.basicConfig()
    
    parser.add_option("-d", "--verbose", action="callback", callback=setDebug, help="Quiet, does not show any output")
    parser.add_option("-c", "--clusterconf", dest="clusterconf", default=RedHatClusterRepository.getDefaultClusterConf())
    return parser

###############
# $Log: __init__.py,v $
# Revision 1.11  2010-11-21 21:45:28  marc
# - fixed bug 391
#   - moved to upstream XmlTools implementation
#
# Revision 1.10  2010/02/05 12:13:08  marc
# - take default clusterconf if none given
#
# Revision 1.9  2009/07/22 13:01:58  marc
# ported to getopts
#
# Revision 1.8  2009/07/22 08:37:09  marc
# Fedora compliant
#
# Revision 1.7  2009/05/27 18:31:59  marc
# - prepared and added querymap concept
# - reviewed and changed code to work with unittests and being more modular
#
# Revision 1.6  2009/02/24 10:16:01  marc
# added helper method to parse clusterconfiguration
#
    def __init__(self, clusterRepository):
        """
        Set used clusterRepository
        @param clusterRepository: clusterRepository to use
        @type clusterRepository: L{RedhatClusterRepository}
        """
        super(RedHatClusterInfo, self).__init__(clusterRepository)
        from helper import RedHatClusterHelper, HelperNotSupportedError
        try:
            self.helper=RedHatClusterHelper()
        except HelperNotSupportedError:
            self.helper=None
        self.addNonStatic("name", xpathjoin(RedHatClusterRepository.getDefaultClustatXPath(), RedHatClusterRepository.element_clustat_cluster, "@"+RedHatClusterRepository.attribute_clustat_cluster_name))
#        self.addNonStatic(RedhatClusterInfo, "id")
        self.addNonStatic("generation",         xpathjoin(RedHatClusterRepository.getDefaultClustatXPath(), RedHatClusterRepository.element_clustat_cluster, "@"+RedHatClusterRepository.attribute_clustat_cluster_generation))
        self.addNonStatic("quorum_quorate",     xpathjoin(RedHatClusterRepository.getDefaultClustatXPath(), RedHatClusterRepository.element_quorum, "@"+RedHatClusterRepository.attribute_quorum_quorate))
        self.addNonStatic("quorum_groupmember", xpathjoin(RedHatClusterRepository.getDefaultClustatXPath(), RedHatClusterRepository.element_quorum, "@"+RedHatClusterRepository.attribute_quorum_groupmember))
Ejemplo n.º 4
0
    def getFailoverdomainPrefNode(self, failoverdomain):
        """
        @param failoverdomain: failoverdomain
        @type failoverdomain: string
        @return: Name of node which is prefered in failovercase of given failoverdomain
        @rtype: string
        """
        #no defaultvalue specified because every dailoverdomain needs to have one or more failoverdomainnodes and priority is a needed attribute
        _tmp1 = self.getFailoverdomainNodes(failoverdomain)

        #search for lowest priority
        minprio = "0"
        for i in range(len(_tmp1)):
            _xpath = xpathjoin(
                RedHatClusterRepository.getDefaultClusterFailoverDomain(
                    failoverdomain),
                RedHatClusterRepository.element_failoverdomainnode + "[@" +
                RedHatClusterRepository.attribute_failoverdomainnode_name +
                "=\"" + _tmp1[i] + "\"]", "@" +
                RedHatClusterRepository.attribute_failoverdomainnode_priority)
            self.log.debug(
                "query lowest priority of failoverdomainnodes belonging to %s : %s"
                % (failoverdomain, _xpath))
            _tmp2 = self.queryValue(_xpath)[0]
            if (minprio == "0") or (_tmp2 < minprio):
                minprio = _tmp2
        #get node with lowest priority
        try:
            _xpath = xpathjoin(
                RedHatClusterRepository.getDefaultClusterFailoverDomain(
                    failoverdomain),
                RedHatClusterRepository.element_failoverdomainnode + "[@" +
                RedHatClusterRepository.attribute_failoverdomainnode_priority +
                "=\"" + str(minprio) + "\"]", "@" +
                RedHatClusterRepository.attribute_failoverdomainnode_name)
            self.log.debug(
                "get failoverprefdomainnode from failoverdomain %s: %s" %
                (failoverdomain, _xpath))
            return self.queryValue(_xpath)[0]
        except IndexError:
            raise NameError(
                "Cannot find prefered failoverdomainnode for domain %s." %
                failoverdomain)
 def getFailoverdomainNodes(self, failoverdomain):
     """
     @param failoverdomain: failoverdomain
     @type failoverdomain: string
     @return: Names of nodes which belong to the given failoverdomain
     @rtype: string
     """
     #no defaultvalue specified because every dailoverdomain needs to have one or more failoverdomainnodes
     _xpath=xpathjoin(RedHatClusterRepository.getDefaultClusterFailoverDomain(failoverdomain), RedHatClusterRepository.element_failoverdomainnode, "@"+RedHatClusterRepository.attribute_failoverdomainnode_name)
     self.log.debug("get failoverdomainnodes from failoverdomain %s: %s" %(failoverdomain,_xpath))
     _tmp1 = self.queryValue(_xpath)
     return _tmp1
Ejemplo n.º 6
0
 def __init__(self, clusterRepository):
     """
     Set used clusterRepository
     @param clusterRepository: clusterRepository to use
     @type clusterRepository: L{RedhatClusterRepository}
     """
     super(RedHatClusterInfo, self).__init__(clusterRepository)
     from helper import RedHatClusterHelper, HelperNotSupportedError
     try:
         self.helper = RedHatClusterHelper()
     except HelperNotSupportedError:
         self.helper = None
     self.addNonStatic(
         "name",
         xpathjoin(
             RedHatClusterRepository.getDefaultClustatXPath(),
             RedHatClusterRepository.element_clustat_cluster,
             "@" + RedHatClusterRepository.attribute_clustat_cluster_name))
     #        self.addNonStatic(RedhatClusterInfo, "id")
     self.addNonStatic(
         "generation",
         xpathjoin(
             RedHatClusterRepository.getDefaultClustatXPath(),
             RedHatClusterRepository.element_clustat_cluster, "@" +
             RedHatClusterRepository.attribute_clustat_cluster_generation))
     self.addNonStatic(
         "quorum_quorate",
         xpathjoin(RedHatClusterRepository.getDefaultClustatXPath(),
                   RedHatClusterRepository.element_quorum,
                   "@" + RedHatClusterRepository.attribute_quorum_quorate))
     self.addNonStatic(
         "quorum_groupmember",
         xpathjoin(
             RedHatClusterRepository.getDefaultClustatXPath(),
             RedHatClusterRepository.element_quorum,
             "@" + RedHatClusterRepository.attribute_quorum_groupmember))
Ejemplo n.º 7
0
 def getFailoverdomainNodes(self, failoverdomain):
     """
     @param failoverdomain: failoverdomain
     @type failoverdomain: string
     @return: Names of nodes which belong to the given failoverdomain
     @rtype: string
     """
     #no defaultvalue specified because every dailoverdomain needs to have one or more failoverdomainnodes
     _xpath = xpathjoin(
         RedHatClusterRepository.getDefaultClusterFailoverDomain(
             failoverdomain),
         RedHatClusterRepository.element_failoverdomainnode,
         "@" + RedHatClusterRepository.attribute_failoverdomainnode_name)
     self.log.debug("get failoverdomainnodes from failoverdomain %s: %s" %
                    (failoverdomain, _xpath))
     _tmp1 = self.queryValue(_xpath)
     return _tmp1
Ejemplo n.º 8
0
def commonoptparseroptions(parser):
    """
    Sets the give optparser to the common options needed by all cdsl commands.
    """
    import logging
    from comoonics.cluster.ComClusterRepository import RedHatClusterRepository

    logging.basicConfig()

    parser.add_option("-d",
                      "--verbose",
                      action="callback",
                      callback=setDebug,
                      help="Quiet, does not show any output")
    parser.add_option("-c",
                      "--clusterconf",
                      dest="clusterconf",
                      default=RedHatClusterRepository.getDefaultClusterConf())
    return parser
 def query(self, param, *params, **keys):
     if keys and keys.has_key("pathroot"):
         _pathroot=keys["pathroot"]
     elif params and len(params)>=1:
         _pathroot=params[0]
     else:
         _pathroot=RedHatClusterRepository.getDefaultClustatXPath()
         
     result=""
     if xpathsplit(_pathroot)[0] == RedHatClusterRepository.element_clustat and self.helper:
         if self.non_statics.get(param, None) != None:
             result=self.helper.queryStatusElement(query= xpathjoin(_pathroot, self.non_statics.get(param)))
         else:
             result=self.helper.queryStatusElement(query= xpathjoin(_pathroot, "@"+param))
     else:
         result=self.queryValue(param)
     if isinstance(result, basestring):
         return result
     else:
         ":".join(result)
Ejemplo n.º 10
0
    def query(self, param, *params, **keys):
        if keys and keys.has_key("pathroot"):
            _pathroot = keys["pathroot"]
        elif params and len(params) >= 1:
            _pathroot = params[0]
        else:
            _pathroot = RedHatClusterRepository.getDefaultClustatXPath()

        result = ""
        if xpathsplit(_pathroot)[
                0] == RedHatClusterRepository.element_clustat and self.helper:
            if self.non_statics.get(param, None) != None:
                result = self.helper.queryStatusElement(
                    query=xpathjoin(_pathroot, self.non_statics.get(param)))
            else:
                result = self.helper.queryStatusElement(
                    query=xpathjoin(_pathroot, "@" + param))
        else:
            result = self.queryValue(param)
        if isinstance(result, basestring):
            return result
        else:
            ":".join(result)