MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / SyncRuntimeContainerStatus

Function SyncRuntimeContainerStatus

agent/app/service/runtime_utils.go:266–305  ·  view source on GitHub ↗
(runtime *model.Runtime)

Source from the content-addressed store, hash-verified

264}
265
266func SyncRuntimeContainerStatus(runtime *model.Runtime) error {
267 env, err := gotenv.Unmarshal(runtime.Env)
268 if err != nil {
269 return err
270 }
271 var containerNames []string
272 if containerName, ok := env["CONTAINER_NAME"]; !ok {
273 return buserr.New("ErrContainerNameNotFound")
274 } else {
275 containerNames = append(containerNames, containerName)
276 }
277 cli, err := docker.NewClient()
278 if err != nil {
279 return err
280 }
281 defer cli.Close()
282 containers, err := cli.ListContainersByName(containerNames)
283 if err != nil {
284 return err
285 }
286 if len(containers) == 0 {
287 return buserr.WithNameAndErr("ErrContainerNotFound", containerNames[0], nil)
288 }
289 container := containers[0]
290
291 switch container.State {
292 case "exited":
293 runtime.Status = constant.StatusError
294 case "running":
295 runtime.Status = constant.StatusRunning
296 case "paused":
297 runtime.Status = constant.StatusStopped
298 default:
299 if runtime.Status != constant.StatusBuilding {
300 runtime.Status = constant.StatusStopped
301 }
302 }
303
304 return runtimeRepo.Save(runtime)
305}
306
307func getRuntimeEnv(envStr, key string) string {
308 env, err := gotenv.Unmarshal(envStr)

Callers 4

startRuntimeFunction · 0.85
reCreateRuntimeFunction · 0.85
OperateRuntimeMethod · 0.85
SyncRuntimeStatusMethod · 0.85

Calls 3

CloseMethod · 0.95
ListContainersByNameMethod · 0.95
SaveMethod · 0.65

Tested by

no test coverage detected