Search in sources :

Example 1 with V1OwnerReference

use of io.kubernetes.client.openapi.models.V1OwnerReference in project java by kubernetes-client.

the class DeploymentHelper method listReplicaSets.

/**
 * listReplicaSets returns a list of RSes the given deployment targets. Note that this does NOT
 * attempt to reconcile ControllerRef (adopt/orphan), because only the controller itself should do
 * that. However, it does filter out anything whose ControllerRef doesn't match.
 */
private static List<V1ReplicaSet> listReplicaSets(V1Deployment deployment, AppsV1Api api) throws ApiException {
    String namespace = deployment.getMetadata().getNamespace();
    LabelSelector selector = LabelSelector.parse(deployment.getSpec().getSelector());
    List<V1ReplicaSet> all = rsListFromClient(namespace, selector.toString(), api);
    List<V1ReplicaSet> owned = new ArrayList<>(all.size());
    for (V1ReplicaSet rs : all) {
        List<V1OwnerReference> refs = rs.getMetadata().getOwnerReferences();
        Optional<V1OwnerReference> ref = refs.stream().filter(o -> o.getController() != null && o.getController()).findAny();
        // Only include those whose ControllerRef matches the Deployment.
        if (ref.isPresent() && ref.get().getUid().equals(deployment.getMetadata().getUid())) {
            owned.add(rs);
        }
    }
    return owned;
}
Also used : V1ReplicaSet(io.kubernetes.client.openapi.models.V1ReplicaSet) V1PodTemplateSpec(io.kubernetes.client.openapi.models.V1PodTemplateSpec) Yaml(io.kubernetes.client.util.Yaml) LabelSelector(io.kubernetes.client.util.labels.LabelSelector) AppsV1Api(io.kubernetes.client.openapi.apis.AppsV1Api) ArrayList(java.util.ArrayList) Objects(java.util.Objects) ApiException(io.kubernetes.client.openapi.ApiException) List(java.util.List) V1ReplicaSetList(io.kubernetes.client.openapi.models.V1ReplicaSetList) V1OwnerReference(io.kubernetes.client.openapi.models.V1OwnerReference) V1ObjectMeta(io.kubernetes.client.openapi.models.V1ObjectMeta) Optional(java.util.Optional) V1Deployment(io.kubernetes.client.openapi.models.V1Deployment) ArrayList(java.util.ArrayList) LabelSelector(io.kubernetes.client.util.labels.LabelSelector) V1OwnerReference(io.kubernetes.client.openapi.models.V1OwnerReference) V1ReplicaSet(io.kubernetes.client.openapi.models.V1ReplicaSet)

Example 2 with V1OwnerReference

use of io.kubernetes.client.openapi.models.V1OwnerReference in project java by kubernetes-client.

the class Jobs method cronJobToJob.

/**
 * Convert V1beta1CronJob object into V1Job object, based on kubectl code
 * https://github.com/kubernetes/kubectl/blob/master/pkg/cmd/create/create_job.go
 *
 * @param cronJob cronJob object (required)
 * @param jobName cronJob name
 * @return V1Job object
 */
public static V1Job cronJobToJob(V1beta1CronJob cronJob, String jobName) {
    Map<String, String> annotations = new HashMap<>();
    Map<String, String> labels = new HashMap<>();
    V1JobSpec jobSpec = null;
    V1beta1CronJobSpec cronJobSpec = cronJob.getSpec();
    if (cronJobSpec != null && cronJobSpec.getJobTemplate() != null) {
        V1ObjectMeta metadata = cronJobSpec.getJobTemplate().getMetadata();
        if (metadata != null) {
            if (metadata.getAnnotations() != null) {
                annotations.putAll(metadata.getAnnotations());
            }
            if (metadata.getLabels() != null) {
                labels.putAll(metadata.getLabels());
            }
        }
        jobSpec = cronJobSpec.getJobTemplate().getSpec();
    }
    annotations.put("cronjob.kubernetes.io/instantiate", "manual");
    V1OwnerReference v1OwnerReference = new V1OwnerReference();
    v1OwnerReference.setKind("CronJob");
    v1OwnerReference.setName(cronJob.getMetadata().getName());
    v1OwnerReference.setBlockOwnerDeletion(true);
    v1OwnerReference.setController(true);
    v1OwnerReference.setUid(cronJob.getMetadata().getUid());
    v1OwnerReference.setApiVersion("batch/v1beta1");
    V1ObjectMeta jobMetadata = new V1ObjectMeta();
    jobMetadata.setName(jobName != null ? jobName : cronJob.getMetadata().getName() + "-manual");
    jobMetadata.setAnnotations(annotations);
    jobMetadata.setLabels(labels);
    jobMetadata.setOwnerReferences(Arrays.asList(v1OwnerReference));
    V1Job job = new V1Job();
    job.setKind("Job");
    job.setApiVersion("batch/v1");
    job.setMetadata(jobMetadata);
    job.setSpec(jobSpec);
    return job;
}
Also used : V1Job(io.kubernetes.client.openapi.models.V1Job) HashMap(java.util.HashMap) V1beta1CronJobSpec(io.kubernetes.client.openapi.models.V1beta1CronJobSpec) V1ObjectMeta(io.kubernetes.client.openapi.models.V1ObjectMeta) V1JobSpec(io.kubernetes.client.openapi.models.V1JobSpec) V1OwnerReference(io.kubernetes.client.openapi.models.V1OwnerReference)

Aggregations

V1ObjectMeta (io.kubernetes.client.openapi.models.V1ObjectMeta)2 V1OwnerReference (io.kubernetes.client.openapi.models.V1OwnerReference)2 ApiException (io.kubernetes.client.openapi.ApiException)1 AppsV1Api (io.kubernetes.client.openapi.apis.AppsV1Api)1 V1Deployment (io.kubernetes.client.openapi.models.V1Deployment)1 V1Job (io.kubernetes.client.openapi.models.V1Job)1 V1JobSpec (io.kubernetes.client.openapi.models.V1JobSpec)1 V1PodTemplateSpec (io.kubernetes.client.openapi.models.V1PodTemplateSpec)1 V1ReplicaSet (io.kubernetes.client.openapi.models.V1ReplicaSet)1 V1ReplicaSetList (io.kubernetes.client.openapi.models.V1ReplicaSetList)1 V1beta1CronJobSpec (io.kubernetes.client.openapi.models.V1beta1CronJobSpec)1 Yaml (io.kubernetes.client.util.Yaml)1 LabelSelector (io.kubernetes.client.util.labels.LabelSelector)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Objects (java.util.Objects)1 Optional (java.util.Optional)1