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