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 == "":
|
||||
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()}"
|
||||
|
|
Loading…
Add table
Reference in a new issue