Add `crossplane project simulate`
Les mainteneurs répondent en général sous 7 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par design/one-pager-cli-simulate.md et la conception acceptée de crossplane/cli#181, puis examinez comment project run construit les fonctions intégrées. Suivez le mécanisme crossplane-diff ainsi que les étapes listées discover, prepare, render, diff et report. C’est terminé lorsque la commande et chaque critère d’acceptation, y compris les modes d’entrée, les XRs épinglés, les claims, les formats de sortie et la découverte limitée au périmètre, fonctionnent comme décrit.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What
Implement crossplane project simulate as an alpha command, per the accepted design (crossplane/cli#181, design/one-pager-cli-simulate.md).
provider plan servers lands separately, until then the command behaves as --skip-plan always.
This includes the groundwork the design bases simulate on: bringing the crossplane-diff machinery into crossplane/cli as internal packages, with its maintainers' involvement, per "Building on crossplane-diff, Not Beside It".
The flow:
- Discover. Parse the project file, find Compositions under the project's API paths, list the XRs on the target cluster whose type each Composition composes.
--namespaceand--namescope the run. - Prepare. Build the project's embedded functions locally, exactly as
project rundoes. - Render. Re-render each XR with the local Composition and functions, feeding in observed composed resources; resolve required resources with the resolver.
- Diff. Calculator + server-side dry-run + removal detection.
- Report. Per-XR diffs,
Plan: N to add, M to change, K to destroysummary, output formats below.
Also in scope, per the design:
- No-project input mode:
-faccepts changed Composition or XR files directly; matching XRs are discovered on the cluster, functions run from the packages installed on the cluster, everything not overridden locally is fetched live. - Pinned XRs:
compositionUpdatePolicy: ManualXRs print as deferred by default, simulate with--include-pinned. Exception: when the working tree changes an embedded function, pinned XRs are simulated against their pinned CompositionRevision fetched from the cluster with the locally built functions (function packages are not pinned with the revision until crossplane/crossplane#6139). - Claims: a claim passed as a changed file is converted to its XR with the CLI's existing conversion machinery and simulated; results print under the claim's name.
- Output formats:
-o plan(annotated manifest, default),-o diff(line-by-line unified diff, Markdowndiff-block compatible, what crossplane-diff emits today),-o json|yaml(one typed result per resource). - Flags: as in the design's kong struct (minus the plan-layer flags):
-f,--namespace,--name,--include-pinned,--max-iterations,--timeout,--max-concurrency,-o.
Acceptance criteria
- Resolver, calculator, dry-run, and comp discovery live as internal packages in crossplane/cli, with crossplane-diff maintainer agreement on ownership recorded (CODEOWNERS).
-
crossplane project simulate(alpha) previews Composition, embedded function, and XR changes against a live cluster. -
-f composition.yamlworks without a project. - Pinned XRs print as deferred with the documented message; the function-change exception simulates them against their pinned revision.
- Claims convert and simulate; output uses the claim's name.
- Removed resources appear as deletes; nothing silently disappears from the preview.
- All formats work; JSON/YAML results are typed and stable enough for CI gating.
- Cost scales with what is previewed: no cluster-wide work beyond the scoped discovery.
Out of scope
- Plan servers,
--provider-images,--skip-plan,--keep-plan-servers(follow-up issue: plan layer) - Replace detection and known-after-apply values (provider knowledge; plan layer)
- Langage dominant
- Go
- Étoiles
- 22
- Forks
- 38
- Merge moyen
- 6 j 8 h
- PR mergées (30 j)
- 22
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de crossplane/cli
-
[project/schemas]: enum integers Valid() function is missing valuesPeut-être pris @NopeCharon l’a pris il y a 1 jour. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
crossplane/cli#445 ·
Les mainteneurs répondent en général sous 7 jours
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
crossplane/cli#432 ·
Les mainteneurs répondent en général sous 7 jours
-
`credsStore` in docker config causes unit test failuresPeut-être pris @sujeito-operator l’a pris il y a 70 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
crossplane/cli#282 ·
Les mainteneurs répondent en général sous 7 jours
-
[project/schemas]: go types contains conflicting code if two xrd's in same api-group has integer enum fieldPeut-être pris @NopeCharon l’a pris il y a 1 jour. Ouvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
crossplane/cli#444 · 1 commentaire ·
Les mainteneurs répondent en général sous 7 jours
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
crossplane/cli#437 ·
Les mainteneurs répondent en général sous 7 jours
Toutes les issues de crossplane/cli
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
containerd/containerd#14485 ·
Les mainteneurs répondent en général sous 1 jour
-
bug needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
kind/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
kubernetes-sigs/kueue#17944 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
SocialGouv/iterion#2800 ·
Les mainteneurs répondent en général sous 1 jour