// Returns detailed information about the given daemon set in the given namespace. func GetDaemonSetDetail(client k8sClient.Interface, heapsterClient client.HeapsterClient, namespace, name string) (*DaemonSetDetail, error) { log.Printf("Getting details of %s daemon set in %s namespace", name, namespace) daemonSetWithPods, err := getRawDaemonSetWithPods(client, namespace, name) if err != nil { return nil, err } daemonSet := daemonSetWithPods.DaemonSet pods := daemonSetWithPods.Pods services, err := client.Services(namespace).List(api.ListOptions{ LabelSelector: labels.Everything(), FieldSelector: fields.Everything(), }) if err != nil { return nil, err } daemonSetDetail := &DaemonSetDetail{ ObjectMeta: common.NewObjectMeta(daemonSet.ObjectMeta), TypeMeta: common.NewTypeMeta(common.ResourceKindDaemonSet), LabelSelector: daemonSet.Spec.Selector, PodInfo: getDaemonSetPodInfo(daemonSet, pods.Items), ServiceList: resourceService.ServiceList{Services: make([]resourceService.Service, 0)}, } matchingServices := getMatchingServicesforDS(services.Items, daemonSet) for _, service := range matchingServices { daemonSetDetail.ServiceList.Services = append(daemonSetDetail.ServiceList.Services, resourceService.ToService(&service)) } for _, container := range daemonSet.Spec.Template.Spec.Containers { daemonSetDetail.ContainerImages = append(daemonSetDetail.ContainerImages, container.Image) } daemonSetDetail.Pods = pod.CreatePodList(pods.Items, heapsterClient) return daemonSetDetail, nil }
// GetReplicationControllerDetail returns detailed information about the given replication // controller in the given namespace. func GetReplicationControllerDetail(client k8sClient.Interface, heapsterClient client.HeapsterClient, namespace, name string) (*ReplicationControllerDetail, error) { log.Printf("Getting details of %s replication controller in %s namespace", name, namespace) replicationControllerWithPods, err := getRawReplicationControllerWithPods(client, namespace, name) if err != nil { return nil, err } replicationController := replicationControllerWithPods.ReplicationController pods := replicationControllerWithPods.Pods services, err := client.Services(namespace).List(api.ListOptions{ LabelSelector: labels.Everything(), FieldSelector: fields.Everything(), }) if err != nil { return nil, err } replicationControllerDetail := &ReplicationControllerDetail{ ObjectMeta: common.NewObjectMeta(replicationController.ObjectMeta), TypeMeta: common.NewTypeMeta(common.ResourceKindReplicationController), LabelSelector: replicationController.Spec.Selector, PodInfo: getReplicationPodInfo(replicationController, pods.Items), ServiceList: resourceService.ServiceList{Services: make([]resourceService.Service, 0)}, } matchingServices := getMatchingServices(services.Items, replicationController) for _, service := range matchingServices { replicationControllerDetail.ServiceList.Services = append( replicationControllerDetail.ServiceList.Services, resourceService.ToService(&service)) } for _, container := range replicationController.Spec.Template.Spec.Containers { replicationControllerDetail.ContainerImages = append(replicationControllerDetail.ContainerImages, container.Image) } replicationControllerDetail.Pods = pod.CreatePodList(pods.Items, heapsterClient) return replicationControllerDetail, nil }