1use strict;
2
3use XML::Rules;
4
5my $parser = XML::Rules->new(
6	stripspaces => 7,
7	rules => [
8		'_default' => 'content',
9		'Dev_Info' => sub {
10			print "$_[1]->{dev_name}\t$_[1]->{configuration}\n";
11			return;
12		},
13		'Device' => '',
14	],
15	start_rules => [
16		'Hyper,RAID-5_Device,Back_End,Mirror_Set,Front_End,Product,Label,Flags,Capacity' => 'skip',
17	],
18);
19
20$parser->parse(\*DATA);
21
22__DATA__
23<?xml version="1.0" standalone="yes" ?>
24<SymCLI_ML>
25  <Symmetrix>
26    <Symm_Info>
27      <symid>000290101935</symid>
28    </Symm_Info>
29    <Device>
30      <Dev_Info>
31        <pd_name>Not Visible</pd_name>
32        <dev_name>0040</dev_name>
33        <configuration>RAID-5</configuration>
34        <attached_bcv>N/A</attached_bcv>
35        <emulation>CKD-3390</emulation>
36        <status>Ready</status>
37        <sa_status>N/A</sa_status>
38        <service_state>Normal</service_state>
39        <ssid>0xD800</ssid>
40        <cuimage>0x00</cuimage>
41      </Dev_Info>
42      <Attached>
43        <BCV>N/A</BCV>
44        <VDEV>N/A</VDEV>
45      </Attached>
46      <Product>
47        <vendor>
48        </vendor>
49        <name>
50        </name>
51        <revision>
52        </revision>
53        <serial_id>N/A</serial_id>
54        <symid>000290101935</symid>
55      </Product>
56      <Label>
57        <type>N/A</type>
58        <defined_label>N/A</defined_label>
59      </Label>
60      <Flags>
61        <ckd>True</ckd>
62        <worm_enabled>False</worm_enabled>
63        <worm_protected>False</worm_protected>
64        <dynamic_spare_invoked>False</dynamic_spare_invoked>
65        <dynamic_rdf_capability>None</dynamic_rdf_capability>
66        <star_mode>False</star_mode>
67        <star_recovery_capability>None</star_recovery_capability>
68        <star_recovery_state>N/A</star_recovery_state>
69        <radiant_managed>False</radiant_managed>
70        <restricted_access_dev>False</restricted_access_dev>
71        <rdb_checksum_enabled>False</rdb_checksum_enabled>
72        <non_exclusive_access>False</non_exclusive_access>
73        <scsi3_persist_res>Disabled</scsi3_persist_res>
74        <vcm>False</vcm>
75        <symmetrix_filesystem>False</symmetrix_filesystem>
76        <snap_save_device>False</snap_save_device>
77        <gatekeeper>False</gatekeeper>
78        <meta>None</meta>
79      </Flags>
80      <Capacity>
81        <block_size>56664</block_size>
82        <cylinders>1113</cylinders>
83        <tracks>16695</tracks>
84        <blocks>16695</blocks>
85        <megabytes>902</megabytes>
86        <kilobytes>923833</kilobytes>
87      </Capacity>
88      <Front_End>
89        <Port>
90          <pd_name>Not Visible</pd_name>
91          <director>03A</director>
92          <director_type>FICON</director_type>
93          <powerpath_type>N/A</powerpath_type>
94          <port>0</port>
95          <port_status>N/A</port_status>
96          <tid>0</tid>
97          <lun>0</lun>
98          <host_lun>N/A</host_lun>
99          <base_address>0</base_address>
100          <alias_count>0</alias_count>
101        </Port>
102        <Port>
103          <pd_name>Not Visible</pd_name>
104          <director>04A</director>
105          <director_type>FICON</director_type>
106          <powerpath_type>N/A</powerpath_type>
107          <port>0</port>
108          <port_status>N/A</port_status>
109          <tid>0</tid>
110          <lun>0</lun>
111          <host_lun>N/A</host_lun>
112          <base_address>0</base_address>
113          <alias_count>0</alias_count>
114        </Port>
115        <Port>
116          <pd_name>Not Visible</pd_name>
117          <director>13A</director>
118          <director_type>FICON</director_type>
119          <powerpath_type>N/A</powerpath_type>
120          <port>0</port>
121          <port_status>N/A</port_status>
122          <tid>0</tid>
123          <lun>0</lun>
124          <host_lun>N/A</host_lun>
125          <base_address>0</base_address>
126          <alias_count>0</alias_count>
127        </Port>
128        <Port>
129          <pd_name>Not Visible</pd_name>
130          <director>14A</director>
131          <director_type>FICON</director_type>
132          <powerpath_type>N/A</powerpath_type>
133          <port>0</port>
134          <port_status>N/A</port_status>
135          <tid>0</tid>
136          <lun>0</lun>
137          <host_lun>N/A</host_lun>
138          <base_address>0</base_address>
139          <alias_count>0</alias_count>
140        </Port>
141      </Front_End>
142      <Mirror_Set>
143        <Mirror>
144          <number>1</number>
145          <type>RAID-5</type>
146          <status>Ready</status>
147          <invalid_tracks>0</invalid_tracks>
148        </Mirror>
149        <Mirror>
150          <number>2</number>
151          <type>RAID-5</type>
152          <status>Ready</status>
153          <invalid_tracks>0</invalid_tracks>
154        </Mirror>
155        <Mirror>
156          <number>3</number>
157          <type>N/A</type>
158          <status>N/A</status>
159          <invalid_tracks>0</invalid_tracks>
160        </Mirror>
161        <Mirror>
162          <number>4</number>
163          <type>N/A</type>
164          <status>N/A</status>
165          <invalid_tracks>0</invalid_tracks>
166        </Mirror>
167      </Mirror_Set>
168      <Back_End>
169        <Hyper>
170          <type>RAID-5</type>
171          <status>Ready</status>
172          <number>N/A</number>
173          <Disk>
174            <director>N/A</director>
175            <interface>N/A</interface>
176            <tid>N/A</tid>
177            <volume_number>N/A</volume_number>
178          </Disk>
179        </Hyper>
180        <Hyper>
181          <type>RAID-5</type>
182          <status>Ready</status>
183          <number>N/A</number>
184          <Disk>
185            <director>N/A</director>
186            <interface>N/A</interface>
187            <tid>N/A</tid>
188            <volume_number>N/A</volume_number>
189          </Disk>
190        </Hyper>
191      </Back_End>
192      <RAID-5_Device>
193        <RAID5_Dev_Info>
194          <tracks_per_stripe>4</tracks_per_stripe>
195          <ready_state>ReadyNoOtherMirror</ready_state>
196          <writeprotect_state>EnabledNoOtherMirror</writeprotect_state>
197          <member_num_of_failing_dev>None</member_num_of_failing_dev>
198          <member_which_invoked_spare>None</member_which_invoked_spare>
199          <disk_director_num_which_owns_spare>-1</disk_director_num_which_owns_spare>
200          <disk_director_ident_which_owns_spare>N/A</disk_director_ident_which_owns_spare        >
201          <copy_direction>N/A</copy_direction>
202        </RAID5_Dev_Info>
203        <Hyper>
204          <director>01A</director>
205          <interface>D</interface>
206          <tid>5</tid>
207          <da_vol_num>444</da_vol_num>
208          <hyper_num>56</hyper_num>
209          <hyper_capacity_in_mb>307</hyper_capacity_in_mb>
210          <member_num>4</member_num>
211          <member_status>RW</member_status>
212          <spare_status>N/A</spare_status>
213          <disk_group_num>2</disk_group_num>
214          <disk_capacity_in_mb>140014</disk_capacity_in_mb>
215        </Hyper>
216        <Hyper>
217          <director>15A</director>
218          <interface>D</interface>
219          <tid>5</tid>
220          <da_vol_num>468</da_vol_num>
221          <hyper_num>56</hyper_num>
222          <hyper_capacity_in_mb>307</hyper_capacity_in_mb>
223          <member_num>1</member_num>
224          <member_status>RW</member_status>
225          <spare_status>N/A</spare_status>
226          <disk_group_num>2</disk_group_num>
227          <disk_capacity_in_mb>140014</disk_capacity_in_mb>
228        </Hyper>
229        <Hyper>
230          <director>02C</director>
231          <interface>C</interface>
232          <tid>5</tid>
233          <da_vol_num>66</da_vol_num>
234          <hyper_num>56</hyper_num>
235          <hyper_capacity_in_mb>307</hyper_capacity_in_mb>
236          <member_num>3</member_num>
237          <member_status>RW</member_status>
238          <spare_status>N/A</spare_status>
239          <disk_group_num>2</disk_group_num>
240          <disk_capacity_in_mb>140014</disk_capacity_in_mb>
241        </Hyper>
242        <Hyper>
243          <director>16C</director>
244          <interface>C</interface>
245          <tid>5</tid>
246          <da_vol_num>66</da_vol_num>
247          <hyper_num>56</hyper_num>
248          <hyper_capacity_in_mb>307</hyper_capacity_in_mb>
249          <member_num>2</member_num>
250          <member_status>RW</member_status>
251          <spare_status>N/A</spare_status>
252          <disk_group_num>2</disk_group_num>
253          <disk_capacity_in_mb>140014</disk_capacity_in_mb>
254        </Hyper>
255      </RAID-5_Device>
256    </Device>
257  </Symmetrix>
258</SymCLI_ML>
259