added port numbers to ldap schema and config classes (alberto)
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Dec 2006 08:09:04 +0000 (08:09 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Dec 2006 08:09:04 +0000 (08:09 +0000)
SHUTTLE/AliShuttle.cxx
SHUTTLE/AliShuttleConfig.cxx
SHUTTLE/AliShuttleConfig.h
SHUTTLE/TestShuttle/AliTestPreprocessor.cxx
SHUTTLE/TestShuttle/AliTestPreprocessor.h
SHUTTLE/TestShuttle/TestPreprocessor.C
SHUTTLE/schema/shuttle.schema

index 2fc32d1..d8fcb9a 100644 (file)
 
 /*
 $Log$
+Revision 1.21  2006/12/07 08:51:26  jgrosseo
+update (alberto):
+table, db names in ldap configuration
+added GRP preprocessor
+DCS data can also be retrieved by data point
+
 Revision 1.20  2006/11/16 16:16:48  jgrosseo
 introducing strict run ordering flag
 removed giving preprocessor name to preprocessor, they have to know their name themselves ;-)
@@ -839,6 +845,8 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause,
 // Query DAQ's Shuttle logbook and fills detector status object.
 // Call QueryRunParameters to query DAQ logbook for run parameters.
 
+       entries.SetOwner(1);
+
        // check connection, in case connect
        if(!Connect(3)) return kFALSE;
 
@@ -851,8 +859,10 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause,
                return kFALSE;
        }
 
+       AliDebug(2,Form("Query = %s", sqlQuery.Data()));
+
        if(aResult->GetRowCount() == 0) {
-               if(sqlQuery.Contains("where shuttle_done=0")){
+               if(sqlQuery.EndsWith("where shuttle_done=0 order by run")){
                        Log("SHUTTLE", "QueryShuttleLogbook - All runs in Shuttle Logbook are already DONE");
                        delete aResult;
                        return kTRUE;
@@ -864,15 +874,13 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause,
        }
 
        // TODO Check field count!
-       const UInt_t nCols = 24;
+       const UInt_t nCols = 22;
        if (aResult->GetFieldCount() != (Int_t) nCols) {
                AliError("Invalid SQL result field number!");
                delete aResult;
                return kFALSE;
        }
 
-       entries.SetOwner(1);
-
        TSQLRow* aRow;
        while ((aRow = aResult->Next())) {
                TString runString(aRow->GetField(0), aRow->GetFieldLength(0));
@@ -890,7 +898,7 @@ Bool_t AliShuttle::QueryShuttleLogbook(const char* whereClause,
                delete aRow;
        }
 
-       if(sqlQuery.Contains("where shuttle_done=0"))
+       if(sqlQuery.EndsWith("where shuttle_done=0 order by run"))
                Log("SHUTTLE", Form("QueryShuttleLogbook - Found %d unprocessed runs in Shuttle Logbook",
                                                        entries.GetEntriesFast()));
        delete aResult;
@@ -1197,13 +1205,13 @@ Bool_t AliShuttle::Connect(Int_t system)
 
        if (system < 3) // FXS db servers
        {
-               dbHost = Form("mysql://%s", fConfig->GetFXSdbHost(system));
+               dbHost = Form("mysql://%s:%d", fConfig->GetFXSdbHost(system), fConfig->GetFXSdbPort(system));
                dbUser = fConfig->GetFXSdbUser(system);
                dbPass = fConfig->GetFXSdbPass(system);
                dbName =   fConfig->GetFXSdbName(system);
        } else { // Run & Shuttle logbook servers
        // TODO Will the Shuttle logbook server be the same as the Run logbook server ???
-               dbHost = Form("mysql://%s", fConfig->GetDAQlbHost());
+               dbHost = Form("mysql://%s:%d", fConfig->GetDAQlbHost(), fConfig->GetDAQlbPort());
                dbUser = fConfig->GetDAQlbUser();
                dbPass = fConfig->GetDAQlbPass();
                dbName =   fConfig->GetDAQlbDB();
@@ -1355,7 +1363,8 @@ Bool_t AliShuttle::RetrieveDAQFile(const char* daqFileName, const char* localFil
        }
 
        TString baseDAQFXSFolder = "DAQ";
-       TString command = Form("scp %s@%s:%s/%s %s/%s",
+       TString command = Form("scp -oPort=%d -2 %s@%s:%s/%s %s/%s",
+               fConfig->GetFXSPort(kDAQ),
                fConfig->GetFXSUser(kDAQ),
                fConfig->GetFXSHost(kDAQ),
                baseDAQFXSFolder.Data(),
@@ -1654,7 +1663,7 @@ Bool_t AliShuttle::Collect(Int_t run)
        for (UInt_t iDet=0; iDet<NDetectors(); iDet++)
                fFirstUnprocessed[iDet] = kTRUE;
 
-       if (run != 1)
+       if (run != -1)
        {
                // query Shuttle logbook for earlier runs, check if some detectors are unprocessed,
                // flag them into fFirstUnprocessed array
index c638661..f147632 100644 (file)
 
 /*
 $Log$
+Revision 1.13  2006/12/07 08:51:26  jgrosseo
+update (alberto):
+table, db names in ldap configuration
+added GRP preprocessor
+DCS data can also be retrieved by data point
+
 Revision 1.12  2006/11/16 16:16:48  jgrosseo
 introducing strict run ordering flag
 removed giving preprocessor name to preprocessor, they have to know their name themselves ;-)
@@ -112,6 +118,8 @@ AliShuttleConfig::AliShuttleConfigHolder::AliShuttleConfigHolder(const TLDAPEntr
 fDetector(""),
 fDCSHost(""),
 fDCSPort(0),
+fDCSAliases(0),
+fDCSDataPoints(0),
 fIsValid(kFALSE),
 fSkipDCSQuery(kFALSE),
 fStrictRunOrder(kFALSE)
@@ -210,7 +218,8 @@ ClassImp(AliShuttleConfig)
 AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        const char* binddn, const char* password, const char* basedn):
        fIsValid(kFALSE),
-       fDAQlbHost(""), fDAQlbUser(""), fDAQlbPass(""),
+       fDAQlbHost(""), fDAQlbPort(), fDAQlbUser(""), fDAQlbPass(""),
+       fDAQlbDB(""), fDAQlbTable(""),
        fMaxRetries(0), fPPTimeOut(0), fDetectorMap(), fDetectorList(),
        fShuttleInstanceHost(""), fProcessedDetectors(), fProcessAll(kFALSE)
 {
@@ -336,6 +345,14 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
        }
        fDAQlbHost = anAttribute->GetValue();
 
+       anAttribute = anEntry->GetAttribute("DAQLogbookPort"); // MAY
+       if (anAttribute)
+       {
+               fDAQlbPort = ((TString) anAttribute->GetValue()).Atoi();
+       } else {
+               fDAQlbPort = 3306; // mysql
+       }
+
        anAttribute = anEntry->GetAttribute("DAQLogbookUser");
        if (!anAttribute) {
                AliError("Can't find DAQLogbookUser attribute!");
@@ -410,13 +427,21 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
 
                anAttribute = anEntry->GetAttribute("DBHost");
                if (!anAttribute) {
-                       AliError(Form ("Can't find LogbookHost attribute for %s!!",
+                       AliError(Form ("Can't find DBHost attribute for %s!!",
                                                AliShuttleInterface::GetSystemName(iSys)));
                        delete aResult; delete anEntry;
                        return;
                }
                fFXSdbHost[iSys] = anAttribute->GetValue();
 
+               anAttribute = anEntry->GetAttribute("DBPort"); // MAY
+               if (anAttribute)
+               {
+                       fFXSdbPort[iSys] = ((TString) anAttribute->GetValue()).Atoi();
+               } else {
+                       fFXSdbPort[iSys] = 3306; // mysql
+               }
+
                anAttribute = anEntry->GetAttribute("DBUser");
                if (!anAttribute) {
                        AliError(Form ("Can't find DBUser attribute for %s!!",
@@ -462,6 +487,14 @@ AliShuttleConfig::AliShuttleConfig(const char* host, Int_t port,
                }
                fFXSHost[iSys] = anAttribute->GetValue();
 
+               anAttribute = anEntry->GetAttribute("FSPort"); // MAY
+               if (anAttribute)
+               {
+                       fFXSPort[iSys] = ((TString) anAttribute->GetValue()).Atoi();
+               } else {
+                       fFXSPort[iSys] = 22; // scp port number
+               }
+
                anAttribute = anEntry->GetAttribute("FSUser");
                if (!anAttribute) {
                        AliError(Form ("Can't find FSUser attribute for %s!!",
@@ -635,8 +668,8 @@ void AliShuttleConfig::Print(Option_t* /*option*/) const
 
        result += Form("PP time out = %d - Max total retries = %d\n\n", fPPTimeOut, fMaxRetries);
 
