Source code for aiodocker.networks
from __future__ import annotations
import json
from collections.abc import Mapping, Sequence
from typing import Any
from .utils import clean_filters
[docs]
class DockerNetworks:
def __init__(self, docker):
self.docker = docker
[docs]
async def list(
self,
*,
filters: Mapping[str, str | Sequence[str]] | None = None,
) -> list[dict[str, Any]]:
"""
Return a list of networks
Args:
filters: a dict with a list of filters
Available filters:
dangling=<boolean>
driver=<driver-name>
id=<network-id>
label=<key> or label=<key>=<value> of a network label.
name=<network-name>
scope=["swarm"|"global"|"local"]
type=["custom"|"builtin"]
"""
params = {} if filters is None else {"filters": clean_filters(filters)}
data = await self.docker._query_json("networks", params=params)
return data
[docs]
async def create(self, config: dict[str, Any]) -> DockerNetwork:
bconfig = json.dumps(config, sort_keys=True).encode("utf-8")
data = await self.docker._query_json(
"networks/create", method="POST", data=bconfig
)
return DockerNetwork(self.docker, data["Id"])
[docs]
async def get(self, net_specs: str) -> DockerNetwork:
data = await self.docker._query_json(f"networks/{net_specs}", method="GET")
return DockerNetwork(self.docker, data["Id"])
[docs]
async def prune(
self,
*,
filters: Mapping[str, Any] | None = None,
) -> dict[str, Any]:
"""
Delete unused networks
Args:
filters: Filter expressions to limit which networks are pruned.
Available filters:
- until: Only remove networks created before given timestamp
- label: Only remove networks with (or without, if label!=<key> is used) the specified labels
Returns:
Dictionary containing information about deleted networks
"""
params = {}
if filters is not None:
params["filters"] = clean_filters(filters)
response = await self.docker._query_json(
"networks/prune", "POST", params=params
)
return response
[docs]
class DockerNetwork:
def __init__(self, docker, id_):
self.docker = docker
self.id = id_
[docs]
async def show(self) -> dict[str, Any]:
data = await self.docker._query_json(f"networks/{self.id}")
return data
[docs]
async def delete(self) -> bool:
async with self.docker._query(f"networks/{self.id}", method="DELETE") as resp:
return resp.status == 204
[docs]
async def connect(self, config: dict[str, Any]) -> None:
bconfig = json.dumps(config, sort_keys=True).encode("utf-8")
await self.docker._query_json(
f"networks/{self.id}/connect", method="POST", data=bconfig
)
[docs]
async def disconnect(self, config: dict[str, Any]) -> None:
bconfig = json.dumps(config, sort_keys=True).encode("utf-8")
await self.docker._query_json(
f"networks/{self.id}/disconnect",
method="POST",
data=bconfig,
)