(containerName string, options info.RequestOptions)
| 640 | } |
| 641 | |
| 642 | func (m *manager) getRequestedContainers(containerName string, options info.RequestOptions) (map[string]*containerData, error) { |
| 643 | containersMap := make(map[string]*containerData) |
| 644 | switch options.IdType { |
| 645 | case info.TypeName: |
| 646 | if !options.Recursive { |
| 647 | cont, err := m.getContainer(containerName) |
| 648 | if err != nil { |
| 649 | return containersMap, err |
| 650 | } |
| 651 | containersMap[cont.info.Name] = cont |
| 652 | } else { |
| 653 | containersMap = m.getSubcontainers(containerName) |
| 654 | if len(containersMap) == 0 { |
| 655 | return containersMap, fmt.Errorf("unknown container: %q", containerName) |
| 656 | } |
| 657 | } |
| 658 | case info.TypeDocker, info.TypePodman: |
| 659 | namespace := map[string]string{ |
| 660 | info.TypeDocker: DockerNamespace, |
| 661 | info.TypePodman: PodmanNamespace, |
| 662 | }[options.IdType] |
| 663 | if !options.Recursive { |
| 664 | containerName = strings.TrimPrefix(containerName, "/") |
| 665 | cont, err := m.namespacedContainer(containerName, namespace) |
| 666 | if err != nil { |
| 667 | return containersMap, err |
| 668 | } |
| 669 | containersMap[cont.info.Name] = cont |
| 670 | } else { |
| 671 | if containerName != "/" { |
| 672 | return containersMap, fmt.Errorf("invalid request for %s container %q with subcontainers", options.IdType, containerName) |
| 673 | } |
| 674 | containersMap = m.getAllNamespacedContainers(namespace) |
| 675 | } |
| 676 | default: |
| 677 | return containersMap, fmt.Errorf("invalid request type %q", options.IdType) |
| 678 | } |
| 679 | if options.MaxAge != nil { |
| 680 | // update stats for all containers in containersMap |
| 681 | var waitGroup sync.WaitGroup |
| 682 | waitGroup.Add(len(containersMap)) |
| 683 | for _, container := range containersMap { |
| 684 | go func(cont *containerData) { |
| 685 | cont.OnDemandHousekeeping(*options.MaxAge) |
| 686 | waitGroup.Done() |
| 687 | }(container) |
| 688 | } |
| 689 | waitGroup.Wait() |
| 690 | } |
| 691 | return containersMap, nil |
| 692 | } |
| 693 | |
| 694 | func (m *manager) GetDirFsInfo(dir string) (info.FsInfo, error) { |
| 695 | device, err := m.fsInfo.GetDirFsDevice(dir) |
no test coverage detected