Esempio n. 1
0
  def __loadConfigurationData( self ):
    try:
      os.makedirs( os.path.join( DIRAC.rootPath, "etc", "csbackup" ) )
    except:
      pass
    gConfigurationData.loadConfigurationData()
    if gConfigurationData.isMaster():
      bBuiltNewConfiguration = False
      if not gConfigurationData.getName():
        DIRAC.abort( 10, "Missing name for the configuration to be exported!" )
      gConfigurationData.exportName()
      sVersion = gConfigurationData.getVersion()
      if sVersion == "0":
        gLogger.info( "There's no version. Generating a new one" )
        gConfigurationData.generateNewVersion()
        bBuiltNewConfiguration = True

      if self.sURL not in gConfigurationData.getServers():
        gConfigurationData.setServers( self.sURL )
        bBuiltNewConfiguration = True

      gConfigurationData.setMasterServer( self.sURL )

      if bBuiltNewConfiguration:
        gConfigurationData.writeRemoteConfigurationToDisk()
Esempio n. 2
0
    def publishSlaveServer(self, sSlaveURL):
        """
        Called by the slave server via service, it register a new slave server

        :param sSlaveURL: url of slave server
        """

        if not gConfigurationData.isMaster():
            return S_ERROR("Configuration modification is not allowed in this server")
        gLogger.info("Pinging slave %s" % sSlaveURL)
        rpcClient = ConfigurationClient(url=sSlaveURL, timeout=10, useCertificates=True)
        retVal = rpcClient.ping()
        if not retVal["OK"]:
            gLogger.info("Slave %s didn't reply" % sSlaveURL)
            return
        if retVal["Value"]["name"] != "Configuration/Server":
            gLogger.info("Slave %s is not a CS serveR" % sSlaveURL)
            return
        bNewSlave = False
        if sSlaveURL not in self.dAliveSlaveServers:
            bNewSlave = True
            gLogger.info("New slave registered", sSlaveURL)
        self.dAliveSlaveServers[sSlaveURL] = time.time()
        if bNewSlave:
            gConfigurationData.setServers(", ".join(self.dAliveSlaveServers))
            self.__generateNewVersion()
Esempio n. 3
0
    def __loadConfigurationData(self):
        try:
            os.makedirs(os.path.join(DIRAC.rootPath, "etc", "csbackup"))
        except:
            pass
        gConfigurationData.loadConfigurationData()
        if gConfigurationData.isMaster():
            bBuiltNewConfiguration = False
            if not gConfigurationData.getName():
                DIRAC.abort(
                    10, "Missing name for the configuration to be exported!")
            gConfigurationData.exportName()
            sVersion = gConfigurationData.getVersion()
            if sVersion == "0":
                gLogger.info("There's no version. Generating a new one")
                gConfigurationData.generateNewVersion()
                bBuiltNewConfiguration = True

            if self.sURL not in gConfigurationData.getServers():
                gConfigurationData.setServers(self.sURL)
                bBuiltNewConfiguration = True

            gConfigurationData.setMasterServer(self.sURL)

            if bBuiltNewConfiguration:
                gConfigurationData.writeRemoteConfigurationToDisk()
Esempio n. 4
0
 def __checkSlavesStatus(self, forceWriteConfiguration=False):
     gLogger.info("Checking status of slave servers")
     iGraceTime = gConfigurationData.getSlavesGraceTime()
     lSlaveURLs = self.dAliveSlaveServers.keys()
     bModifiedSlaveServers = False
     for sSlaveURL in lSlaveURLs:
         if time.time() - self.dAliveSlaveServers[sSlaveURL] > iGraceTime:
             gLogger.info("Found dead slave", sSlaveURL)
             del self.dAliveSlaveServers[sSlaveURL]
             bModifiedSlaveServers = True
     if bModifiedSlaveServers or forceWriteConfiguration:
         gConfigurationData.setServers("%s, %s" % (self.sURL, ", ".join(self.dAliveSlaveServers.keys())))
         self.__generateNewVersion()
