xrootd
|
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) 2007 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 // $Id$ 00014 00015 #include <stdlib.h> 00016 #include <sys/socket.h> 00017 00018 #include "Xrd/XrdJob.hh" 00019 #include "XrdCms/XrdCmsPList.hh" 00020 #include "XrdCms/XrdCmsTypes.hh" 00021 #include "XrdOuc/XrdOucPList.hh" 00022 #include "XrdOuc/XrdOucTList.hh" 00023 00024 class XrdInet; 00025 class XrdScheduler; 00026 class XrdNetSecurity; 00027 class XrdNetSocket; 00028 class XrdOss; 00029 class XrdSysError; 00030 class XrdOucName2Name; 00031 class XrdOucProg; 00032 class XrdOucStream; 00033 class XrdCmsAdmin; 00034 class XrdCmsXmi; 00035 00036 class XrdCmsConfig : public XrdJob 00037 { 00038 public: 00039 00040 int Configure1(int argc, char **argv, char *cfn); 00041 int Configure2(); 00042 int ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest); 00043 void DoIt(); 00044 int GenLocalPath(const char *oldp, char *newp); 00045 int asManager() {return isManager;} 00046 int asPeer() {return isPeer;} 00047 int asProxy() {return isProxy;} 00048 int asServer() {return isServer;} 00049 int asSolo() {return isSolo;} 00050 00051 int LUPDelay; // Maximum delay at look-up 00052 int LUPHold; // Maximum hold at look-up (in millisconds) 00053 int DRPDelay; // Maximum delay for dropping an offline server 00054 int PSDelay; // Maximum delay time before peer is selected 00055 int RWDelay; // R/W lookup delay handling (0 | 1 | 2) 00056 int SRVDelay; // Minimum delay at startup 00057 int SUPCount; // Minimum server count 00058 int SUPLevel; // Minimum server count as floating percentage 00059 int SUPDelay; // Maximum delay when server count falls below min 00060 int SUSDelay; // Maximum delay when suspended 00061 int MaxLoad; // Maximum load 00062 int MaxDelay; // Maximum load delay 00063 int MsgTTL; // Maximum msg lifetime 00064 int RefReset; // Min seconds before a global ref count reset 00065 int RefTurn; // Min references before a global ref count reset 00066 int AskPerf; // Seconds between perf queries 00067 int AskPing; // Number of ping requests per AskPerf window 00068 int LogPerf; // AskPerf intervals before logging perf 00069 00070 int PortTCP; // TCP Port to listen on 00071 XrdInet *NetTCP; // -> Network Object 00072 00073 int P_cpu; // % CPU Capacity in load factor 00074 int P_dsk; // % DSK Capacity in load factor 00075 int P_fuzz; // % Capacity to fuzz when comparing 00076 int P_io; // % I/O Capacity in load factor 00077 int P_load; // % MSC Capacity in load factor 00078 int P_mem; // % MEM Capacity in load factor 00079 int P_pag; // % PAG Capacity in load factor 00080 00081 int DiskMin; // Minimum MB needed of space in a partition 00082 int DiskHWM; // Minimum MB needed of space to requalify 00083 short DiskMinP; // Minimum MB needed of space in a partition as % 00084 short DiskHWMP; // Minimum MB needed of space to requalify as % 00085 int DiskLinger; // Manager Only 00086 int DiskAsk; // Seconds between disk space reclaculations 00087 int DiskWT; // Seconds to defer client while waiting for space 00088 int DiskSS; // This is a staging server 00089 int DiskOK; // This configuration has data 00090 00091 int sched_RR; // 1 -> Simply do round robin scheduling 00092 int doWait; // 1 -> Wait for a data end-point 00093 00094 XrdOucName2Name *xeq_N2N; // Server or Manager (non-null if library loaded) 00095 XrdOucName2Name *lcl_N2N; // Server Only 00096 00097 char *ossLib; // -> oss library 00098 char *ossParms; // -> oss library parameters 00099 char *N2N_Lib; // Server Only 00100 char *N2N_Parms; // Server Only 00101 char *LocalRoot; // Server Only 00102 char *RemotRoot; // Manager 00103 char *myPaths; // Exported paths 00104 const char *myProg; 00105 const char *myName; 00106 const char *myDomain; 00107 const char *myInsName; 00108 const char *myInstance; 00109 const char *mySID; 00110 XrdOucTList *ManList; // From manager directive 00111 XrdOucTList *NanList; // From manager directive (managers only) 00112 00113 XrdOss *ossFS; // The filsesystem interface 00114 XrdOucProg *ProgCH; // Server only chmod 00115 XrdOucProg *ProgMD; // Server only mkdir 00116 XrdOucProg *ProgMP; // Server only mkpath 00117 XrdOucProg *ProgMV; // Server only mv 00118 XrdOucProg *ProgRD; // Server only rmdir 00119 XrdOucProg *ProgRM; // Server only rm 00120 XrdOucProg *ProgTR; // Server only trunc 00121 00122 unsigned long long DirFlags; 00123 XrdCmsPList_Anchor PathList; 00124 XrdOucPListAnchor PexpList; 00125 XrdNetSocket *AdminSock; 00126 XrdNetSocket *AnoteSock; 00127 XrdNetSocket *RedirSock; 00128 XrdNetSecurity *Police; 00129 struct sockaddr myAddr; 00130 00131 XrdCmsConfig() : XrdJob("cmsd startup") {ConfigDefaults();} 00132 ~XrdCmsConfig() {} 00133 00134 private: 00135 00136 void ConfigDefaults(void); 00137 int ConfigN2N(void); 00138 int ConfigOSS(void); 00139 int ConfigProc(int getrole=0); 00140 int isExec(XrdSysError *eDest, const char *ptype, char *prog); 00141 int MergeP(void); 00142 int PidFile(void); 00143 int setupManager(void); 00144 int setupServer(void); 00145 char *setupSid(); 00146 int setupXmi(void); 00147 void Usage(int rc); 00148 int xapath(XrdSysError *edest, XrdOucStream &CFile); 00149 int xallow(XrdSysError *edest, XrdOucStream &CFile); 00150 int Fsysadd(XrdSysError *edest, int chk, char *fn); 00151 int xdelay(XrdSysError *edest, XrdOucStream &CFile); 00152 int xdefs(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 }; 00195 namespace XrdCms 00196 { 00197 extern XrdCmsAdmin Admin; 00198 extern XrdCmsConfig Config; 00199 extern XrdScheduler *Sched; 00200 extern XrdCmsXmi *Xmi_Chmod; 00201 extern XrdCmsXmi *Xmi_Load; 00202 extern XrdCmsXmi *Xmi_Mkdir; 00203 extern XrdCmsXmi *Xmi_Mkpath; 00204 extern XrdCmsXmi *Xmi_Prep; 00205 extern XrdCmsXmi *Xmi_Rename; 00206 extern XrdCmsXmi *Xmi_Remdir; 00207 extern XrdCmsXmi *Xmi_Remove; 00208 extern XrdCmsXmi *Xmi_Select; 00209 extern XrdCmsXmi *Xmi_Space; 00210 extern XrdCmsXmi *Xmi_Stat; 00211 } 00212 #endif