Skip to content

[FEA]: operator-agent e2e scenario for the service interrupt against a real agent #679

Description

@rice-riley

Summary

Add an operator-agent chainsaw scenario that runs the service interrupt against a real agent, so systemctl daemon-reload and systemctl restart are executed for real on both the Python and Go agents.

Motivation

The only interrupt type the operator-agent suite has ever run against a real agent is noop. The service type is the one interrupt that can be exercised for real inside the suite: kind nodes run systemd as PID 1, so systemctl inside the agent's host chroot is genuine. reboot cannot be (it terminates the kind node container), and the boot-ID confirmation is unit-only by necessity. This scenario is therefore the only place the agent's real interrupt command path gets end-to-end coverage before #222.

Proposed direction

A package whose apply.sh installs a Type=oneshot unit under /etc/systemd/system/ that appends a timestamp to a marker in the package's state root, declaring:

interrupt:
  type: service
  services: [nodewright-e2e]

Assertions, all gated with set -e:

  • the marker gained a line after the interrupt, proving the restart ran the unit;
  • interrupts/flags/<resource-id>/service_restart_0.complete and service_restart_1.complete both exist (daemon-reload, then the one restart), pinning the per-operation marker layout both agents share;
  • the package reaches complete.

restartAllServices (service procps force-reload) should be tried as a second scenario; if service or the procps init script is absent on the kind node image, that is a real finding to record, not something to shim around.

The scenario runs unchanged against both agents through the existing path routing, and supplies every stage the package traverses so the "Could not find file" guard pattern from #605 stays applicable.

Acceptance criteria

  • New k8s-tests/operator-agent/service_restart/ scenario passes against both agents in CI.
  • Both .complete markers and the unit's side effect are asserted.
  • docs/contributing/ci-test-pools.md's operator-agent coverage sentence lists the service interrupt.

Code of Conduct

  • I agree to follow Skyhook's Code of Conduct

Activity

  1. added
    needs-triageAwaiting initial triage by a maintainer
    component/agentSkyhook agent (package executor)
    and removed
    needs-triageAwaiting initial triage by a maintainer
    on Sep 23, 2026
  2. added 3 commits that reference this issue on Sep 23, 2026
    945ae14
    0306161
    dc29ca4
  3. added a commit that references this issue on Sep 30, 2026
    3403864
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/agentSkyhook agent (package executor)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions