Plan layer: run provider plan servers, add provider planning to simulate
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 28/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- docker, go, kubernetes
- Área
- cli, cloud, infrastructure
Línea de trabajo
Empieza leyendo design/one-pager-cli-simulate.md y el diseño aceptado de crossplane/cli#181; después revisa project simulate y resource simulate de los issues #367 y #368. Confirma el diseño aprobado de upjet PlanService en upjet#694 antes de implementar la orquestación y el enrutamiento internos de plan-server. Se considera terminado cuando ambos comandos produzcan planes del provider o diffs marcados como fallback, admitan los flags documentados y cumplan los criterios indicados de salida y de vista previa de la actualización.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What
Implement the provider layer from the accepted design (crossplane/cli#181,design/one-pager-cli-simulate.md): run provider packages as local plan servers and route rendered/input MRs to them, upgrading both simulate commands from client-side diffs to provider-computed plans.
Blocked on the crossplane/upjet PlanService design PR. this issue follows whatever that review approves. https://github.com/crossplane/upjet/pull/694
Scope:
- Image sources. Project
dependsOnforproject simulate; providers installed on the current cluster context forresource simulate;--provider-imagesoverrides either. The override only changes the image list, never routing. - Container orchestration. Start each provider image with its
internal plan-serverentrypoint as a local Docker container, following render's runtime conventions (pull policy, cleanup on exit). Deterministic container names derived from the image digest.--keep-plan-serversleaves containers running for later runs to reuse; a changed image never matches a stale server. - Routing. Call each server's
GetInfo, build the routing table from declared API groups. A resource with no route is detected up front. - Matching. Match rendered to live composed resources by the
crossplane.io/composition-resource-nameannotation, falling back to group/kind/name; merge the live MR's external-name annotation and status into the request. Live resources with no rendered counterpart enter the plan as deletes. - Rendering responses. Field changes inline in CRD terms, sensitive values redacted, computed values as
(known after apply), replacement warnings inline, provider diagnostics under their resource. Replaces counted separately in the summary (N requires replacement) with the wedge warning from the design. - Fallback. A resource with no plan server gets the client-side diff, marked
[?], with the closing approximate warning.--skip-planskips the plan layer entirely (no containers start). - Provider upgrade preview.
resource simulate --all --provider-images <image>: enumerate managed resources of the served groups from the cluster, plan each with its own spec as desired and itself as live; anything that is not a no-op is a finding.
Acceptance criteria
- Both simulate commands produce provider-computed plans for resources whose provider serves the plan protocol, and
[?]client-side diffs for the rest, in one run. - Routing comes only from
GetInfo; no image-name parsing, no registry queries. -
--provider-images,--skip-plan,--keep-plan-serversbehave as documented; leftover containers follow the naming scheme and are reused only on digest match. -
--allpreviews a provider upgrade with zero cloud API calls and no cloud credentials. - Replaces are counted separately and never presented as destroy-and-recreate; the unsynced-until-replaced warning prints.
- JSON/YAML output includes actions, field changes, replace information, and diagnostics, sufficient for a PR bot to gate on "any replace anywhere".
Out of scope
- The PlanService protocol and server implementation https://github.com/crossplane/upjet/pull/694
- Non-upjet providers serving plans
Dependencies
Depends on the project simulate https://github.com/crossplane/cli/issues/367 and resource simulate https://github.com/crossplane/cli/issues/368 issues, and on the approved upjet PlanService design.
- Lenguaje dominante
- Go
- Estrellas
- 19
- Forks
- 33
- Merge medio
- 3 d 4 h
- PR fusionados (30 d)
- 40
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de crossplane/cli
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
crossplane/cli#282 ·
Los mantenedores suelen responder en 2 días
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
crossplane/cli#401 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
crossplane/cli#400 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
crossplane/cli#399 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
crossplane/cli#398 ·
Los mantenedores suelen responder en 2 días
Todos los issues de crossplane/cli
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
resend/resend-skills#144 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
cloudnativelabs/kube-router#2189 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
🕷️ bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
sysadminsmedia/homebox#1770 ·
Los mantenedores suelen responder en 2 días