MCPcopy
hub / github.com/google/cadvisor / getRequestedContainers

Method getRequestedContainers

lib/manager/manager.go:642–692  ·  view source on GitHub ↗
(containerName string, options info.RequestOptions)

Source from the content-addressed store, hash-verified

640}
641
642func (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
694func (m *manager) GetDirFsInfo(dir string) (info.FsInfo, error) {
695 device, err := m.fsInfo.GetDirFsDevice(dir)

Callers 5

GetContainerSpecMethod · 0.95
GetDerivedStatsMethod · 0.95
GetProcessListMethod · 0.95
GetContainerInfoV2Method · 0.95

Calls 7

getContainerMethod · 0.95
getSubcontainersMethod · 0.95
namespacedContainerMethod · 0.95
ErrorfMethod · 0.80
OnDemandHousekeepingMethod · 0.80
AddMethod · 0.65

Tested by

no test coverage detected