@@ -166,9 +166,13 @@ def _get_formatted_server_leases(raw_data, family='inet'):
166
166
return output
167
167
168
168
169
- def _get_pool_size (pool , family = 'inet' ):
169
+ def _get_pool_size (pool , family = 'inet' , vrf = '' ):
170
170
v = 'v6' if family == 'inet6' else ''
171
- base = f'service dhcp{ v } -server shared-network-name { pool } '
171
+ # if vrf is set get the correct base for config
172
+ if vrf :
173
+ base = f'vrf name { vrf } service dhcp{ v } -server shared-network-name { pool } '
174
+ else :
175
+ base = f'service dhcp{ v } -server shared-network-name { pool } '
172
176
size = 0
173
177
subnets = config .list_nodes (f'{ base } subnet' )
174
178
for subnet in subnets :
@@ -185,7 +189,7 @@ def _get_pool_size(pool, family='inet'):
185
189
return size
186
190
187
191
188
- def _get_raw_server_pool_statistics (config , family = 'inet' , pool = None ):
192
+ def _get_raw_server_pool_statistics (config , family = 'inet' , vrf = '' , pool = None ):
189
193
inet_suffix = '6' if family == 'inet6' else '4'
190
194
pools = [pool ] if pool else kea_get_dhcp_pools (config , inet_suffix )
191
195
@@ -269,11 +273,20 @@ def _verify_server(func):
269
273
def _wrapper (* args , ** kwargs ):
270
274
config = ConfigTreeQuery ()
271
275
family = kwargs .get ('family' )
276
+ vrf = kwargs .get ('vrf' )
272
277
v = 'v6' if family == 'inet6' else ''
273
- unconf_message = f'DHCP { v } server is not configured'
278
+
274
279
# Check if config does not exist
275
- if not config .exists (f'service dhcp{ v } -server' ):
276
- raise vyos .opmode .UnconfiguredSubsystem (unconf_message )
280
+ if vrf :
281
+ unconf_message = f'DHCP{ v } server is not configured for VRF { vrf } '
282
+ if not config .exists (f'vrf name { vrf } service dhcp{ v } -server' ):
283
+ raise vyos .opmode .UnconfiguredSubsystem (unconf_message )
284
+ else :
285
+ unconf_message = f'DHCP{ v } server is not configured'
286
+ if not config .exists (f'service dhcp{ v } -server' ):
287
+ raise vyos .opmode .UnconfiguredSubsystem (unconf_message )
288
+
289
+ # return
277
290
return func (* args , ** kwargs )
278
291
279
292
return _wrapper
@@ -321,7 +334,9 @@ def show_server_pool_statistics(
321
334
if pool and active_pools and pool not in active_pools :
322
335
raise vyos .opmode .IncorrectValue (f'DHCP{ v } pool "{ pool } " does not exist!' )
323
336
324
- pool_data = _get_raw_server_pool_statistics (active_config , family = family , pool = pool )
337
+ pool_data = _get_raw_server_pool_statistics (
338
+ active_config , family = family , vrf = vrf , pool = pool
339
+ )
325
340
if raw :
326
341
return pool_data
327
342
else :
0 commit comments