Exemple : Liste des modules d'un serveur d'applications
Cet exemple répertorie tous les modules de toutes les applications d'entreprise installés sur le serveur server1 dans un noeud appelé node1.
Un astérisque (*) signifie que le module est installé sur server1 et node1 et sur un autre serveur ou noeud. Un signe plus (+) signifie que le module est installé sur server1 et node1 uniquement.
1 #-----------------------------------------------------------------------------------------------
2 # définition de variables pour conserver le nom du serveur et du noeud
3 #----------------------------------------------------------------------------------
4 set serverName server1
5 set nodeName node1
6 #----------------------------------------------------------------------------------
7 # définition de 2 listes globales pour conserver les modules
8 #----------------------------------------------------------------------------------
9 set ejbList {}
10 set webList {}
11
12 #------------------------------------------------------------------------------------------------
13 # extrait tous les objets de déploiement et les affecte à la variable de déploiement
14 #------------------------------------------------------------------------------------------------
15 set deployments [$AdminConfig getid /Deployment:/]
16
17 #------------------------------------------------------------------------------------------------
18 # les lignes 22 à 148 itèrent via tous les objets de déploiement pour extraire les modules
19 # et effectuer un filtrage afin de répertorier les applications ayant au moins un module installé
20 # dans server1, sur le noeud myNode
21 #------------------------------------------------------------------------------------------------
22 foreach deployment $deployments {
23
24 # -------------------------------------------------------------------------------------------
25 # réinitialise les listes mentionnant les modules pour chaque application
26 #--------------------------------------------------------------------------------------------
27 set webList {}
28 set ejbList {}
29
30 #------------------------------------------
31 # extrait le nom de l'application
32 #------------------------------------------
33 set appName [lindex [split $deployment (] 0]
34
35 #------------------------------------------
36 # extrait deployedObjects
37 #------------------------------------------
38 set depObject [$AdminConfig showAttribute $deployment deployedObject]
39
40 #--------------------------------------------
41 # extrait tous les modules dans l'application
42 #---------------------------------------------
43 set modules [lindex [$AdminConfig showAttribute $depObject modules] 0]
44
45 #--------------------------------------------------------------------------------------------
46 # initialise des listes pour enregistrer tous les modules dans la liste adéquate à laquelle ils appartiennent
47 #--------------------------------------------------------------------------------------------
48 set modServerMatch {}
49 set modServerMoreMatch {}
50 set modServerNotMatch {}
51
52 #----------------------------------------------------------------------------------------
53 # les lignes 55 à 112 itèrent via tous les modules pour
extraire targetMappings
54 #----------------------------------------------------------------------------------------
55 foreach module $modules {
56 #------------------------------------------------------------------------------------
57 # définition de balises pour effectuer un filtrage et
extraire des modules pour server1 sur node1
58 #------------------------------------------------------------------------------------
59 set sameNodeSameServer "false"
60 set diffNodeSameServer "false"
61 set sameNodeDiffServer "false"
62 set diffNodeDiffServer "false"
63
64 #--------------------------------------------
65 # extrait targetMappings
66 #--------------------------------------------
67 set targetMaps [lindex [$AdminConfig showAttribute $module targetMappings] 0]
68
69 #------------------------------------------------------------------------------------
70 # les lignes 72 à 111 itèrent via tous les
targetMappings pour extraire la cible
71 #------------------------------------------------------------------------------------
72 foreach targetMap $targetMaps {
73 #------------------------------
74 # extrait la cible
75 #------------------------------
76 set target [$AdminConfig showAttribute $targetMap target]
77
78 #--------------------------------------------------
79 # effectue un filtrage pour ignorer ClusteredTargets
80 #--------------------------------------------------
81 set targetName [lindex [split $target #] 1]
82 if {[regexp "ClusteredTarget" $targetName] != 1} {
83 set sName [$AdminConfig showAttribute $target name]
84 set nName [$AdminConfig showAttribute $target nodeName]
85
86 #----------------------------------------------
87 # fait correspondre le nom du serveur
88 #----------------------------------------------
89 if {$sName == $serverName} {
90 if {$nName == $nodeName} {
91 set sameNodeSameServer "true"
92 } else {
93 set diffNodeSameServer "true"
94 }
95 } else {
96 #---------------------------------------
97 # fait correspondre le nom du serveur
98 #---------------------------------------
99 if {$nName == $nodeName} {
100 set sameNodeDiffServer "true"
101 } else {
102 set diffNodeDiffServer "true"
103 }
104 }
105
106 if {$sameNodeSameServer == "true"} {
107 if {$sameNodeDiffServer == "true" || $diffNodeDiffServer == "true" ||
$diffNodeSameServer == "true"} {
108 break
109 }
110 }
111 }
112 }
113
114 #---------------------------------------------
115 # le place dans la liste adéquate
116 #---------------------------------------------
117 if {$sameNodeSameServer == "true"} {
118 if {$diffNodeDiffServer == "true" || $diffNodeSameServer == "true" || $sameNodeDiffServer == "true"} {
119 set modServerMoreMatch [linsert $modServerMoreMatch end [$AdminConfig showAttribute $module uri]]
120 } else {
121 set modServerMatch [linsert $modServerMatch end [$AdminConfig showAttribute $module uri]]
122 }
123 } else {
124 set modServerNotMatch [linsert $modServerNotMatch end [$AdminConfig showAttribute $module uri]]
125 }
126 }
127
128
129 #----------------------------------------------------------------
130 # imprime la sortie avec certaines notations
131 #----------------------------------------------------------------
132 if {$modServerMatch != {} || $modServerMoreMatch != {}} {
133 puts stdout "\tApplication name: $appName"
134 }
135
136 #---------------------------------------------------------
137 # regroupe dans le module approprié et imprime
138 #---------------------------------------------------------
139 if {$modServerMatch != {}} {
140 filterAndPrint $modServerMatch "+"
141 }
142 if {$modServerMoreMatch != {}} {
143 filterAndPrint $modServerMoreMatch "*"
144 }
145 if {($modServerMatch != {} || $modServerMoreMatch != {}) "" $modServerNotMatch != {}} {
146 filterAndPrint $modServerNotMatch ""
147 }
148}
149
150
151 proc filterAndPrint {lists flag} {
152 global webList
153 global ejbList
154 set webExists "false"
155 set ejbExists "false"
156
157 #-------------------------------------------------------------------------------------
158 # Si la liste existe déjà, marquez-la pour n'imprimer qu'une seule fois le titre
159 # et réinitialisez-la
160 #-------------------------------------------------------------------------------------
161 if {$webList != {}} {
162 set webExists "true"
163 set webList {}
164 }
165 if {$ejbList != {}} {
166 set ejbExists "true"
167 set ejbList {}
168 }
169
170 #------------------------------------------------------------------
171 # effectue un filtrage pour des modules web et ejb
172 #------------------------------------------------------------------
173 foreach list $lists {
174 set temp [lindex [split $list .] 1]
175 if {$temp == "war"} {
176 set webList [linsert $webList end $list]
177 } elseif {$temp == "jar"} {
178 set ejbList [linsert $ejbList end $list]
179 }
180 }
181
182 #---------------------------------------
183 # trie la liste avant impression
184 #---------------------------------------
185 set webList [lsort -dictionary $webList]
186 set ejbList [lsort -dictionary $ejbList]
187
188 #----------------------------------------------------------------
189 # imprime tous les modules web installés dans server1
190 #----------------------------------------------------------------
191 if {$webList != {}} {
192 if {$webExists == "false"} {
193 puts stdout "\t\tWeb Modules:"
194 }
195 foreach web $webList {
196 puts stdout "\t\t\t$web $flag"
197 }
198 }
199
200 #--------------------------------------------------------------
201 # imprime tous les modules ejb installés dans server1
202 #--------------------------------------------------------------
203 if {$ejbList != {}} {
204 if {$ejbExists == "false"} {
205 puts stdout "\t\tEJB Modules:"
206 }
207 foreach ejb $ejbList {
208 puts stdout "\t\t\t$ejb $flag"
209 }
210 }
211}
Exemple de sortie pour server1 sur le noeud node1 :
Nom de l'application : TEST1
Modules EJB :
deplmtest.jar +
Modules Web :
mtcomps.war *
Nom de l'application : TEST2
Modules Web :
mtcomps.war +
Modules EJB :
deplmtest.jar +
Nom de l'application : TEST3
Modules Web :
mtcomps.war *
Modules EJB :
deplmtest.jar *
Nom de l'application : TEST4
Modules EJB :
deplmtest.jar *
Modules Web :
mtcomps.war