xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
XrdCmsConfig.hh
Go to the documentation of this file.
1 #ifndef _CMS_CONFIG_H_
2 #define _CMS_CONFIG_H_
3 /******************************************************************************/
4 /* */
5 /* X r d C m s C o n f i g . h h */
6 /* */
7 /* (c) 2011 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* All Rights Reserved */
9 /* Produced by Andrew Hanushevsky for Stanford University under contract */
10 /* DE-AC02-76-SFO0515 with the Department of Energy */
11 /* */
12 /* This file is part of the XRootD software suite. */
13 /* */
14 /* XRootD is free software: you can redistribute it and/or modify it under */
15 /* the terms of the GNU Lesser General Public License as published by the */
16 /* Free Software Foundation, either version 3 of the License, or (at your */
17 /* option) any later version. */
18 /* */
19 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22 /* License for more details. */
23 /* */
24 /* You should have received a copy of the GNU Lesser General Public License */
25 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27 /* */
28 /* The copyright holder's institutional names and contributor's names may not */
29 /* be used to endorse or promote products derived from this software without */
30 /* specific prior written permission of the institution or contributor. */
31 /******************************************************************************/
32 
33 #include <stdlib.h>
34 
35 #include "Xrd/XrdJob.hh"
36 #include "XrdCms/XrdCmsPList.hh"
37 #include "XrdCms/XrdCmsTypes.hh"
38 #include "XrdOuc/XrdOucPList.hh"
39 #include "XrdOuc/XrdOucTList.hh"
40 
41 class XrdInet;
42 class XrdScheduler;
43 class XrdNetSecurity;
44 class XrdNetSocket;
45 class XrdOss;
46 class XrdSysError;
47 class XrdOucName2Name;
48 class XrdOucProg;
49 class XrdOucStream;
50 class XrdCmsAdmin;
51 
52 struct XrdVersionInfo;
53 
54 class XrdCmsConfig : public XrdJob
55 {
56 public:
57 
58 int Configure1(int argc, char **argv, char *cfn);
59 int Configure2();
60 int ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest);
61 void DoIt();
62 int GenLocalPath(const char *oldp, char *newp);
63 int asManager() {return isManager;}
64 int asMetaMan() {return isManager && isMeta;}
65 int asPeer() {return isPeer;}
66 int asProxy() {return isProxy;}
67 int asServer() {return isServer;}
68 int asSolo() {return isSolo;}
69 
70 int LUPDelay; // Maximum delay at look-up
71 int LUPHold; // Maximum hold at look-up (in millisconds)
72 int DELDelay; // Maximum delay for deleting an offline server
73 int DRPDelay; // Maximum delay for dropping an offline server
74 int PSDelay; // Maximum delay time before peer is selected
75 int RWDelay; // R/W lookup delay handling (0 | 1 | 2)
76 int QryDelay; // Query Response Deadline
77 int QryMinum; // Query Response Deadline Minimum Available
78 int SRVDelay; // Minimum delay at startup
79 int SUPCount; // Minimum server count
80 int SUPLevel; // Minimum server count as floating percentage
81 int SUPDelay; // Maximum delay when server count falls below min
82 int SUSDelay; // Maximum delay when suspended
83 int MaxLoad; // Maximum load
84 int MaxDelay; // Maximum load delay
85 int MsgTTL; // Maximum msg lifetime
86 int RefReset; // Min seconds before a global ref count reset
87 int RefTurn; // Min references before a global ref count reset
88 int AskPerf; // Seconds between perf queries
89 int AskPing; // Number of ping requests per AskPerf window
90 int PingTick; // Ping clock value
91 int LogPerf; // AskPerf intervals before logging perf
92 
93 int PortTCP; // TCP Port to listen on
94 int PortSUP; // TCP Port to listen on (supervisor)
95 XrdInet *NetTCP; // -> Network Object
96 
97 int P_cpu; // % CPU Capacity in load factor
98 int P_dsk; // % DSK Capacity in load factor
99 int P_fuzz; // % Capacity to fuzz when comparing
100 int P_gsdf; // % Global share default (0 -> no default)
101 int P_gshr; // % Global share of requests allowed
102 int P_io; // % I/O Capacity in load factor
103 int P_load; // % MSC Capacity in load factor
104 int P_mem; // % MEM Capacity in load factor
105 int P_pag; // % PAG Capacity in load factor
106 
107 char DoMWChk; // When true (default) perform multiple write check
108 char DoHnTry; // When true (default) use hostnames for try redirs
109 char nbSQ; // Non-blocking send queue handling option
110 char Rsvd; // Reserved for alignment
111 
112 int DiskMin; // Minimum MB needed of space in a partition
113 int DiskHWM; // Minimum MB needed of space to requalify
114 short DiskMinP; // Minimum MB needed of space in a partition as %
115 short DiskHWMP; // Minimum MB needed of space to requalify as %
116 int DiskLinger; // Manager Only
117 int DiskAsk; // Seconds between disk space reclaculations
118 int DiskWT; // Seconds to defer client while waiting for space
119 int DiskSS; // This is a staging server
120 int DiskOK; // This configuration has data
121 
122 char sched_RR; // 1 -> Simply do round robin scheduling
123 char sched_Pack; // 1 -> Pick oldest node (>1 same but wait for resps)
124 char sched_Level; // 1 -> Use load-based level for "pack" selection
125 char sched_Force; // 1 -> Client cannot select mode
126 int doWait; // 1 -> Wait for a data end-point
127 
128 int adsPort; // Alternate server port
129 int adsMon; // Alternate server monitoring
130 char *adsProt; // Alternate server protocol
131 
132 XrdVersionInfo *myVInfo; // xrootd version used in compilation
133 
134 XrdOucName2Name *xeq_N2N; // Server or Manager (non-null if library loaded)
135 XrdOucName2Name *lcl_N2N; // Server Only
136 
137 char *ossLib; // -> oss library
138 char *ossParms; // -> oss library parameters
139 char *VNID_Lib; // Server Only
140 char *VNID_Parms; // Server Only
141 char *N2N_Lib; // Server Only
142 char *N2N_Parms; // Server Only
143 char *LocalRoot; // Server Only
144 char *RemotRoot; // Manager
145 char *myPaths; // Exported paths
146 short RepStats; // Statistics to report (see RepStat_xxx below)
147 char TimeZone; // Time zone we are in (|0x80 -> east of UTC)
148 char myRoleID;
149 char myRType[4];
150 char *myRole;
151 const char *myProg;
152 const char *myName;
153 const char *myDomain;
154 const char *myInsName;
155 const char *myInstance;
156 const char *mySID;
157 const char *myVNID;
158 const char *mySite;
159  char *envCGI;
160  char *cidTag;
161 const char *ifList;
162 XrdOucTList *ManList; // From manager directive
163 XrdOucTList *NanList; // From manager directive (managers only)
164 XrdOucTList *SanList; // From subcluster directive (managers only)
165 
166 XrdOss *ossFS; // The filsesystem interface
167 XrdOucProg *ProgCH; // Server only chmod
168 XrdOucProg *ProgMD; // Server only mkdir
169 XrdOucProg *ProgMP; // Server only mkpath
170 XrdOucProg *ProgMV; // Server only mv
171 XrdOucProg *ProgRD; // Server only rmdir
172 XrdOucProg *ProgRM; // Server only rm
173 XrdOucProg *ProgTR; // Server only trunc
174 
175 unsigned long long DirFlags;
182 
183  XrdCmsConfig() : XrdJob("cmsd startup") {ConfigDefaults();}
185 
186 // RepStats value via 'cms.repstats" directive
187 //
188 static const int RepStat_frq = 0x0001; // Fast Response Queue
189 static const int RepStat_shr = 0x0002; // Share
190 static const int RepStat_All = 0xffff; // All
191 
192 private:
193 
194 void ConfigDefaults(void);
195 int ConfigN2N(void);
196 int ConfigOSS(void);
197 int ConfigProc(int getrole=0);
198 int isExec(XrdSysError *eDest, const char *ptype, char *prog);
199 int MergeP(void);
200 int PidFile(void);
201 int setupManager(void);
202 int setupServer(void);
203 char *setupSid();
204 void Usage(int rc);
205 int xapath(XrdSysError *edest, XrdOucStream &CFile);
206 int xallow(XrdSysError *edest, XrdOucStream &CFile);
207 int xaltds(XrdSysError *edest, XrdOucStream &CFile);
208 int Fsysadd(XrdSysError *edest, int chk, char *fn);
209 int xblk(XrdSysError *edest, XrdOucStream &CFile, bool iswl=false);
210 int xcid(XrdSysError *edest, XrdOucStream &CFile);
211 int xdelay(XrdSysError *edest, XrdOucStream &CFile);
212 int xdefs(XrdSysError *edest, XrdOucStream &CFile);
213 int xdfs(XrdSysError *edest, XrdOucStream &CFile);
214 int xexpo(XrdSysError *edest, XrdOucStream &CFile);
215 int xfsxq(XrdSysError *edest, XrdOucStream &CFile);
216 int xfxhld(XrdSysError *edest, XrdOucStream &CFile);
217 int xlclrt(XrdSysError *edest, XrdOucStream &CFile);
218 int xmang(XrdSysError *edest, XrdOucStream &CFile);
219 int xnbsq(XrdSysError *edest, XrdOucStream &CFile);
220 int xnml(XrdSysError *edest, XrdOucStream &CFile);
221 int xolib(XrdSysError *edest, XrdOucStream &CFile);
222 int xperf(XrdSysError *edest, XrdOucStream &CFile);
223 int xpidf(XrdSysError *edest, XrdOucStream &CFile);
224 int xping(XrdSysError *edest, XrdOucStream &CFile);
225 int xprep(XrdSysError *edest, XrdOucStream &CFile);
226 int xprepm(XrdSysError *edest, XrdOucStream &CFile);
227 int xreps(XrdSysError *edest, XrdOucStream &CFile);
228 int xrmtrt(XrdSysError *edest, XrdOucStream &CFile);
229 int xrole(XrdSysError *edest, XrdOucStream &CFile);
230 int xsched(XrdSysError *edest, XrdOucStream &CFile);
231 int xschedm(char *val, XrdSysError *eDest, XrdOucStream &CFile);
232 int xsecl(XrdSysError *edest, XrdOucStream &CFile);
233 int xspace(XrdSysError *edest, XrdOucStream &CFile);
234 int xsubc(XrdSysError *edest, XrdOucStream &CFile);
235 int xsupp(XrdSysError *edest, XrdOucStream &CFile);
236 int xtrace(XrdSysError *edest, XrdOucStream &CFile);
237 int xvnid(XrdSysError *edest, XrdOucStream &CFile);
238 
239 XrdInet *NetTCPr; // Network for supervisors
240 char *AdminPath;
242 char *pidPath;
243 char *ConfigFN;
244 char **inArgv;
245 int inArgc;
246 char *SecLib;
247 char *blkList;
248 int blkChk;
250 int isMeta;
251 int isPeer;
254 int isSolo;
255 char *perfpgm;
260 int FSlim;
261 };
262 namespace XrdCms
263 {
264 extern XrdCmsAdmin Admin;
265 extern XrdCmsConfig Config;
266 extern XrdScheduler *Sched;
267 }
268 #endif
char * cidTag
Definition: XrdCmsConfig.hh:160
int QryDelay
Definition: XrdCmsConfig.hh:76
XrdNetSocket * AdminSock
Definition: XrdCmsConfig.hh:178
int ConfigOSS(void)
int xrole(XrdSysError *edest, XrdOucStream &CFile)
int xspace(XrdSysError *edest, XrdOucStream &CFile)
char * RemotRoot
Definition: XrdCmsConfig.hh:144
int LUPHold
Definition: XrdCmsConfig.hh:71
int xaltds(XrdSysError *edest, XrdOucStream &CFile)
XrdOucProg * ProgTR
Definition: XrdCmsConfig.hh:173
XrdOss * ossFS
Definition: XrdCmsConfig.hh:166
int isProxy
Definition: XrdCmsConfig.hh:252
int xdefs(XrdSysError *edest, XrdOucStream &CFile)
int xpidf(XrdSysError *edest, XrdOucStream &CFile)
int AdminMode
Definition: XrdCmsConfig.hh:241
int ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest)
Definition: XrdCmsPList.hh:95
int xvnid(XrdSysError *edest, XrdOucStream &CFile)
char sched_Level
Definition: XrdCmsConfig.hh:124
int P_dsk
Definition: XrdCmsConfig.hh:98
int isSolo
Definition: XrdCmsConfig.hh:254
int ConfigProc(int getrole=0)
char * ConfigFN
Definition: XrdCmsConfig.hh:243
int asProxy()
Definition: XrdCmsConfig.hh:66
int pendplife
Definition: XrdCmsConfig.hh:259
int P_pag
Definition: XrdCmsConfig.hh:105
Definition: XrdOucPList.hh:88
int perfint
Definition: XrdCmsConfig.hh:256
int P_cpu
Definition: XrdCmsConfig.hh:97
int DRPDelay
Definition: XrdCmsConfig.hh:73
int RWDelay
Definition: XrdCmsConfig.hh:75
int DiskLinger
Definition: XrdCmsConfig.hh:116
int P_load
Definition: XrdCmsConfig.hh:103
int xping(XrdSysError *edest, XrdOucStream &CFile)
int DiskOK
Definition: XrdCmsConfig.hh:120
int SUPDelay
Definition: XrdCmsConfig.hh:81
~XrdCmsConfig()
Definition: XrdCmsConfig.hh:184
short DiskHWMP
Definition: XrdCmsConfig.hh:115
char DoMWChk
Definition: XrdCmsConfig.hh:107
Definition: XrdOucStream.hh:45
int RefReset
Definition: XrdCmsConfig.hh:86
int adsPort
Definition: XrdCmsConfig.hh:128
int SRVDelay
Definition: XrdCmsConfig.hh:78
char * setupSid()
int LogPerf
Definition: XrdCmsConfig.hh:91
int P_mem
Definition: XrdCmsConfig.hh:104
int xdfs(XrdSysError *edest, XrdOucStream &CFile)
Definition: XrdOucName2Name.hh:48
static const int RepStat_shr
Definition: XrdCmsConfig.hh:189
const char * myName
Definition: XrdCmsConfig.hh:152
int DiskAsk
Definition: XrdCmsConfig.hh:117
XrdCmsConfig()
Definition: XrdCmsConfig.hh:183
XrdOucTList * SanList
Definition: XrdCmsConfig.hh:164
int P_gshr
Definition: XrdCmsConfig.hh:101
Definition: XrdNetSocket.hh:47
const char * myProg
Definition: XrdCmsConfig.hh:151
int xreps(XrdSysError *edest, XrdOucStream &CFile)
int DiskHWM
Definition: XrdCmsConfig.hh:113
int isExec(XrdSysError *eDest, const char *ptype, char *prog)
int xmang(XrdSysError *edest, XrdOucStream &CFile)
int blkChk
Definition: XrdCmsConfig.hh:248
int xcid(XrdSysError *edest, XrdOucStream &CFile)
XrdOucProg * ProgMV
Definition: XrdCmsConfig.hh:170
int AskPerf
Definition: XrdCmsConfig.hh:88
int asManager()
Definition: XrdCmsConfig.hh:63
int MaxDelay
Definition: XrdCmsConfig.hh:84
const char * myVNID
Definition: XrdCmsConfig.hh:157
const char * myInstance
Definition: XrdCmsConfig.hh:155
int asServer()
Definition: XrdCmsConfig.hh:67
char * perfpgm
Definition: XrdCmsConfig.hh:255
int xnbsq(XrdSysError *edest, XrdOucStream &CFile)
char * ossParms
Definition: XrdCmsConfig.hh:138
int xnml(XrdSysError *edest, XrdOucStream &CFile)
int xschedm(char *val, XrdSysError *eDest, XrdOucStream &CFile)
const char * ifList
Definition: XrdCmsConfig.hh:161
char * pidPath
Definition: XrdCmsConfig.hh:242
char * adsProt
Definition: XrdCmsConfig.hh:130
int xsupp(XrdSysError *edest, XrdOucStream &CFile)
char TimeZone
Definition: XrdCmsConfig.hh:147
Definition: XrdSysError.hh:89
const char * myDomain
Definition: XrdCmsConfig.hh:153
int SUSDelay
Definition: XrdCmsConfig.hh:82
char DoHnTry
Definition: XrdCmsConfig.hh:108
XrdNetSocket * AnoteSock
Definition: XrdCmsConfig.hh:179
int cachelife
Definition: XrdCmsConfig.hh:257
char * ossLib
Definition: XrdCmsConfig.hh:137
Definition: XrdScheduler.hh:44
XrdOucProg * ProgRM
Definition: XrdCmsConfig.hh:172
int QryMinum
Definition: XrdCmsConfig.hh:77
int DiskSS
Definition: XrdCmsConfig.hh:119
int FSlim
Definition: XrdCmsConfig.hh:260
int Configure1(int argc, char **argv, char *cfn)
XrdCmsConfig Config
int xallow(XrdSysError *edest, XrdOucStream &CFile)
char * SecLib
Definition: XrdCmsConfig.hh:246
char ** inArgv
Definition: XrdCmsConfig.hh:244
int inArgc
Definition: XrdCmsConfig.hh:245
int DiskMin
Definition: XrdCmsConfig.hh:112
int DELDelay
Definition: XrdCmsConfig.hh:72
char myRoleID
Definition: XrdCmsConfig.hh:148
int DiskWT
Definition: XrdCmsConfig.hh:118
int GenLocalPath(const char *oldp, char *newp)
int isManager
Definition: XrdCmsConfig.hh:249
XrdScheduler * Sched
Definition: XrdOucProg.hh:37
int doWait
Definition: XrdCmsConfig.hh:126
char * N2N_Parms
Definition: XrdCmsConfig.hh:142
int PidFile(void)
char * LocalRoot
Definition: XrdCmsConfig.hh:143
void ConfigDefaults(void)
int isMeta
Definition: XrdCmsConfig.hh:250
int xprepm(XrdSysError *edest, XrdOucStream &CFile)
XrdOucName2Name * xeq_N2N
Definition: XrdCmsConfig.hh:134
char * blkList
Definition: XrdCmsConfig.hh:247
short DiskMinP
Definition: XrdCmsConfig.hh:114
XrdCmsAdmin Admin
char * VNID_Parms
Definition: XrdCmsConfig.hh:140
char * VNID_Lib
Definition: XrdCmsConfig.hh:139
int PortTCP
Definition: XrdCmsConfig.hh:93
XrdInet * NetTCP
Definition: XrdCmsConfig.hh:95
int xblk(XrdSysError *edest, XrdOucStream &CFile, bool iswl=false)
XrdOucProg * ProgCH
Definition: XrdCmsConfig.hh:167
char Rsvd
Definition: XrdCmsConfig.hh:110
char sched_Pack
Definition: XrdCmsConfig.hh:123
int xlclrt(XrdSysError *edest, XrdOucStream &CFile)
int PingTick
Definition: XrdCmsConfig.hh:90
static const int RepStat_All
Definition: XrdCmsConfig.hh:190
XrdOucPListAnchor PexpList
Definition: XrdCmsConfig.hh:177
int isPeer
Definition: XrdCmsConfig.hh:251
char sched_RR
Definition: XrdCmsConfig.hh:122
Definition: XrdOucTList.hh:41
char * myPaths
Definition: XrdCmsConfig.hh:145
int RefTurn
Definition: XrdCmsConfig.hh:87
int xsecl(XrdSysError *edest, XrdOucStream &CFile)
XrdInet * NetTCPr
Definition: XrdCmsConfig.hh:239
int asSolo()
Definition: XrdCmsConfig.hh:68
int isServer
Definition: XrdCmsConfig.hh:253
int P_io
Definition: XrdCmsConfig.hh:102
int PortSUP
Definition: XrdCmsConfig.hh:94
Definition: XrdCmsAdmin.hh:45
int xexpo(XrdSysError *edest, XrdOucStream &CFile)
int xfsxq(XrdSysError *edest, XrdOucStream &CFile)
int P_fuzz
Definition: XrdCmsConfig.hh:99
int xtrace(XrdSysError *edest, XrdOucStream &CFile)
XrdOucProg * ProgMD
Definition: XrdCmsConfig.hh:168
XrdOucProg * ProgMP
Definition: XrdCmsConfig.hh:169
int SUPCount
Definition: XrdCmsConfig.hh:79
XrdOucProg * ProgRD
Definition: XrdCmsConfig.hh:171
int xprep(XrdSysError *edest, XrdOucStream &CFile)
XrdVersionInfo * myVInfo
Definition: XrdCmsConfig.hh:132
const char * mySite
Definition: XrdCmsConfig.hh:158
XrdCmsPList_Anchor PathList
Definition: XrdCmsConfig.hh:176
int xapath(XrdSysError *edest, XrdOucStream &CFile)
int P_gsdf
Definition: XrdCmsConfig.hh:100
char * N2N_Lib
Definition: XrdCmsConfig.hh:141
static const int RepStat_frq
Definition: XrdCmsConfig.hh:188
int ConfigN2N(void)
int MsgTTL
Definition: XrdCmsConfig.hh:85
unsigned long long DirFlags
Definition: XrdCmsConfig.hh:175
XrdOucTList * ManList
Definition: XrdCmsConfig.hh:162
char * envCGI
Definition: XrdCmsConfig.hh:159
int AskPing
Definition: XrdCmsConfig.hh:89
char sched_Force
Definition: XrdCmsConfig.hh:125
XrdOucTList * NanList
Definition: XrdCmsConfig.hh:163
Definition: XrdOss.hh:173
XrdNetSocket * RedirSock
Definition: XrdCmsConfig.hh:180
int asPeer()
Definition: XrdCmsConfig.hh:65
char nbSQ
Definition: XrdCmsConfig.hh:109
Definition: XrdNetSecurity.hh:43
int xsubc(XrdSysError *edest, XrdOucStream &CFile)
int setupManager(void)
char myRType[4]
Definition: XrdCmsConfig.hh:149
int MaxLoad
Definition: XrdCmsConfig.hh:83
int xolib(XrdSysError *edest, XrdOucStream &CFile)
int asMetaMan()
Definition: XrdCmsConfig.hh:64
char * myRole
Definition: XrdCmsConfig.hh:150
const char * myInsName
Definition: XrdCmsConfig.hh:154
int xperf(XrdSysError *edest, XrdOucStream &CFile)
short RepStats
Definition: XrdCmsConfig.hh:146
int Fsysadd(XrdSysError *edest, int chk, char *fn)
XrdNetSecurity * Police
Definition: XrdCmsConfig.hh:181
int xfxhld(XrdSysError *edest, XrdOucStream &CFile)
int PSDelay
Definition: XrdCmsConfig.hh:74
int Configure2()
const char * mySID
Definition: XrdCmsConfig.hh:156
int SUPLevel
Definition: XrdCmsConfig.hh:80
Definition: XrdCmsConfig.hh:54
XrdOucName2Name * lcl_N2N
Definition: XrdCmsConfig.hh:135
int xdelay(XrdSysError *edest, XrdOucStream &CFile)
char * AdminPath
Definition: XrdCmsConfig.hh:240
int emptylife
Definition: XrdCmsConfig.hh:258
int LUPDelay
Definition: XrdCmsConfig.hh:70
int MergeP(void)
int xsched(XrdSysError *edest, XrdOucStream &CFile)
Definition: XrdInet.hh:48
void Usage(int rc)
Definition: XrdJob.hh:42
int setupServer(void)
int xrmtrt(XrdSysError *edest, XrdOucStream &CFile)
int adsMon
Definition: XrdCmsConfig.hh:129