]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - SHUTTLE/AliShuttleConfig.cxx
Include dir structure in tarball for cvmfs
[u/mrichter/AliRoot.git] / SHUTTLE / AliShuttleConfig.cxx
index f630528414a9124b3b6afc562bdda42ede629981..c8d4465ddd4e78845858571f2d441e10bfb0b5f3 100644 (file)
@@ -175,7 +175,7 @@ some docs added
 // will be retrieved (used by AliShuttle).
 //
 
-
+#include <Riostream.h>
 #include "AliShuttleConfig.h"
 #include "AliShuttleInterface.h"
 
@@ -266,130 +266,6 @@ fIsValid(kFALSE)
        
        fIsValid = kTRUE;
 }
-
-//______________________________________________________________________________________________
-AliShuttleConfig::AliShuttleConfig(const AliShuttleConfig & other):
-       TObject(),
-       fConfigHost(other.fConfigHost),
-       fDAQlbHost(other.fDAQlbHost),
-       fDAQlbPort(other.fDAQlbPort),
-       fDAQlbUser(other.fDAQlbUser),
-       fDAQlbPass(other.fDAQlbPass),
-       fDAQlbDB(other.fDAQlbDB),
-       fDAQlbTable(other.fDAQlbTable),
-       fShuttlelbTable(other.fShuttlelbTable),
-       fRunTypelbTable(other.fRunTypelbTable),
-       fMaxRetries(other.fMaxRetries),
-       fPPTimeOut(other.fPPTimeOut),
-       fDCSTimeOut(other.fDCSTimeOut),
-       fDCSRetries(other.fDCSRetries),
-       fPPMaxMem(other.fPPMaxMem),
-       fMonitorHost(other.fMonitorHost),
-       fMonitorTable(other.fMonitorTable),
-       fTriggerWait(other.fTriggerWait),
-       fRunMode(other.fRunMode),
-       fDetectorMap(),
-       fDetectorList(other.fDetectorList),
-       fShuttleInstanceHost(other.fShuttleInstanceHost),
-       fProcessedDetectors(other.fProcessedDetectors),
-       fKeepDCSMap(other.fKeepDCSMap),
-       fKeepTempFolder(other.fKeepTempFolder),
-       fSendMail(other.fSendMail),
-       fProcessAll(other.fProcessAll),
-       fIsValid(other.fIsValid)
-{
-       //
-       // copy ctor
-       //
-       for (Int_t i = 0; i<3; i++){
-               fFXSHost[i]=other.fFXSHost[i];
-               fFXSPort[i]=other.fFXSPort[i];
-               fFXSUser[i]=other.fFXSUser[i];
-               fFXSPass[i]=other.fFXSPass[i];
-               fFXSBaseFolder[i]=other.fFXSBaseFolder[i];
-               fFXSdbHost[i]=other.fFXSdbHost[i];
-               fFXSdbPort[i]=other.fFXSdbPort[i];
-               fFXSdbUser[i]=other.fFXSdbUser[i];
-               fFXSdbPass[i]=other.fFXSdbPass[i];
-               fFXSdbName[i]=other.fFXSdbName[i];
-               fFXSdbTable[i]=other.fFXSdbTable[i];
-       }
-       for (Int_t i = 0; i<5; i++){
-               fAdmin[i] = new TObjArray();
-               fAdmin[i]->AddAt(other.fAdmin[i]->At(i),i);
-       }
-
-       TIter iter((other.fDetectorMap).GetTable());
-       TPair* aPair = 0;
-       
-       while ((aPair = (TPair*) iter.Next())) {
-               AliShuttleDetConfigHolder *holder =(AliShuttleDetConfigHolder *)aPair->Value();
-               TKey *key = (TKey*)aPair->Key();
-               fDetectorMap.Add(key,holder);
-       }
-
-
-} 
-//_____________________________________________________________________________________________                
-AliShuttleConfig& AliShuttleConfig::operator=(const AliShuttleConfig &other) 
-{
-       //
-       //assignment operator
-       //
-       this->fConfigHost=other.fConfigHost;
-       this->fDAQlbHost=other.fDAQlbHost;
-       this->fDAQlbPort=other.fDAQlbPort;
-       this->fDAQlbUser=other.fDAQlbUser;
-       this->fDAQlbPass=other.fDAQlbPass;
-       this->fDAQlbDB=other.fDAQlbDB;
-       this->fDAQlbTable=other.fDAQlbTable;
-       this->fShuttlelbTable=other.fShuttlelbTable;
-       this->fRunTypelbTable=other.fRunTypelbTable;
-       this->fMaxRetries=other.fMaxRetries;
-       this->fPPTimeOut=other.fPPTimeOut;
-       this->fDCSTimeOut=other.fDCSTimeOut;
-       this->fDCSRetries=other.fDCSRetries;
-       this->fPPMaxMem=other.fPPMaxMem;
-       this->fMonitorHost=other.fMonitorHost;
-       this->fMonitorTable=other.fMonitorTable;
-       this->fTriggerWait=other.fTriggerWait;
-       this->fRunMode=other.fRunMode;
-       this->fDetectorList=other.fDetectorList;
-       this->fShuttleInstanceHost=other.fShuttleInstanceHost;
-       this->fProcessedDetectors=other.fProcessedDetectors;
-       this->fKeepDCSMap=other.fKeepDCSMap;
-       this->fKeepTempFolder=other.fKeepTempFolder;
-       this->fSendMail=other.fSendMail;
-       this->fProcessAll=other.fProcessAll;
-       this->fIsValid=other.fIsValid;
-       for (Int_t i = 0; i<3; i++){
-               this->fFXSHost[i]=other.fFXSHost[i];
-               this->fFXSPort[i]=other.fFXSPort[i];
-               this->fFXSUser[i]=other.fFXSUser[i];
-               this->fFXSPass[i]=other.fFXSPass[i];
-               this->fFXSBaseFolder[i]=other.fFXSBaseFolder[i];
-               this->fFXSdbHost[i]=other.fFXSdbHost[i];
-               this->fFXSdbPort[i]=other.fFXSdbPort[i];
-               this->fFXSdbUser[i]=other.fFXSdbUser[i];
-               this->fFXSdbPass[i]=other.fFXSdbPass[i];
-               this->fFXSdbName[i]=other.fFXSdbName[i];
-               this->fFXSdbTable[i]=other.fFXSdbTable[i];
-       }
-       for (Int_t i = 0; i<5; i++){
-               this->fAdmin[i] = new TObjArray();
-               this->fAdmin[i]->AddAt(other.fAdmin[i]->At(i),i);
-       }
-
-       TIter iter((other.fDetectorMap).GetTable());
-       TPair* aPair = 0;
-       
-       while ((aPair = (TPair*) iter.Next())) {
-               AliShuttleDetConfigHolder *holder =(AliShuttleDetConfigHolder *)aPair->Value();
-               TKey *key = (TKey*)aPair->Key();
-               this->fDetectorMap.Add(key,holder);
-       }
-       return *this;
-} 
 //______________________________________________________________________________________________
 void AliShuttleConfig::AliShuttleDCSConfigHolder::ExpandAndAdd(TObjArray* target, const char* entry)
 {
@@ -651,6 +527,7 @@ ClassImp(AliShuttleConfig)
 AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        const char* binddn, const char* password, const char* basedn):
        fConfigHost(host), 
