Compare commits

1 Commits

Author SHA1 Message Date
simon 72624c0e67 purge-secrets: skip instances with missing secrets 2026-07-21 16:16:37 +02:00
+24 -6
View File
@@ -1543,14 +1543,32 @@ def purge_secrets(recipes: Tuple[str], secret:str, noninteractive: bool) -> None
print_all_apps(instance_apps)
domains = list(zip(*sum(instance_apps.values(), [])))[1]
if noninteractive or input(f"Do you really want to purge the secret {secret} for these apps? Type YES: ") == "YES":
purged, skipped, failed = [], [], []
for domain in domains:
logging.info(f'purge {domain}')
if not secret:
abra("app","secret" ,"rm", "-a", domain)
print(f"Secrets for {domain} purged")
else:
abra("app","secret" ,"rm", domain, secret)
print(f"Secret {secret} for {domain} purged")
try:
if not secret:
abra("app", "secret", "rm", "-a", domain)
else:
abra("app", "secret", "rm", domain, secret)
except RuntimeError as e:
if "doesn't exist on server" in str(e):
logging.info(f'secret {secret} not set at {domain}')
skipped.append(domain)
else:
logging.warning(f'failed to purge secrets at {domain}: {e}')
failed.append((domain, str(e).strip().splitlines()[-1]))
continue
purged.append(domain)
what = f"secret {secret}" if secret else "all secrets"
click.echo(f"✔ Purged {what} for {len(purged)}/{len(domains)} apps")
if skipped:
click.echo(f"⚠ Not set at {len(skipped)} apps: {', '.join(skipped)}")
if failed:
click.echo(f"✖ Failed at {len(failed)} apps:")
for domain, msg in failed:
click.echo(f" {domain}: {msg}")
raise SystemExit(1)
@cli.command()
@click.option('recipes', '-r', '--recipe', multiple=True, metavar='<RecipeName>', help='Filter for selcted recipes, this option can be specified multiple times.')