mirror of
https://github.com/containers/podman-compose.git
synced 2025-06-21 12:35:01 +02:00
switch to % string lazy formatting
* fix black and pylint issues Signed-off-by: Florian Maurer <f.maurer@outlook.de>
This commit is contained in:
parent
1e9e2ee776
commit
da520e299b
@ -379,7 +379,7 @@ async def assert_volume(compose, mount_dict):
|
|||||||
proj_name = compose.project_name
|
proj_name = compose.project_name
|
||||||
vol_name = vol["name"]
|
vol_name = vol["name"]
|
||||||
is_ext = vol.get("external", None)
|
is_ext = vol.get("external", None)
|
||||||
log.debug(f"podman volume inspect {vol_name} || podman volume create {vol_name}")
|
log.debug("podman volume inspect %s || podman volume create %s", vol_name, vol_name)
|
||||||
# TODO: might move to using "volume list"
|
# TODO: might move to using "volume list"
|
||||||
# podman volume list --format '{{.Name}}\t{{.MountPoint}}' \
|
# podman volume list --format '{{.Name}}\t{{.MountPoint}}' \
|
||||||
# -f 'label=io.podman.compose.project=HERE'
|
# -f 'label=io.podman.compose.project=HERE'
|
||||||
@ -555,9 +555,11 @@ def get_secret_args(compose, cnt, secret):
|
|||||||
volume_ref = ["--volume", f"{source_file}:{dest_file}:ro,rprivate,rbind"]
|
volume_ref = ["--volume", f"{source_file}:{dest_file}:ro,rprivate,rbind"]
|
||||||
if uid or gid or mode:
|
if uid or gid or mode:
|
||||||
sec = target if target else secret_name
|
sec = target if target else secret_name
|
||||||
log.warn(
|
log.warning(
|
||||||
f'WARNING: Service {cnt["_service"]} uses secret "{sec}" with uid, gid, or mode.'
|
"WARNING: Service %s uses secret %s with uid, gid, or mode."
|
||||||
+ " These fields are not supported by this implementation of the Compose file"
|
+ " These fields are not supported by this implementation of the Compose file",
|
||||||
|
cnt["_service"],
|
||||||
|
sec,
|
||||||
)
|
)
|
||||||
return volume_ref
|
return volume_ref
|
||||||
# v3.5 and up added external flag, earlier the spec
|
# v3.5 and up added external flag, earlier the spec
|
||||||
@ -586,11 +588,12 @@ def get_secret_args(compose, cnt, secret):
|
|||||||
if target and target != secret_name:
|
if target and target != secret_name:
|
||||||
raise ValueError(err_str.format(target, secret_name))
|
raise ValueError(err_str.format(target, secret_name))
|
||||||
if target:
|
if target:
|
||||||
log.warn(
|
log.warning(
|
||||||
'WARNING: Service "{}" uses target: "{}" for secret: "{}".'.format(
|
'WARNING: Service "%s" uses target: "%s" for secret: "%s".'
|
||||||
cnt["_service"], target, secret_name
|
+ " That is un-supported and a no-op and is ignored.",
|
||||||
)
|
cnt["_service"],
|
||||||
+ " That is un-supported and a no-op and is ignored."
|
target,
|
||||||
|
secret_name,
|
||||||
)
|
)
|
||||||
return ["--secret", "{}{}".format(secret_name, secret_opts)]
|
return ["--secret", "{}{}".format(secret_name, secret_opts)]
|
||||||
|
|
||||||
@ -770,7 +773,7 @@ def get_net_args(compose, cnt):
|
|||||||
elif net.startswith("bridge"):
|
elif net.startswith("bridge"):
|
||||||
is_bridge = True
|
is_bridge = True
|
||||||
else:
|
else:
|
||||||
log.fatal(f"unknown network_mode [{net}]")
|
log.fatal("unknown network_mode [%s]", net)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
is_bridge = True
|
is_bridge = True
|
||||||
@ -913,10 +916,10 @@ async def container_to_args(compose, cnt, detached=True):
|
|||||||
await assert_cnt_nets(compose, cnt)
|
await assert_cnt_nets(compose, cnt)
|
||||||
podman_args.extend(get_net_args(compose, cnt))
|
podman_args.extend(get_net_args(compose, cnt))
|
||||||
|
|
||||||
logging = cnt.get("logging", None)
|
log_config = cnt.get("logging", None)
|
||||||
if logging is not None:
|
if log_config is not None:
|
||||||
podman_args.append(f'--log-driver={logging.get("driver", "k8s-file")}')
|
podman_args.append(f'--log-driver={log_config.get("driver", "k8s-file")}')
|
||||||
log_opts = logging.get("options") or {}
|
log_opts = log_config.get("options") or {}
|
||||||
podman_args += [f"--log-opt={name}={value}" for name, value in log_opts.items()]
|
podman_args += [f"--log-opt={name}={value}" for name, value in log_opts.items()]
|
||||||
for secret in cnt.get("secrets", []):
|
for secret in cnt.get("secrets", []):
|
||||||
podman_args.extend(get_secret_args(compose, cnt, secret))
|
podman_args.extend(get_secret_args(compose, cnt, secret))
|
||||||
@ -1226,7 +1229,7 @@ class Podman:
|
|||||||
p.kill()
|
p.kill()
|
||||||
exit_code = await p.wait()
|
exit_code = await p.wait()
|
||||||
|
|
||||||
log.info(f"exit code: {exit_code}")
|
log.info("exit code: %s", exit_code)
|
||||||
return exit_code
|
return exit_code
|
||||||
|
|
||||||
async def volume_ls(self, proj=None):
|
async def volume_ls(self, proj=None):
|
||||||
@ -1474,7 +1477,7 @@ class PodmanCompose:
|
|||||||
missing = given - self.all_services
|
missing = given - self.all_services
|
||||||
if missing:
|
if missing:
|
||||||
missing_csv = ",".join(missing)
|
missing_csv = ",".join(missing)
|
||||||
log.warn(f"missing services [{missing_csv}]")
|
log.warning("missing services [%s]", missing_csv)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def get_podman_args(self, cmd):
|
def get_podman_args(self, cmd):
|
||||||
@ -1488,7 +1491,7 @@ class PodmanCompose:
|
|||||||
return xargs
|
return xargs
|
||||||
|
|
||||||
async def run(self):
|
async def run(self):
|
||||||
log.info("podman-compose version: " + __version__)
|
log.info("podman-compose version: %s", __version__)
|
||||||
args = self._parse_args()
|
args = self._parse_args()
|
||||||
podman_path = args.podman_path
|
podman_path = args.podman_path
|
||||||
if podman_path != "podman":
|
if podman_path != "podman":
|
||||||
@ -1497,7 +1500,7 @@ class PodmanCompose:
|
|||||||
else:
|
else:
|
||||||
# this also works if podman hasn't been installed now
|
# this also works if podman hasn't been installed now
|
||||||
if args.dry_run is False:
|
if args.dry_run is False:
|
||||||
log.fatal(f"Binary {podman_path} has not been found.")
|
log.fatal("Binary %s has not been found.", podman_path)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
self.podman = Podman(self, podman_path, args.dry_run, asyncio.Semaphore(args.parallel))
|
self.podman = Podman(self, podman_path, args.dry_run, asyncio.Semaphore(args.parallel))
|
||||||
|
|
||||||
@ -1513,7 +1516,7 @@ class PodmanCompose:
|
|||||||
if not self.podman_version:
|
if not self.podman_version:
|
||||||
log.fatal("it seems that you do not have `podman` installed")
|
log.fatal("it seems that you do not have `podman` installed")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
log.info("using podman version: " + self.podman_version)
|
log.info("using podman version: %s", self.podman_version)
|
||||||
cmd_name = args.command
|
cmd_name = args.command
|
||||||
compose_required = cmd_name != "version" and (
|
compose_required = cmd_name != "version" and (
|
||||||
cmd_name != "systemd" or args.action != "create-unit"
|
cmd_name != "systemd" or args.action != "create-unit"
|
||||||
@ -1648,7 +1651,7 @@ class PodmanCompose:
|
|||||||
services = compose.get("services", None)
|
services = compose.get("services", None)
|
||||||
if services is None:
|
if services is None:
|
||||||
services = {}
|
services = {}
|
||||||
log.warn("WARNING: No services defined")
|
log.warning("WARNING: No services defined")
|
||||||
# include services with no profile defined or the selected profiles
|
# include services with no profile defined or the selected profiles
|
||||||
services = self._resolve_profiles(services, set(args.profile))
|
services = self._resolve_profiles(services, set(args.profile))
|
||||||
|
|
||||||
@ -1681,7 +1684,7 @@ class PodmanCompose:
|
|||||||
unused_nets = given_nets - allnets - set(["default"])
|
unused_nets = given_nets - allnets - set(["default"])
|
||||||
if len(unused_nets):
|
if len(unused_nets):
|
||||||
unused_nets_str = ",".join(unused_nets)
|
unused_nets_str = ",".join(unused_nets)
|
||||||
log.warn(f"WARNING: unused networks: {unused_nets_str}")
|
log.warning("WARNING: unused networks: %s", unused_nets_str)
|
||||||
if len(missing_nets):
|
if len(missing_nets):
|
||||||
missing_nets_str = ",".join(missing_nets)
|
missing_nets_str = ",".join(missing_nets)
|
||||||
raise RuntimeError(f"missing networks: {missing_nets_str}")
|
raise RuntimeError(f"missing networks: {missing_nets_str}")
|
||||||
@ -1793,7 +1796,7 @@ class PodmanCompose:
|
|||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
logging.basicConfig(level=('DEBUG' if self.global_args.verbose else 'WARN'))
|
logging.basicConfig(level=("DEBUG" if self.global_args.verbose else "WARN"))
|
||||||
return self.global_args
|
return self.global_args
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -1981,12 +1984,12 @@ async def compose_systemd(compose, args):
|
|||||||
proj_name = compose.project_name
|
proj_name = compose.project_name
|
||||||
fn = os.path.expanduser(f"~/{stacks_dir}/{proj_name}.env")
|
fn = os.path.expanduser(f"~/{stacks_dir}/{proj_name}.env")
|
||||||
os.makedirs(os.path.dirname(fn), exist_ok=True)
|
os.makedirs(os.path.dirname(fn), exist_ok=True)
|
||||||
log.debug(f"writing [{fn}]: ...")
|
log.debug("writing [%s]: ...", fn)
|
||||||
with open(fn, "w", encoding="utf-8") as f:
|
with open(fn, "w", encoding="utf-8") as f:
|
||||||
for k, v in compose.environ.items():
|
for k, v in compose.environ.items():
|
||||||
if k.startswith("COMPOSE_") or k.startswith("PODMAN_"):
|
if k.startswith("COMPOSE_") or k.startswith("PODMAN_"):
|
||||||
f.write(f"{k}={v}\n")
|
f.write(f"{k}={v}\n")
|
||||||
log.debug(f"writing [{fn}]: done.")
|
log.debug("writing [%s]: done.", fn)
|
||||||
log.info("\n\ncreating the pod without starting it: ...\n\n")
|
log.info("\n\ncreating the pod without starting it: ...\n\n")
|
||||||
process = await asyncio.subprocess.create_subprocess_exec(script, ["up", "--no-start"])
|
process = await asyncio.subprocess.create_subprocess_exec(script, ["up", "--no-start"])
|
||||||
log.info("\nfinal exit code is ", process)
|
log.info("\nfinal exit code is ", process)
|
||||||
@ -2036,10 +2039,10 @@ ExecStop=/usr/bin/podman pod stop pod_%i
|
|||||||
WantedBy=default.target
|
WantedBy=default.target
|
||||||
"""
|
"""
|
||||||
if os.access(os.path.dirname(fn), os.W_OK):
|
if os.access(os.path.dirname(fn), os.W_OK):
|
||||||
log.debug(f"writing [{fn}]: ...")
|
log.debug("writing [%s]: ...", fn)
|
||||||
with open(fn, "w", encoding="utf-8") as f:
|
with open(fn, "w", encoding="utf-8") as f:
|
||||||
f.write(out)
|
f.write(out)
|
||||||
log.debug(f"writing [{fn}]: done.")
|
log.debug("writing [%s]: done.", fn)
|
||||||
print(
|
print(
|
||||||
"""
|
"""
|
||||||
while in your project type `podman-compose systemd -a register`
|
while in your project type `podman-compose systemd -a register`
|
||||||
@ -2047,7 +2050,7 @@ while in your project type `podman-compose systemd -a register`
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
print(out)
|
print(out)
|
||||||
log.warn(f"Could not write to [{fn}], use 'sudo'")
|
log.warning("Could not write to [%s], use 'sudo'", fn)
|
||||||
|
|
||||||
|
|
||||||
@cmd_run(podman_compose, "pull", "pull stack images")
|
@cmd_run(podman_compose, "pull", "pull stack images")
|
||||||
@ -2367,7 +2370,7 @@ async def compose_down(compose, args):
|
|||||||
if cnt["_service"] not in excluded:
|
if cnt["_service"] not in excluded:
|
||||||
continue
|
continue
|
||||||
vol_names_to_keep.update(get_volume_names(compose, cnt))
|
vol_names_to_keep.update(get_volume_names(compose, cnt))
|
||||||
log.debug("keep", vol_names_to_keep)
|
log.debug("keep %s", vol_names_to_keep)
|
||||||
for volume_name in await compose.podman.volume_ls():
|
for volume_name in await compose.podman.volume_ls():
|
||||||
if volume_name in vol_names_to_keep:
|
if volume_name in vol_names_to_keep:
|
||||||
continue
|
continue
|
||||||
|
Loading…
x
Reference in New Issue
Block a user