1[% USE CSV -%]
2
3[% SET headers = [] %]
4[% SET c_nodes_pos = -1 %]
5[% FOREACH item IN settings.port_columns %]
6  [% NEXT IF item.name == 'c_admin' %]
7  [% NEXT UNLESS params.${item.name} %]
8
9  [% IF item.name == 'c_nodes' %]
10    [% SET c_nodes_pos = headers.size %]
11    [% headers.push('Node MAC') %]
12    [% headers.push('Archived Node') %]
13    [% headers.push('Age Stamp') IF params.n_age %]
14    [% headers.push('Node IP') IF params.n_ip4 OR params.n_ip6 %]
15    [% headers.push('Node DNS') IF params.n_ip4 OR params.n_ip6 %]
16    [% headers.push('Archived IP') IF params.n_ip4 OR params.n_ip6 %]
17  [% ELSIF item.name == 'c_duplex' %]
18    [% headers.push('Duplex Setting') %]
19    [% headers.push('Duplex') %]
20  [% ELSIF item.name == 'c_power' %]
21    [% headers.push('PoE Status') %]
22    [% headers.push('PoE Power (mW)') %]
23  [% ELSIF item.name == 'c_neighbors' %]
24    [% headers.push('Neighbor IP') %]
25    [% headers.push('Neighbor DNS') %]
26  [% ELSIF item.name == 'c_up' %]
27    [% headers.push('Port Setting') %]
28    [% headers.push('Port Status') %]
29  [% ELSE %]
30    [% headers.push(item.label) %]
31  [% END %]
32[% END %]
33[% CSV.dump(headers) %]
34
35[% FOREACH row IN results %]
36  [% SET myport = [] %]
37
38  [% FOREACH config IN settings._extra_device_port_cols %]
39    [% NEXT UNLESS config.position == 'left' AND params.${config.name} %]
40    [% TRY %]
41    [% PROCESS "plugin/${config.name}/device_port_column_csv.tt" %]
42    [% CATCH %]
43    [% myport.push('') %]
44    [% END %]
45  [% END %]
46
47  [% IF params.c_port %]
48    [% myport.push(row.port) %]
49  [% END %]
50
51  [% FOREACH config IN settings._extra_device_port_cols %]
52    [% NEXT UNLESS config.position == 'mid' AND params.${config.name} %]
53    [% TRY %]
54    [% PROCESS "plugin/${config.name}/device_port_column_csv.tt" %]
55    [% CATCH %]
56    [% myport.push('') %]
57    [% END %]
58  [% END %]
59
60  [% IF params.c_descr %]
61    [% myport.push(row.descr) %]
62  [% END %]
63
64  [% IF params.c_comment %]
65    [% myport.push(row.last_comment) %]
66  [% END %]
67
68  [% IF params.c_type %]
69    [% myport.push(row.type) %]
70  [% END %]
71
72  [% IF params.c_duplex %]
73    [% IF row.up == 'up' AND row.duplex %]
74      [% myport.push( row.duplex_admin.ucfirst || 'Auto' ) %]
75      [% myport.push( row.duplex.ucfirst ) %]
76    [% ELSE %]
77      [% myport.push('') %]
78      [% myport.push('') %]
79    [% END %]
80  [% END %]
81
82  [% IF params.c_lastchange %]
83    [% myport.push(row.lastchange_stamp) %]
84  [% END %]
85
86  [% IF params.c_name %]
87    [% myport.push(row.name) %]
88  [% END %]
89
90  [% IF params.c_speed %]
91    [% myport.push(row.speed) %]
92  [% END %]
93
94  [% IF params.c_speed_admin %]
95    [% myport.push(row.speed_admin) %]
96  [% END %]
97
98  [% IF params.c_error %]
99    [% myport.push(row.error_disable_cause) %]
100  [% END %]
101
102  [% IF params.c_mac %]
103    [% myport.push(row.mac) %]
104  [% END %]
105
106  [% IF params.c_mtu %]
107    [% myport.push(row.mtu) %]
108  [% END %]
109
110  [% IF params.c_pvid %]
111    [% myport.push(row.vlan) %]
112  [% END %]
113
114  [% IF params.c_vmember %]
115    [% SET portname = row.port %]
116    [% SET output = '' %]
117    [% FOREACH vlan IN vlans.$portname.vlan_set.nsort %]
118      [% SET output = output _ ',' IF NOT loop.first %]
119      [% SET output = output _ vlan %]
120    [% END %]
121    [% myport.push(output) %]
122  [% END %]
123
124  [% IF params.c_power %]
125    [% IF row.power AND row.power.admin == 'true' %]
126      [% myport.push( row.power.status ) %]
127      [% myport.push( row.power.power || '0' ) %]
128    [% ELSE %]
129      [% myport.push('') %]
130      [% myport.push('') %]
131    [% END %]
132  [% END %]
133
134  [% IF params.c_nodes %]
135    [% myport.push('') %]
136    [% myport.push('') %]
137    [% myport.push('') IF params.n_age %]
138    [% myport.push('') IF params.n_ip4 OR params.n_ip6 %]
139    [% myport.push('') IF params.n_ip4 OR params.n_ip6 %]
140    [% myport.push('') IF params.n_ip4 OR params.n_ip6 %]
141  [% END %]
142
143  [% IF params.c_neighbors %]
144    [% IF (row.remote_ip OR row.is_uplink) %]
145      [% IF row.get_column('neighbor_ip') %]
146        [% myport.push( row.get_column('neighbor_ip') ) %]
147        [% myport.push( row.get_column('neighbor_dns').remove(settings.domain_suffix) ) %]
148      [% ELSIF row.remote_ip AND row.remote_port %]
149        [% myport.push( row.remote_ip ) %]
150        [% myport.push('') %]
151      [% ELSE %]
152        [% myport.push('(possible uplink)') %]
153        [% myport.push('') %]
154      [% END %]
155    [% ELSE %]
156      [% myport.push('') %]
157      [% myport.push('') %]
158    [% END %]
159  [% END %]
160
161  [% IF params.c_stp %]
162    [% myport.push(row.stp) %]
163  [% END %]
164
165  [% IF params.c_up %]
166    [% myport.push( row.up_admin.ucfirst ) %]
167    [% myport.push( row.up.ucfirst ) %]
168  [% END %]
169
170  [% FOREACH config IN settings._extra_device_port_cols %]
171    [% NEXT UNLESS config.position == 'right' AND params.${config.name} %]
172    [% TRY %]
173    [% PROCESS "plugin/${config.name}/device_port_column_csv.tt" %]
174    [% CATCH %]
175    [% myport.push('') %]
176    [% END %]
177  [% END %]
178
179  [% SET has_nodes = 0 %]
180  [% IF params.c_nodes %]
181    [% FOREACH node IN row.$nodes %]
182      [% SET has_nodes = 1 %]
183      [% SET mynode = [] %]
184
185      [% CALL mynode.push(node.net_mac.$mac_format_call) %]
186      [% CALL mynode.push((node.active ? 'No' : 'Yes')) %]
187
188      [% CALL mynode.push(node.time_last_age) IF params.n_age %]
189
190      [% IF params.n_ip4 OR params.n_ip6 %]
191        [% mynode.push('') %]
192        [% mynode.push('') %]
193        [% mynode.push('') %]
194        [% SET has_ips = 0 %]
195
196        [% FOREACH ip IN node.$ips %]
197          [% SET has_ips = 1 %]
198
199          [% CALL mynode.splice(-3, 1, ip.ip) %]
200          [% CALL mynode.splice(-2, 1, ip.dns) %]
201          [% CALL mynode.splice(-1, 1, (ip.active ? 'No' : 'Yes')) %]
202
203          [% CALL myport.splice(c_nodes_pos, mynode.size, mynode) %]
204          [% CSV.dump(myport) %]
205        [% END %]
206
207        [% CSV.dump(myport) IF NOT has_ips %]
208      [% ELSE %]
209        [% CALL myport.splice(c_nodes_pos, mynode.size, mynode) %]
210        [% CSV.dump(myport) %]
211      [% END %]
212    [% END %]
213  [% END %]
214
215  [% CSV.dump(myport) IF NOT has_nodes %]
216[% END %]
217