engine: resources: Plumb through the context and constants

Basically a small cleanup.
This commit is contained in:
James Shubin
2024-08-06 14:13:39 -04:00
parent 7517c83953
commit beca0c3ae6

View File

@@ -71,6 +71,25 @@ const (
SystemdUnitModeIgnoreRequirements = "ignore-requirements" SystemdUnitModeIgnoreRequirements = "ignore-requirements"
) )
// The SystemdUnitResult* constants do the following from the docs:
//
// If the provided channel is non-nil, a result string will be sent to it upon
// job completion: one of done, canceled, timeout, failed, dependency, skipped.
// "done" indicates successful execution of a job. "canceled" indicates that a
// job has been canceled before it finished execution. "timeout" indicates that
// the job timeout was reached. "failed" indicates that the job failed.
// "dependency" indicates that a job this job has been depending on failed and
// the job hence has been removed too. "skipped" indicates that a job was
// skipped because it didn't apply to the units current state.
const (
SystemdUnitResultDone = "done"
SystemdUnitResultCanceled = "canceled"
SystemdUnitResultTimeout = "timeout"
SystemdUnitResultFailed = "failed"
SystemdUnitResultDependency = "dependency"
SystemdUnitResultSkipped = "skipped"
)
// SvcRes is a service resource for systemd units. // SvcRes is a service resource for systemd units.
type SvcRes struct { type SvcRes struct {
traits.Base // add the base methods without re-implementation traits.Base // add the base methods without re-implementation
@@ -369,15 +388,20 @@ func (obj *SvcRes) CheckApply(ctx context.Context, apply bool) (bool, error) {
refresh = false // we did a stop, so a reload is not needed refresh = false // we did a stop, so a reload is not needed
} }
// XXX: use ctx here var status string
status := <-result // TODO: Do we need a timeout here?
select {
case status = <-result:
case <-ctx.Done():
return false, ctx.Err()
}
if &status == nil { if &status == nil {
return false, fmt.Errorf("systemd service action result is nil") return false, fmt.Errorf("systemd service action result is nil")
} }
switch status { switch status {
case "done": case SystemdUnitResultDone:
// pass // pass
case "failed": case SystemdUnitResultFailed:
return false, fmt.Errorf("svc failed (selinux?)") return false, fmt.Errorf("svc failed (selinux?)")
default: default:
return false, fmt.Errorf("unknown systemd return string: %v", status) return false, fmt.Errorf("unknown systemd return string: %v", status)