FIXES #442: allow --no-pod or custom --pod-args

This commit is contained in:
Muayyad alsadi 2022-03-08 21:13:14 +03:00
parent 701311aa7a
commit 7942a091c3

View File

@ -307,13 +307,18 @@ def norm_ulimit(inner_value):
# return [pod], containers # return [pod], containers
def tr_identity(project_name, given_containers): def transform(args, project_name, given_containers):
if args.no_pod:
pod_name = None
pods = []
else:
pod_name = f"pod_{project_name}" pod_name = f"pod_{project_name}"
pod = dict(name=pod_name) pod = dict(name=pod_name)
pods = [pod]
containers = [] containers = []
for cnt in given_containers: for cnt in given_containers:
containers.append(dict(cnt, pod=pod_name)) containers.append(dict(cnt, pod=pod_name))
return [pod], containers return pods, containers
def assert_volume(compose, mount_dict): def assert_volume(compose, mount_dict):
@ -1513,7 +1518,7 @@ class PodmanCompose:
given_containers = list(container_by_name.values()) given_containers = list(container_by_name.values())
given_containers.sort(key=lambda c: len(c.get("_deps", None) or [])) given_containers.sort(key=lambda c: len(c.get("_deps", None) or []))
# log("sorted:", [c["name"] for c in given_containers]) # log("sorted:", [c["name"] for c in given_containers])
pods, containers = tr_identity(project_name, given_containers) pods, containers = transform(args, project_name, given_containers)
self.pods = pods self.pods = pods
self.containers = containers self.containers = containers
self.container_by_name = {c["name"]: c for c in containers} self.container_by_name = {c["name"]: c for c in containers}
@ -1540,6 +1545,19 @@ class PodmanCompose:
@staticmethod @staticmethod
def _init_global_parser(parser): def _init_global_parser(parser):
parser.add_argument("-v", "--version", help="show version", action="store_true") parser.add_argument("-v", "--version", help="show version", action="store_true")
parser.add_argument(
"--no-pod",
help="disable pod creation",
action='store_true',
default=False,
)
parser.add_argument(
"--pod-args",
help="disable pod creation",
metavar="pod_args",
type=str,
default="--infra=false --share=",
)
parser.add_argument( parser.add_argument(
"--env-file", "--env-file",
help="Specify an alternate environment file", help="Specify an alternate environment file",
@ -1764,9 +1782,9 @@ def create_pods(compose, args): # pylint: disable=unused-argument
podman_args = [ podman_args = [
"create", "create",
"--name=" + pod["name"], "--name=" + pod["name"],
"--infra=false",
"--share=",
] ]
if args.pod_args:
podman_args.extend(shlex.split(args.pod_args))
# if compose.podman_version and not strverscmp_lt(compose.podman_version, "3.4.0"): # if compose.podman_version and not strverscmp_lt(compose.podman_version, "3.4.0"):
# podman_args.append("--infra-name={}_infra".format(pod["name"])) # podman_args.append("--infra-name={}_infra".format(pod["name"]))
ports = pod.get("ports", None) or [] ports = pod.get("ports", None) or []