Skip to content
Snippets Groups Projects
Commit 7c327ed8 authored by JORGE SASIAIN's avatar JORGE SASIAIN
Browse files

NAT-152: endpoint to get status and usage fields of hosts in a network

parent 80a419b0
No related branches found
No related tags found
1 merge request!9Ipam service
This commit is part of merge request !9. Comments created here will be created in the context of that merge request.
...@@ -203,7 +203,8 @@ def _allocate_network( ...@@ -203,7 +203,8 @@ def _allocate_network(
return V6ServiceNetwork(v6=allocated_network) return V6ServiceNetwork(v6=allocated_network)
def allocate_service_ipv4_network(service_type, extattrs) -> V4ServiceNetwork: def allocate_service_ipv4_network(service_type, extattrs={}
) -> V4ServiceNetwork:
""" """
Allocate IPv4 network within the container of the specified service type. Allocate IPv4 network within the container of the specified service type.
""" """
...@@ -218,7 +219,8 @@ def allocate_service_ipv4_network(service_type, extattrs) -> V4ServiceNetwork: ...@@ -218,7 +219,8 @@ def allocate_service_ipv4_network(service_type, extattrs) -> V4ServiceNetwork:
extattrs) extattrs)
def allocate_service_ipv6_network(service_type, extattrs) -> V6ServiceNetwork: def allocate_service_ipv6_network(service_type, extattrs={}
) -> V6ServiceNetwork:
""" """
Allocate IPv6 network within the container of the specified service type. Allocate IPv6 network within the container of the specified service type.
""" """
...@@ -558,6 +560,32 @@ def _delete_host_by_ip(addr) -> Union[V4HostAddress, V6HostAddress]: ...@@ -558,6 +560,32 @@ def _delete_host_by_ip(addr) -> Union[V4HostAddress, V6HostAddress]:
return V6HostAddress(v6=addr) return V6HostAddress(v6=addr)
def _get_network_usage_status(network):
"""
Get status and usage fields of all hosts in the specified ipv4 or ipv6
network.
"""
oss = settings.load_oss_params()
assert oss.IPAM.INFOBLOX
infoblox_params = oss.IPAM.INFOBLOX
ip_version = _ip_network_version(network)
endpoint = 'ipv4address' if ip_version == 4 else 'ipv6address'
r = requests.get(
f'{_wapi(infoblox_params)}/{endpoint}',
params={
'_return_fields': 'ip_address,status,usage',
'network': network},
auth=HTTPBasicAuth(infoblox_params.username,
infoblox_params.password),
verify=False
)
assert r.status_code >= 200 and r.status_code < 300, \
f"HTTP error {r.status_code}: {r.reason}\n\n{r.text}"
return r.json()
if __name__ == '__main__': if __name__ == '__main__':
while True: while True:
print("1. Find all containers") print("1. Find all containers")
...@@ -569,7 +597,8 @@ if __name__ == '__main__': ...@@ -569,7 +597,8 @@ if __name__ == '__main__':
print("7. Allocate host by network CIDR") print("7. Allocate host by network CIDR")
print("8. Allocate host by service type") print("8. Allocate host by service type")
print("9. Delete host by IP") print("9. Delete host by IP")
print("10. Exit") print("10. Get network usage status")
print("11. Exit")
choice = input("Enter your choice: ") choice = input("Enter your choice: ")
...@@ -634,6 +663,12 @@ if __name__ == '__main__': ...@@ -634,6 +663,12 @@ if __name__ == '__main__':
print(json.dumps(str(deleted_host), indent=2)) print(json.dumps(str(deleted_host), indent=2))
elif choice == '10': elif choice == '10':
network = input(
"Enter network to get host usage status (CIDR notation): ")
usage_status_info = _get_network_usage_status(network=network)
print(json.dumps(usage_status_info, indent=2))
elif choice == '11':
print("Exiting...") print("Exiting...")
break break
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment