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))
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
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))
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
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)
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)