EntandoDeBundleService.java
package org.entando.kubernetes.service;
import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.Resource;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.entando.kubernetes.exception.BadRequestExceptionFactory;
import org.entando.kubernetes.exception.NotFoundExceptionFactory;
import org.entando.kubernetes.model.debundle.DoneableEntandoDeBundle;
import org.entando.kubernetes.model.debundle.EntandoDeBundle;
import org.entando.kubernetes.model.debundle.EntandoDeBundleBuilder;
import org.entando.kubernetes.model.debundle.EntandoDeBundleList;
import org.entando.kubernetes.model.debundle.EntandoDeBundleOperationFactory;
import org.entando.kubernetes.model.namespace.ObservedNamespaces;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class EntandoDeBundleService extends EntandoKubernetesResourceCollector<EntandoDeBundle> {
public EntandoDeBundleService(KubernetesUtils kubernetesUtils,
ObservedNamespaces observedNamespaces) {
super(kubernetesUtils, observedNamespaces);
}
@Override
protected List<EntandoDeBundle> getInAnyNamespace() {
return getBundleOperations().inAnyNamespace().list().getItems();
}
@Override
protected List<EntandoDeBundle> getInNamespaceWithoutChecking(String namespace) {
return getBundleOperations().inNamespace(namespace).list().getItems();
}
public List<EntandoDeBundle> findBundlesByAnyKeywords(List<String> keywords) {
return getAll().stream()
.filter(b -> b.getSpec().getDetails().getKeywords().stream().anyMatch(keywords::contains))
.collect(Collectors.toList());
}
public List<EntandoDeBundle> findBundlesByAllKeywords(List<String> keywords) {
return getAll().stream()
.filter(b -> keywords.containsAll(b.getSpec().getDetails().getKeywords()))
.collect(Collectors.toList());
}
public EntandoDeBundle createBundle(EntandoDeBundle entandoDeBundle) {
String namespace = kubernetesUtils.getDefaultPluginNamespace();
return getBundleOperations()
.inNamespace(namespace).createOrReplace(entandoDeBundle);
}
public void deleteBundle(String bundleName) {
if (ObjectUtils.isEmpty(bundleName)) {
throw BadRequestExceptionFactory.invalidBundleNameRequest();
}
final EntandoDeBundle entandoDeBundle = new EntandoDeBundleBuilder().withNewMetadata().withName(bundleName)
.endMetadata().build();
String namespace = kubernetesUtils.getDefaultPluginNamespace();
if (Boolean.FALSE.equals(
getBundleOperations().inNamespace(namespace).delete(entandoDeBundle))) {
throw NotFoundExceptionFactory.entandoDeBundle(bundleName);
}
log.info("Deleted {} EntandoDeBundle", bundleName);
}
//CHECKSTYLE:OFF
private MixedOperation<EntandoDeBundle, EntandoDeBundleList, DoneableEntandoDeBundle, Resource<EntandoDeBundle,
DoneableEntandoDeBundle>> getBundleOperations() {
//CHECKSTYLE:ON
return EntandoDeBundleOperationFactory.produceAllEntandoDeBundles(kubernetesUtils.getCurrentKubernetesClient());
}
}