Esempio n. 5
0
 def __checkSlavesStatus(self, forceWriteConfiguration=False):
   gLogger.info("Checking status of slave servers")
   iGraceTime = gConfigurationData.getSlavesGraceTime()
   bModifiedSlaveServers = False
   for sSlaveURL in self.dAliveSlaveServers.keys():
     if time.time() - self.dAliveSlaveServers[sSlaveURL] > iGraceTime:
       gLogger.info("Found dead slave", sSlaveURL)
       del self.dAliveSlaveServers[sSlaveURL]
       bModifiedSlaveServers = True
   if bModifiedSlaveServers or forceWriteConfiguration:
     gConfigurationData.setServers("%s, %s" % (self.sURL,
                                               ", ".join(self.dAliveSlaveServers.keys())))
     self.__generateNewVersion()
Esempio n. 6
0
    def _checkSlavesStatus(self, forceWriteConfiguration=False):
        """
        Check if Slaves server are still availlable

        :param forceWriteConfiguration: (default False) Force rewriting configuration after checking slaves
        """

        gLogger.info("Checking status of slave servers")
        iGraceTime = gConfigurationData.getSlavesGraceTime()
        bModifiedSlaveServers = False
        for sSlaveURL in list(self.dAliveSlaveServers):
            if time.time() - self.dAliveSlaveServers[sSlaveURL] > iGraceTime:
                gLogger.warn("Found dead slave", sSlaveURL)
                del self.dAliveSlaveServers[sSlaveURL]
                bModifiedSlaveServers = True
        if bModifiedSlaveServers or forceWriteConfiguration:
            gConfigurationData.setServers(", ".join(self.dAliveSlaveServers))
            self.__generateNewVersion()
Esempio n. 7
0
 def publishSlaveServer(self, sSlaveURL):
     if not gConfigurationData.isMaster():
         return S_ERROR("Configuration modification is not allowed in this server")
     gLogger.info("Pinging slave %s" % sSlaveURL)
     rpcClient = RPCClient(sSlaveURL, timeout=10, useCertificates=True)
     retVal = rpcClient.ping()
     if not retVal["OK"]:
         gLogger.info("Slave %s didn't reply" % sSlaveURL)
         return
     if retVal["Value"]["name"] != "Configuration/Server":
         gLogger.info("Slave %s is not a CS serveR" % sSlaveURL)
         return
     bNewSlave = False
     if not sSlaveURL in self.dAliveSlaveServers.keys():
         bNewSlave = True
         gLogger.info("New slave registered", sSlaveURL)
     self.dAliveSlaveServers[sSlaveURL] = time.time()
     if bNewSlave:
         gConfigurationData.setServers("%s, %s" % (self.sURL, ", ".join(self.dAliveSlaveServers.keys())))
         self.__generateNewVersion()
Esempio n. 8
0
 def publishSlaveServer(self, sSlaveURL):
   if not gConfigurationData.isMaster():
     return S_ERROR("Configuration modification is not allowed in this server")
   gLogger.info("Pinging slave %s" % sSlaveURL)
   rpcClient = RPCClient(sSlaveURL, timeout=10, useCertificates=True)
   retVal = rpcClient.ping()
   if not retVal['OK']:
     gLogger.info("Slave %s didn't reply" % sSlaveURL)
     return
   if retVal['Value']['name'] != 'Configuration/Server':
     gLogger.info("Slave %s is not a CS serveR" % sSlaveURL)
     return
   bNewSlave = False
   if sSlaveURL not in self.dAliveSlaveServers:
     bNewSlave = True
     gLogger.info("New slave registered", sSlaveURL)
   self.dAliveSlaveServers[sSlaveURL] = time.time()
   if bNewSlave:
     gConfigurationData.setServers("%s, %s" % (self.sURL,
                                               ", ".join(self.dAliveSlaveServers.keys())))
     self.__generateNewVersion()