1
0
Fork 0

generate: container: Combine Network, Dns and Ports to ContainerNetwork

Signed-off-by: Enno Tensing <tenno@suij.in>
This commit is contained in:
Enno Tensing 2025-08-08 21:26:56 +02:00
parent aa13b77758
commit 8f156e9f70
Signed by: tenno
GPG key ID: 95265603BD36E66C

View file

@ -415,7 +415,7 @@ class Environment:
if cmd == "":
return ""
return header + cmd
return header + f"printf '\\n' > {self.file}\n" + cmd
def remove(self) -> str:
"""Remove env file."""
@ -665,15 +665,44 @@ class ContainerOptions:
return ""
@dataclass
class ContainerNetwork:
"""Wrapper for Network, Dns and Ports."""
network: Network
dns: Dns
ports: Ports
@classmethod
def from_json(cls, json: ConfigValue, logger: Log) -> Self:
"""Create from JSON."""
network_config = maybe(json, "network")
dns_config = maybe(json, "dns")
ports_config = maybe(json, "ports")
network = Network.from_json(network_config, logger)
dns = Dns.from_json(dns_config, logger)
ports = Ports.from_json(ports_config, logger)
return cls(network, dns, ports)
def command(self) -> str:
"""Option for podman container create."""
cmd = ""
cmd += self.network.command()
cmd += self.dns.command()
cmd += self.ports.command()
return cmd
class Container:
"""Container."""
name: str
image: Image
ct_opts: ContainerOptions
network: Network
dns: Dns
ports: Ports
ct_network: ContainerNetwork
env: Environment
secrets: list
volumes: list
@ -695,9 +724,6 @@ class Container:
ct_opts = ContainerOptions.from_json(json, logger)
if not ct_opts.is_valid:
return
network = maybe(json, "network")
dns = maybe(json, "dns")
ports = maybe(json, "ports")
env = maybe(json, "env")
secrets = maybe(json, "secrets")
volumes = maybe(json, "volumes")
@ -706,9 +732,7 @@ class Container:
self.name = str(name)
self.image = Image.from_json(image, logger)
self.ct_opts = ct_opts
self.network = Network.from_json(network, logger)
self.dns = Dns.from_json(dns, logger)
self.ports = Ports.from_json(ports, logger)
self.ct_network = ContainerNetwork.from_json(json, logger)
self.env = Environment.from_json(env, logger)
self.env.file = "/var/lib/containerctl/environment-files/"
self.env.file += f"{self.name}"
@ -747,9 +771,7 @@ class Container:
cmd += "podman container create \\\n"
cmd += f"\t--name={self.name} \\\n"
cmd += f"{self.ct_opts.command()}"
cmd += f"{self.network.command()}"
cmd += f"{self.dns.command()}"
cmd += f"{self.ports.command()}"
cmd += f"{self.ct_network.command()}"
cmd += f"{self.env.command()}"
for secret in self.secrets:
cmd += f"{secret.command()}"