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

Revision 477, 18.8 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<!-- TO_DO:
4ODTWORZYC LINKI
5-->
6
7<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8                             xmlns="http://www.QosCosGrid.org/resourceDescription"
9                             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10                             xmlns:set="http://exslt.org/sets"
11                             exclude-result-prefixes="set">
12                             
13        <xsl:strip-space elements="*"/>
14       
15        <xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"/>
16       
17        <xsl:variable name="AD_IDENTIFIER">AD_ID</xsl:variable>
18        <xsl:variable name="RES_IDENTIFIER">RES_ID</xsl:variable>
19        <xsl:variable name="GROUP_IDENTIFIER">GROUP_ID</xsl:variable>
20        <xsl:variable name="GATEWAY">GATEWAY</xsl:variable>
21        <xsl:variable name="GRID_DOMAIN_IDENTIFIER">GRID</xsl:variable>
22       
23        <xsl:key name="AD_RESOURCES" match="/hostParameters/resources/computingResource" use="additionalProperties/property[@name=$AD_IDENTIFIER]"/>
24        <xsl:key name="AD_GROUPS" match="/hostParameters/topology/resourcesGroup" use="additionalProperties/property[@name=$AD_IDENTIFIER]"/>
25        <xsl:variable name="DOMAINS" select="set:distinct(.//additionalProperties/property[@name=$AD_IDENTIFIER])"/>
26       
27<!-- =====================================================  ====================================================== -->
28        <xsl:template match="/">
29                <xsl:apply-templates select="/hostParameters"/>
30        </xsl:template>
31<!-- =====================================================  ====================================================== -->
32        <xsl:template match="hostParameters">
33                <xsl:element name="rtg">
34                        <xsl:call-template name="CONTEXT_TEMPLATE"/>
35                       
36                        <xsl:call-template name="INTRA_AD_INFOS_TEMPLATE"/>
37                       
38                        <xsl:call-template name="GRID_LEVEL_TEMPLATE"/>
39                </xsl:element>   
40        </xsl:template>
41<!-- =====================================================  ====================================================== -->
42        <xsl:template name="CONTEXT_TEMPLATE">
43                <xsl:element name="context">
44                        <xsl:attribute name="rtgType">GridTopologyRtg</xsl:attribute>
45                        <xsl:attribute name="isComplete">true</xsl:attribute>
46                                               
47                        <xsl:if test="validity/timeSlot">
48                                <xsl:element name="defaultTimeInterval">
49                                        <xsl:apply-templates select="validity/timeSlot[1]"/>
50                                </xsl:element>
51                        </xsl:if>
52                </xsl:element>
53        </xsl:template>
54<!-- =====================================================  ====================================================== -->
55        <xsl:template match="timeSlot">
56                <xsl:element name="lowerBoundedRange">
57                        <xsl:value-of select="slotStart"/>
58                </xsl:element>
59                <xsl:choose>
60                        <xsl:when test="slotEnd">
61                                <xsl:element name="upperBoundedRange">
62                                        <xsl:value-of select="slotEnd"/>
63                                </xsl:element>
64                        </xsl:when>
65                        <xsl:when test="slotDuration">
66                                <xsl:element name="duration">
67                                        <xsl:value-of select="slotDuration"/>
68                                </xsl:element>
69                        </xsl:when>
70                </xsl:choose>
71        </xsl:template>
72<!-- =====================================================  ====================================================== -->
73        <xsl:template name="INTRA_AD_INFOS_TEMPLATE">
74                <xsl:variable name="CURRENT" select="."/>
75                <xsl:for-each select="$DOMAINS">
76                        <xsl:element name="intraADInfo">
77                                <xsl:attribute name="adId">
78                                        <xsl:value-of select="."/>
79                                </xsl:attribute>
80                                <xsl:apply-templates select="key('AD_RESOURCES',.)" mode="TEMPLATE_MODE"/>
81                                <xsl:apply-templates select="key('AD_GROUPS',.)" mode="TEMPLATE_MODE"/>
82                               
83                                <xsl:apply-templates select="key('AD_RESOURCES',.)" mode="RESOURCE_MODE"/>
84                                <xsl:apply-templates select="key('AD_GROUPS',.)" mode="RESOURCE_MODE"/>
85                               
86                                <xsl:apply-templates select="key('AD_GROUPS',.)" mode="GROUP_MODE"/>
87                               
88                                <xsl:apply-templates select="key('AD_RESOURCES',.)" mode="AVAILABILITY_MODE"/>
89                        </xsl:element>
90                </xsl:for-each>
91        </xsl:template>
92<!-- =====================================================  ====================================================== -->
93        <xsl:template match="computingResource" mode="TEMPLATE_MODE">
94                <xsl:element name="compResourceTemplate">
95                        <xsl:attribute name="id">
96                                <xsl:value-of select="additionalProperties/property[@name=$RES_IDENTIFIER]"/>
97                        </xsl:attribute>
98                        <xsl:apply-templates select="machineParameters/hostParameter" mode="PARAMETER_MODE"/>
99                </xsl:element>
100        </xsl:template>
101<!-- =====================================================  ====================================================== -->
102        <xsl:template match="*" mode="PARAMETER_MODE">
103                <xsl:choose>
104                        <xsl:when test="@name='cpucount'">
105                                <xsl:call-template name="PARAMETER_TEMPLATE">
106                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
107                                        <xsl:with-param name="METRIC_TYPE">cpuCount</xsl:with-param>
108                                        <xsl:with-param name="METRIC_UNIT">null</xsl:with-param>
109                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
110                                </xsl:call-template>
111                        </xsl:when>
112                        <xsl:when test="@name='cpuspeed'">
113                                <xsl:call-template name="PARAMETER_TEMPLATE">
114                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
115                                        <xsl:with-param name="METRIC_TYPE">cpuSpeed</xsl:with-param>
116                                        <xsl:with-param name="METRIC_UNIT">MHz</xsl:with-param>
117                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
118                                </xsl:call-template>
119                        </xsl:when>
120                        <xsl:when test="@name='memory'">
121                                <xsl:call-template name="PARAMETER_TEMPLATE">
122                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
123                                        <xsl:with-param name="METRIC_TYPE">memoryTotal</xsl:with-param>
124                                        <xsl:with-param name="METRIC_UNIT">MB</xsl:with-param>
125                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
126                                </xsl:call-template>
127                        </xsl:when>
128                        <xsl:when test="@name='diskspace'">
129                                <xsl:call-template name="PARAMETER_TEMPLATE">
130                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
131                                        <xsl:with-param name="METRIC_TYPE">diskTotal</xsl:with-param>
132                                        <xsl:with-param name="METRIC_UNIT">MB</xsl:with-param>
133                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
134                                </xsl:call-template>
135                        </xsl:when>
136                        <xsl:when test="@name='cpuarch'">
137                                <xsl:call-template name="PARAMETER_TEMPLATE">
138                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
139                                        <xsl:with-param name="METRIC_TYPE">cpuType</xsl:with-param>
140                                        <xsl:with-param name="VALUE_TYPE">STRING</xsl:with-param>
141                                </xsl:call-template>
142                        </xsl:when>
143                        <xsl:when test="@name='osname'">
144                                <xsl:call-template name="PARAMETER_TEMPLATE">
145                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
146                                        <xsl:with-param name="METRIC_TYPE">osName</xsl:with-param>
147                                        <xsl:with-param name="VALUE_TYPE">STRING</xsl:with-param>
148                                </xsl:call-template>
149                        </xsl:when>
150                        <xsl:when test="@name='osversion'">
151                                <xsl:call-template name="PARAMETER_TEMPLATE">
152                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
153                                        <xsl:with-param name="METRIC_TYPE">osVersion</xsl:with-param>
154                                        <xsl:with-param name="VALUE_TYPE">STRING</xsl:with-param>
155                                </xsl:call-template>
156                        </xsl:when>
157                        <xsl:when test="@name='freememory'">
158                                <xsl:call-template name="PARAMETER_TEMPLATE">
159                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
160                                        <xsl:with-param name="METRIC_TYPE">memoryFree</xsl:with-param>
161                                        <xsl:with-param name="METRIC_UNIT">MB</xsl:with-param>
162                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
163                                </xsl:call-template>
164                        </xsl:when>
165                        <xsl:when test="@name='freediskspace'">
166                                <xsl:call-template name="PARAMETER_TEMPLATE">
167                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
168                                        <xsl:with-param name="METRIC_TYPE">diskFree</xsl:with-param>
169                                        <xsl:with-param name="METRIC_UNIT">MB</xsl:with-param>
170                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
171                                </xsl:call-template>
172                        </xsl:when>
173                        <xsl:when test="@name='bandwidth'">
174                                <xsl:call-template name="PARAMETER_TEMPLATE">
175                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
176                                        <xsl:with-param name="METRIC_TYPE">bandwidth</xsl:with-param>
177                                        <xsl:with-param name="METRIC_UNIT">MB/sec</xsl:with-param>
178                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
179                                </xsl:call-template>
180                        </xsl:when>
181                        <xsl:when test="@name='latency'">
182                                <xsl:call-template name="PARAMETER_TEMPLATE">
183                                        <xsl:with-param name="ELEMENT">metric</xsl:with-param>
184                                        <xsl:with-param name="METRIC_TYPE">latency</xsl:with-param>
185                                        <xsl:with-param name="METRIC_UNIT">sec</xsl:with-param>
186                                        <xsl:with-param name="VALUE_TYPE">NUMERIC</xsl:with-param>
187                                </xsl:call-template>
188                        </xsl:when>
189                </xsl:choose>           
190        </xsl:template>
191<!-- =====================================================  ====================================================== -->
192        <xsl:template name="PARAMETER_TEMPLATE">
193                <xsl:param name="ELEMENT"/>
194                <xsl:param name="METRIC_TYPE" select="FALSE"/>
195                <xsl:param name="METRIC_UNIT" select="FALSE"/>
196                <xsl:param name="VALUE_TYPE"/>
197
198                <xsl:element name="{$ELEMENT}">
199                        <xsl:if test="$METRIC_UNIT">
200                                <xsl:attribute name="unit">
201                                        <xsl:value-of select="$METRIC_UNIT"/>
202                                </xsl:attribute>
203                        </xsl:if>
204                        <xsl:if test="$METRIC_TYPE">
205                                <xsl:attribute name="type" namespace="http://www.w3.org/2001/XMLSchema-instance">
206                                        <xsl:value-of select="$METRIC_TYPE"/>
207                                </xsl:attribute>
208                        </xsl:if>
209               
210                        <xsl:apply-templates select="paramValue[1]" mode="PARAMETER_VALUE_MODE">
211                                <xsl:with-param name="VALUE_TYPE">
212                                        <xsl:value-of select="$VALUE_TYPE"/>
213                                </xsl:with-param>
214                        </xsl:apply-templates>
215                </xsl:element>
216               
217        </xsl:template>
218<!-- =====================================================  ====================================================== -->
219        <xsl:template match="paramValue" mode="PARAMETER_VALUE_MODE">
220                <xsl:param name="VALUE_TYPE"/>
221               
222                <xsl:choose>
223                        <xsl:when test="$VALUE_TYPE='NUMERIC'">
224                                <xsl:element name="rangeValue">
225                                        <xsl:element name="value">
226                                                <xsl:value-of select="."/>
227                                        </xsl:element>
228                                        <xsl:element name="min">
229                                                <xsl:value-of select="."/>
230                                        </xsl:element>
231                                        <xsl:element name="max">
232                                                <xsl:value-of select="."/>
233                                        </xsl:element>
234                                </xsl:element>
235                        </xsl:when>
236                        <xsl:when test="$VALUE_TYPE='STRING'">
237                                <xsl:element name="value">
238                                        <xsl:value-of select="."/>
239                                </xsl:element>
240                        </xsl:when>
241                </xsl:choose>
242        </xsl:template>
243<!-- =====================================================  ====================================================== -->
244        <xsl:template match="computingResource" mode="RESOURCE_MODE">
245                <xsl:variable name="ID" select="additionalProperties/property[@name=$RES_IDENTIFIER]"/>
246               
247                <xsl:element name="compResource">
248                        <xsl:attribute name="id">
249                                <xsl:value-of select="$ID"/>
250                        </xsl:attribute>
251                        <xsl:attribute name="templateIdRef">
252                                <xsl:value-of select="$ID"/>
253                        </xsl:attribute>
254                        <xsl:attribute name="isGateway">
255                                <xsl:value-of select="additionalProperties/property[@name=$GATEWAY]"/>
256                        </xsl:attribute>
257                        <xsl:apply-templates select="machineParameters/hostParameter[@name='hostname']" mode="SPECIFIC_PARAMETER_MODE">
258                                <xsl:with-param name="METRIC_TYPE">hostName</xsl:with-param>
259                        </xsl:apply-templates>
260                </xsl:element>
261        </xsl:template>
262<!-- =====================================================  ====================================================== -->
263        <xsl:template match="*" mode="SPECIFIC_PARAMETER_MODE">
264                <xsl:param name="METRIC_TYPE"/>
265               
266                        <xsl:call-template name="PARAMETER_TEMPLATE">
267                                        <xsl:with-param name="ELEMENT">resourceSpecificMetric</xsl:with-param>
268                                        <xsl:with-param name="METRIC_TYPE">
269                                                <xsl:value-of select="$METRIC_TYPE"/>
270                                        </xsl:with-param>
271                                        <xsl:with-param name="VALUE_TYPE">STRING</xsl:with-param>
272                        </xsl:call-template>
273        </xsl:template>
274<!-- =====================================================  ====================================================== -->
275        <xsl:template match="resourcesGroup" mode="TEMPLATE_MODE">
276                <xsl:element name="netResourceTemplate">
277                        <xsl:attribute name="id">
278                                <xsl:value-of select="@groupId"/>
279                        </xsl:attribute>
280                        <xsl:apply-templates select="networkParamsInsideGroup/*" mode="PARAMETER_MODE"/>
281                </xsl:element>
282        </xsl:template>
283<!-- =====================================================  ====================================================== -->
284        <xsl:template match="resourcesGroup" mode="RESOURCE_MODE">
285                <xsl:element name="netResource">
286                        <xsl:attribute name="id">
287                                <xsl:value-of select="@groupId"/>
288                        </xsl:attribute>
289                        <xsl:attribute name="templateIdRef">
290                                <xsl:value-of select="@groupId"/>
291                        </xsl:attribute>
292                </xsl:element>
293        </xsl:template>
294<!-- =====================================================  ====================================================== -->
295        <xsl:template match="resourcesGroup" mode="GROUP_MODE">
296                <xsl:element name="resourcesCommunicationGroup">
297                        <xsl:attribute name="providerAdIdRef">
298                                <xsl:value-of select="additionalProperties/property[@name=$AD_IDENTIFIER]"/>
299                        </xsl:attribute>               
300                        <xsl:attribute name="netResourceIdRef">
301                                <xsl:value-of select="@groupId"/>
302                        </xsl:attribute>
303                        <xsl:attribute name="groupId">
304                                <xsl:value-of select="additionalProperties/property[@name=$GROUP_IDENTIFIER]"/>
305                        </xsl:attribute>
306                        <xsl:attribute name="isGateway">
307                                <xsl:value-of select="additionalProperties/property[@name=$GATEWAY]"/>
308                        </xsl:attribute>
309                        <xsl:for-each select="resources/computingResourceIdRef">
310                                <xsl:element name="resourceIdRef">
311                                        <xsl:value-of select="."/>
312                                </xsl:element>
313                        </xsl:for-each>
314                </xsl:element>
315        </xsl:template>
316<!-- =====================================================  ====================================================== -->
317        <xsl:template match="computingResource" mode="AVAILABILITY_MODE">
318                <xsl:if test="availability or machineParameters/../availability">
319                        <xsl:element name="resourceAvailability">
320                                <xsl:attribute name="resourceIdRef">
321                                        <xsl:value-of select="additionalProperties/property[@name=$RES_IDENTIFIER]"/>
322                                </xsl:attribute>
323                               
324                                <xsl:apply-templates select="availability/timeSlot" mode="RESOURCE_AVAILABILITY_MODE"/>
325                               
326                                <xsl:apply-templates select="machineParameters/hostParameter/availability/timeSlot" mode="PARAMETER_AVAILABILITY_MODE"/>
327                               
328                        </xsl:element>
329                </xsl:if>
330        </xsl:template>
331<!-- =====================================================  ====================================================== --> 
332        <xsl:template match="timeSlot" mode="RESOURCE_AVAILABILITY_MODE">
333                <xsl:element name="resourceState">
334                        <xsl:element name="resourceState">
335                                <xsl:value-of select="@state"/>
336                        </xsl:element>
337                        <xsl:element name="timeInterval">
338                                <xsl:apply-templates select="."/>
339                        </xsl:element>
340                </xsl:element>
341        </xsl:template>
342<!-- =====================================================  ====================================================== --> 
343        <xsl:template match="timeSlot" mode="PARAMETER_AVAILABILITY_MODE">
344                <xsl:element name="resourceState">
345                        <xsl:element name="timeInterval">
346                                <xsl:apply-templates select="."/>
347                        </xsl:element>
348                        <xsl:element name="metricAvailability">
349                                <xsl:apply-templates select="../.." mode="PARAMETER_MODE"/>
350                                <xsl:element name="state">
351                                        <xsl:value-of select="@state"/>
352                                </xsl:element>
353                        </xsl:element>
354                </xsl:element>
355        </xsl:template>
356<!-- =====================================================  ====================================================== --> 
357        <xsl:template name="GRID_LEVEL_TEMPLATE">
358                <xsl:variable name="GROUP2GROUP" select="topology/resourcesGroup/networkParamsToGroup"/>
359                <xsl:if test="$GROUP2GROUP">
360                        <xsl:element name="intraADInfo">
361                                <xsl:attribute name="adId"><xsl:value-of select="$GRID_DOMAIN_IDENTIFIER"/></xsl:attribute>
362                                <xsl:apply-templates select="$GROUP2GROUP" mode="GRID_DOMAIN_TEMPLATE_MODE"/>   
363                                <xsl:apply-templates select="$GROUP2GROUP" mode="GRID_DOMAIN_RESOURCE_MODE"/>   
364                        </xsl:element>
365                       
366                        <xsl:element name="interADInfo">
367                                <xsl:attribute name="isSymmetric">
368                                        <xsl:value-of select="topology/resourcesGroup/networkParamsToGroup[1]/@isSymmetric"/>
369                                </xsl:attribute>
370                                <xsl:apply-templates select="$GROUP2GROUP" mode="GRID_LINKS_MODE"/>
371                        </xsl:element>         
372                </xsl:if>
373        </xsl:template>
374<!-- =====================================================  ====================================================== --> 
375        <xsl:template match="networkParamsToGroup" mode="GRID_DOMAIN_TEMPLATE_MODE">
376                <xsl:element name="netResourceTemplate">
377                        <xsl:attribute name="id">
378                                <xsl:value-of select="../@groupId"/>-<xsl:value-of select="@groupId"/>-<xsl:value-of select="generate-id()"/>
379                        </xsl:attribute>
380                        <xsl:apply-templates  mode="PARAMETER_MODE"/>
381                </xsl:element>
382        </xsl:template>
383<!-- =====================================================  ====================================================== --> 
384        <xsl:template match="networkParamsToGroup" mode="GRID_DOMAIN_RESOURCE_MODE">
385                <xsl:element name="netResource">
386                        <xsl:attribute name="id">
387                                <xsl:value-of select="../@groupId"/>-<xsl:value-of select="@groupId"/>-<xsl:value-of select="generate-id()"/>
388                        </xsl:attribute>
389                        <xsl:attribute name="templateIdRef">
390                                <xsl:value-of select="../@groupId"/>-<xsl:value-of select="@groupId"/>-<xsl:value-of select="generate-id()"/>
391                        </xsl:attribute>                       
392                </xsl:element>
393        </xsl:template>
394<!-- =====================================================  ====================================================== --> 
395        <xsl:template match="networkParamsToGroup" mode="GRID_LINKS_MODE">
396                <xsl:element name="link">
397                        <xsl:attribute name="adIdRef">
398                                <xsl:value-of select="$GRID_DOMAIN_IDENTIFIER"/>
399                        </xsl:attribute>
400                        <xsl:attribute name="fromAdId">
401                                <xsl:value-of select="../additionalProperties/property[@name=$AD_IDENTIFIER]"/>
402                        </xsl:attribute>                       
403                        <xsl:attribute name="fromGroupId">
404                                <xsl:value-of select="../additionalProperties/property[@name=$GROUP_IDENTIFIER]"/>
405                        </xsl:attribute>                       
406                        <xsl:attribute name="toAdId">
407                                <xsl:value-of select="additionalProperties/property[@name=$AD_IDENTIFIER]"/>
408                        </xsl:attribute>                       
409                        <xsl:attribute name="toGroupId">
410                                <xsl:value-of select="additionalProperties/property[@name=$GROUP_IDENTIFIER]"/>
411                        </xsl:attribute>                       
412                        <xsl:attribute name="netResourceIdRef">
413                                <xsl:value-of select="../@groupId"/>-<xsl:value-of select="@groupId"/>-<xsl:value-of select="generate-id()"/>
414                        </xsl:attribute>                       
415                </xsl:element>
416        </xsl:template>
417<!-- =====================================================  ====================================================== --> 
418
419<!-- =====================================================  ====================================================== --> 
420<!-- =====================================================  ====================================================== --> 
421        <xsl:template match="*">
422                !!! missing support for <xsl:value-of select="name()"/> !!!
423        </xsl:template>
424<!-- =====================================================  ====================================================== --> 
425</xsl:transform>
Note: See TracBrowser for help on using the repository browser.