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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2532 - (hide annotations) (download)
Wed Apr 25 14:35:04 2012 UTC (10 years ago) by davidg
File size: 15560 byte(s)
Movedpaths

1 davidg 2528 ##############################################################################
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 davidg 2530 GIP_CONFIG=${GIP_CONFIG:-/etc/globus-info-gip-gram5-glue2.conf}
52     GIP_BIN=${GIP_BIN:-/usr/bin}
53 davidg 2528 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 davidg 2532 ${GIP_BIN}/globus-info-gip-gram5-glue2-computingservice-static \
403 davidg 2528 ${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 davidg 2532 ${GIP_BIN}/globus-info-gip-gram5-glue2-endpoint-static \
410 davidg 2528 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ComputingEndpoint.ldif
411    
412 davidg 2532 ${GIP_BIN}/globus-info-gip-gram5-glue2-manager-static \
413 davidg 2528 ${GIP_CONFIG} > ${GIP_DATA}/ldif/ComputingManager.ldif
414    
415 davidg 2532 ${GIP_BIN}/globus-info-gip-gram5-glue2-share-static \
416 davidg 2528 ${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 davidg 2532 ${GIP_BIN}/globus-info-gip-gram5-glue2-tostorageservice-static \
430 davidg 2528 ${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