// GetPodDetail returns the details (PodDetail) of a named Pod from a particular // namespace. func GetPodDetail(client k8sClient.Interface, heapsterClient client.HeapsterClient, namespace, name string) (*PodDetail, error) { log.Printf("Getting details of %s pod in %s namespace", name, namespace) channels := &common.ResourceChannels{ ConfigMapList: common.GetConfigMapListChannel(client, common.NewSameNamespaceQuery(namespace), 1), PodMetrics: common.GetPodMetricsChannel(heapsterClient, name, namespace), } pod, err := client.Pods(namespace).Get(name) if err != nil { return nil, err } // Download metrics _, metricPromises := dataselect.GenericDataSelectWithMetrics(toCells([]api.Pod{*pod}), dataselect.StdMetricsDataSelect, dataselect.NoResourceCache, &heapsterClient) metrics, _ := metricPromises.GetMetrics() if err = <-channels.ConfigMapList.Error; err != nil { return nil, err } configMapList := <-channels.ConfigMapList.List podDetail := toPodDetail(pod, metrics, configMapList) return &podDetail, nil }
// GetConfigMapList returns a list of all ConfigMaps in the cluster. func GetConfigMapList(client *client.Client, nsQuery *common.NamespaceQuery, dsQuery *dataselect.DataSelectQuery) (*ConfigMapList, error) { log.Printf("Getting list config maps in the namespace %s", nsQuery.ToRequestParam()) channels := &common.ResourceChannels{ ConfigMapList: common.GetConfigMapListChannel(client, nsQuery, 1), } return GetConfigMapListFromChannels(channels, dsQuery) }
// GetConfig returns a list of all config resources in the cluster. func GetConfig(client *k8sClient.Client, nsQuery *common.NamespaceQuery) ( *Config, error) { log.Printf("Getting config category") channels := &common.ResourceChannels{ ConfigMapList: common.GetConfigMapListChannel(client, nsQuery, 1), SecretList: common.GetSecretListChannel(client, nsQuery, 1), } return GetConfigFromChannels(channels) }
// GetPodDetail returns the details (PodDetail) of a named Pod from a particular // namespace. func GetPodDetail(client k8sClient.Interface, heapsterClient client.HeapsterClient, namespace, name string) (*PodDetail, error) { log.Printf("Getting details of %s pod in %s namespace", name, namespace) channels := &common.ResourceChannels{ ConfigMapList: common.GetConfigMapListChannel(client, common.NewSameNamespaceQuery(namespace), 1), PodMetrics: common.GetPodMetricsChannel(heapsterClient, name, namespace), } pod, err := client.Core().Pods(namespace).Get(name) if err != nil { return nil, err } controller := Controller{ Kind: "unknown", } creatorAnnotation, found := pod.ObjectMeta.Annotations[api.CreatedByAnnotation] if found { creatorRef, err := getPodCreator(client, creatorAnnotation, common.NewSameNamespaceQuery(namespace), heapsterClient) if err != nil { return nil, err } controller = *creatorRef } // Download metrics _, metricPromises := dataselect.GenericDataSelectWithMetrics(toCells([]api.Pod{*pod}), dataselect.StdMetricsDataSelect, dataselect.NoResourceCache, &heapsterClient) metrics, _ := metricPromises.GetMetrics() if err = <-channels.ConfigMapList.Error; err != nil { return nil, err } configMapList := <-channels.ConfigMapList.List podDetail := toPodDetail(pod, metrics, configMapList, controller) return &podDetail, nil }