Make datadog-sync safe and deterministic for unattended automation (tracking)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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 intoheadcan end in aBrokenPipeError. - 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=Falseform. - No offline discovery. The only way to learn the option surface is to parse
--helptext.
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
1now exit2(click's standard usage-error code). Scripts that test for exactly1on a bad argument would see2. Click's own parse errors (for example, an unknown option) already exit2.
Out of scope
- Changes to how any resource type is synced.
- Integration-test or cassette changes.
- The #501 wording fix (
importreads the source org into local state), which ships separately in #713 againstmain.
- Ngôn ngữ chính
- Python
- Star
- 79
- Fork
- 26
- Merge trung bình
- 21 giờ 8 phút
- Pull request đã merge (30 ngày)
- 30
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của DataDog/datadog-sync-cli
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
DataDog/datadog-sync-cli#698 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
CCM ResourcesĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
DataDog/datadog-sync-cli#697 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
All security_monitoring_rules fail to sync: cases.condition is stripped from the create payloadĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 68/100
DataDog/datadog-sync-cli#598 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
DataDog/datadog-sync-cli#597 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 38/100
DataDog/datadog-sync-cli#353 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của DataDog/datadog-sync-cli
Issue tương tự
-
needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
openvinotoolkit/openvino_notebooks#3665 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày
-
docs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
benchmark-gap
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày