use of io.fabric8.kubernetes.model.annotation.Group in project strimzi-kafka-operator by strimzi.
the class OperatorMetricsTest method resourceOperatorWithExistingPausedResource.
private AbstractWatchableStatusedResourceOperator resourceOperatorWithExistingPausedResource() {
return new AbstractWatchableStatusedResourceOperator(vertx, null, "TestResource") {
@Override
public Future updateStatusAsync(Reconciliation reconciliation, HasMetadata resource) {
return Future.succeededFuture();
}
@Override
protected MixedOperation operation() {
return null;
}
@Override
public CustomResource get(String namespace, String name) {
@Group("strimzi")
@Version("v1")
class Foo extends MyResource {
@Override
public ObjectMeta getMetadata() {
ObjectMeta md = new ObjectMeta();
md.setAnnotations(singletonMap("strimzi.io/pause-reconciliation", "true"));
return md;
}
@Override
public void setMetadata(ObjectMeta objectMeta) {
}
@Override
public String getKind() {
return "TestResource";
}
@Override
public String getApiVersion() {
return "v1";
}
@Override
public void setApiVersion(String s) {
}
@Override
public Spec getSpec() {
return new Spec() {
};
}
@Override
public void setSpec(Object spec) {
}
@Override
public Status getStatus() {
return null;
}
@Override
public void setStatus(Object status) {
}
}
return new Foo();
}
@Override
public Future getAsync(String namespace, String name) {
@Group("strimzi")
@Version("v1")
class Foo extends MyResource {
@Override
public ObjectMeta getMetadata() {
ObjectMeta md = new ObjectMeta();
md.setAnnotations(singletonMap("strimzi.io/pause-reconciliation", "true"));
return md;
}
@Override
public void setMetadata(ObjectMeta objectMeta) {
}
@Override
public String getKind() {
return "TestResource";
}
@Override
public String getApiVersion() {
return "v1";
}
@Override
public void setApiVersion(String s) {
}
@Override
public Spec getSpec() {
return new Spec() {
};
}
@Override
public void setSpec(Object spec) {
}
@Override
public Status getStatus() {
return null;
}
@Override
public void setStatus(Object status) {
}
}
return Future.succeededFuture(new Foo());
}
};
}
use of io.fabric8.kubernetes.model.annotation.Group in project strimzi-kafka-operator by strimzi.
the class AbstractModel method createStatefulSet.
protected StatefulSet createStatefulSet(Map<String, String> stsAnnotations, Map<String, String> podAnnotations, List<Volume> volumes, List<PersistentVolumeClaim> volumeClaims, Affinity affinity, List<Container> initContainers, List<Container> containers, List<LocalObjectReference> imagePullSecrets, boolean isOpenShift) {
PodSecurityContext securityContext = templateSecurityContext;
// This is to give each pod write permissions under a specific group so that if a pod changes users it does not have permission issues.
if (ModelUtils.containsPersistentStorage(storage) && !isOpenShift && securityContext == null) {
securityContext = new PodSecurityContextBuilder().withFsGroup(AbstractModel.DEFAULT_FS_GROUPID).build();
}
StatefulSet statefulSet = new StatefulSetBuilder().withNewMetadata().withName(name).withLabels(getLabelsWithStrimziName(name, templateStatefulSetLabels).toMap()).withNamespace(namespace).withAnnotations(Util.mergeLabelsOrAnnotations(stsAnnotations, templateStatefulSetAnnotations)).withOwnerReferences(createOwnerReference()).endMetadata().withNewSpec().withPodManagementPolicy(templatePodManagementPolicy.toValue()).withUpdateStrategy(new StatefulSetUpdateStrategyBuilder().withType("OnDelete").build()).withSelector(new LabelSelectorBuilder().withMatchLabels(getSelectorLabels().toMap()).build()).withServiceName(headlessServiceName).withReplicas(replicas).withNewTemplate().withNewMetadata().withName(name).withLabels(getLabelsWithStrimziName(name, templatePodLabels).toMap()).withAnnotations(Util.mergeLabelsOrAnnotations(podAnnotations, templatePodAnnotations)).endMetadata().withNewSpec().withServiceAccountName(getServiceAccountName()).withEnableServiceLinks(templatePodEnableServiceLinks).withAffinity(affinity).withInitContainers(initContainers).withContainers(containers).withVolumes(volumes).withTolerations(getTolerations()).withTerminationGracePeriodSeconds(Long.valueOf(templateTerminationGracePeriodSeconds)).withImagePullSecrets(templateImagePullSecrets != null ? templateImagePullSecrets : imagePullSecrets).withSecurityContext(securityContext).withPriorityClassName(templatePodPriorityClassName).withSchedulerName(templatePodSchedulerName != null ? templatePodSchedulerName : "default-scheduler").withHostAliases(templatePodHostAliases).withTopologySpreadConstraints(templatePodTopologySpreadConstraints).endSpec().endTemplate().withVolumeClaimTemplates(volumeClaims).endSpec().build();
return statefulSet;
}
use of io.fabric8.kubernetes.model.annotation.Group in project strimzi-kafka-operator by strimzi.
the class Crds method crd.
@SuppressWarnings({ "checkstyle:JavaNCSS" })
private static CustomResourceDefinition crd(Class<? extends CustomResource> cls) {
String scope, plural, singular, group, kind, listKind;
List<String> versions;
CustomResourceSubresourceStatus status = null;
if (cls.equals(Kafka.class)) {
scope = Kafka.SCOPE;
plural = Kafka.RESOURCE_PLURAL;
singular = Kafka.RESOURCE_SINGULAR;
group = Kafka.RESOURCE_GROUP;
kind = Kafka.RESOURCE_KIND;
listKind = Kafka.RESOURCE_LIST_KIND;
versions = Kafka.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaConnect.class)) {
scope = KafkaConnect.SCOPE;
plural = KafkaConnect.RESOURCE_PLURAL;
singular = KafkaConnect.RESOURCE_SINGULAR;
group = KafkaConnect.RESOURCE_GROUP;
kind = KafkaConnect.RESOURCE_KIND;
listKind = KafkaConnect.RESOURCE_LIST_KIND;
versions = KafkaConnect.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaTopic.class)) {
scope = KafkaTopic.SCOPE;
plural = KafkaTopic.RESOURCE_PLURAL;
singular = KafkaTopic.RESOURCE_SINGULAR;
group = KafkaTopic.RESOURCE_GROUP;
kind = KafkaTopic.RESOURCE_KIND;
listKind = KafkaTopic.RESOURCE_LIST_KIND;
versions = KafkaTopic.VERSIONS;
} else if (cls.equals(KafkaUser.class)) {
scope = KafkaUser.SCOPE;
plural = KafkaUser.RESOURCE_PLURAL;
singular = KafkaUser.RESOURCE_SINGULAR;
group = KafkaUser.RESOURCE_GROUP;
kind = KafkaUser.RESOURCE_KIND;
listKind = KafkaUser.RESOURCE_LIST_KIND;
versions = KafkaUser.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaMirrorMaker.class)) {
scope = KafkaMirrorMaker.SCOPE;
plural = KafkaMirrorMaker.RESOURCE_PLURAL;
singular = KafkaMirrorMaker.RESOURCE_SINGULAR;
group = KafkaMirrorMaker.RESOURCE_GROUP;
kind = KafkaMirrorMaker.RESOURCE_KIND;
listKind = KafkaMirrorMaker.RESOURCE_LIST_KIND;
versions = KafkaMirrorMaker.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaBridge.class)) {
scope = KafkaBridge.SCOPE;
plural = KafkaBridge.RESOURCE_PLURAL;
singular = KafkaBridge.RESOURCE_SINGULAR;
group = KafkaBridge.RESOURCE_GROUP;
kind = KafkaBridge.RESOURCE_KIND;
listKind = KafkaBridge.RESOURCE_LIST_KIND;
versions = KafkaBridge.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaConnector.class)) {
scope = KafkaConnector.SCOPE;
plural = KafkaConnector.RESOURCE_PLURAL;
singular = KafkaConnector.RESOURCE_SINGULAR;
group = KafkaConnector.RESOURCE_GROUP;
kind = KafkaConnector.RESOURCE_KIND;
listKind = KafkaConnector.RESOURCE_LIST_KIND;
versions = KafkaConnector.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaMirrorMaker2.class)) {
scope = KafkaMirrorMaker2.SCOPE;
plural = KafkaMirrorMaker2.RESOURCE_PLURAL;
singular = KafkaMirrorMaker2.RESOURCE_SINGULAR;
group = KafkaMirrorMaker2.RESOURCE_GROUP;
kind = KafkaMirrorMaker2.RESOURCE_KIND;
listKind = KafkaMirrorMaker2.RESOURCE_LIST_KIND;
versions = KafkaMirrorMaker2.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(KafkaRebalance.class)) {
scope = KafkaRebalance.SCOPE;
plural = KafkaRebalance.RESOURCE_PLURAL;
singular = KafkaRebalance.RESOURCE_SINGULAR;
group = KafkaRebalance.RESOURCE_GROUP;
kind = KafkaRebalance.RESOURCE_KIND;
listKind = KafkaRebalance.RESOURCE_LIST_KIND;
versions = KafkaRebalance.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else if (cls.equals(StrimziPodSet.class)) {
scope = StrimziPodSet.SCOPE;
plural = StrimziPodSet.RESOURCE_PLURAL;
singular = StrimziPodSet.RESOURCE_SINGULAR;
group = StrimziPodSet.RESOURCE_GROUP;
kind = StrimziPodSet.RESOURCE_KIND;
listKind = StrimziPodSet.RESOURCE_LIST_KIND;
versions = StrimziPodSet.VERSIONS;
status = new CustomResourceSubresourceStatus();
} else {
throw new RuntimeException();
}
List<CustomResourceDefinitionVersion> crVersions = new ArrayList<>(versions.size());
for (String apiVersion : versions) {
crVersions.add(new CustomResourceDefinitionVersionBuilder().withName(apiVersion).withNewSubresources().withStatus(status).endSubresources().withNewSchema().withNewOpenAPIV3Schema().withType("object").withXKubernetesPreserveUnknownFields(true).endOpenAPIV3Schema().endSchema().withStorage("v1beta2".equals(apiVersion)).withServed(true).build());
}
return new CustomResourceDefinitionBuilder().withNewMetadata().withName(plural + "." + group).endMetadata().withNewSpec().withScope(scope).withGroup(group).withVersions(crVersions).withNewNames().withSingular(singular).withPlural(plural).withKind(kind).withListKind(listKind).endNames().endSpec().build();
}
use of io.fabric8.kubernetes.model.annotation.Group in project quarkus-operator-sdk by quarkiverse.
the class ExposedAppReconcilerTest method reconcileShouldWork.
@Test
void reconcileShouldWork() {
operator.start();
final var app = new ExposedApp();
final var client = mockServer.getClient();
final var metadata = new ObjectMetaBuilder().withName("test-app").withNamespace(client.getNamespace()).build();
app.setMetadata(metadata);
app.getSpec().setImageRef("group/imageName:tag");
client.resources(ExposedApp.class).create(app);
await().ignoreException(NullPointerException.class).atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
// check that we create the deployment
final var deployment = client.apps().deployments().inNamespace(metadata.getNamespace()).withName(metadata.getName()).get();
final var maybeFirstContainer = deployment.getSpec().getTemplate().getSpec().getContainers().stream().findFirst();
assertThat(maybeFirstContainer.isPresent(), is(true));
final var firstContainer = maybeFirstContainer.get();
assertThat(firstContainer.getImage(), is(app.getSpec().getImageRef()));
// check that the service is created
final var service = client.services().inNamespace(metadata.getNamespace()).withName(metadata.getName()).get();
final var port = service.getSpec().getPorts().get(0).getPort();
assertThat(port, is(8080));
// check that the ingress is created
final var ingress = client.network().v1().ingresses().inNamespace(metadata.getNamespace()).withName(metadata.getName()).get();
final var annotations = ingress.getMetadata().getAnnotations();
assertThat(annotations.size(), is(2));
assertThat(annotations.get("kubernetes.io/ingress.class"), is("nginx"));
final var rules = ingress.getSpec().getRules();
assertThat(rules.size(), is(1));
final var paths = rules.get(0).getHttp().getPaths();
assertThat(paths.size(), is(1));
final var path = paths.get(0);
assertThat(path.getPath(), is("/"));
assertThat(path.getPathType(), is("Prefix"));
final var serviceBackend = path.getBackend().getService();
assertThat(serviceBackend.getName(), is(service.getMetadata().getName()));
assertThat(serviceBackend.getPort().getNumber(), is(port));
});
}
use of io.fabric8.kubernetes.model.annotation.Group in project docker-maven-plugin by fabric8io.
the class AbstractDockerMojo method createSimpleDockerfileConfig.
private ImageConfiguration createSimpleDockerfileConfig(File dockerFile) {
// No configured name, so create one from maven GAV
String name = EnvUtil.getPropertiesWithSystemOverrides(project).getProperty("docker.name");
if (name == null) {
// Default name group/artifact:version (or 'latest' if SNAPSHOT)
name = "%g/%a:%l";
}
BuildImageConfiguration buildConfig = new BuildImageConfiguration.Builder().dockerFile(dockerFile.getPath()).build();
return new ImageConfiguration.Builder().name(name).buildConfig(buildConfig).build();
}
Aggregations