func ScalerFor(kind unversioned.GroupKind, c client.Interface) (Scaler, error) { switch kind { case api.Kind("ReplicationController"): return &ReplicationControllerScaler{c}, nil case extensions.Kind("ReplicaSet"): return &ReplicaSetScaler{c.Extensions()}, nil case extensions.Kind("Job"), batch.Kind("Job"): return &JobScaler{c.Batch()}, nil // Either kind of job can be scaled with Batch interface. case extensions.Kind("Deployment"): return &DeploymentScaler{c.Extensions()}, nil } return nil, fmt.Errorf("no scaler has been implemented for %q", kind) }
// Returns array of api pods targeting job with given name. func getRawJobPods(client k8sClient.Interface, petSetName, namespace string) ([]api.Pod, error) { replicaSet, err := client.Batch().Jobs(namespace).Get(petSetName) if err != nil { return nil, err } labelSelector := labels.SelectorFromSet(replicaSet.Spec.Selector.MatchLabels) channels := &common.ResourceChannels{ PodList: common.GetPodListChannelWithOptions(client, common.NewSameNamespaceQuery(namespace), api.ListOptions{ LabelSelector: labelSelector, FieldSelector: fields.Everything(), }, 1), } podList := <-channels.PodList.List if err := <-channels.PodList.Error; err != nil { return nil, err } return podList.Items, nil }