xrootd
Loading...
Searching...
No Matches
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 <cstdlib>
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
41class XrdInet;
43class XrdScheduler;
44class XrdNetSecurity;
45class XrdNetSocket;
46class XrdOss;
47class XrdSysError;
48class XrdOucEnv;
49class XrdOucName2Name;
50class XrdOucProg;
51class XrdOucStream;
52class XrdCmsAdmin;
53
54struct XrdVersionInfo;
55
56class XrdCmsConfig : public XrdJob
57{
58public:
59
61int Configure1(int argc, char **argv, char *cfn);
63int ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest);
64void DoIt();
65int GenLocalPath(const char *oldp, char *newp);
66int asManager() {return isManager;}
67int asMetaMan() {return isManager && isMeta;}
68int asPeer() {return isPeer;}
69int asProxy() {return isProxy;}
70int asServer() {return isServer;}
71int asSolo() {return isSolo;}
72
73int LUPDelay; // Maximum delay at look-up
74int LUPHold; // Maximum hold at look-up (in millisconds)
75int DELDelay; // Maximum delay for deleting an offline server
76int DRPDelay; // Maximum delay for dropping an offline server
77int PSDelay; // Maximum delay time before peer is selected
78int RWDelay; // R/W lookup delay handling (0 | 1 | 2)
79int QryDelay; // Query Response Deadline
80int QryMinum; // Query Response Deadline Minimum Available
81int SRVDelay; // Minimum delay at startup
82int SUPCount; // Minimum server count
83int SUPLevel; // Minimum server count as floating percentage
84int SUPDelay; // Maximum delay when server count falls below min
85int SUSDelay; // Maximum delay when suspended
86int MaxLoad; // Maximum load
87int MaxDelay; // Maximum load delay
88int MaxRetries; // Maximum number of non-DFS select retries
89int MsgTTL; // Maximum msg lifetime
90int RefReset; // Min seconds before a global ref count reset
91int RefTurn; // Min references before a global ref count reset
92int AskPerf; // Seconds between perf queries
93int AskPing; // Number of ping requests per AskPerf window
94int PingTick; // Ping clock value
95int LogPerf; // AskPerf intervals before logging perf
96
97int PortTCP; // TCP Port to listen on
98int PortSUP; // TCP Port to listen on (supervisor)
99XrdInet *NetTCP; // -> Network Object
100
101int P_cpu; // % CPU Capacity in load factor
102int P_dsk; // % DSK Capacity in load factor
103int P_fuzz; // % Capacity to fuzz when comparing
104int P_gsdf; // % Global share default (0 -> no default)
105int P_gshr; // % Global share of requests allowed
106int P_io; // % I/O Capacity in load factor
107int P_load; // % MSC Capacity in load factor
108int P_mem; // % MEM Capacity in load factor
109int P_pag; // % PAG Capacity in load factor
110
111char DoMWChk; // When true (default) perform multiple write check
112char DoHnTry; // When true (default) use hostnames for try redirs
113char nbSQ; // Non-blocking send queue handling option
114char MultiSrc; // Allow retries via 'tried=' and 'cms.sadd' cgi
115
116int DiskMin; // Minimum MB needed of space in a partition
117int DiskHWM; // Minimum MB needed of space to requalify
118short DiskMinP; // Minimum MB needed of space in a partition as %
119short DiskHWMP; // Minimum MB needed of space to requalify as %
120int DiskLinger; // Manager Only
121int DiskAsk; // Seconds between disk space reclaculations
122int DiskWT; // Seconds to defer client while waiting for space
123bool DiskSS; // This is a staging server
124bool DiskOK; // This configuration has data
125
126char rsvd[5];
127
128char sched_RR; // 1 -> Simply do round robin scheduling
129char sched_Pack; // 1 -> Pick with affinity (>1 same but wait for resps)
130char sched_AffPC; // Affinity path component count (-255 <= n <= 255)
131char sched_Level; // 1 -> Use load-based level for "pack" selection
132char sched_Force; // 1 -> Client cannot select mode
133int doWait; // 1 -> Wait for a data end-point
134
135int adsPort; // Alternate server port
136int adsMon; // Alternate server monitoring
137char *adsProt; // Alternate server protocol
138
139char *mrRdrHost; // Maxretries redirect target
142char *msRdrHost; // Nomultisrc redirect target
145
146XrdVersionInfo *myVInfo; // xrootd version used in compilation
147
148XrdOucName2Name *xeq_N2N; // Server or Manager (non-null if library loaded)
149XrdOucName2Name *lcl_N2N; // Server Only
150
152char *ossLib; // -> oss library
153char *ossParms; // -> oss library parameters
154char *prfLib; // ->perf library
155char *prfParms; // ->perf library parameters
156char *VNID_Lib; // Server Only
157char *VNID_Parms; // Server Only
158char *N2N_Lib; // Server Only
159char *N2N_Parms; // Server Only
160char *LocalRoot; // Server Only
161char *RemotRoot; // Manager
162char *myPaths; // Exported paths
163short RepStats; // Statistics to report (see RepStat_xxx below)
164char TimeZone; // Time zone we are in (|0x80 -> east of UTC)
166char myRType[4];
167char *myRole;
168const char *myProg;
169const char *myName;
170const char *myDomain;
171const char *myInsName;
172const char *myInstance;
173const char *mySID;
174const char *myVNID;
175const char *mySite;
176 char *envCGI;
177 char *cidTag;
178const char *ifList;
179XrdOucTList *ManList; // From manager directive
180XrdOucTList *NanList; // From manager directive (managers only)
181XrdOucTList *SanList; // From subcluster directive (managers only)
182
183XrdOss *ossFS; // The filsesystem interface
184XrdOucProg *ProgCH; // Server only chmod
185XrdOucProg *ProgMD; // Server only mkdir
186XrdOucProg *ProgMP; // Server only mkpath
187XrdOucProg *ProgMV; // Server only mv
188XrdOucProg *ProgRD; // Server only rmdir
189XrdOucProg *ProgRM; // Server only rm
190XrdOucProg *ProgTR; // Server only trunc
191
192unsigned long long DirFlags;
199
200 XrdCmsConfig() : XrdJob("cmsd startup") {ConfigDefaults();}
202
203// RepStats value via 'cms.repstats" directive
204//
205static const int RepStat_frq = 0x0001; // Fast Response Queue
206static const int RepStat_shr = 0x0002; // Share
207static const int RepStat_All = 0xffff; // All
208
209private:
210
211void ConfigDefaults(void);
212int ConfigN2N(void);
213int ConfigOSS(void);
214int ConfigProc(int getrole=0);
215int isExec(XrdSysError *eDest, const char *ptype, char *prog);
217int MergeP(void);
218int setupManager(void);
219int setupServer(void);
220char *setupSid();
221void Usage(int rc);
222int xapath(XrdSysError *edest, XrdOucStream &CFile);
223int xallow(XrdSysError *edest, XrdOucStream &CFile);
224int xaltds(XrdSysError *edest, XrdOucStream &CFile);
225int Fsysadd(XrdSysError *edest, int chk, char *fn);
226int xblk(XrdSysError *edest, XrdOucStream &CFile, bool iswl=false);
227int xcid(XrdSysError *edest, XrdOucStream &CFile);
228int xdelay(XrdSysError *edest, XrdOucStream &CFile);
229int xdefs(XrdSysError *edest, XrdOucStream &CFile);
230int xdfs(XrdSysError *edest, XrdOucStream &CFile);
231int xexpo(XrdSysError *edest, XrdOucStream &CFile);
232int xfsxq(XrdSysError *edest, XrdOucStream &CFile);
233int xfxhld(XrdSysError *edest, XrdOucStream &CFile);
234int xlclrt(XrdSysError *edest, XrdOucStream &CFile);
235int xmang(XrdSysError *edest, XrdOucStream &CFile);
236int xnbsq(XrdSysError *edest, XrdOucStream &CFile);
237int xperf(XrdSysError *edest, XrdOucStream &CFile);
238int xping(XrdSysError *edest, XrdOucStream &CFile);
239int xprep(XrdSysError *edest, XrdOucStream &CFile);
240int xprepm(XrdSysError *edest, XrdOucStream &CFile);
241int xreps(XrdSysError *edest, XrdOucStream &CFile);
242int xrmtrt(XrdSysError *edest, XrdOucStream &CFile);
243int xrole(XrdSysError *edest, XrdOucStream &CFile);
244int xsched(XrdSysError *edest, XrdOucStream &CFile);
245int xschedm(char *val, XrdSysError *eDest, XrdOucStream &CFile);
246int xschedp(char *val, XrdSysError *eDest, XrdOucStream &CFile);
247int xschedx(char *val, XrdSysError *eDest, XrdOucStream &CFile);
248bool xschedy(char *val, XrdSysError *eDest, char *&host, int &hlen, int &port);
249int xsecl(XrdSysError *edest, XrdOucStream &CFile);
250int xspace(XrdSysError *edest, XrdOucStream &CFile);
251int xsubc(XrdSysError *edest, XrdOucStream &CFile);
252int xsupp(XrdSysError *edest, XrdOucStream &CFile);
253int xtrace(XrdSysError *edest, XrdOucStream &CFile);
254int xvnid(XrdSysError *edest, XrdOucStream &CFile);
255
256XrdInet *NetTCPr; // Network for supervisors
260char **inArgv;
262char *SecLib;
277};
278namespace XrdCms
279{
280extern XrdCmsAdmin Admin;
281extern XrdCmsConfig Config;
282extern XrdScheduler *Sched;
283}
284#endif
Definition XrdCmsAdmin.hh:46
Definition XrdCmsConfig.hh:57
int xspace(XrdSysError *edest, XrdOucStream &CFile)
int xsecl(XrdSysError *edest, XrdOucStream &CFile)
static const int RepStat_shr
Definition XrdCmsConfig.hh:206
static const int RepStat_frq
Definition XrdCmsConfig.hh:205
int xsubc(XrdSysError *edest, XrdOucStream &CFile)
int asManager()
Definition XrdCmsConfig.hh:66
int MsgTTL
Definition XrdCmsConfig.hh:89
XrdOucProg * ProgMP
Definition XrdCmsConfig.hh:186
int SUPLevel
Definition XrdCmsConfig.hh:83
int ConfigProc(int getrole=0)
XrdInet * NetTCPr
Definition XrdCmsConfig.hh:256
char * SecLib
Definition XrdCmsConfig.hh:262
int GenLocalPath(const char *oldp, char *newp)
const char * myDomain
Definition XrdCmsConfig.hh:170
int xexpo(XrdSysError *edest, XrdOucStream &CFile)
int P_gshr
Definition XrdCmsConfig.hh:105
XrdNetSocket * RedirSock
Definition XrdCmsConfig.hh:197
char * ConfigFN
Definition XrdCmsConfig.hh:151
char nbSQ
Definition XrdCmsConfig.hh:113
int xrmtrt(XrdSysError *edest, XrdOucStream &CFile)
short DiskHWMP
Definition XrdCmsConfig.hh:119
XrdNetSocket * AdminSock
Definition XrdCmsConfig.hh:195
char * envCGI
Definition XrdCmsConfig.hh:176
int RefTurn
Definition XrdCmsConfig.hh:91
char MultiSrc
Definition XrdCmsConfig.hh:114
int QryMinum
Definition XrdCmsConfig.hh:80
int doWait
Definition XrdCmsConfig.hh:133
int xsupp(XrdSysError *edest, XrdOucStream &CFile)
int QryDelay
Definition XrdCmsConfig.hh:79
XrdOucProg * ProgRM
Definition XrdCmsConfig.hh:189
XrdCmsPList_Anchor PathList
Definition XrdCmsConfig.hh:193
char rsvd[5]
Definition XrdCmsConfig.hh:126
char * VNID_Lib
Definition XrdCmsConfig.hh:156
int RWDelay
Definition XrdCmsConfig.hh:78
int inArgc
Definition XrdCmsConfig.hh:261
int AskPing
Definition XrdCmsConfig.hh:93
const char * myInsName
Definition XrdCmsConfig.hh:171
int msRdrPort
Definition XrdCmsConfig.hh:144
char ** inArgv
Definition XrdCmsConfig.hh:260
XrdInet * NetTCP
Definition XrdCmsConfig.hh:99
int LUPDelay
Definition XrdCmsConfig.hh:73
int xping(XrdSysError *edest, XrdOucStream &CFile)
char * blkList
Definition XrdCmsConfig.hh:263
XrdCmsConfig()
Definition XrdCmsConfig.hh:200
int xnbsq(XrdSysError *edest, XrdOucStream &CFile)
int PortTCP
Definition XrdCmsConfig.hh:97
int adsPort
Definition XrdCmsConfig.hh:135
char * ossLib
Definition XrdCmsConfig.hh:152
XrdOucEnv * xrdEnv
Definition XrdCmsConfig.hh:257
XrdOss * ossFS
Definition XrdCmsConfig.hh:183
int xrole(XrdSysError *edest, XrdOucStream &CFile)
XrdOucTList * SanList
Definition XrdCmsConfig.hh:181
int adsMon
Definition XrdCmsConfig.hh:136
const char * mySite
Definition XrdCmsConfig.hh:175
int isExec(XrdSysError *eDest, const char *ptype, char *prog)
int MaxLoad
Definition XrdCmsConfig.hh:86
static const int RepStat_All
Definition XrdCmsConfig.hh:207
int mrRdrHLen
Definition XrdCmsConfig.hh:140
char * prfParms
Definition XrdCmsConfig.hh:155
int xdelay(XrdSysError *edest, XrdOucStream &CFile)
char * RemotRoot
Definition XrdCmsConfig.hh:161
int DiskMin
Definition XrdCmsConfig.hh:116
int xsched(XrdSysError *edest, XrdOucStream &CFile)
int MaxRetries
Definition XrdCmsConfig.hh:88
int DELDelay
Definition XrdCmsConfig.hh:75
int AdminMode
Definition XrdCmsConfig.hh:259
int mrRdrPort
Definition XrdCmsConfig.hh:141
char * VNID_Parms
Definition XrdCmsConfig.hh:157
unsigned long long DirFlags
Definition XrdCmsConfig.hh:192
const char * myName
Definition XrdCmsConfig.hh:169
int xdfs(XrdSysError *edest, XrdOucStream &CFile)
int PortSUP
Definition XrdCmsConfig.hh:98
int xallow(XrdSysError *edest, XrdOucStream &CFile)
int SUSDelay
Definition XrdCmsConfig.hh:85
char * AdminPath
Definition XrdCmsConfig.hh:258
char myRType[4]
Definition XrdCmsConfig.hh:166
int AskPerf
Definition XrdCmsConfig.hh:92
int MaxDelay
Definition XrdCmsConfig.hh:87
void ConfigDefaults(void)
int LUPHold
Definition XrdCmsConfig.hh:74
int SUPDelay
Definition XrdCmsConfig.hh:84
XrdOucTList * NanList
Definition XrdCmsConfig.hh:180
int P_mem
Definition XrdCmsConfig.hh:108
char * N2N_Parms
Definition XrdCmsConfig.hh:159
int P_pag
Definition XrdCmsConfig.hh:109
int isProxy
Definition XrdCmsConfig.hh:268
int MergeP(void)
short DiskMinP
Definition XrdCmsConfig.hh:118
int isManager
Definition XrdCmsConfig.hh:265
XrdNetSecurity * Police
Definition XrdCmsConfig.hh:198
int asServer()
Definition XrdCmsConfig.hh:70
int DiskHWM
Definition XrdCmsConfig.hh:117
XrdOucPListAnchor PexpList
Definition XrdCmsConfig.hh:194
int LogPerf
Definition XrdCmsConfig.hh:95
XrdNetSocket * AnoteSock
Definition XrdCmsConfig.hh:196
XrdVersionInfo * myVInfo
Definition XrdCmsConfig.hh:146
char sched_Force
Definition XrdCmsConfig.hh:132
int xschedm(char *val, XrdSysError *eDest, XrdOucStream &CFile)
int FSlim
Definition XrdCmsConfig.hh:276
char * mrRdrHost
Definition XrdCmsConfig.hh:139
char sched_RR
Definition XrdCmsConfig.hh:128
int xaltds(XrdSysError *edest, XrdOucStream &CFile)
int ConfigN2N(void)
XrdOucProg * ProgRD
Definition XrdCmsConfig.hh:188
int emptylife
Definition XrdCmsConfig.hh:274
void Usage(int rc)
int xfsxq(XrdSysError *edest, XrdOucStream &CFile)
int cachelife
Definition XrdCmsConfig.hh:273
XrdOucProg * ProgCH
Definition XrdCmsConfig.hh:184
int PingTick
Definition XrdCmsConfig.hh:94
bool xschedy(char *val, XrdSysError *eDest, char *&host, int &hlen, int &port)
int SRVDelay
Definition XrdCmsConfig.hh:81
int msRdrHLen
Definition XrdCmsConfig.hh:143
int asPeer()
Definition XrdCmsConfig.hh:68
int xfxhld(XrdSysError *edest, XrdOucStream &CFile)
int blkChk
Definition XrdCmsConfig.hh:264
const char * ifList
Definition XrdCmsConfig.hh:178
int isServer
Definition XrdCmsConfig.hh:269
char * msRdrHost
Definition XrdCmsConfig.hh:142
char sched_Level
Definition XrdCmsConfig.hh:131
int RefReset
Definition XrdCmsConfig.hh:90
char DoHnTry
Definition XrdCmsConfig.hh:112
int xapath(XrdSysError *edest, XrdOucStream &CFile)
const char * myInstance
Definition XrdCmsConfig.hh:172
char sched_AffPC
Definition XrdCmsConfig.hh:130
char * setupSid()
int asMetaMan()
Definition XrdCmsConfig.hh:67
int xcid(XrdSysError *edest, XrdOucStream &CFile)
XrdOucProg * ProgMV
Definition XrdCmsConfig.hh:187
int P_cpu
Definition XrdCmsConfig.hh:101
char * LocalRoot
Definition XrdCmsConfig.hh:160
int xlclrt(XrdSysError *edest, XrdOucStream &CFile)
char * myRole
Definition XrdCmsConfig.hh:167
int xperf(XrdSysError *edest, XrdOucStream &CFile)
int ConfigOSS(void)
~XrdCmsConfig()
Definition XrdCmsConfig.hh:201
int P_load
Definition XrdCmsConfig.hh:107
bool DiskOK
Definition XrdCmsConfig.hh:124
int P_dsk
Definition XrdCmsConfig.hh:102
int PSDelay
Definition XrdCmsConfig.hh:77
bool DiskSS
Definition XrdCmsConfig.hh:123
int isSolo
Definition XrdCmsConfig.hh:270
int DiskLinger
Definition XrdCmsConfig.hh:120
XrdOucProg * ProgMD
Definition XrdCmsConfig.hh:185
int xschedx(char *val, XrdSysError *eDest, XrdOucStream &CFile)
int setupManager(void)
int DRPDelay
Definition XrdCmsConfig.hh:76
int Configure1(int argc, char **argv, char *cfn)
int xschedp(char *val, XrdSysError *eDest, XrdOucStream &CFile)
int ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest)
int DiskWT
Definition XrdCmsConfig.hh:122
char * adsProt
Definition XrdCmsConfig.hh:137
int asSolo()
Definition XrdCmsConfig.hh:71
int xreps(XrdSysError *edest, XrdOucStream &CFile)
char myRoleID
Definition XrdCmsConfig.hh:165
int xprepm(XrdSysError *edest, XrdOucStream &CFile)
XrdOucTList * ManList
Definition XrdCmsConfig.hh:179
int DiskAsk
Definition XrdCmsConfig.hh:121
const char * mySID
Definition XrdCmsConfig.hh:173
int xprep(XrdSysError *edest, XrdOucStream &CFile)
char * N2N_Lib
Definition XrdCmsConfig.hh:158
XrdOucName2Name * xeq_N2N
Definition XrdCmsConfig.hh:148
const char * myProg
Definition XrdCmsConfig.hh:168
short RepStats
Definition XrdCmsConfig.hh:163
char * cidTag
Definition XrdCmsConfig.hh:177
int isMeta
Definition XrdCmsConfig.hh:266
int perfint
Definition XrdCmsConfig.hh:272
int P_fuzz
Definition XrdCmsConfig.hh:103
int P_gsdf
Definition XrdCmsConfig.hh:104
int setupServer(void)
int asProxy()
Definition XrdCmsConfig.hh:69
char * prfLib
Definition XrdCmsConfig.hh:154
char * ossParms
Definition XrdCmsConfig.hh:153
int xblk(XrdSysError *edest, XrdOucStream &CFile, bool iswl=false)
int Fsysadd(XrdSysError *edest, int chk, char *fn)
char DoMWChk
Definition XrdCmsConfig.hh:111
char TimeZone
Definition XrdCmsConfig.hh:164
int isPeer
Definition XrdCmsConfig.hh:267
XrdOucName2Name * lcl_N2N
Definition XrdCmsConfig.hh:149
int Configure2()
char * perfpgm
Definition XrdCmsConfig.hh:271
int xdefs(XrdSysError *edest, XrdOucStream &CFile)
char * myPaths
Definition XrdCmsConfig.hh:162
int pendplife
Definition XrdCmsConfig.hh:275
char sched_Pack
Definition XrdCmsConfig.hh:129
int SUPCount
Definition XrdCmsConfig.hh:82
int Configure0(XrdProtocol_Config *pi)
int xtrace(XrdSysError *edest, XrdOucStream &CFile)
int xmang(XrdSysError *edest, XrdOucStream &CFile)
XrdOucProg * ProgTR
Definition XrdCmsConfig.hh:190
int P_io
Definition XrdCmsConfig.hh:106
const char * myVNID
Definition XrdCmsConfig.hh:174
int xvnid(XrdSysError *edest, XrdOucStream &CFile)
Definition XrdCmsPList.hh:96
Definition XrdInet.hh:48
Definition XrdJob.hh:43
Definition XrdNetSecurity.hh:44
Definition XrdNetSocket.hh:48
Definition XrdOss.hh:498
Definition XrdOucEnv.hh:42
Definition XrdOucName2Name.hh:49
Definition XrdOucPList.hh:89
Definition XrdOucProg.hh:38
Definition XrdOucStream.hh:47
Definition XrdOucTList.hh:42
Definition XrdProtocol.hh:56
Definition XrdScheduler.hh:46
Definition XrdSysError.hh:90
Definition YProtocol.hh:78
XrdCmsAdmin Admin
XrdScheduler * Sched
XrdCmsConfig Config