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

Method Inspect

agent/app/service/container.go:313–378  ·  view source on GitHub ↗
(req dto.InspectReq)

Source from the content-addressed store, hash-verified

311}
312
313func (u *ContainerService) Inspect(req dto.InspectReq) (string, error) {
314 client, err := docker.NewDockerClient()
315 if err != nil {
316 return "", err
317 }
318 defer client.Close()
319 var inspectInfo interface{}
320 switch req.Type {
321 case "container":
322 inspectInfo, err = client.ContainerInspect(context.Background(), req.ID)
323 case "compose":
324 filePath := ""
325 cli, err := docker.NewDockerClient()
326 if err != nil {
327 return "", err
328 }
329 defer cli.Close()
330 options := container.ListOptions{All: true}
331 options.Filters = filters.NewArgs()
332 options.Filters.Add("label", fmt.Sprintf("%s=%s", composeProjectLabel, req.ID))
333 containers, err := cli.ContainerList(context.Background(), options)
334 if err != nil {
335 return "", err
336 }
337 for _, container := range containers {
338 config := container.Labels[composeConfigLabel]
339 if len(req.Detail) != 0 && strings.Contains(config, req.Detail) {
340 config = req.Detail
341 }
342 workdir := container.Labels[composeWorkdirLabel]
343 if len(config) != 0 && len(workdir) != 0 && strings.Contains(config, workdir) {
344 filePath = config
345 break
346 } else {
347 filePath = workdir
348 break
349 }
350 }
351 if len(containers) == 0 {
352 composeItem, _ := composeRepo.GetRecord(repo.WithByName(req.ID))
353 filePath = composeItem.Path
354 }
355 if _, err := os.Stat(filePath); err != nil {
356 return "", err
357 }
358 content, err := os.ReadFile(filePath)
359 if err != nil {
360 return "", err
361 }
362 return string(content), nil
363 case "image":
364 inspectInfo, _, err = client.ImageInspectWithRaw(context.Background(), req.ID)
365 case "network":
366 inspectInfo, err = client.NetworkInspect(context.TODO(), req.ID, network.InspectOptions{})
367 case "volume":
368 inspectInfo, err = client.VolumeInspect(context.TODO(), req.ID)
369 }
370 if err != nil {

Callers

nothing calls this directly

Calls 3

CloseMethod · 0.65
GetRecordMethod · 0.65
StatMethod · 0.45

Tested by

no test coverage detected