
io.fabric8.kubernetes.client.dsl.internal.KubernetesListOperationsImpl Maven / Gradle / Ivy
/**
* Copyright (C) 2015 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.fabric8.kubernetes.client.dsl.internal;
import com.squareup.okhttp.OkHttpClient;
import io.fabric8.kubernetes.api.builder.Function;
import io.fabric8.kubernetes.api.builder.VisitableBuilder;
import io.fabric8.kubernetes.api.model.DoneableKubernetesList;
import io.fabric8.kubernetes.api.model.HasMetadata;
import io.fabric8.kubernetes.api.model.KubernetesList;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.Handlers;
import io.fabric8.kubernetes.client.HasMetadataVisitiableBuilder;
import io.fabric8.kubernetes.client.KubernetesClientException;
import io.fabric8.kubernetes.client.ResourceHandler;
import io.fabric8.kubernetes.client.dsl.ClientKubernetesListMixedOperation;
import io.fabric8.kubernetes.client.dsl.ClientKubernetesListNonNamespaceOperation;
import io.fabric8.kubernetes.client.dsl.ClientKubernetesListOperation;
import io.fabric8.kubernetes.client.dsl.Createable;
import io.fabric8.kubernetes.client.dsl.Gettable;
import io.fabric8.kubernetes.client.dsl.Loadable;
import io.fabric8.kubernetes.client.dsl.RecreateFromServerGettable;
import io.fabric8.kubernetes.client.dsl.base.OperationSupport;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class KubernetesListOperationsImpl
extends OperationSupport
implements ClientKubernetesListOperation,
ClientKubernetesListMixedOperation,
Loadable>,
RecreateFromServerGettable {
private final KubernetesList item;
private final Boolean fromServer;
private final Boolean deletingExisting;
public KubernetesListOperationsImpl(OkHttpClient client, Config config, String namespace) {
this(client, config, namespace, null, null, false, false, null, null);
}
public KubernetesListOperationsImpl(OkHttpClient client, Config config, String namespace, String name, Boolean cascading, Boolean fromServer, Boolean deletingExisting, KubernetesList item, String resourceVersion) {
super(client, config, null, null, null, namespace, null);
this.fromServer = fromServer;
this.deletingExisting = deletingExisting;
this.item = item;
}
@Override
public ClientKubernetesListNonNamespaceOperation inNamespace(String namespace) {
return new KubernetesListOperationsImpl(client, config, namespace);
}
@Override
public KubernetesList create(KubernetesList... items) {
List createdItems = new ArrayList<>();
if (items.length == 0) {
items = new KubernetesList[]{get()};
}
for (KubernetesList i : items) {
for (HasMetadata r : i.getItems()) {
HasMetadata created = create(r);
createdItems.add(created);
}
}
KubernetesList createdList = new KubernetesList();
createdList.setItems(createdItems);
return createdList;
}
@Override
public DoneableKubernetesList createNew() {
return new DoneableKubernetesList(new Function() {
@Override
public KubernetesList apply(KubernetesList item) {
try {
return create(item);
} catch (Exception e) {
throw KubernetesClientException.launderThrowable(e);
}
}
});
}
@Override
public RecreateFromServerGettable load(InputStream is) {
return new KubernetesListOperationsImpl(client, config, namespace, null, false, fromServer, deletingExisting, unmarshal(is, KubernetesList.class), null);
}
@Override
public KubernetesList get() {
return item;
}
private > T create(T resource) {
ResourceHandler handler = Handlers.get(resource.getKind());
if (handler != null) {
return handler.create(client, config, namespace, resource);
}
throw new IllegalStateException("Could not find handler");
}
@Override
public Boolean delete(KubernetesList... lists) {
return delete(Arrays.asList(lists));
}
@Override
public Boolean delete(List lists) {
for (KubernetesList list : lists) {
for (HasMetadata item : list.getItems()) {
ResourceHandler handler = Handlers.get(item.getKind());
if (!handler.delete(client, config, namespace, item)) {
return false;
}
}
}
return true;
}
@Override
public Gettable fromServer() {
return new KubernetesListOperationsImpl(client, config, namespace, null, false, true, deletingExisting, item, null);
}
@Override
public Createable deletingExisting() {
return new KubernetesListOperationsImpl(client, config, namespace, null, false, fromServer, true, item, null);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy