orchard/internal/controller/lifecycle/lifecycle.go

35 lines
825 B
Go

package lifecycle
import (
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
"go.uber.org/zap"
"time"
)
func Report(vm *v1.VM, message string, logger *zap.SugaredLogger) {
args := []interface{}{
"component", "lifecycle",
"vm_uid", vm.UID,
"vm_name", vm.Name,
"vm_restart_count", vm.RestartCount,
"vm_image", vm.Image,
"vm_status", vm.Status,
}
if vm.ScheduledAt.IsZero() {
// VM was never scheduled
args = append(args, "vm_scheduling_duration", time.Since(vm.CreatedAt))
} else {
args = append(args, "vm_scheduling_duration", vm.ScheduledAt.Sub(vm.CreatedAt))
}
if vm.StartedAt.IsZero() {
// VM was never started
args = append(args, "vm_run_duration", time.Duration(0))
} else {
args = append(args, "vm_run_duration", time.Since(vm.StartedAt))
}
logger.With(args...).Info(message)
}