Skip to content

Add managed service lifecycle support #44

Description

@david-kariuki

Summary

Add a shared framework for managing system services required by workstation modules without embedding direct systemctl commands throughout module implementations.

Service operations should be explicit, idempotent, dry-run aware, and integrated with execution planning and verification.

Scope

  • Provide shared service-management utilities
  • Detect whether the target system uses systemd before attempting systemd operations
  • Support checking whether a service exists
  • Support checking whether a service is enabled
  • Support checking whether a service is active
  • Support enabling and disabling services where explicitly requested
  • Support starting, stopping, and restarting services where required
  • Avoid restarting services when no relevant change occurred
  • Route privileged service operations through the shared execution layer
  • Integrate service actions with execution planning
  • Support dry-run behaviour for all service operations
  • Allow modules to declare required service state without calling systemctl directly
  • Provide post-action verification of required service state
  • Report unavailable or failed services clearly

Acceptance Criteria

  • Modules do not need to execute systemctl directly
  • Service existence and current state can be queried safely
  • Already-satisfied service states are skipped
  • Services are not restarted unnecessarily
  • Privileged service operations use the shared execution layer
  • Dry-run reports intended service changes without modifying the system
  • Service actions appear in the execution plan
  • Required service states can be verified after execution
  • Missing required services fail with clear errors
  • Systems without systemd fail or skip according to explicit module requirements
  • Service-management behaviour can be tested without changing the developer workstation

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions