// GetPodsEvents gets pods events associated to resource targeted by given resource selector. func GetPodsEvents(client client.Interface, namespace string, resourceSelector map[string]string) ( []api.Event, error) { channels := &common.ResourceChannels{ PodList: common.GetPodListChannelWithOptions( client, common.NewSameNamespaceQuery(namespace), api.ListOptions{ LabelSelector: labels.SelectorFromSet(resourceSelector), FieldSelector: fields.Everything(), }, 1), EventList: common.GetEventListChannel(client, common.NewSameNamespaceQuery(namespace), 1), } podList := <-channels.PodList.List if err := <-channels.PodList.Error; err != nil { return nil, err } eventList := <-channels.EventList.List if err := <-channels.EventList.Error; err != nil { return nil, err } events := FilterEventsByPodsUID(eventList.Items, podList.Items) return events, nil }
// GetDeploymentDetail returns model object of deployment and error, if any. func GetDeploymentDetail(client client.Interface, namespace string, name string) (*DeploymentDetail, error) { log.Printf("Getting details of %s deployment in %s namespace", name, namespace) deployment, err := client.Extensions().Deployments(namespace).Get(name) if err != nil { return nil, err } selector, err := unversioned.LabelSelectorAsSelector(deployment.Spec.Selector) if err != nil { return nil, err } options := api.ListOptions{LabelSelector: selector} channels := &common.ResourceChannels{ ReplicaSetList: common.GetReplicaSetListChannelWithOptions(client.Extensions(), common.NewSameNamespaceQuery(namespace), options, 1), PodList: common.GetPodListChannelWithOptions(client, common.NewSameNamespaceQuery(namespace), options, 1), EventList: common.GetEventListChannelWithOptions(client, common.NewSameNamespaceQuery(namespace), options, 1), } rsList := <-channels.ReplicaSetList.List if err := <-channels.ReplicaSetList.Error; err != nil { return nil, err } podList := <-channels.PodList.List if err := <-channels.PodList.Error; err != nil { return nil, err } eventList := <-channels.EventList.List if err := <-channels.EventList.Error; err != nil { return nil, err } oldReplicaSets, _, err := deploymentutil.FindOldReplicaSets(deployment, rsList.Items, podList) if err != nil { return nil, err } newReplicaSet, err := deploymentutil.FindNewReplicaSet(deployment, rsList.Items) if err != nil { return nil, err } events, err := GetDeploymentEvents(eventList.Items, namespace, name) if err != nil { return nil, err } return getDeploymentDetail(deployment, oldReplicaSets, newReplicaSet, podList.Items, events, eventList.Items), nil }