generate: container: Combine Network, Dns and Ports to ContainerNetwork
Signed-off-by: Enno Tensing <tenno@suij.in>
This commit is contained in:
parent
aa13b77758
commit
8f156e9f70
1 changed files with 35 additions and 13 deletions
|
@ -415,7 +415,7 @@ class Environment:
|
||||||
if cmd == "":
|
if cmd == "":
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
return header + cmd
|
return header + f"printf '\\n' > {self.file}\n" + cmd
|
||||||
|
|
||||||
def remove(self) -> str:
|
def remove(self) -> str:
|
||||||
"""Remove env file."""
|
"""Remove env file."""
|
||||||
|
@ -665,15 +665,44 @@ class ContainerOptions:
|
||||||
return ""
|
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:
|
class Container:
|
||||||
"""Container."""
|
"""Container."""
|
||||||
|
|
||||||
name: str
|
name: str
|
||||||
image: Image
|
image: Image
|
||||||
ct_opts: ContainerOptions
|
ct_opts: ContainerOptions
|
||||||
network: Network
|
ct_network: ContainerNetwork
|
||||||
dns: Dns
|
|
||||||
ports: Ports
|
|
||||||
env: Environment
|
env: Environment
|
||||||
secrets: list
|
secrets: list
|
||||||
volumes: list
|
volumes: list
|
||||||
|
@ -695,9 +724,6 @@ class Container:
|
||||||
ct_opts = ContainerOptions.from_json(json, logger)
|
ct_opts = ContainerOptions.from_json(json, logger)
|
||||||
if not ct_opts.is_valid:
|
if not ct_opts.is_valid:
|
||||||
return
|
return
|
||||||
network = maybe(json, "network")
|
|
||||||
dns = maybe(json, "dns")
|
|
||||||
ports = maybe(json, "ports")
|
|
||||||
env = maybe(json, "env")
|
env = maybe(json, "env")
|
||||||
secrets = maybe(json, "secrets")
|
secrets = maybe(json, "secrets")
|
||||||
volumes = maybe(json, "volumes")
|
volumes = maybe(json, "volumes")
|
||||||
|
@ -706,9 +732,7 @@ class Container:
|
||||||
self.name = str(name)
|
self.name = str(name)
|
||||||
self.image = Image.from_json(image, logger)
|
self.image = Image.from_json(image, logger)
|
||||||
self.ct_opts = ct_opts
|
self.ct_opts = ct_opts
|
||||||
self.network = Network.from_json(network, logger)
|
self.ct_network = ContainerNetwork.from_json(json, logger)
|
||||||
self.dns = Dns.from_json(dns, logger)
|
|
||||||
self.ports = Ports.from_json(ports, logger)
|
|
||||||
self.env = Environment.from_json(env, logger)
|
self.env = Environment.from_json(env, logger)
|
||||||
self.env.file = "/var/lib/containerctl/environment-files/"
|
self.env.file = "/var/lib/containerctl/environment-files/"
|
||||||
self.env.file += f"{self.name}"
|
self.env.file += f"{self.name}"
|
||||||
|
@ -747,9 +771,7 @@ class Container:
|
||||||
cmd += "podman container create \\\n"
|
cmd += "podman container create \\\n"
|
||||||
cmd += f"\t--name={self.name} \\\n"
|
cmd += f"\t--name={self.name} \\\n"
|
||||||
cmd += f"{self.ct_opts.command()}"
|
cmd += f"{self.ct_opts.command()}"
|
||||||
cmd += f"{self.network.command()}"
|
cmd += f"{self.ct_network.command()}"
|
||||||
cmd += f"{self.dns.command()}"
|
|
||||||
cmd += f"{self.ports.command()}"
|
|
||||||
cmd += f"{self.env.command()}"
|
cmd += f"{self.env.command()}"
|
||||||
for secret in self.secrets:
|
for secret in self.secrets:
|
||||||
cmd += f"{secret.command()}"
|
cmd += f"{secret.command()}"
|
||||||
|
|
Loading…
Add table
Reference in a new issue