+       fAlienPath(""), 
        fDAQlbHost(""), 
        fDAQlbPort(), 
        fDAQlbUser(""), 
@@ -659,14 +536,21 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        fDAQlbTable(""), 
        fShuttlelbTable(""), 
        fRunTypelbTable(""),
-       fMaxRetries(0), 
+       fPasswdFilePath(""),
+       fTerminateFilePath(""), 
+       fMaxRetries(0),
        fPPTimeOut(0), 
        fDCSTimeOut(0), 
        fDCSRetries(0), 
+       fDCSQueryOffset(0),
+       fDCSDelay(0),
        fPPMaxMem(0), 
        fMonitorHost(""), 
        fMonitorTable(""), 
        fTriggerWait(3600),
+       fShuttleFileSystem("/"),
+       fFreeDiskWarningThreshold(20),
+       fFreeDiskFatalThreshold(10),
        fRunMode(kTest),
        fDetectorMap(), 
        fDetectorList(),
@@ -692,7 +576,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        fDetectorList.SetOwner(0); //fDetectorList and fDetectorMap share the same object!
        fProcessedDetectors.SetOwner();
        
-       for (int i=0; i<5; i++)
+       for (int i=0; i<6; i++)
        {
                fAdmin[i] = new TObjArray(); 
                fAdmin[i]->SetOwner();
@@ -766,6 +650,7 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        
        result += SetGlobalConfig(&globalList);
        result += SetSysConfig(&sysList);
+       result += SetPasswords();
        result += SetDetConfig(&detList,&dcsList);
        result += SetHostConfig(&hostList);
        
@@ -975,10 +860,10 @@ const TObjArray* AliShuttleConfig::GetAdmins(Int_t sys) const
 {
        //
        // returns collection of TObjString which represents the list of mail addresses
-       // of the system's administrator(s) (DAQ, DCS, HLT, Global, Amanda)
+       // of the system's administrator(s) (DAQ, DCS, HLT, Global, Amanda, DQM)
        //
 
-       if (sys < 0 || sys > 4) return 0;
+       if (sys < 0 || sys > 5) return 0;
        return fAdmin[sys];
 }
 
@@ -1017,6 +902,7 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
 {
        // Set the global configuration (DAQ Logbook + preprocessor monitoring settings)
 
+
        TLDAPEntry* anEntry = 0;
        TLDAPAttribute* anAttribute = 0;
        
@@ -1040,6 +926,13 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
        } 
        
        
+       anAttribute = anEntry->GetAttribute("AlienPath");
+       if (!anAttribute) {
+               AliError("Can't find AlienPath attribute!");
+               return 4;
+       }
+       fAlienPath = anAttribute->GetValue();
+
        anAttribute = anEntry->GetAttribute("daqLbHost");
        if (!anAttribute) {
                AliError("Can't find daqLbHost attribute!");
@@ -1062,13 +955,6 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
        }
        fDAQlbUser = anAttribute->GetValue();
 
-       anAttribute = anEntry->GetAttribute("daqLbPasswd");
-       if (!anAttribute) {
-               AliError("Can't find daqLbPasswd attribute!");
-               return 4;
-       }
-       fDAQlbPass = anAttribute->GetValue();
-
        anAttribute = anEntry->GetAttribute("daqLbDB");
        if (!anAttribute) {
                AliError("Can't find daqLbDB attribute!");
@@ -1105,6 +991,11 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
        TString tmpStr = anAttribute->GetValue();
        fMaxRetries = tmpStr.Atoi();
 
+       anAttribute = anEntry->GetAttribute("terminateFilePath");
+       if (anAttribute) {
+               fTerminateFilePath = anAttribute->GetValue();
+       }
+
        anAttribute = anEntry->GetAttribute("ppTimeOut");
        if (!anAttribute) {
                AliError("Can't find ppTimeOut attribute!");
@@ -1129,6 +1020,22 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
        tmpStr = anAttribute->GetValue();
        fDCSRetries = tmpStr.Atoi();
 
+       anAttribute = anEntry->GetAttribute("DCSQueryOffset");
+       if (!anAttribute) {
+               AliError("Can't find DCSQueryOffset attribute!");
+               return 4;
+       }
+       tmpStr = anAttribute->GetValue();
+       fDCSQueryOffset = tmpStr.Atoi();
+
+       anAttribute = anEntry->GetAttribute("DCSDelay");
+       if (!anAttribute) {
+               AliError("Can't find DCSDelay attribute!");
+               return 4;
+       }
+       tmpStr = anAttribute->GetValue();
+       fDCSDelay = tmpStr.Atoi();
+
        anAttribute = anEntry->GetAttribute("ppMaxMem");
        if (!anAttribute) {
                AliError("Can't find ppMaxMem attribute!");
@@ -1153,11 +1060,31 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
 
        anAttribute = anEntry->GetAttribute("triggerWait"); // MAY
        if (!anAttribute) {
-               AliWarning(Form("triggerWait not set! default = ", fTriggerWait));
+               AliWarning(Form("triggerWait not set! default = %d", fTriggerWait));
        }
        tmpStr = anAttribute->GetValue();
        fTriggerWait = tmpStr.Atoi();
-       
+
+        anAttribute = anEntry->GetAttribute("ShuttleFileSystem"); 
+       if (!anAttribute) {
+               AliWarning(Form("ShuttleFileSystem not set! default = %s", fShuttleFileSystem.Data()));
+       }
+       fShuttleFileSystem = anAttribute->GetValue();
+
+       anAttribute = anEntry->GetAttribute("FreeDiskWarningThreshold"); // MAY
+       if (!anAttribute) {
+               AliWarning(Form("FreeDiskWarningThreshold not set! default = %d", fFreeDiskWarningThreshold));
+       }
+       tmpStr = anAttribute->GetValue();
+       fFreeDiskWarningThreshold = tmpStr.Atoi();
+
+       anAttribute = anEntry->GetAttribute("FreeDiskFatalThreshold"); // MAY
+       if (!anAttribute) {
+               AliWarning(Form("FreeDiskFatalThreshold not set! default = %d", fFreeDiskFatalThreshold));
+       }
+       tmpStr = anAttribute->GetValue();
+       fFreeDiskFatalThreshold = tmpStr.Atoi();                
+
        anAttribute = anEntry->GetAttribute("mode");
        if (!anAttribute) {
                AliWarning("Run mode not set! Running in test mode.");
@@ -1245,18 +1172,26 @@ UInt_t AliShuttleConfig::SetGlobalConfig(TList* list)
                fSendMail = (Bool_t) sendMailStr.Atoi();
        }
                                                
+       anAttribute = anEntry->GetAttribute("passwdFilePath");
+       if (!anAttribute) {
+               AliError("Can't find Passwords File Path attribute!");
+               return 4;
+       }
+       fPasswdFilePath = anAttribute->GetValue();
+
        return 0;
 }
 
 //______________________________________________________________________________________________
 UInt_t AliShuttleConfig::SetSysConfig(TList* list)
 {
-       // Set the online FXS configuration (DAQ + DCS + HLT)
-       
+       // Set the online FXS configuration (DAQ + DCS + HLT + DQM)
+
+
        TLDAPEntry* anEntry = 0;
        TLDAPAttribute* anAttribute = 0;
        
-       if (list->GetEntries() != 3
+       if (list->GetEntries() != 4
        {
                AliError(Form("Wrong number of online systems found: %d !", list->GetEntries()));
                return 1;
@@ -1286,6 +1221,11 @@ UInt_t AliShuttleConfig::SetSysConfig(TList* list)
                        iSys = kHLT;
                        count += 100;
                }
+               else if (sysName == "DQM")
+               {
+                       iSys = kDQM; 
+                       count += 1000;
+               }
                
                anAttribute = anEntry->GetAttribute("dbHost");
                if (!anAttribute) {
@@ -1311,14 +1251,6 @@ UInt_t AliShuttleConfig::SetSysConfig(TList* list)
                }
                fFXSdbUser[iSys] = anAttribute->GetValue();
 
-               anAttribute = anEntry->GetAttribute("dbPasswd");
-               if (!anAttribute) {
-                       AliError(Form ("Can't find dbPasswd attribute for %s!!",
-                                               AliShuttleInterface::GetSystemName(iSys)));
-                       return 5;
-               }
-               fFXSdbPass[iSys] = anAttribute->GetValue();
-
                anAttribute = anEntry->GetAttribute("dbName");
                if (!anAttribute) {
                        AliError(Form ("Can't find dbName attribute for %s!!",
@@ -1381,7 +1313,7 @@ UInt_t AliShuttleConfig::SetSysConfig(TList* list)
        
        }
        
-       if(count != 111) {
+       if(count != 1111) {
                AliError(Form("Wrong system configuration! (code = %d)", count));
                return 6;
        }
@@ -1389,6 +1321,72 @@ UInt_t AliShuttleConfig::SetSysConfig(TList* list)
        return 0;
 }
 
+//______________________________________________________________________________________________
+UInt_t AliShuttleConfig::SetPasswords(){
+       
+       AliInfo("Setting Passwords");
+
+       // Retrieving Passwords for DAQ lb, DAQ/DCS/HLT/DQM FXS
+
+       ifstream *inputfile = new ifstream(fPasswdFilePath.Data());
+       if (!*inputfile) {
+               AliError(Form("Error opening file %s !", fPasswdFilePath.Data()));
+               inputfile->close();
+               delete inputfile;
+               return 1;
+       }
+
+       TString line;
+       Int_t nPwd=0;
+       Int_t nPwdFake=0;
+       while (line.ReadLine(*inputfile)) {
+               TObjArray *tokens = line.Tokenize(" \t");
+               TString system = ((TObjString *)tokens->At(0))->String(); 
+               TString password = ((TObjString *)tokens->At(1))->String();
+               delete tokens;
+               if (system.Contains("DAQ_LB")){
+                       fDAQlbPass=password;
+                       nPwd++;
+                       AliDebug(3,Form("DAQ_LB: Password %s for %s found", password.Data(), system.Data()));
+               }
+               else if (system.Contains("DAQ_DB")){
+                       fFXSdbPass[0]=password;
+                       nPwd++;
+                       AliDebug(3,Form("DAQ_DB: Password %s for %s found", password.Data(), system.Data()));
+               }
+               else if (system.Contains("DCS_DB")){
+                       fFXSdbPass[1]=password;
+                       nPwd++;
+                       AliDebug(3,Form("DCS_DB: Password %s for %s found", password.Data(), system.Data()));
+               }
+               else if (system.Contains("HLT_DB")){
+                       fFXSdbPass[2]=password;
+                       nPwd++;
+                       AliDebug(3,Form("HLT_DB: Password %s for %s found", password.Data(), system.Data()));
+               }
+               else if (system.Contains("DQM_DB")){
+                       fFXSdbPass[3]=password;
+                       nPwd++;
+                       AliDebug(3,Form("DQM_DB: Password %s for %s found", password.Data(), system.Data()));
+               }
+               else {
+                       nPwdFake++;
+                       AliDebug(3,Form("%i fake line(s) found in file %s", nPwdFake, fPasswdFilePath.Data()));
+                       continue;
+               }
+       }
+
+       inputfile->close();
+       delete inputfile;
+
+       if (nPwd!=5){
+               AliError(Form("Wrong file for DAQ Logbook password found %s (some passwors missing), please Check!", fPasswdFilePath.Data()));
+               return 2;
+       }
+
+       return 0;
+
+}
 //______________________________________________________________________________________________
 UInt_t AliShuttleConfig::SetDetConfig(TList* detList, TList* dcsList)
 {
@@ -1536,25 +1534,23 @@ void AliShuttleConfig::Print(Option_t* option) const
        result += Form("Logbook Configuration \n\n \tHost: %s:%d; \tUser: %s; ",
                fDAQlbHost.Data(), fDAQlbPort, fDAQlbUser.Data());
 
-//     result += "Password: ";
-//     result.Append('*', fDAQlbPass.Length());
        result += Form("\tDB: %s; \tTables: %s, %s, %s\n",
                fDAQlbDB.Data(), fDAQlbTable.Data(), fShuttlelbTable.Data(), fRunTypelbTable.Data());
 
+       result += Form("Terminate file path: %s\n", fTerminateFilePath.Data());
+
        result += "\n\n";
        
        result += "------------------------------------------------------\n";
        result += "FXS configuration\n\n";
 
-       for(int iSys=0;iSys<3;iSys++){
+       for(int iSys=0;iSys<4;iSys++){
                result += Form("*** %s ***\n", AliShuttleInterface::GetSystemName(iSys));
                result += Form("\tDB  host: %s:%d; \tUser: %s; \tName: %s; \tTable: %s\n",
                                                fFXSdbHost[iSys].Data(), fFXSdbPort[iSys], fFXSdbUser[iSys].Data(),
                                                fFXSdbName[iSys].Data(), fFXSdbTable[iSys].Data());
-               // result += Form("DB Password:",fFXSdbPass[iSys].Data());
                result += Form("\tFXS host: %s:%d; \tUser: %s\n", fFXSHost[iSys].Data(), fFXSPort[iSys],
                                                fFXSUser[iSys].Data());
-               // result += Form("FXS Password:",fFXSPass[iSys].Data());
                const TObjArray* fxsAdmins = GetAdmins(iSys);
                if (fxsAdmins->GetEntries() != 0)
                {