source: DCWoRMS/trunk/simulator/xslt/resreq2rtg.xslt @ 477

Revision 477, 26.5 KB checked in by wojtekp, 13 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!--
4LIMITATIONS:
5- zaklada sie ze nie mozna definiowac licznosci grupy procesow dla konkretnych wymagan zasobowych. brak odpowiednika w RTG
6-->
7
8<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9                                                         xmlns:xalan="http://xml.apache.org/xalan"
10                                                         extension-element-prefixes="xalan">
11                             
12        <xsl:strip-space elements="*"/>
13       
14        <xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"/>
15               
16        <xsl:variable name="GRID_AD">Grid</xsl:variable>
17        <xsl:variable name="EMPTY_TEMPLATE_ID">EMPTY</xsl:variable>
18
19<!-- ========================   ========================= -->
20<!-- =====================================================  ====================================================== -->
21        <xsl:template match="/">
22                <xsl:element name="rtg">
23                        <xsl:call-template name="CONTEXT_TEMPLATE"/>
24                        <xsl:call-template name="INTRA_AD_INFO_TEMPLATE"/>
25                        <xsl:call-template name="TASK_MAPPINGS_TEMPLATE"/>
26                </xsl:element>   
27        </xsl:template>
28<!-- =====================================================  ====================================================== -->
29<!-- =====================================================  ====================================================== -->
30        <xsl:template name="CONTEXT_TEMPLATE">
31                <xsl:element name="context">
32                        <xsl:attribute name="rtgType">ResourceRequirementsRtg</xsl:attribute>
33                        <xsl:attribute name="isComplete">true</xsl:attribute>
34
35                        <xsl:element name="providerAdId">
36                                <xsl:value-of select="$GRID_AD"/>
37                        </xsl:element>
38                </xsl:element>                 
39        </xsl:template>
40<!-- =====================================================  ====================================================== -->
41<!-- =====================================================  ====================================================== -->
42        <xsl:template name="INTRA_AD_INFO_TEMPLATE">
43                <xsl:element name="intraADInfo">
44                        <xsl:attribute name="adId">
45                                <xsl:value-of select="$GRID_AD"/>
46                        </xsl:attribute>
47                       
48                        <xsl:variable name="COMP_RES_VARIABLE" select="//resourceRequirements/computingResource"/>
49                        <xsl:variable name="NET_RES_VARIABLE" select="//processesConnection/networkResource[1] | //groupConnection/networkResource[1]"/>
50                       
51                        <!-- needed for resources having no others requirements then hostname -->
52                        <xsl:call-template name="EMPTY_RES_TEMPLATE"/>
53                       
54                        <xsl:apply-templates select="$COMP_RES_VARIABLE" mode="TEMPLATE_MODE">
55                                <xsl:with-param name="TEMPLATE_TYPE">compResourceTemplate</xsl:with-param>
56                        </xsl:apply-templates>
57                       
58                        <xsl:apply-templates select="$NET_RES_VARIABLE" mode="TEMPLATE_MODE">
59                                <xsl:with-param name="TEMPLATE_TYPE">netResourceTemplate</xsl:with-param>
60                        </xsl:apply-templates>
61
62                        <xsl:apply-templates select="/resourceRequirements/task" mode="RESOURCE_MODE"/>
63                       
64                        <xsl:apply-templates select="$NET_RES_VARIABLE" mode="RESOURCE_MODE"/>
65                                               
66                </xsl:element>
67        </xsl:template>
68<!-- =====================================================  ====================================================== -->
69        <xsl:template name="EMPTY_RES_TEMPLATE">
70                <xsl:element name="compResourceTemplate">
71                        <xsl:attribute name="id">
72                                <xsl:value-of select="$EMPTY_TEMPLATE_ID"/>
73                        </xsl:attribute>
74                </xsl:element>
75        </xsl:template>
76<!-- =====================================================  ====================================================== -->
77        <xsl:template match="*" mode="TEMPLATE_MODE">
78                <xsl:param name="TEMPLATE_TYPE"/>
79                <xsl:element name="{$TEMPLATE_TYPE}">
80                        <xsl:attribute name="id">
81                                <xsl:value-of select="generate-id()"/>
82                        </xsl:attribute>
83                        <xsl:choose>
84                                <xsl:when test="name()='computingResource'">
85                                        <xsl:apply-templates select="hostParameter" mode="PARAMETER_MODE"/>
86                                </xsl:when>
87                                <xsl:when test="name()='networkResource'">
88                                        <xsl:apply-templates select="networkParameter" mode="PARAMETER_MODE"/>
89                                </xsl:when>
90                        </xsl:choose>
91                </xsl:element>
92        </xsl:template>
93<!-- =====================================================  ====================================================== -->
94        <xsl:template match="*" mode="PARAMETER_MODE">
95                <xsl:choose>
96                        <xsl:when test="@name='cpucount'">
97                                <xsl:call-template name="PARAMETER_TEMPLATE">
98                                        <xsl:with-param name="TYPE">cpuCount</xsl:with-param>
99                                        <xsl:with-param name="UNIT">null</xsl:with-param>
100                                </xsl:call-template>
101                        </xsl:when>
102                        <xsl:when test="@name='cpuspeed'">
103                                <xsl:call-template name="PARAMETER_TEMPLATE">
104                                        <xsl:with-param name="TYPE">cpuSpeed</xsl:with-param>
105                                        <xsl:with-param name="UNIT">MHz</xsl:with-param>
106                                </xsl:call-template>
107                        </xsl:when>
108                        <xsl:when test="@name='memory'">
109                                <xsl:call-template name="PARAMETER_TEMPLATE">
110                                        <xsl:with-param name="TYPE">memoryTotal</xsl:with-param>
111                                        <xsl:with-param name="UNIT">MB</xsl:with-param>
112                                </xsl:call-template>
113                        </xsl:when>
114                        <xsl:when test="@name='diskspace'">
115                                <xsl:call-template name="PARAMETER_TEMPLATE">
116                                        <xsl:with-param name="TYPE">diskTotal</xsl:with-param>
117                                        <xsl:with-param name="UNIT">MB</xsl:with-param>
118                                </xsl:call-template>
119                        </xsl:when>
120                        <xsl:when test="@name='cpuarch'">
121                                <xsl:call-template name="PARAMETER_TEMPLATE">
122                                        <xsl:with-param name="TYPE">cpuType</xsl:with-param>
123                                </xsl:call-template>
124                        </xsl:when>
125                        <xsl:when test="@name='osname'">
126                                <xsl:call-template name="PARAMETER_TEMPLATE">
127                                        <xsl:with-param name="TYPE">osName</xsl:with-param>
128                                </xsl:call-template>
129                        </xsl:when>
130                        <xsl:when test="@name='osversion'">
131                                <xsl:call-template name="PARAMETER_TEMPLATE">
132                                        <xsl:with-param name="TYPE">osVersion</xsl:with-param>
133                                </xsl:call-template>
134                        </xsl:when>
135                        <xsl:when test="@name='freememory'">
136                                <xsl:call-template name="PARAMETER_TEMPLATE">
137                                        <xsl:with-param name="TYPE">memoryFree</xsl:with-param>
138                                        <xsl:with-param name="UNIT">MB</xsl:with-param>
139                                </xsl:call-template>
140                        </xsl:when>
141                        <xsl:when test="@name='freediskspace'">
142                                <xsl:call-template name="PARAMETER_TEMPLATE">
143                                        <xsl:with-param name="TYPE">diskFree</xsl:with-param>
144                                        <xsl:with-param name="UNIT">MB</xsl:with-param>
145                                </xsl:call-template>
146                        </xsl:when>
147                        <xsl:when test="@name='bandwidth'">
148                                <xsl:call-template name="PARAMETER_TEMPLATE">
149                                        <xsl:with-param name="TYPE">bandwidth</xsl:with-param>
150                                        <xsl:with-param name="UNIT">MB/sec</xsl:with-param>
151                                </xsl:call-template>
152                        </xsl:when>
153                        <xsl:when test="@name='latency'">
154                                <xsl:call-template name="PARAMETER_TEMPLATE">
155                                        <xsl:with-param name="TYPE">latency</xsl:with-param>
156                                        <xsl:with-param name="UNIT">sec</xsl:with-param>
157                                </xsl:call-template>
158                        </xsl:when>
159                </xsl:choose>
160        </xsl:template>
161<!-- =====================================================  ====================================================== -->
162        <xsl:template name="PARAMETER_TEMPLATE">
163                <xsl:param name="TYPE"/>
164                <xsl:param name="UNIT" select="FALSE"/>
165               
166                <xsl:element name="metric">
167                        <xsl:if test="$UNIT">
168                                <xsl:attribute name="unit">
169                                        <xsl:value-of select="$UNIT"/>
170                                </xsl:attribute>
171                        </xsl:if>
172                        <xsl:attribute name="type" namespace="http://www.w3.org/2001/XMLSchema-instance">
173                                <xsl:value-of select="$TYPE"/>
174                        </xsl:attribute>
175                        <xsl:apply-templates select="*" mode="PARAMETER_VALUE_MODE"/>
176                </xsl:element>
177        </xsl:template>
178<!-- =====================================================  ====================================================== -->
179        <xsl:template match="stringValue" mode="PARAMETER_VALUE_MODE">
180                <xsl:element name="value">
181                        <xsl:value-of select="@value"/>
182                </xsl:element>
183        </xsl:template>
184<!-- =====================================================  ====================================================== -->
185        <xsl:template match="value" mode="PARAMETER_VALUE_MODE">
186                <xsl:element name="rangeValue">
187                        <xsl:element name="value">
188                                <xsl:value-of select="."/>
189                        </xsl:element>
190                        <xsl:element name="min">
191                                <xsl:value-of select="."/>
192                        </xsl:element>
193                        <xsl:element name="max">
194                                <xsl:value-of select="."/>
195                        </xsl:element>
196                </xsl:element>
197        </xsl:template>
198<!-- =====================================================  ====================================================== -->
199        <xsl:template match="range" mode="PARAMETER_VALUE_MODE">
200                <xsl:element name="rangeValue">
201                        <xsl:element name="min">
202                                <xsl:value-of select="min"/>
203                        </xsl:element>
204                        <xsl:element name="max">
205                                <xsl:value-of select="max"/>
206                        </xsl:element>
207                </xsl:element>
208        </xsl:template>
209<!-- =====================================================  ====================================================== -->
210        <xsl:template match="min" mode="PARAMETER_VALUE_MODE">
211                <xsl:element name="rangeValue">
212                        <xsl:element name="min">
213                                <xsl:value-of select="."/>
214                        </xsl:element>
215                </xsl:element>
216        </xsl:template>
217<!-- =====================================================  ====================================================== -->
218        <xsl:template match="max" mode="PARAMETER_VALUE_MODE">
219                <xsl:element name="rangeValue">
220                        <xsl:element name="max">
221                                <xsl:value-of select="."/>
222                        </xsl:element>
223                </xsl:element>
224        </xsl:template>         
225<!-- =====================================================  ====================================================== -->
226<!-- =====================================================  ====================================================== -->
227        <xsl:template match="task" mode="RESOURCE_MODE">
228                <xsl:choose>
229                        <xsl:when test="candidateHosts">
230                                <xsl:variable name="RESOURCES" select=".//resourceRequirements/computingResource"/>
231                               
232                                <xsl:choose>
233                                        <xsl:when test="$RESOURCES">
234                                                <xsl:apply-templates select="$RESOURCES" mode="HOSTS_RESOURCE_MODE">
235                                                        <xsl:with-param name="CANDIDATE_HOSTS" select="candidateHosts/hostName"/>
236                                                </xsl:apply-templates>
237                                        </xsl:when>
238                                        <xsl:otherwise>
239                                                <xsl:apply-templates select="candidateHosts/hostName" mode="HOSTS_RESOURCE_MODE"/>
240                                        </xsl:otherwise>
241                                </xsl:choose>
242                        </xsl:when>
243                        <xsl:otherwise>
244                                <xsl:apply-templates select=".//resourceRequirements/computingResource | .//processes/resourceRequirements/computingResource" mode="RESOURCE_MODE"/>
245                        </xsl:otherwise>
246                </xsl:choose>
247        </xsl:template>
248<!-- =====================================================  ====================================================== -->
249        <xsl:template match="computingResource" mode="HOSTS_RESOURCE_MODE">
250                <xsl:param name="CANDIDATE_HOSTS"/>
251                <xsl:variable name="RESOURCE" select="."/>
252               
253                <xsl:for-each select="$CANDIDATE_HOSTS">
254                        <xsl:apply-templates select="$RESOURCE" mode="RESOURCE_MODE">
255                                <xsl:with-param name="HOST" select="."/>
256                        </xsl:apply-templates>
257                </xsl:for-each>
258        </xsl:template>
259<!-- =====================================================  ====================================================== -->
260        <xsl:template match="hostName" mode="HOSTS_RESOURCE_MODE">
261                <xsl:element name="compResource">
262                        <xsl:attribute name="id">
263                                <xsl:value-of select="$EMPTY_TEMPLATE_ID"/>
264                                <xsl:value-of select="'-'"/>
265                                <xsl:value-of select="."/>
266                        </xsl:attribute>
267                        <xsl:attribute name="templateIdRef">
268                                <xsl:value-of select="$EMPTY_TEMPLATE_ID"/>
269                        </xsl:attribute>
270                        <xsl:attribute name="isGateway">false</xsl:attribute>
271                        <xsl:apply-templates select="." mode="RESOURCE_METRIC_MODE"/>
272                </xsl:element>
273        </xsl:template>
274<!-- =====================================================  ====================================================== -->
275        <xsl:template match="computingResource" mode="RESOURCE_MODE">
276                <xsl:param name="HOST" select="FALSE"/>
277                <xsl:element name="compResource">
278                        <xsl:attribute name="id">
279                                <xsl:value-of select="generate-id()"/>
280                                <xsl:if test="$HOST">
281                                        <xsl:value-of select="'-'"/>
282                                        <xsl:value-of select="$HOST"/>
283                                </xsl:if>
284                        </xsl:attribute>
285                        <xsl:attribute name="templateIdRef">
286                                <xsl:value-of select="generate-id()"/>
287                        </xsl:attribute>
288                        <xsl:attribute name="isGateway">false</xsl:attribute>
289                       
290                        <xsl:apply-templates select="$HOST" mode="RESOURCE_METRIC_MODE"/>
291                </xsl:element>
292        </xsl:template>
293<!-- =====================================================  ====================================================== -->
294        <xsl:template match="hostName" mode="RESOURCE_METRIC_MODE">
295                <xsl:element name="resourceSpecificMetric">
296                        <xsl:attribute name="type" namespace="http://www.w3.org/2001/XMLSchema-instance">hostName</xsl:attribute>
297                        <xsl:element name="value">
298                                <xsl:value-of select="."/>
299                        </xsl:element>
300                </xsl:element>
301        </xsl:template>
302<!-- =====================================================  ====================================================== -->
303        <xsl:template match="networkResource" mode="RESOURCE_MODE">
304                <xsl:element name="netResource">
305                        <xsl:attribute name="id">
306                                <xsl:value-of select="generate-id()"/>
307                        </xsl:attribute>
308                        <xsl:attribute name="templateIdRef">
309                                <xsl:value-of select="generate-id()"/>
310                        </xsl:attribute>
311                </xsl:element>
312        </xsl:template>
313<!-- =====================================================  ====================================================== -->
314        <xsl:template name="TASK_MAPPINGS_TEMPLATE">
315                <xsl:apply-templates select="/resourceRequirements/task" mode="MAPPINGS_MODE"/>
316        </xsl:template>
317<!-- =====================================================  ====================================================== -->
318        <xsl:template match="task" mode="MAPPINGS_MODE">
319               
320                        <xsl:choose>
321                                <xsl:when test="requirements/topology/processes">
322                                        <xsl:apply-templates select="requirements/topology">
323                                                <xsl:with-param name="JOB_ID">
324                                                        <xsl:value-of select="@jobId"/>
325                                                </xsl:with-param>
326                                                <xsl:with-param name="TASK_ID">
327                                                        <xsl:value-of select="@taskId"/>
328                                                </xsl:with-param>
329                                                <xsl:with-param name="USER_DN">
330                                                        <xsl:value-of select="@userDN"/>
331                                                </xsl:with-param>
332                                                <xsl:with-param name="SUBMISSION_TIME">
333                                                        <xsl:value-of select="@submissionTime"/>
334                                                </xsl:with-param>
335                                        </xsl:apply-templates>
336                                </xsl:when>
337                                <xsl:otherwise>
338                                        <xsl:call-template name="MAPPED_TO_TEMPLATE">
339                                                <xsl:with-param name="REQUIREMENTS" select="requirements/resourceRequirements/computingResource"/>
340                                                <xsl:with-param name="HOSTS" select="candidateHosts/hostName"/>
341                                        </xsl:call-template>
342                                </xsl:otherwise>
343                        </xsl:choose>                                           
344               
345        </xsl:template>
346<!-- =====================================================  ====================================================== --> 
347        <xsl:template name="MAPPED_TO_TEMPLATE">
348                <xsl:param name="REQUIREMENTS" select="FALSE"/>
349                <xsl:param name="HOSTS" select="FALSE"/>
350               
351                <xsl:element name="taskMapping">
352                        <xsl:attribute name="consumerAdId">
353                                <xsl:value-of select="$GRID_AD"/>
354                        </xsl:attribute>
355                        <xsl:attribute name="jobId">
356                                <xsl:value-of select="@jobId"/>
357                        </xsl:attribute>
358                        <xsl:attribute name="taskId">
359                                <xsl:value-of select="@taskId"/>
360                        </xsl:attribute>
361                        <xsl:attribute name="userId">
362                                <xsl:value-of select="@userDN"/>
363                        </xsl:attribute>
364                        <xsl:attribute name="submissionTime">
365                                <xsl:value-of select="@submissionTime"/>
366                        </xsl:attribute>
367                        <xsl:attribute name="allocationStatus">Requested</xsl:attribute>
368                       
369                        <xsl:apply-templates select="executionTime"/>
370                       
371                        <xsl:choose>
372                                <xsl:when test="$REQUIREMENTS and $HOSTS">
373                                        <xsl:for-each select="$HOSTS">
374                                                <xsl:apply-templates select="$REQUIREMENTS" mode="MAPPED_TO_MODE">
375                                                        <xsl:with-param name="HOST" select="."/>
376                                                </xsl:apply-templates>
377                                        </xsl:for-each>
378                                </xsl:when>
379                                <xsl:when test="$REQUIREMENTS and not($HOSTS)">
380                                        <xsl:apply-templates select="$REQUIREMENTS" mode="MAPPED_TO_MODE"/>
381                                </xsl:when>
382                                <xsl:when test="not($REQUIREMENTS) and $HOSTS">
383                                        <xsl:apply-templates select="$HOSTS" mode="MAPPED_TO_MODE"/>
384                                </xsl:when>
385                                <xsl:when test="not($REQUIREMENTS) and not($HOSTS)">
386                                        <xsl:call-template name="EMPTY_MAPPED_TO_TEMPLATE"/>
387                                </xsl:when>
388                        </xsl:choose>
389                </xsl:element>
390        </xsl:template>
391<!-- =====================================================  ====================================================== -->
392        <xsl:template name="EMPTY_MAPPED_TO_TEMPLATE">
393        </xsl:template>
394<!-- =====================================================  ====================================================== -->
395        <xsl:template match="computingResource" mode="MAPPED_TO_MODE">
396                <xsl:param name="HOST" select="FALSE"/>
397
398                <xsl:element name="mappedTo">
399                        <xsl:attribute name="providerAdIdRef">
400                                <xsl:value-of select="$GRID_AD"/>
401                        </xsl:attribute>
402                        <xsl:attribute name="providerResourceIdRef">
403                                <xsl:value-of select="generate-id()"/>
404                                <xsl:if test="$HOST">
405                                        <xsl:value-of select="'-'"/>
406                                        <xsl:value-of select="$HOST"/>
407                                </xsl:if>
408                        </xsl:attribute>
409                        <xsl:attribute name="isCandidateHost">
410                                <xsl:choose>
411                                        <xsl:when test="$HOST">true</xsl:when>
412                                        <xsl:otherwise>false</xsl:otherwise>
413                                </xsl:choose>
414                        </xsl:attribute>
415                        <xsl:attribute name="isRequirement">true</xsl:attribute>
416                </xsl:element>
417        </xsl:template>
418<!-- =====================================================  ====================================================== --> 
419        <xsl:template match="hostName" mode="MAPPED_TO_MODE">
420
421                <xsl:element name="mappedTo">
422                        <xsl:attribute name="providerAdIdRef">
423                                <xsl:value-of select="$GRID_AD"/>
424                        </xsl:attribute>
425                        <xsl:attribute name="providerResourceIdRef">
426                                <xsl:value-of select="$EMPTY_TEMPLATE_ID"/>
427                                <xsl:value-of select="'-'"/>
428                                <xsl:value-of select="."/>
429                        </xsl:attribute>
430                        <xsl:attribute name="isCandidateHost">true</xsl:attribute>
431                        <xsl:attribute name="isRequirement">true</xsl:attribute>
432                </xsl:element>
433        </xsl:template>
434<!-- =====================================================  ====================================================== --> 
435       
436       
437       
438       
439<!-- =====================================================  ====================================================== --> 
440        <xsl:template match="topology">
441                <xsl:param name="JOB_ID"/>
442                <xsl:param name="TASK_ID"/>
443                <xsl:param name="USER_DN"/>
444                <xsl:param name="SUBMISSION_TIME"/>
445
446                <xsl:element name="taskMapping">
447                        <xsl:attribute name="consumerAdId">
448                                <xsl:value-of select="$GRID_AD"/>
449                        </xsl:attribute>
450                        <xsl:attribute name="jobId">
451                                <xsl:value-of select="$JOB_ID"/>
452                        </xsl:attribute>
453                        <xsl:attribute name="taskId">
454                                <xsl:value-of select="$TASK_ID"/>
455                        </xsl:attribute>
456                        <xsl:attribute name="userId">
457                                <xsl:value-of select="$USER_DN"/>
458                        </xsl:attribute>
459                        <xsl:attribute name="submissionTime">
460                                <xsl:value-of select="$SUBMISSION_TIME"/>
461                        </xsl:attribute>
462                        <xsl:attribute name="allocationStatus">Requested</xsl:attribute>
463                        <xsl:attribute name="priority">
464                                <xsl:value-of select="count(preceding-sibling::topology)"/>
465                        </xsl:attribute>
466               
467                        <xsl:apply-templates select="../../executionTime"/>
468                       
469                        <xsl:variable name="PROCESSES_VARIABLE" select="processes"/>
470                        <xsl:variable name="GROUPS_VARIABLE" select="group"/>
471                                       
472                        <xsl:apply-templates select="$PROCESSES_VARIABLE" mode="PROCESSES_GROUP_MODE"/>
473                        <xsl:apply-templates select="$PROCESSES_VARIABLE" mode="PROCESSES_GROUP_HOSTS_MAPPING_MODE">
474                                <xsl:with-param name="HOSTS" select="../../candidateHosts/hostName"/>
475                        </xsl:apply-templates>
476                       
477                        <xsl:apply-templates select="$GROUPS_VARIABLE">
478                                <xsl:with-param name="PROCESSES_VARIABLE" select="$PROCESSES_VARIABLE"/>
479                        </xsl:apply-templates>
480                </xsl:element>
481        </xsl:template>
482<!-- =====================================================  ====================================================== -->
483        <xsl:template match="executionTime">
484                <xsl:element name="timeInterval">
485                        <xsl:if test="timePeriod/periodStart">
486                                <xsl:element name="lowerBoundedRange">
487                                        <xsl:value-of select="timePeriod/periodStart"/>
488                                </xsl:element>
489                        </xsl:if>
490                       
491                        <xsl:if test="timePeriod/periodEnd">
492                                <xsl:element name="upperBoundedRange">
493                                        <xsl:value-of select="timePeriod/periodEnd"/>
494                                </xsl:element>
495                        </xsl:if>
496                       
497                        <xsl:element name="duration">
498                                <xsl:value-of select="executionDuration"/>
499                        </xsl:element>
500
501                </xsl:element>
502        </xsl:template>
503<!-- =====================================================  ====================================================== -->
504        <xsl:template match="processes" mode="PROCESSES_GROUP_MODE">                   
505                <xsl:element name="processesGroup">
506               
507                        <xsl:attribute name="processesGroupId">
508                                <xsl:value-of select="generate-id()"/>
509                        </xsl:attribute>
510                       
511                        <xsl:apply-templates select="processesCount"/>
512                               
513                </xsl:element>
514
515        </xsl:template>
516<!-- =====================================================  ====================================================== -->
517        <xsl:template match="processes" mode="PROCESSES_GROUP_HOSTS_MAPPING_MODE">
518                <xsl:param name="HOSTS" select="FALSE"/>
519               
520                <xsl:variable name="PROCESSES" select="."/>
521                <xsl:choose>
522                        <xsl:when test="$HOSTS">
523                                <xsl:for-each select="$HOSTS">
524                                        <xsl:apply-templates select="$PROCESSES/resourceRequirements/computingResource" mode="PROCESSES_GROUP_MAPPING_MODE">
525                                                <xsl:with-param name="HOST" select="."/>
526                                        </xsl:apply-templates>
527                                </xsl:for-each>
528                        </xsl:when>
529                        <xsl:otherwise>
530                                <xsl:apply-templates select="$PROCESSES/resourceRequirements/computingResource" mode="PROCESSES_GROUP_MAPPING_MODE"/>
531                        </xsl:otherwise>
532                </xsl:choose>
533        </xsl:template>
534<!-- =====================================================  ====================================================== -->
535        <xsl:template match="computingResource" mode="PROCESSES_GROUP_MAPPING_MODE">
536                <xsl:param name="HOST" select="FALSE"/>
537               
538                <xsl:element name="processesGroupMapping">
539                        <xsl:attribute name="providerAdIdRef">
540                                <xsl:value-of select="$GRID_AD"/>
541                        </xsl:attribute>
542                                               
543                        <xsl:attribute name="providerResourceIdRef">
544                                <xsl:apply-templates select="." mode="RESOURCE_ID_MODE"/>                               
545                                <xsl:if test="$HOST">
546                                        <xsl:value-of select="'-'"/>
547                                        <xsl:value-of select="$HOST"/>
548                                </xsl:if>
549                        </xsl:attribute>       
550                        <xsl:attribute name="isRequirement">true</xsl:attribute>
551                        <xsl:attribute name="processesGroupIdRef">
552                                <xsl:value-of select="generate-id(../..)"/>
553                        </xsl:attribute>
554                        <xsl:attribute name="isCandidateHost">
555                                <xsl:choose>
556                                        <xsl:when test="$HOST">true</xsl:when>
557                                        <xsl:otherwise>false</xsl:otherwise>
558                                </xsl:choose>
559                        </xsl:attribute>
560                </xsl:element>
561        </xsl:template>
562<!-- =====================================================  ====================================================== -->
563        <xsl:template match="*" mode="RESOURCE_ID_MODE">
564                <xsl:value-of select="generate-id()"/>
565        </xsl:template>
566<!-- =====================================================  ====================================================== -->
567        <xsl:template match="processesCount">
568                <xsl:element name="processesQty">
569                        <xsl:choose>
570                                <xsl:when test="value">
571                                        <xsl:element name="value">
572                                                <xsl:value-of select="value"/>
573                                        </xsl:element>
574                                </xsl:when>
575                                <xsl:when test="min">
576                                        <xsl:element name="min">
577                                                <xsl:value-of select="min"/>
578                                        </xsl:element>
579                                </xsl:when>
580                                <xsl:when test="max">
581                                        <xsl:element name="max">
582                                                <xsl:value-of select="max"/>
583                                        </xsl:element>
584                                </xsl:when>
585                                <xsl:when test="range">
586                                        <xsl:element name="min">
587                                                <xsl:value-of select="range/min"/>
588                                        </xsl:element>
589                                        <xsl:element name="max">
590                                                <xsl:value-of select="range/max"/>
591                                        </xsl:element>
592                                </xsl:when>
593                        </xsl:choose>
594                </xsl:element>
595        </xsl:template>
596<!-- =====================================================  ====================================================== -->
597        <xsl:template match="group">
598                <xsl:param name="PROCESSES_VARIABLE"/>
599                <xsl:apply-templates select="processesConnection">
600                        <xsl:with-param name="PROCESSES_VARIABLE" select="$PROCESSES_VARIABLE"/>
601                </xsl:apply-templates>
602                <xsl:apply-templates select="groupConnection">
603                        <xsl:with-param name="PROCESSES_VARIABLE" select="$PROCESSES_VARIABLE"/>
604                </xsl:apply-templates>         
605        </xsl:template>
606<!-- =====================================================  ====================================================== -->
607        <xsl:template match="processesConnection">
608                <xsl:param name="PROCESSES_VARIABLE"/>
609                <xsl:element name="processesCommunicationGroup">
610                        <xsl:attribute name="providerAdIdRef">
611                                <xsl:value-of select="$GRID_AD"/>
612                        </xsl:attribute>
613                        <xsl:attribute name="netResourceIdRef">
614                                <xsl:apply-templates select="networkResource[1]" mode="RESOURCE_ID_MODE"/>
615                        </xsl:attribute>
616                        <xsl:attribute name="groupId">
617                                <xsl:value-of select="generate-id()"/>
618                        </xsl:attribute>
619                        <xsl:variable name="GROUP_ID_VARIABLE" select="../@groupId"/>
620                        <xsl:for-each select="$PROCESSES_VARIABLE[groupIdReference=$GROUP_ID_VARIABLE]">
621                                <xsl:element name="processesGroupIdRef">
622                                        <xsl:value-of select="generate-id()"/>
623                                </xsl:element>
624                        </xsl:for-each>
625                </xsl:element>
626        </xsl:template>
627<!-- =====================================================  ====================================================== -->
628        <xsl:template match="groupConnection">
629                        <xsl:param name="PROCESSES_VARIABLE"/>
630                <xsl:variable name="FROM_GROUP_ID_VARIABLE" select="../@groupId"/>
631                <xsl:variable name="TO_GROUP_ID_VARIABLE" select="@endpointGroupId"/>
632                <xsl:variable name="NET_RESOURCE_ID">
633                        <xsl:apply-templates select="networkResource[1]" mode="RESOURCE_ID_MODE"/>
634                </xsl:variable>
635               
636                <xsl:for-each select="$PROCESSES_VARIABLE[groupIdReference=$FROM_GROUP_ID_VARIABLE]">
637                        <xsl:variable name="PROCESS_1" select="."/>
638                        <xsl:for-each select="$PROCESSES_VARIABLE[groupIdReference=$TO_GROUP_ID_VARIABLE]">
639                                <xsl:if test="generate-id(.)  != generate-id($PROCESS_1)">
640                                        <xsl:element name="processesCommunicationGroup">
641                                                <xsl:attribute name="providerAdIdRef">
642                                                        <xsl:value-of select="$GRID_AD"/>
643                                                </xsl:attribute>
644                                                <xsl:attribute name="netResourceIdRef">
645                                                        <xsl:value-of select="$NET_RESOURCE_ID"/>
646                                                </xsl:attribute>
647                                                <xsl:attribute name="groupId">
648                                                        <xsl:value-of select="generate-id($PROCESS_1)"/>-<xsl:value-of select="generate-id()"/>
649                                                </xsl:attribute>
650                                                <xsl:element name="processesGroupIdRef">
651                                                        <xsl:value-of select="generate-id($PROCESS_1)"/>
652                                                </xsl:element>
653                                                <xsl:element name="processesGroupIdRef">
654                                                        <xsl:value-of select="generate-id()"/>
655                                                </xsl:element>
656                                        </xsl:element> 
657                                </xsl:if>
658                        </xsl:for-each>
659                </xsl:for-each>
660        </xsl:template>
661<!-- =====================================================  ====================================================== -->
662</xsl:transform>
Note: See TracBrowser for help on using the repository browser.