// GetPetSetDetail gets pet set details. func GetPetSetDetail(client *k8sClient.Client, heapsterClient client.HeapsterClient, namespace, name string) (*PetSetDetail, error) { log.Printf("Getting details of %s service in %s namespace", name, namespace) // TODO(floreks): Use channels. petSetData, err := client.Apps().PetSets(namespace).Get(name) if err != nil { return nil, err } channels := &common.ResourceChannels{ PodList: common.GetPodListChannel(client, common.NewSameNamespaceQuery(namespace), 1), } pods := <-channels.PodList.List if err := <-channels.PodList.Error; err != nil { return nil, err } events, err := GetPetSetEvents(client, petSetData.Namespace, petSetData.Name) if err != nil { return nil, err } petSet := getPetSetDetail(petSetData, heapsterClient, events, pods.Items) return &petSet, nil }
// GetJobDetail gets job details. func GetJobDetail(client k8sClient.Interface, heapsterClient client.HeapsterClient, namespace, name string) (*JobDetail, error) { log.Printf("Getting details of %s service in %s namespace", name, namespace) // TODO(floreks): Use channels. jobData, err := client.Extensions().Jobs(namespace).Get(name) if err != nil { return nil, err } channels := &common.ResourceChannels{ PodList: common.GetPodListChannel(client, common.NewSameNamespaceQuery(namespace), 1), } pods := <-channels.PodList.List if err := <-channels.PodList.Error; err != nil { return nil, err } events, err := GetJobEvents(client, jobData.Namespace, jobData.Name) if err != nil { return nil, err } job := getJobDetail(jobData, heapsterClient, events, pods.Items) return &job, nil }
// GetPodList returns a list of all Pods in the cluster. func GetPodList(client k8sClient.Interface, heapsterClient client.HeapsterClient, nsQuery *common.NamespaceQuery) (*PodList, error) { log.Printf("Getting list of all pods in the cluster") channels := &common.ResourceChannels{ PodList: common.GetPodListChannel(client, nsQuery, 1), } return GetPodListFromChannels(channels, heapsterClient) }
// GetJobList returns a list of all Jobs in the cluster. func GetJobList(client client.Interface, nsQuery *common.NamespaceQuery) (*JobList, error) { log.Printf("Getting list of all jobs in the cluster") channels := &common.ResourceChannels{ JobList: common.GetJobListChannel(client.Extensions(), nsQuery, 1), PodList: common.GetPodListChannel(client, nsQuery, 1), EventList: common.GetEventListChannel(client, nsQuery, 1), } return GetJobListFromChannels(channels) }
// GetPetSetList returns a list of all Pet Sets in the cluster. func GetPetSetList(client *client.Client, nsQuery *common.NamespaceQuery) (*PetSetList, error) { log.Printf("Getting list of all pet sets in the cluster") channels := &common.ResourceChannels{ PetSetList: common.GetPetSetListChannel(client.Apps(), nsQuery, 1), PodList: common.GetPodListChannel(client, nsQuery, 1), EventList: common.GetEventListChannel(client, nsQuery, 1), } return GetPetSetListFromChannels(channels) }
// GetReplicationControllerList returns a list of all Replication Controllers in the cluster. func GetReplicationControllerList(client *client.Client, nsQuery *common.NamespaceQuery) (*ReplicationControllerList, error) { log.Printf("Getting list of all replication controllers in the cluster") channels := &common.ResourceChannels{ ReplicationControllerList: common.GetReplicationControllerListChannel(client, nsQuery, 1), PodList: common.GetPodListChannel(client, nsQuery, 1), EventList: common.GetEventListChannel(client, nsQuery, 1), } return GetReplicationControllerListFromChannels(channels) }
// GetServicePods gets list of pods targeted by given label selector in given namespace. func GetServicePods(client k8sClient.Interface, heapsterClient client.HeapsterClient, namespace string, serviceSelector map[string]string) (*pod.PodList, error) { channels := &common.ResourceChannels{ PodList: common.GetPodListChannel(client, common.NewSameNamespaceQuery(namespace), 1), } apiPodList := <-channels.PodList.List if err := <-channels.PodList.Error; err != nil { return nil, err } apiPods := common.FilterNamespacedPodsBySelector(apiPodList.Items, namespace, serviceSelector) podList := pod.CreatePodList(apiPods, heapsterClient) return &podList, nil }
// GetWorkloads returns a list of all workloads in the cluster. func GetWorkloads(client *k8sClient.Client, heapsterClient client.HeapsterClient, nsQuery *common.NamespaceQuery) (*Workloads, error) { log.Printf("Getting lists of all workloads") channels := &common.ResourceChannels{ ReplicationControllerList: common.GetReplicationControllerListChannel(client, nsQuery, 1), ReplicaSetList: common.GetReplicaSetListChannel(client.Extensions(), nsQuery, 1), JobList: common.GetJobListChannel(client.Batch(), nsQuery, 1), DaemonSetList: common.GetDaemonSetListChannel(client.Extensions(), nsQuery, 1), DeploymentList: common.GetDeploymentListChannel(client.Extensions(), nsQuery, 1), PetSetList: common.GetPetSetListChannel(client.Apps(), nsQuery, 1), ServiceList: common.GetServiceListChannel(client, nsQuery, 1), PodList: common.GetPodListChannel(client, nsQuery, 7), EventList: common.GetEventListChannel(client, nsQuery, 6), } return GetWorkloadsFromChannels(channels, heapsterClient) }