|
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) 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 asMetaMan() {return isManager && isMeta;} 00045 int asPeer() {return isPeer;} 00046 int asProxy() {return isProxy;} 00047 int asServer() {return isServer;} 00048 int asSolo() {return isSolo;} 00049 00050 int LUPDelay; // Maximum delay at look-up 00051 int LUPHold; // Maximum hold at look-up (in millisconds) 00052 int DRPDelay; // Maximum delay for dropping an offline server 00053 int PSDelay; // Maximum delay time before peer is selected 00054 int RWDelay; // R/W lookup delay handling (0 | 1 | 2) 00055 int QryDelay; // Query Response Deadline 00056 int QryMinum; // Query Response Deadline Minimum Available 00057 int SRVDelay; // Minimum delay at startup 00058 int SUPCount; // Minimum server count 00059 int SUPLevel; // Minimum server count as floating percentage 00060 int SUPDelay; // Maximum delay when server count falls below min 00061 int SUSDelay; // Maximum delay when suspended 00062 int MaxLoad; // Maximum load 00063 int MaxDelay; // Maximum load delay 00064 int MsgTTL; // Maximum msg lifetime 00065 int RefReset; // Min seconds before a global ref count reset 00066 int RefTurn; // Min references before a global ref count reset 00067 int AskPerf; // Seconds between perf queries 00068 int AskPing; // Number of ping requests per AskPerf window 00069 int LogPerf; // AskPerf intervals before logging perf 00070 00071 int PortTCP; // TCP Port to listen on 00072 XrdInet *NetTCP; // -> Network Object 00073 00074 int P_cpu; // % CPU Capacity in load factor 00075 int P_dsk; // % DSK Capacity in load factor 00076 int P_fuzz; // % Capacity to fuzz when comparing 00077 int P_gsdf; // % Global share default (0 -> no default) 00078 int P_gshr; // % Global share of requests allowed 00079 int P_io; // % I/O Capacity in load factor 00080 int P_load; // % MSC Capacity in load factor 00081 int P_mem; // % MEM Capacity in load factor 00082 int P_pag; // % PAG Capacity in load factor 00083 00084 int DiskMin; // Minimum MB needed of space in a partition 00085 int DiskHWM; // Minimum MB needed of space to requalify 00086 short DiskMinP; // Minimum MB needed of space in a partition as % 00087 short DiskHWMP; // Minimum MB needed of space to requalify as % 00088 int DiskLinger; // Manager Only 00089 int DiskAsk; // Seconds between disk space reclaculations 00090 int DiskWT; // Seconds to defer client while waiting for space 00091 int DiskSS; // This is a staging server 00092 int DiskOK; // This configuration has data 00093 00094 int sched_RR; // 1 -> Simply do round robin scheduling 00095 int doWait; // 1 -> Wait for a data end-point 00096 00097 XrdOucName2Name *xeq_N2N; // Server or Manager (non-null if library loaded) 00098 XrdOucName2Name *lcl_N2N; // Server Only 00099 00100 char *ossLib; // -> oss library 00101 char *ossParms; // -> oss library parameters 00102 char *N2N_Lib; // Server Only 00103 char *N2N_Parms; // Server Only 00104 char *LocalRoot; // Server Only 00105 char *RemotRoot; // Manager 00106 char *myPaths; // Exported paths 00107 short RepStats; // Statistics to report (see RepStat_xxx below) 00108 char Rsvc; 00109 char myRoleID; 00110 char myRType[4]; 00111 char *myRole; 00112 const char *myProg; 00113 const char *myName; 00114 const char *myDomain; 00115 const char *myInsName; 00116 const char *myInstance; 00117 const char *mySID; 00118 XrdOucTList *ManList; // From manager directive 00119 XrdOucTList *NanList; // From manager directive (managers only) 00120 00121 XrdOss *ossFS; // The filsesystem interface 00122 XrdOucProg *ProgCH; // Server only chmod 00123 XrdOucProg *ProgMD; // Server only mkdir 00124 XrdOucProg *ProgMP; // Server only mkpath 00125 XrdOucProg *ProgMV; // Server only mv 00126 XrdOucProg *ProgRD; // Server only rmdir 00127 XrdOucProg *ProgRM; // Server only rm 00128 XrdOucProg *ProgTR; // Server only trunc 00129 00130 unsigned long long DirFlags; 00131 XrdCmsPList_Anchor PathList; 00132 XrdOucPListAnchor PexpList; 00133 XrdNetSocket *AdminSock; 00134 XrdNetSocket *AnoteSock; 00135 XrdNetSocket *RedirSock; 00136 XrdNetSecurity *Police; 00137 struct sockaddr myAddr; 00138 00139 XrdCmsConfig() : XrdJob("cmsd startup") {ConfigDefaults();} 00140 ~XrdCmsConfig() {} 00141 00142 // RepStats value via 'cms.repstats" directive 00143 // 00144 static const int RepStat_frq = 0x0001; // Fast Response Queue 00145 static const int RepStat_shr = 0x0002; // Share 00146 static const int RepStat_All = 0xffff; // All 00147 00148 private: 00149 00150 void ConfigDefaults(void); 00151 int ConfigN2N(void); 00152 int ConfigOSS(void); 00153 int ConfigProc(int getrole=0); 00154 int isExec(XrdSysError *eDest, const char *ptype, char *prog); 00155 int MergeP(void); 00156 int PidFile(void); 00157 int setupManager(void); 00158 int setupServer(void); 00159 char *setupSid(); 00160 int setupXmi(void); 00161 void Usage(int rc); 00162 int xapath(XrdSysError *edest, XrdOucStream &CFile); 00163 int xallow(XrdSysError *edest, XrdOucStream &CFile); 00164 int Fsysadd(XrdSysError *edest, int chk, char *fn); 00165 int xdelay(XrdSysError *edest, XrdOucStream &CFile); 00166 int xdefs(XrdSysError *edest, XrdOucStream &CFile); 00167 int xdfs(XrdSysError *edest, XrdOucStream &CFile); 00168 int xexpo(XrdSysError *edest, XrdOucStream &CFile); 00169 int xfsxq(XrdSysError *edest, XrdOucStream &CFile); 00170 int xfxhld(XrdSysError *edest, XrdOucStream &CFile); 00171 int xlclrt(XrdSysError *edest, XrdOucStream &CFile); 00172 int xmang(XrdSysError *edest, XrdOucStream &CFile); 00173 int xnml(XrdSysError *edest, XrdOucStream &CFile); 00174 int xolib(XrdSysError *edest, XrdOucStream &CFile); 00175 int xperf(XrdSysError *edest, XrdOucStream &CFile); 00176 int xpidf(XrdSysError *edest, XrdOucStream &CFile); 00177 int xping(XrdSysError *edest, XrdOucStream &CFile); 00178 int xprep(XrdSysError *edest, XrdOucStream &CFile); 00179 int xprepm(XrdSysError *edest, XrdOucStream &CFile); 00180 int xreps(XrdSysError *edest, XrdOucStream &CFile); 00181 int xrmtrt(XrdSysError *edest, XrdOucStream &CFile); 00182 int xrole(XrdSysError *edest, XrdOucStream &CFile); 00183 int xsched(XrdSysError *edest, XrdOucStream &CFile); 00184 int xsecl(XrdSysError *edest, XrdOucStream &CFile); 00185 int xspace(XrdSysError *edest, XrdOucStream &CFile); 00186 int xtrace(XrdSysError *edest, XrdOucStream &CFile); 00187 int xxmi(XrdSysError *edest, XrdOucStream &CFile); 00188 00189 XrdInet *NetTCPr; // Network for supervisors 00190 char *AdminPath; 00191 int AdminMode; 00192 char *pidPath; 00193 char *ConfigFN; 00194 char **inArgv; 00195 int inArgc; 00196 char *SecLib; 00197 char *XmiPath; 00198 char *XmiParms; 00199 int isManager; 00200 int isMeta; 00201 int isPeer; 00202 int isProxy; 00203 int isServer; 00204 int isSolo; 00205 char *perfpgm; 00206 int perfint; 00207 int cachelife; 00208 int pendplife; 00209 int FSlim; 00210 }; 00211 namespace XrdCms 00212 { 00213 extern XrdCmsAdmin Admin; 00214 extern XrdCmsConfig Config; 00215 extern XrdScheduler *Sched; 00216 extern XrdCmsXmi *Xmi_Chmod; 00217 extern XrdCmsXmi *Xmi_Load; 00218 extern XrdCmsXmi *Xmi_Mkdir; 00219 extern XrdCmsXmi *Xmi_Mkpath; 00220 extern XrdCmsXmi *Xmi_Prep; 00221 extern XrdCmsXmi *Xmi_Rename; 00222 extern XrdCmsXmi *Xmi_Remdir; 00223 extern XrdCmsXmi *Xmi_Remove; 00224 extern XrdCmsXmi *Xmi_Select; 00225 extern XrdCmsXmi *Xmi_Space; 00226 extern XrdCmsXmi *Xmi_Stat; 00227 } 00228 #endif
1.7.5