// Returns a list of all Daemon Set model objects in the cluster, based on all Kubernetes // Daemon Set and Service API objects. // The function processes all Daemon Set API objects and finds matching Services for them. func getDaemonSetList(daemonSets []extensions.DaemonSet, pods []api.Pod, events []api.Event) *DaemonSetList { daemonSetList := &DaemonSetList{DaemonSets: make([]DaemonSet, 0)} for _, daemonSet := range daemonSets { matchingPods := make([]api.Pod, 0) for _, pod := range pods { if pod.ObjectMeta.Namespace == daemonSet.ObjectMeta.Namespace && common.IsLabelSelectorMatching(pod.ObjectMeta.Labels, daemonSet.Spec.Selector) { matchingPods = append(matchingPods, pod) } } podInfo := getDaemonSetPodInfo(&daemonSet, matchingPods) podErrors := event.GetPodsEventWarnings(events, matchingPods) podInfo.Warnings = podErrors daemonSetList.DaemonSets = append(daemonSetList.DaemonSets, DaemonSet{ ObjectMeta: common.NewObjectMeta(daemonSet.ObjectMeta), TypeMeta: common.NewTypeMeta(common.ResourceKindDaemonSet), Pods: podInfo, ContainerImages: common.GetContainerImages(&daemonSet.Spec.Template.Spec), }) } return daemonSetList }
// Returns all services that target the same Pods (or subset) as the given Daemon Set. func getMatchingServicesforDS(services []api.Service, daemonSet *extensions.DaemonSet) []api.Service { var matchingServices []api.Service for _, service := range services { if service.ObjectMeta.Namespace == daemonSet.ObjectMeta.Namespace && common.IsLabelSelectorMatching(service.Spec.Selector, daemonSet.Spec.Selector) { matchingServices = append(matchingServices, service) } } return matchingServices }