Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Make datadog-sync safe and deterministic for unattended automation (tracking)

Cerrado
#707 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python
Área
cli

Línea de trabajo

Start with the five-PR plan in this issue and read CONTRIBUTING for the required review scope. Begin with PR #708, covering exit codes, JSON error events, and SIGPIPE handling; completion means that concern is independently green while preserving the stated human-workflow and legacy-option compatibility commitments.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Overview of issue:

datadog-sync is increasingly run unattended: from CI jobs, schedulers, and AI agents. Today it is built for an operator at a terminal, and automation has to work around several gaps:

  • Ambiguous failures. Invalid option values and config-validation errors exit 1, the same code as a runtime failure. Ctrl-C and aborted prompts have no dedicated exit code. Piping output into head can end in a BrokenPipeError.
  • No reliable "done" signal. With --json, there is no single terminal event that says the invocation finished and how (status, counts, exit code), so a wrapper can't tell a finished run from a truncated one.
  • No way to constrain an invocation. A caller can't say "this must not write to Datadog" or "fail rather than prompt", so a mis-assembled command can mutate an org or hang waiting on stdin.
  • Awkward inputs. Resources, worker limits, and filters are only accepted as single combined strings, and boolean opt-outs need the --flag=False form.
  • No offline discovery. The only way to learn the option surface is to parse --help text.

Intent: make datadog-sync safe, deterministic, and discoverable for unattended automation while preserving existing human workflows, defaults, and legacy option forms.

Proposed change: a stack of five small PRs

To keep each review focused (one concern per PR, per CONTRIBUTING), the work is split into a stack. Each PR builds on the one before it and is independently green. All five will be opened as drafts for visibility. Review is requested one PR at a time, starting with PR 1.

# PR Adds
1 #708 Exit codes: 2 invalid usage, 130 interrupt, 1 runtime failure. Structured error events under --json. Default SIGPIPE handling on Unix.
2 #709 Exactly one terminal NDJSON summary event (status, counts, duration_ms, exit_code) per --json invocation.
3 #710 Root flags --read-only, --non-interactive, --yes, backed by a per-command capability registry.
4 #711 Repeatable --resource / --worker-limit, --no-<flag> negations, --filter-file (including stdin). Removes the now-empty CustomOptionClass.
5 #712 datadog-sync schema (offline JSON option schema), help grouped by category, completions for bash/zsh/fish, README "Scripting and agent integration" section.

PR links will be added here as they open.

Compatibility commitments

  • Defaults, human-readable output, and interactive prompts are unchanged unless the caller opts in (--json, --read-only, --non-interactive, --yes).
  • Legacy option forms keep working: --resources=a,b, --flag=False, and existing filter syntax. New forms merge with them and do not replace them.
  • Behavior never depends on detecting whether the caller is a human or an agent.
  • One intentional change: validation errors that previously exited 1 now exit 2 (click's standard usage-error code). Scripts that test for exactly 1 on a bad argument would see 2. Click's own parse errors (for example, an unknown option) already exit 2.

Out of scope

  • Changes to how any resource type is synced.
  • Integration-test or cassette changes.
  • The #501 wording fix (import reads the source org into local state), which ships separately in #713 against main.
Lenguaje dominante
Python
Estrellas
79
Forks
26
Merge medio
21 h 8 min
PR fusionados (30 d)
30

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de DataDog/datadog-sync-cli

Todos los issues de DataDog/datadog-sync-cli

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.