/[pdpsoft]/trunk/nl.nikhef.ndpf.tools/globus-yaim-gram5/config_gip_gram5_glue2
ViewVC logotype

Contents of /trunk/nl.nikhef.ndpf.tools/globus-yaim-gram5/config_gip_gram5_glue2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2532 - (show annotations) (download)
Wed Apr 25 14:35:04 2012 UTC (9 years, 8 months ago) by davidg
File size: 15560 byte(s)
Movedpaths

1 ##############################################################################
2 # Copyright (c) Members of the EGEE Collaboration. 2004.
3 # See http://www.eu-egee.org/partners/ for details on the copyright
4 # holders.
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 ##############################################################################
18 #
19 # NAME : config_gip_gram5_glue2
20 #
21 # DESCRIPTION : This function configures the generic information providor (GIP)
22 # for a Globus GRAM5 CE
23 # DERIVED FROM the CREAM GLUE2 provider by INFN CNAF
24 #
25 # AUTHORS : grid.sysadmin@nikhef.nl
26 #
27 # YAIM MODULE: local
28 #
29 ##############################################################################
30
31 function config_gip_gram5_glue2_check () {
32
33 requires $1 \
34 SITE_NAME CE_BATCH_SYS BATCH_VERSION \
35 CE_OS_ARCH CE_PHYSCPU CE_LOGCPU CE_SMPSIZE CE_CPU_VENDOR \
36 CE_SF00 CE_SI00 CE_CPU_MODEL CE_CPU_SPEED CE_MINPHYSMEM CE_OTHERDESCR \
37 VOS QUEUES __GROUP_ENABLE
38
39 }
40
41 function config_gip_gram5_glue2_setenv () {
42
43 yaimlog DEBUG "This function currently doesn't set any environment variables."
44
45 }
46
47 function config_gip_gram5_glue2 () {
48
49 # default values
50 GIP_DATA=${GIP_DATA:-/var/lib/bdii/gip}
51 GIP_CONFIG=${GIP_CONFIG:-/etc/globus-info-gip-gram5-glue2.conf}
52 GIP_BIN=${GIP_BIN:-/usr/bin}
53 CE_HOST=${CE_HOST:-`hostname -f`}
54 CE_OS_FAMILY=${CE_OS_FAMILY:-linux}
55
56 # Calculate ACBR list and shares
57 # one share is a VOView
58
59 acbr_list=""
60
61 # for (1) - BEGIN
62 for QUEUE in $QUEUES; do
63
64 #dn: GlueCEUniqueID=${CE_HOST}:${ce_port}/${ce_type}-$JOB_MANAGER-$QUEUE
65
66 # Converting the dots and dashes to underscore to get the proper variable name
67 dnssafevar=`echo $QUEUE | sed -e 's/[\.-]/_/g' | tr '[:lower:]' '[:upper:]'`
68 qenablevar=${dnssafevar}_GROUP_ENABLE
69
70 if [ "${!qenablevar}" ] ; then
71 # Here we add the VO names or/and VOMS FQANs to the GlueCEUniqueID's ACBR list
72 acbr=""
73 for vomsgroup in ${!qenablevar}; do
74 #echo -n "GlueCEAccessControlBaseRule: " >> $outfile
75 convert_fqan "${vomsgroup}"
76 if [ ! `echo ${vomsgroup} | grep "/"` ]; then
77 # echo "VO:${newfqanvo}" >> $outfile
78 acbr="VO:${newfqanvo}"
79 acbr_list="${acbr_list} ${acbr}"
80 if ( echo "${vomsgroup}" | egrep -q '^/[^/]*$' ); then
81 yaimlog WARNING "Queue $QUEUE was enabled for one or more FQANs which specify an entire VO"
82 fi
83 else
84 yaimlog WARNING "Queue $QUEUE was enabled for one or more FQANs which specify an entire VO"
85 # echo "VOMS:${newfqan}" >> $outfile
86 acbr="VOMS:${newfqan}"
87 acbr_list="${acbr_list} ${acbr}"
88 fi
89 acbr_list="$acbr_list $acbr"
90 done
91 # Remove duplicated items from list
92 acbr_list_final=""
93 acbr_list=`for kk in $acbr_list; do echo $kk; done | sort | uniq`;
94 # Remove new-lines introduced with previous operation
95 for jj in $acbr_list; do
96 acbr_list_final="$acbr_list_final $jj"
97 done
98
99 # Now, we publish the VOViews belonging to the given GlueCEUniqueID
100 # for (2) - BEGIN
101 queue_share_list=""
102 for vomsgroup in ${!qenablevar}; do
103 convert_fqan "${vomsgroup}"
104 # Keep the possibility to turn off the whole stuff
105 if [ "x${FQANVOVIEWS}" = "xyes" ] || ([ ! `echo ${vomsgroup} | grep "/"` ] && [ "x${FQANVOVIEWS}" = "xno" ] ) ; then
106 myview=`echo ${newfqan} | sed -e 's/=/_/g'`
107 myaccessrule="VOMS:${newfqan}"
108 VO="${newfqanvo}"
109
110 # To make VO determination `GEAR - safe `
111 if [ ! `echo $vomsgroup | grep "/"` ]; then
112 mygroupsdotconfvo=`cat $GROUPS_CONF | grep $vomsgroup | head -1 | cut -d ":" -f 5`
113 if [ ${mygroupsdotconfvo} ]; then
114 VO=${mygroupsdotconfvo}
115 else
116 VO="${newfqanvo}"
117 fi
118 myaccessrule="VO:${VO}"
119 fi
120
121
122 #dn: GlueVOViewLocalID=$myview,\
123 #GlueCEUniqueID=${CE_HOST}:${ce_port}/${ce_type}-${JOB_MANAGER}-${QUEUE}
124 #GlueCEAccessControlBaseRule: $myaccessrule
125 #EOF
126
127 share="($QUEUE ($myaccessrule ${VO}))"
128 queue_share_list="${queue_share_list} ${share}, "
129 # Here we add the DENY strings only for the generic VOview, i.e which does not contain "/"
130 allvoview="";
131 # Collecting all VoView defs
132 for OQUEUE in ${QUEUES}; do
133 dsv=`echo $OQUEUE | sed -e 's/[\.-]/_/g' | tr '[:lower:]' '[:upper:]'`
134 oqenvar=${dsv}_GROUP_ENABLE
135 allvoview="${allvoview} ${!oqenvar}"
136 done
137 # Sort and drop entries whic appears twice
138 allvoview=`for kk in $allvoview; do echo $kk; done | sort | uniq`;
139 echo "allvoview=$allvoview"
140 # Add the DENY stuff only if it is the generic VOview, i.e the VO itself -> no '/' in it's name
141
142 if [ ! `echo ${vomsgroup} | grep "/"` ]; then
143 convert_fqan ${vomsgroup}
144 vomsgroupvo="${newfqanvo}"
145
146 for myview in ${allvoview}; do
147 convert_fqan ${myview}
148 # We don't deny ourselves...
149
150 if [ "x${myview}" != "x${vomsgroup}" ]; then
151
152 # .. and we put DENY only if it is in the same VO, otherwise it doesn't match, so DENY is not necessary
153 if [ "x${vomsgroupvo}" = "x${newfqanvo}" ] && [ "x${FQANVOVIEWS}" = "xyes" ]; then
154 #echo -n "GlueCEAccessControlBaseRule: " >> $outfile
155 if [ `echo ${myview} | grep "/"` ] ; then
156 #echo "DENY:${newfqan}" >> $outfile
157 share="($QUEUE ${share} DENY:${newfqan})"
158 queue_share_list="${queue_share_list} ${share}, "
159 fi
160 fi
161 fi
162 done
163 fi
164 # This is the end of the FQANVOVIEWS if
165 fi # if (2) - END
166 # End of qenablevar loop
167 done # for (2) - END
168
169 # End of qenablevar if
170 fi # if (1) - END
171 share_list="${share_list} ${queue_share_list}"
172 done # for () - END
173
174 share_list=`echo $share_list | sed -e "s/.,$//g"`;
175 share_list="( $share_list )"
176
177 # Calculate acbr_list and owner as in glue1
178 my_owner=""
179 my_acbr=""
180 for vo in $VOS; do
181 my_owner="${my_owner} ${vo}"
182 my_acbr="${my_acbr} VO:${vo}"
183 done
184
185 # Calculate Benchmark
186 benchmark_info=""
187 if [ x = x${CE_SF00} ]; then
188 spec_fp=""
189 else
190 spec_fp="(specfp2000 ${CE_SF00})"
191 benchmark_info="${spec_fp},"
192 fi
193
194 if [ x = x${CE_SI00} ]; then
195 spec_int=""
196 else
197 spec_int="(specint2000 ${CE_SI00})"
198 benchmark_info="${benchmark_info} ${spec_int},"
199 fi
200 if [ `echo $CE_OTHERDESCR | grep Benchmark` > /dev/null ]; then
201 benchmark=`echo $CE_OTHERDESCR | sed -e 's/.*Benchmark=//' | sed -e 's/\]//'`
202 hep_spec="(HEP-SPEC06 $benchmark)"
203 benchmark_info="${benchmark_info} ${hep_spec}"
204 else
205 hep_spec=""
206 fi
207 if [ ! "X" = "X${benchmark_info}" ]; then
208 benchmark_info=`echo ${benchmark_info} | sed -e 's/,$//g'`
209 benchmark_info="(${benchmark_info})"
210 fi
211 # Evaluate closeSE info
212 echo "SE_LIST=${SE_LIST}"
213 close_se_list=""
214 if [ ! "X" = "X${SE_LIST}" ]; then
215
216 if [ $SE_MOUNT_INFO_LIST = "none" ]; then
217
218 for se in ${SE_LIST}; do
219 close_se_list="${close_se_list} (${se} none none),"
220 done
221
222 else if [ ! "x" = "x${SE_MOUNT_INFO_LIST}" ]; then
223
224 for se_info in ${SE_MOUNT_INFO_LIST}; do
225 se_i=`echo ${se_info} | sed -e 's/:.*//g'`
226 export_dir_i=`echo ${se_info} | sed -e 's/.*://g' |sed -e 's/,.*//g'`
227 mount_dir_i=`echo ${se_info} | sed -e 's/.*,//g'`
228 close_se_list="${close_se_list} (${se_i} ${export_dir_i} ${mount_dir_i}),"
229 done
230 fi
231 fi
232
233 close_se_list=`echo $close_se_list | sed -e "s/,$//g"`
234 close_se_list="(${close_se_list})"
235
236 fi
237
238 # Back-up and create configuration file
239 backup_file ${GIP_CONFIG}
240
241 mkdir -p `dirname ${GIP_CONFIG}`/
242
243 cat << EOF > ${GIP_CONFIG}
244
245 # Site Id
246 SiteId = ${SITE_NAME}
247 #
248 #
249 # Computing Service Id
250 # Good name could be hostname + the "_ComputingElement" string
251 ComputingServiceId = ${CE_HOST}_ComputingEntity
252 #
253 #
254 # HealthState info programme ANDded with gatekeeper status
255 HealthState = true
256 #
257 # ServingState of the Computing Element. It should be usually set to production
258 ServingState = ${CE_STATE:-${CREAM_CE_STATE:-testing}}
259 #
260 #
261 # Owner should be the list of owner VO names
262 Owner = ${my_owner}
263 #
264 #
265 #ACBR should be the list of AccessControlBaseRule strings to indicate who is allowed to
266 # have access to the service - at the simplest this is the same as the
267 # Owner but with the VO names prefixed by "VO:"
268 ACBR = ${my_acbr}
269 #
270 #
271 # Shares. The list of shares.
272 # Format: Shares = (share1, share2, ..., sharen)
273 # Format of sharei: (queuename (ACBR1 Owner1) (ACBR2 Owner2) ... (ACBRn Owner))
274 Shares = ${share_list}
275 #
276 #
277 # ExecutionEnvironments
278 # The list of the ids of the Execution Environments
279 # Format: ExecutionEnvironments = (EE1, EE2, ..., EEn)
280 ExecutionEnvironments = (${CE_HOST})
281 #
282 #
283 # CE_BATH_SYS is the batch system used by the CE. E.g. torque, lsf, etc
284 # It should be filled with the content of yaim variable CE_BATCH_SYS
285 CE_BATCH_SYS = ${CE_BATCH_SYS}
286 #
287 #
288 # BATCH_VERSION is the Version of the batch system
289 # It should be filled with the content of yaim variable BATCH_VERSION
290 BATCH_VERSION = ${BATCH_VERSION}
291 #
292 #
293 #
294 # ArchitecturePlatformType is the Platform Type of the WNs of the
295 # specified EE
296 # It must be set for all the Execution Environments
297 # It should be filled with the content of yaim variable CE_OS_ARCH
298 ExecutionEnvironment_${CE_HOST}_ArchitecturePlatformType = ${CE_OS_ARCH}
299 #
300 #
301 # PhysicalCPUs is the total number of real CPUs/physical chips, including
302 # the nodes that are temporary down or offline
303 # It must be set for all the Execution Environments
304 # It should be filled with the content of yaim variable CE_PHYSCPU
305 ExecutionEnvironment_${CE_HOST}_PhysicalCPUs = ${CE_PHYSCPU}
306 #
307 #
308 # LogicalCPUs is the total number of cores/hyperthreaded CPUs, including the
309 # nodes that are temporary down or offline
310 # It must be set for all the Execution Environments
311 # It should be filled with the content of yaim variable CE_LOGCPU
312 ExecutionEnvironment_${CE_HOST}_LogicalCPUs = ${CE_LOGCPU}
313 #
314 #
315 # SmpSize is the number of Logical CPUs (cores) of the WN
316 # It must be set for all the Execution Environments
317 # It should be filled with the content of yaim variable CE_SMPSIZE
318 ExecutionEnvironment_${CE_HOST}_SmpSize = ${CE_SMPSIZE}
319 #
320 #
321 # ProcessorVendor is the name of the processor vendor for the Worker Nodes
322 # It must be set for all the Execution Environments
323 # It should be filled with the content of yaim variable CE_CPU_VENDOR
324 ExecutionEnvironment_${CE_HOST}_ProcessorVendor = ${CE_CPU_VENDOR}
325 #
326 #
327 # ProcessorModel is the name of the processor model as defined by the vendor
328 # for the Worker Nodes
329 # It must be set for all the Execution Environments
330 # It should be filled with the content of yaim variable CE_CPU_MODEL
331 ExecutionEnvironment_${CE_HOST}_ProcessorModel = ${CE_CPU_MODEL}
332 #
333 #
334 # ProcessorClockSpeed is the processor clock speed expressed in MHz for the
335 # Worker Nodes
336 # It must be set for all the Execution Environments
337 # It should be filled with the content of yaim variable CE_CPU_SPEED
338 ExecutionEnvironment_${CE_HOST}_ProcessorClockSpeed = ${CE_CPU_SPEED}
339 #
340 #
341 # MainMemoryRAMSize is the total physical memory of a WN expressed in MegaBytes
342 # It must be set for all the Execution Environments
343 # It should be filled with the content of yaim variable CE_MINPHYSMEM
344 ExecutionEnvironment_${CE_HOST}_MainMemoryRAMSize = ${CE_MINPHYSMEM}
345 #
346 #
347 # MainMemoryVirtualSize is the total virtual memory of a WN expressed in
348 # MegaBytes.
349 # It must be set for all the Execution Environments
350 # It should be filled with the content of yaim variable CE_MINVIRTMEM
351 ExecutionEnvironment_${CE_HOST}_MainMemoryVirtualSize = ${CE_MINVIRTMEM}
352 #
353 #
354 # OperatingSystemFamily should be filled with the OS family (e.g. linux)
355 # It must be set for all the Execution Environments
356 ExecutionEnvironment_${CE_HOST}_OperatingSystemFamily = ${CE_OS_FAMILY}
357 #
358 #
359 # OperatingSystemName is the name of the operating system used on the Worker
360 # Nodes
361 # It must be set for all the Execution Environments
362 # It should be filled with the content of yaim variable CE_OS
363 ExecutionEnvironment_${CE_HOST}_OperatingSystemName = ${CE_OS}
364 #
365 #
366 # OperatingSystemRelease is the release of the operating system used on the
367 # Worker Nodes
368 # It must be set for all the Execution Environments
369 # It should be filled with the content of yaim variable CE_OS_RELEASE
370 ExecutionEnvironment_${CE_HOST}_OperatingSystemRelease = ${CE_OS_RELEASE}
371 #
372 #
373 # NetworkAdapterInboundIP must be set to either FALSE or TRUE to express the
374 # permission for inbound connectivity for the WNs
375 # It must be set for all the Execution Environments
376 # It should be filled with the content of yaim variable CE_INBOUNDIP
377 ExecutionEnvironment_${CE_HOST}_NetworkAdapterInboundIP = ${CE_INBOUNDIP}
378 #
379 #
380 # NetworkAdapterOutboundIP must be set to either FALSE or TRUE to express
381 # the permission for outbound connectivity for the WNs
382 # It must be set for all the Execution Environments
383 # It should be filled with the content of yaim variable CE_OUTBOUNDIP
384 ExecutionEnvironment_${CE_HOST}_NetworkAdapterOutboundIP = ${CE_OUTBOUNDIP}
385 #
386 #
387 # Benchmarks is the list of benchmarks
388 # Format: Benchmarks = (Benchmark1, Benchmark2, .., Benchmarkn)
389 # Format of Benchmarki: (Type Value)
390 #ExecutionEnvironment_${CE_HOST}_Benchmarks = ${CE_OTHERDESCR}
391 ExecutionEnvironment_${CE_HOST}_Benchmarks = ${benchmark_info}
392 #
393 #
394 # CloseSEs is the list of the storage services close to this computing service
395 # Format: CloseSEs = (closeSE1, closeSE2, ..., closeSEn)
396 # Format of closeSEi: (StorageServiceid LocalPath RemotePath)
397 #CloseSEs = ${SE_LIST}
398 CloseSEs = ${close_se_list}
399
400 EOF
401
402 ${GIP_BIN}/globus-info-gip-gram5-glue2-computingservice-static \
403 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ComputingService.ldif
404
405 ${GIP_BIN}/glite-info-glue2-service \
406 ${SITE_NAME} ${CE_HOST}_ComputingEntity ${CE_HOST}_ComputingEntity production \
407 > ${GIP_DATA}/ldif/GlueService.ldif
408
409 ${GIP_BIN}/globus-info-gip-gram5-glue2-endpoint-static \
410 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ComputingEndpoint.ldif
411
412 ${GIP_BIN}/globus-info-gip-gram5-glue2-manager-static \
413 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ComputingManager.ldif
414
415 ${GIP_BIN}/globus-info-gip-gram5-glue2-share-static \
416 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ComputingShare.ldif
417
418 # GLITE_CLUSTER mode not supported (yet)
419 #if [ "x${CREAM_CLUSTER_MODE}" != "xyes" ]; then
420 #
421 # ${GIP_BIN}/glite-ce-glue2-executionenvironment-static \
422 # ${GIP_CONFIG} > ${GIP_DATA}/ldif/ExecutionEnvironment.ldif
423 #
424 # ${GIP_BIN}/glite-ce-glue2-benchmark-static \
425 # ${GIP_CONFIG} > ${GIP_DATA}/ldif/Benchmark.ldif
426 #
427 #fi
428
429 ${GIP_BIN}/globus-info-gip-gram5-glue2-tostorageservice-static \
430 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ToStorageService.ldif
431
432 ## Installs plugins
433 cat << EOF > ${GIP_DATA}/plugin/ige-info-gram5-glue2
434 #!/bin/sh
435 ${GIP_BIN}/globus-info-gip-gram5-glue2-endpoint-dynamic ${GIP_CONFIG}
436 EOF
437
438 chmod +x ${GIP_DATA}/plugin/ige-info-gram5-glue2
439
440
441 # Exit with success
442 return 0
443 }

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28