61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""Classes to support Internet Protocol Address Management.
|
|
|
|
Provided for compatibility
|
|
"""
|
|
from typing import Any, List, Mapping, Optional
|
|
|
|
|
|
class IPAMPool(dict):
|
|
"""Collect IP Network configuration."""
|
|
|
|
def __init__(
|
|
self,
|
|
subnet: Optional[str] = None,
|
|
iprange: Optional[str] = None,
|
|
gateway: Optional[str] = None,
|
|
aux_addresses: Optional[Mapping[str, str]] = None,
|
|
):
|
|
"""Create IPAMPool.
|
|
|
|
Args:
|
|
subnet: IP subnet in CIDR format for this network.
|
|
iprange: IP range in CIDR format for endpoints on this network.
|
|
gateway: IP gateway address for this network.
|
|
aux_addresses: Ignored.
|
|
"""
|
|
super().__init__()
|
|
self.update(
|
|
{
|
|
"AuxiliaryAddresses": aux_addresses,
|
|
"Gateway": gateway,
|
|
"IPRange": iprange,
|
|
"Subnet": subnet,
|
|
}
|
|
)
|
|
|
|
|
|
class IPAMConfig(dict):
|
|
"""Collect IP Address configuration."""
|
|
|
|
def __init__(
|
|
self,
|
|
driver: Optional[str] = "default",
|
|
pool_configs: Optional[List[IPAMPool]] = None,
|
|
options: Optional[Mapping[str, Any]] = None,
|
|
):
|
|
"""Create IPAMConfig.
|
|
|
|
Args:
|
|
driver: Network driver to use with this network.
|
|
pool_configs: Network and endpoint information. Podman only supports one pool.
|
|
options: Options to provide to the Network driver.
|
|
"""
|
|
super().__init__()
|
|
self.update(
|
|
{
|
|
"Config": pool_configs or [],
|
|
"Driver": driver,
|
|
"Options": options or {},
|
|
}
|
|
)
|