in src/app/backend/resource/pod/detail.go [130:184]
func GetPodDetail(client kubernetes.Interface, metricClient metricapi.MetricClient, 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),
SecretList: common.GetSecretListChannel(client, common.NewSameNamespaceQuery(namespace), 1),
}
pod, err := client.CoreV1().Pods(namespace).Get(context.TODO(), name, metaV1.GetOptions{})
if err != nil {
return nil, err
}
podController, err := getPodController(client, common.NewSameNamespaceQuery(namespace), pod)
nonCriticalErrors, criticalError := errorHandler.HandleError(err)
if criticalError != nil {
return nil, criticalError
}
_, metricPromises := dataselect.GenericDataSelectWithMetrics(toCells([]v1.Pod{*pod}),
dataselect.StdMetricsDataSelect, metricapi.NoResourceCache, metricClient)
metrics, _ := metricPromises.GetMetrics()
configMapList := <-channels.ConfigMapList.List
err = <-channels.ConfigMapList.Error
nonCriticalErrors, criticalError = errorHandler.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
secretList := <-channels.SecretList.List
err = <-channels.SecretList.Error
nonCriticalErrors, criticalError = errorHandler.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
eventList, err := GetEventsForPod(client, dataselect.DefaultDataSelect, pod.Namespace, pod.Name)
nonCriticalErrors, criticalError = errorHandler.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
persistentVolumeClaimList, err := persistentvolumeclaim.GetPodPersistentVolumeClaims(client,
namespace, name, dataselect.DefaultDataSelect)
nonCriticalErrors, criticalError = errorHandler.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
podDetail := toPodDetail(pod, metrics, configMapList, secretList, podController,
eventList, persistentVolumeClaimList, nonCriticalErrors)
return &podDetail, nil
}