mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-07 08:57:12 +00:00
69 lines
2.1 KiB
Go
69 lines
2.1 KiB
Go
package dockeragent
|
|
|
|
import (
|
|
"context"
|
|
"crypto/rand"
|
|
"encoding/json"
|
|
"io"
|
|
"os"
|
|
"os/exec"
|
|
"runtime"
|
|
"syscall"
|
|
"time"
|
|
|
|
"github.com/docker/docker/client"
|
|
"github.com/rcourtman/pulse-go-rewrite/internal/hostmetrics"
|
|
)
|
|
|
|
var (
|
|
connectRuntimeFn = connectRuntime
|
|
hostmetricsCollect = hostmetrics.Collect
|
|
newTickerFn = time.NewTicker
|
|
newTimerFn = time.NewTimer
|
|
randomDurationFn = randomDuration
|
|
nowFn = time.Now
|
|
sleepFn = time.Sleep
|
|
jsonMarshalFn = json.Marshal
|
|
normalizeTargetsFn = normalizeTargets
|
|
buildRuntimeCandidatesFn = buildRuntimeCandidates
|
|
tryRuntimeCandidateFn = tryRuntimeCandidate
|
|
randIntFn = rand.Int
|
|
osExecutableFn = os.Executable
|
|
osCreateTempFn = os.CreateTemp
|
|
closeFileFn = func(f *os.File) error { return f.Close() }
|
|
osRenameFn = os.Rename
|
|
osChmodFn = os.Chmod
|
|
osRemoveFn = os.Remove
|
|
osReadFileFn = os.ReadFile
|
|
osWriteFileFn = os.WriteFile
|
|
osStatFn = os.Stat
|
|
syscallExecFn = syscall.Exec
|
|
goArch = runtime.GOARCH
|
|
unameMachine = func() (string, error) {
|
|
out, err := exec.Command("uname", "-m").Output()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(out), nil
|
|
}
|
|
machineIDPaths = []string{
|
|
"/etc/machine-id",
|
|
"/var/lib/dbus/machine-id",
|
|
}
|
|
unraidVersionPath = "/etc/unraid-version"
|
|
unraidPersistPath = "/boot/config/plugins/pulse-agent/pulse-agent"
|
|
unraidStartupScriptPath = "/boot/config/plugins/pulse-agent/start-pulse-agent.sh"
|
|
agentLogPath = "/var/log/pulse-agent.log"
|
|
openProcUptime = func() (io.ReadCloser, error) {
|
|
return os.Open("/proc/uptime")
|
|
}
|
|
newDockerClientFn = func(opts ...client.Opt) (dockerClient, error) {
|
|
return client.NewClientWithOpts(opts...)
|
|
}
|
|
selfUpdateFunc = func(a *Agent, ctx context.Context) error {
|
|
return a.selfUpdate(ctx)
|
|
}
|
|
execCommandContextFn = func(ctx context.Context, name string, arg ...string) *exec.Cmd {
|
|
return exec.CommandContext(ctx, name, arg...)
|
|
}
|
|
)
|