Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Feature] Separate user deprovisioning from verified tenant data purge

Aperta
#215 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
kubernetes, mongodb, postgresql, python, redis

Direzione di ricerca

Inizia dalla superficie delle task amministrative e della CLI di apache/openserverless-task, in particolare deleteuser, quindi esamina la riconciliazione/finalizzazione di WhiskUser e gli handler di pulizia del backend in apache/openserverless-operator. Confronta il comportamento attuale con il contratto di deprovision/purge proposto; il lavoro è completato quando sono disponibili semantica documentata e test automatizzati di dry-run, conferma, retry e postcondizione del backend che coprano i servizi elencati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Feature request

Define explicit and safe lifecycle semantics for tenant removal. Today, deleting a user mixes identity deprovisioning with partial backend cleanup, while the command name suggests that all tenant data is removed.

Current behavior

Depending on the task/operator version, ops admin deleteuser <username> deletes the WhiskUser and then attempts local CLI config cleanup. The operator cleanup is not an atomic, verified tenant purge:

  • the OpenWhisk subject/auth document is removed, while tenant entities such as actions can remain;
  • Redis cleanup removes the ACL user, while keys under the tenant prefix can remain;
  • cleanup is attempted for other enabled services, but the command does not expose a reliable per-backend postcondition report;
  • recreating a tenant with the same namespace reuses the same logical identifiers and can make surviving data visible again.

In one observed environment, after delete and recreate, dozens of OpenWhisk actions and more than 1,000 tenant-prefixed Redis keys were still present. Only aggregate counts were inspected; no tenant data content was read.

This makes it difficult for an administrator to know whether the requested operation means "revoke access but preserve data" or "irreversibly erase the tenant".

Proposed command model

Introduce two distinct operations:

  1. ops admin deprovisionuser <username>

    • revoke credentials, routes and service identities;
    • preserve tenant data for recovery or retention;
    • report which resources remain.
  2. ops admin purgeuser <username> --confirm=<username>

    • irreversibly delete all resources owned by the tenant;
    • verify every postcondition before reporting success;
    • return non-zero when residual resources remain.

For compatibility, deleteuser could remain as an alias for deprovisioning with a clear deprecation/message, rather than silently changing its destructive semantics.

The proposed purgeuser command does not currently exist.

Purge contract

A purge should cover enabled tenant resources, including:

  • OpenWhisk packages, actions, triggers, rules and applicable activation data;
  • Redis keys selected by the exact authorized tenant prefix, followed by ACL user removal;
  • object storage buckets, objects and service user;
  • MongoDB/FerretDB, PostgreSQL and Milvus tenant databases, schemas or collections;
  • generated ingress/routes, static hosting resources and operator metadata.

Custom or out-of-band resources should be discovered and reported, but not deleted blindly.

Safety and operability

  • Add --dry-run to inventory affected resources without mutation.
  • Require an explicit confirmation that includes the namespace name.
  • Treat already-missing resources as success so retries are idempotent.
  • Produce a structured per-backend summary with deleted, preserved, skipped, failed and residual states.
  • Verify postconditions for each enabled backend.
  • Avoid logging credentials, secrets or the complete WhiskUser specification.
  • Optionally support retention/preserve flags and a pre-purge backup hook.

Acceptance criteria

  • Deprovisioning and purge have documented, unambiguous semantics.
  • Recreating a deprovisioned namespace can intentionally recover preserved data.
  • Recreating a successfully purged namespace starts empty.
  • Partial failures return non-zero and identify the affected backend/resources.
  • Re-running purge after partial failure completes safely.
  • Dry-run and confirmation behavior have automated tests.
  • Tests cover OpenWhisk entities, Redis prefixed keys and each optional data service enabled in CI.

Affected components

This likely spans:

  • apache/openserverless-task admin task and CLI surface;
  • apache/openserverless-operator WhiskUser reconciliation/finalization and backend cleanup handlers;
  • downstream task distributions that expose ops admin deleteuser.

Environment where observed

  • ops CLI: 0.9.1-2607121109.dev
  • task branch: apache/openserverless-task:0.9.1
  • operator image: apache/openserverless-operator:0.1.0-incubating.2512151437
Lingua principale
Python
Stelle
576
Fork
29
Merge medio
1h 3m
PR unite (30g)
11

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/openserverless

Tutte le issue di apache/openserverless

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.