mirror of
https://github.com/containers/podman-compose.git
synced 2024-11-26 01:43:49 +01:00
#434: handle unknown service
This commit is contained in:
parent
1e895c0873
commit
c2d7b26f2e
@ -1084,10 +1084,21 @@ class PodmanCompose:
|
||||
self.declared_secrets = None
|
||||
self.container_names_by_service = None
|
||||
self.container_by_name = None
|
||||
self.all_services = set()
|
||||
self._prefer_volume_over_mount = True
|
||||
self.yaml_hash = ''
|
||||
self.console_colors = ["\x1B[1;32m", "\x1B[1;33m", "\x1B[1;34m", "\x1B[1;35m", "\x1B[1;36m"]
|
||||
|
||||
def assert_services(self, services):
|
||||
if is_str(services):
|
||||
services = [services]
|
||||
given = set(services or [])
|
||||
missing = given - self.all_services
|
||||
if missing:
|
||||
missing_csv = ",".join(missing)
|
||||
log(f"missing services [{missing_csv}]")
|
||||
exit(1)
|
||||
|
||||
def get_podman_args(self, cmd):
|
||||
xargs = []
|
||||
for args in self.global_args.podman_args:
|
||||
@ -1296,6 +1307,7 @@ class PodmanCompose:
|
||||
vol_name = mnt_dict["source"]
|
||||
raise RuntimeError(f"volume [{vol_name}] not defined in top level")
|
||||
self.container_names_by_service = container_names_by_service
|
||||
self.all_services = set(container_names_by_service.keys())
|
||||
container_by_name = dict([(c["name"], c) for c in given_containers])
|
||||
#log("deps:", [(c["name"], c["_deps"]) for c in given_containers])
|
||||
given_containers = list(container_by_name.values())
|
||||
@ -1644,6 +1656,7 @@ def compose_ps(compose, args):
|
||||
@cmd_run(podman_compose, 'run', 'create a container similar to a service to run a one-off command')
|
||||
def compose_run(compose, args):
|
||||
create_pods(compose, args)
|
||||
compose.assert_services(args.service)
|
||||
container_names=compose.container_names_by_service[args.service]
|
||||
container_name=container_names[0]
|
||||
cnt = dict(compose.container_by_name[container_name])
|
||||
@ -1691,6 +1704,7 @@ def compose_run(compose, args):
|
||||
|
||||
@cmd_run(podman_compose, 'exec', 'execute a command in a running container')
|
||||
def compose_exec(compose, args):
|
||||
compose.assert_services(args.service)
|
||||
container_names=compose.container_names_by_service[args.service]
|
||||
container_name=container_names[args.index - 1]
|
||||
cnt = compose.container_by_name[container_name]
|
||||
@ -1717,6 +1731,7 @@ def transfer_service_status(compose, args, action):
|
||||
container_names_by_service = compose.container_names_by_service
|
||||
if not args.services:
|
||||
args.services = container_names_by_service.keys()
|
||||
compose.assert_services(args.services)
|
||||
targets = []
|
||||
for service in args.services:
|
||||
if service not in container_names_by_service:
|
||||
@ -1748,10 +1763,9 @@ def compose_logs(compose, args):
|
||||
container_names_by_service = compose.container_names_by_service
|
||||
if not args.services and not args.latest:
|
||||
args.services = container_names_by_service.keys()
|
||||
compose.assert_services(args.services)
|
||||
targets = []
|
||||
for service in args.services:
|
||||
if service not in container_names_by_service:
|
||||
raise ValueError("unknown service: " + service)
|
||||
targets.extend(container_names_by_service[service])
|
||||
podman_args = []
|
||||
if args.follow:
|
||||
|
Loading…
Reference in New Issue
Block a user