-       result += Form("DAQ Logbook Configuration \n \tHost: %s; \tUser: %s; ",
-               fDAQlbHost.Data(), fDAQlbUser.Data());
+       result += Form("DAQ Logbook Configuration \n \tHost: %s:%d; \tUser: %s; ",
+               fDAQlbHost.Data(), fDAQlbPort, fDAQlbUser.Data());
 
 //     result += "Password: ";
 //     result.Append('*', fDAQlbPass.Length());
@@ -647,11 +680,12 @@ void AliShuttleConfig::Print(Option_t* /*option*/) const
 
        for(int iSys=0;iSys<3;iSys++){
                result += Form("FXS Configuration for %s system\n", AliShuttleInterface::GetSystemName(iSys));
-               result += Form("\tDB  host: %s; \tUser: %s; \tName: %s; \tTable: %s\n",
-                                               fFXSdbHost[iSys].Data(), fFXSdbUser[iSys].Data(),
+               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; \tUser: %s\n\n", fFXSHost[iSys].Data(), fFXSUser[iSys].Data());
+               result += Form("\tFXS host: %s:%d; \tUser: %s\n\n", fFXSHost[iSys].Data(), fFXSPort[iSys],
+                                               fFXSUser[iSys].Data());
                // result += Form("FXS Password:",fFXSPass[iSys].Data());
        }
 
index 4db461e..a9e92ef 100644 (file)
@@ -28,16 +28,19 @@ public:
        Bool_t IsValid() const {return fIsValid;};
 
        const char* GetDAQlbHost() const {return fDAQlbHost.Data();}
+       UInt_t      GetDAQlbPort() const {return fDAQlbPort;}
        const char* GetDAQlbUser() const {return fDAQlbUser.Data();}
        const char* GetDAQlbPass() const {return fDAQlbPass.Data();}
        const char* GetDAQlbDB() const {return fDAQlbDB.Data();}
        const char* GetDAQlbTable() const {return fDAQlbTable.Data();}
 
        const char* GetFXSHost(Int_t system) const {return fFXSHost[system].Data();}
+       UInt_t      GetFXSPort(Int_t system) const {return fFXSPort[system];}
        const char* GetFXSUser(Int_t system) const {return fFXSUser[system].Data();}
        const char* GetFXSPass(Int_t system) const {return fFXSPass[system].Data();}
 
        const char* GetFXSdbHost(Int_t system) const {return fFXSdbHost[system].Data();}
+       UInt_t      GetFXSdbPort(Int_t system) const {return fFXSdbPort[system];}
        const char* GetFXSdbUser(Int_t system) const {return fFXSdbUser[system].Data();}
        const char* GetFXSdbPass(Int_t system) const {return fFXSdbPass[system].Data();}
        const char* GetFXSdbName(Int_t system) const {return fFXSdbName[system].Data();}
@@ -98,16 +101,19 @@ private:
        Bool_t fIsValid;                //! flag for the validity of the configuration
 
        TString fDAQlbHost;             //! Host of the DAQ logbook MySQL Server
+       UInt_t  fDAQlbPort;             //! port of the DAQ logbook MySQL Server
        TString fDAQlbUser;             //! username of the DAQ logbook MySQL Server
        TString fDAQlbPass;             //! password of the DAQ logbook MySQL Server
        TString fDAQlbDB;               //! DB name of the DAQ logbook MySQL Server
        TString fDAQlbTable;            //! Table name of the DAQ logbook MySQL Server
 
        TString fFXSHost[3];            //! Host of the [DAQ, DCS, HLT] File eXchange Server
+       UInt_t  fFXSPort[3];            //! Port of the [DAQ, DCS, HLT] File eXchange Server
        TString fFXSUser[3];            //! username of the [DAQ, DCS, HLT] File eXchange Server
        TString fFXSPass[3];            //! password of the [DAQ, DCS, HLT] File eXchange Server
 
        TString fFXSdbHost[3];          //! Host of the [DAQ, DCS, HLT] FXS database
+       UInt_t  fFXSdbPort[3];          //! Port of the [DAQ, DCS, HLT] FXS database
        TString fFXSdbUser[3];          //! username of the [DAQ, DCS, HLT] FXS database
        TString fFXSdbPass[3];          //! password of the [DAQ, DCS, HLT] FXS database
        TString fFXSdbName[3];          //! name of the [DAQ, DCS, HLT] FXS database
index d9f20a3..40cb519 100644 (file)
@@ -16,8 +16,8 @@
 ClassImp(AliTestPreprocessor)
 
 //______________________________________________________________________________________________
-AliTestPreprocessor::AliTestPreprocessor(const char* detector, AliShuttleInterface* shuttle) :
-  AliPreprocessor(detector, shuttle),
+AliTestPreprocessor::AliTestPreprocessor(AliShuttleInterface* shuttle) :
+  AliPreprocessor("TPC", shuttle),
   fData(0)
 {
   // constructor
index 060d480..9e701a4 100644 (file)
@@ -10,7 +10,7 @@ class AliTestDataDCS;
 class AliTestPreprocessor : public AliPreprocessor
 {
   public:
-    AliTestPreprocessor(const char* detector, AliShuttleInterface* shuttle);
+    AliTestPreprocessor(AliShuttleInterface* shuttle);
     virtual ~AliTestPreprocessor();
 
   protected:
index 911f0fd..66fc9ff 100644 (file)
@@ -57,10 +57,12 @@ void TestPreprocessor()
   // AddInputFile(<system>, <detector>, <id>, <source>, <local-file>)
   // In this example we add a file originating from the GDC with the id PEDESTALS
   // Three files originating from different LDCs but with the same id are also added
-  shuttle->AddInputFile(AliTestShuttle::kDAQ, "DET", "PEDESTALS", "GDC", "file1.root");
-  shuttle->AddInputFile(AliTestShuttle::kDAQ, "DET", "DRIFTVELOCITY", "LDC0", "file2a.root");
-  shuttle->AddInputFile(AliTestShuttle::kDAQ, "DET", "DRIFTVELOCITY", "LDC1", "file2b.root");
-  shuttle->AddInputFile(AliTestShuttle::kDAQ, "DET", "DRIFTVELOCITY", "LDC2", "file2b.root");
+  // Note that the test preprocessor name is TPC. The name of the detector's preprocessor must follow
+  // the "online" naming convention ALICE-INT-2003-039.
+  shuttle->AddInputFile(AliTestShuttle::kDAQ, "TPC", "PEDESTALS", "GDC", "file1.root");
+  shuttle->AddInputFile(AliTestShuttle::kDAQ, "TPC", "DRIFTVELOCITY", "LDC0", "file2a.root");
+  shuttle->AddInputFile(AliTestShuttle::kDAQ, "TPC", "DRIFTVELOCITY", "LDC1", "file2b.root");
+  shuttle->AddInputFile(AliTestShuttle::kDAQ, "TPC", "DRIFTVELOCITY", "LDC2", "file2b.root");
 
   // TODO(3)
   //
@@ -73,9 +75,7 @@ void TestPreprocessor()
 
   // TODO(4)
   // Create the preprocessor that should be tested, it registers itself automatically to the shuttle
-//  AliPreprocessor* pp = new AliTestPreprocessor("DET", shuttle);
-//  AliPreprocessor* start = new AliT0Preprocessor("T00", shuttle);
-  AliPreprocessor* test = new AliTestPreprocessor("DET", shuttle);
+  AliPreprocessor* test = new AliTestPreprocessor(shuttle);
 
   // Test the preprocessor
   shuttle->Process();
@@ -87,7 +87,7 @@ void TestPreprocessor()
   //
   // Check the file which should have been created
   AliCDBEntry* entry = AliCDBManager::Instance()->GetStorage(AliTestShuttle::GetOCDBStorage())
-                       ->Get("DET/SHUTTLE/Data", 7);
+                       ->Get("TPC/SHUTTLE/Data", 7);
   if (!entry)
   {
     printf("The file is not there. Something went wrong.\n");
index 9e365e8..e937510 100644 (file)
@@ -21,37 +21,41 @@ objectidentifier SYS_CONFIG SHUTTLE_BASE:2
 
 attributetype ( SYS_CONFIG:1 NAME 'system'          DESC 'System name (DAQ, DCS, HLT)'    EQUALITY caseIgnoreMatch    SUP name )
 attributetype ( SYS_CONFIG:2 NAME 'DBHost'      DESC ''        EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:3 NAME 'DBUser'      DESC ''        EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:4 NAME 'DBPassword'  DESC ''        EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:5 NAME 'DBName'      DESC ''        EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:6 NAME 'DBTable'     DESC ''        EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:7 NAME 'FSHost'          DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:8 NAME 'FSUser'          DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( SYS_CONFIG:9 NAME 'FSPassword'       DESC ''   EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:3 NAME 'DBPort'      DESC ''                                    SUP ipServicePort )
+attributetype ( SYS_CONFIG:4 NAME 'DBUser'      DESC ''        EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:5 NAME 'DBPassword'  DESC ''        EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:6 NAME 'DBName'      DESC ''        EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:7 NAME 'DBTable'     DESC ''        EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:8 NAME 'FSHost'          DESC ''    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:9 NAME 'FSPort'          DESC ''                                SUP ipServicePort )
+attributetype ( SYS_CONFIG:10 NAME 'FSUser'         DESC ''    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( SYS_CONFIG:11 NAME 'FSPassword'       DESC ''  EQUALITY caseIgnoreMatch    SUP name )
 
 objectclass ( SYS_CONFIG
         NAME 'AliShuttleSYSConfig'
         DESC 'ALICE: Configuration of the Shuttle for access to online network'
         SUP top
         MUST (system $ DBHost $ DBUser $ DBPassword $ DBName $ DBTable $ FSHost $ FSUser )
-        MAY ( FSPassword ) )
+        MAY ( FSPassword $ DBPort $ FSPort) )
 
 
 objectidentifier GLOBAL_CONFIG SHUTTLE_BASE:3
 
 attributetype ( GLOBAL_CONFIG:1 NAME 'DAQLogbookHost'      DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( GLOBAL_CONFIG:2 NAME 'DAQLogbookUser'      DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( GLOBAL_CONFIG:3 NAME 'DAQLogbookPassword'  DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( GLOBAL_CONFIG:4 NAME 'DAQLogbookDB'        DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( GLOBAL_CONFIG:5 NAME 'DAQLogbookTable'     DESC ''    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( GLOBAL_CONFIG:6 NAME 'MaxRetries'          DESC 'number of retries for failures of a preprocessor'    EQUALITY caseIgnoreMatch    SUP name )
-attributetype ( GLOBAL_CONFIG:7 NAME 'PPTimeOut'           DESC 'number of seconds until preprocessor is aborted'    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( GLOBAL_CONFIG:2 NAME 'DAQLogbookPort'      DESC ''                               SUP ipServicePort )
+attributetype ( GLOBAL_CONFIG:3 NAME 'DAQLogbookUser'      DESC ''    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( GLOBAL_CONFIG:4 NAME 'DAQLogbookPassword'  DESC ''    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( GLOBAL_CONFIG:5 NAME 'DAQLogbookDB'        DESC ''    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( GLOBAL_CONFIG:6 NAME 'DAQLogbookTable'     DESC ''    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( GLOBAL_CONFIG:7 NAME 'MaxRetries'          DESC 'number of retries for failures of a preprocessor'    EQUALITY caseIgnoreMatch    SUP name )
+attributetype ( GLOBAL_CONFIG:8 NAME 'PPTimeOut'           DESC 'number of seconds until preprocessor is aborted'    EQUALITY caseIgnoreMatch    SUP name )
 
 objectclass ( GLOBAL_CONFIG
         NAME 'AliShuttleGlobalConfig'
         DESC 'ALICE: Access to DAQ logbook settings'
         SUP top
-        MUST (name $ DAQLogbookHost $ DAQLogbookUser $ DAQLogbookPassword $ DAQLogbookDB $ DAQLogbookTable $ MaxRetries $ PPTimeOut) )
+        MUST (name $ DAQLogbookHost $ DAQLogbookUser $ DAQLogbookPassword $ DAQLogbookDB $ DAQLogbookTable $ MaxRetries $ PPTimeOut)
+        MAY ( DAQLogbookPort ) )
 
 
 objectidentifier INSTANCE_CONFIG SHUTTLE_BASE:4