xrootd

XrdCmsConfig.hh

Go to the documentation of this file.
00001 #ifndef _CMS_CONFIG_H_
00002 #define _CMS_CONFIG_H_
00003 /******************************************************************************/
00004 /*                                                                            */
00005 /*                       X r d C m s C o n f i g . h h                        */
00006 /*                                                                            */
00007 /* (c) 2011 by the Board of Trustees of the Leland Stanford, Jr., University  */
00008 /*                            All Rights Reserved                             */
00009 /*   Produced by Andrew Hanushevsky for Stanford University under contract    */
00010 /*              DE-AC02-76-SFO0515 with the Department of Energy              */
00011 /******************************************************************************/
00012 
00013 #include <stdlib.h>
00014 #include <sys/socket.h>
00015 
00016 #include "Xrd/XrdJob.hh"
00017 #include "XrdCms/XrdCmsPList.hh"
00018 #include "XrdCms/XrdCmsTypes.hh"
00019 #include "XrdOuc/XrdOucPList.hh"
00020 #include "XrdOuc/XrdOucTList.hh"
00021   
00022 class XrdInet;
00023 class XrdScheduler;
00024 class XrdNetSecurity;
00025 class XrdNetSocket;
00026 class XrdOss;
00027 class XrdSysError;
00028 class XrdOucName2Name;
00029 class XrdOucProg;
00030 class XrdOucStream;
00031 class XrdCmsAdmin;
00032 class XrdCmsXmi;
00033 
00034 class XrdCmsConfig : public XrdJob
00035 {
00036 public:
00037 
00038 int   Configure1(int argc, char **argv, char *cfn);
00039 int   Configure2();
00040 int   ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest);
00041 void  DoIt();
00042 int   GenLocalPath(const char *oldp, char *newp);
00043 int   asManager() {return isManager;}
00044 int   asPeer()    {return isPeer;}
00045 int   asProxy()   {return isProxy;}
00046 int   asServer()  {return isServer;}
00047 int   asSolo()    {return isSolo;}
00048 
00049 int         LUPDelay;     // Maximum delay at look-up
00050 int         LUPHold;      // Maximum hold  at look-up (in millisconds)
00051 int         DRPDelay;     // Maximum delay for dropping an offline server
00052 int         PSDelay;      // Maximum delay time before peer is selected
00053 int         RWDelay;      // R/W lookup delay handling (0 | 1 | 2)
00054 int         QryDelay;     // Query Response Deadline
00055 int         SRVDelay;     // Minimum delay at startup
00056 int         SUPCount;     // Minimum server count
00057 int         SUPLevel;     // Minimum server count as floating percentage
00058 int         SUPDelay;     // Maximum delay when server count falls below min
00059 int         SUSDelay;     // Maximum delay when suspended
00060 int         MaxLoad;      // Maximum load
00061 int         MaxDelay;     // Maximum load delay
00062 int         MsgTTL;       // Maximum msg lifetime
00063 int         RefReset;     // Min seconds    before a global ref count reset
00064 int         RefTurn;      // Min references before a global ref count reset
00065 int         AskPerf;      // Seconds between perf queries
00066 int         AskPing;      // Number of ping requests per AskPerf window
00067 int         LogPerf;      // AskPerf intervals before logging perf
00068 
00069 int         PortTCP;      // TCP Port to  listen on
00070 XrdInet    *NetTCP;       // -> Network Object
00071 
00072 int         P_cpu;        // % CPU Capacity in load factor
00073 int         P_dsk;        // % DSK Capacity in load factor
00074 int         P_fuzz;       // %     Capacity to fuzz when comparing
00075 int         P_io;         // % I/O Capacity in load factor
00076 int         P_load;       // % MSC Capacity in load factor
00077 int         P_mem;        // % MEM Capacity in load factor
00078 int         P_pag;        // % PAG Capacity in load factor
00079 
00080 int         DiskMin;      // Minimum MB needed of space in a partition
00081 int         DiskHWM;      // Minimum MB needed of space to requalify
00082 short       DiskMinP;     // Minimum MB needed of space in a partition as %
00083 short       DiskHWMP;     // Minimum MB needed of space to requalify   as %
00084 int         DiskLinger;   // Manager Only
00085 int         DiskAsk;      // Seconds between disk space reclaculations
00086 int         DiskWT;       // Seconds to defer client while waiting for space
00087 int         DiskSS;       // This is a staging server
00088 int         DiskOK;       // This configuration has data
00089 
00090 int         sched_RR;     // 1 -> Simply do round robin scheduling
00091 int         doWait;       // 1 -> Wait for a data end-point
00092 
00093 XrdOucName2Name *xeq_N2N; // Server or Manager (non-null if library loaded)
00094 XrdOucName2Name *lcl_N2N; // Server Only
00095 
00096 char        *ossLib;      // -> oss library
00097 char        *ossParms;    // -> oss library parameters
00098 char        *N2N_Lib;     // Server Only
00099 char        *N2N_Parms;   // Server Only
00100 char        *LocalRoot;   // Server Only
00101 char        *RemotRoot;   // Manager
00102 char        *myPaths;     // Exported paths
00103 const char  *myProg;
00104 const char  *myName;
00105 const char  *myDomain;
00106 const char  *myInsName;
00107 const char  *myInstance;
00108 const char  *mySID;
00109 XrdOucTList *ManList;     // From manager directive
00110 XrdOucTList *NanList;     // From manager directive (managers only)
00111 
00112 XrdOss      *ossFS;       // The filsesystem interface
00113 XrdOucProg  *ProgCH;      // Server only chmod
00114 XrdOucProg  *ProgMD;      // Server only mkdir
00115 XrdOucProg  *ProgMP;      // Server only mkpath
00116 XrdOucProg  *ProgMV;      // Server only mv
00117 XrdOucProg  *ProgRD;      // Server only rmdir
00118 XrdOucProg  *ProgRM;      // Server only rm
00119 XrdOucProg  *ProgTR;      // Server only trunc
00120 
00121 unsigned long long DirFlags;
00122 XrdCmsPList_Anchor PathList;
00123 XrdOucPListAnchor  PexpList;
00124 XrdNetSocket      *AdminSock;
00125 XrdNetSocket      *AnoteSock;
00126 XrdNetSocket      *RedirSock;
00127 XrdNetSecurity    *Police;
00128 struct sockaddr    myAddr;
00129 
00130       XrdCmsConfig() : XrdJob("cmsd startup") {ConfigDefaults();}
00131      ~XrdCmsConfig() {}
00132 
00133 private:
00134 
00135 void ConfigDefaults(void);
00136 int  ConfigN2N(void);
00137 int  ConfigOSS(void);
00138 int  ConfigProc(int getrole=0);
00139 int  isExec(XrdSysError *eDest, const char *ptype, char *prog);
00140 int  MergeP(void);
00141 int  PidFile(void);
00142 int  setupManager(void);
00143 int  setupServer(void);
00144 char *setupSid();
00145 int  setupXmi(void);
00146 void Usage(int rc);
00147 int  xapath(XrdSysError *edest, XrdOucStream &CFile);
00148 int  xallow(XrdSysError *edest, XrdOucStream &CFile);
00149 int  Fsysadd(XrdSysError *edest, int chk, char *fn);
00150 int  xdelay(XrdSysError *edest, XrdOucStream &CFile);
00151 int  xdefs(XrdSysError *edest, XrdOucStream &CFile);
00152 int  xdfs(XrdSysError *edest, XrdOucStream &CFile);
00153 int  xexpo(XrdSysError *edest, XrdOucStream &CFile);
00154 int  xfsxq(XrdSysError *edest, XrdOucStream &CFile);
00155 int  xfxhld(XrdSysError *edest, XrdOucStream &CFile);
00156 int  xlclrt(XrdSysError *edest, XrdOucStream &CFile);
00157 int  xmang(XrdSysError *edest, XrdOucStream &CFile);
00158 int  xnml(XrdSysError *edest, XrdOucStream &CFile);
00159 int  xolib(XrdSysError *edest, XrdOucStream &CFile);
00160 int  xperf(XrdSysError *edest, XrdOucStream &CFile);
00161 int  xpidf(XrdSysError *edest, XrdOucStream &CFile);
00162 int  xping(XrdSysError *edest, XrdOucStream &CFile);
00163 int  xprep(XrdSysError *edest, XrdOucStream &CFile);
00164 int  xprepm(XrdSysError *edest, XrdOucStream &CFile);
00165 int  xrmtrt(XrdSysError *edest, XrdOucStream &CFile);
00166 int  xrole(XrdSysError *edest, XrdOucStream &CFile);
00167 int  xsched(XrdSysError *edest, XrdOucStream &CFile);
00168 int  xsecl(XrdSysError *edest, XrdOucStream &CFile);
00169 int  xspace(XrdSysError *edest, XrdOucStream &CFile);
00170 int  xtrace(XrdSysError *edest, XrdOucStream &CFile);
00171 int  xxmi(XrdSysError *edest, XrdOucStream &CFile);
00172 
00173 XrdInet          *NetTCPr;     // Network for supervisors
00174 char             *AdminPath;
00175 int               AdminMode;
00176 char             *pidPath;
00177 char             *ConfigFN;
00178 char            **inArgv;
00179 int               inArgc;
00180 char             *SecLib;
00181 char             *XmiPath;
00182 char             *XmiParms;
00183 int               isManager;
00184 int               isMeta;
00185 int               isPeer;
00186 int               isProxy;
00187 int               isServer;
00188 int               isSolo;
00189 char             *myRole;
00190 char             *perfpgm;
00191 int               perfint;
00192 int               cachelife;
00193 int               pendplife;
00194 int               FSlim;
00195 };
00196 namespace XrdCms
00197 {
00198 extern XrdCmsAdmin   Admin;
00199 extern XrdCmsConfig  Config;
00200 extern XrdScheduler *Sched;
00201 extern XrdCmsXmi    *Xmi_Chmod;
00202 extern XrdCmsXmi    *Xmi_Load;
00203 extern XrdCmsXmi    *Xmi_Mkdir;
00204 extern XrdCmsXmi    *Xmi_Mkpath;
00205 extern XrdCmsXmi    *Xmi_Prep;
00206 extern XrdCmsXmi    *Xmi_Rename;
00207 extern XrdCmsXmi    *Xmi_Remdir;
00208 extern XrdCmsXmi    *Xmi_Remove;
00209 extern XrdCmsXmi    *Xmi_Select;
00210 extern XrdCmsXmi    *Xmi_Space;
00211 extern XrdCmsXmi    *Xmi_Stat;
00212 }
00213 #endif