Backports/1.16 custom2 (#22)
* Include namePrefix in CRD name of CompositionResourceDefinition as CRD name must match plural.group (#20) Signed-off-by: Jesper Nylend <jesper.nylend@gmail.com> * Wrap the generator to avoid refs in the generated schema Signed-off-by: Knut-Erik Johnsen <abstract@knut-erik.org> --------- Signed-off-by: Jesper Nylend <jesper.nylend@gmail.com> Signed-off-by: Knut-Erik Johnsen <abstract@knut-erik.org> Co-authored-by: Jesper Nylend <jesper.nylend@gmail.com>
This commit is contained in:
parent
ed71e066b7
commit
a400a84f81
|
@ -74,7 +74,6 @@ public class CrossplaneCompositeResourceService {
|
||||||
public static <T extends CustomResource<?, Void>> CompositeResourceDefinition createCompositeResourceDefinition(T compositionDefinition) { //}, Class functionMixin) {
|
public static <T extends CustomResource<?, Void>> CompositeResourceDefinition createCompositeResourceDefinition(T compositionDefinition) { //}, Class functionMixin) {
|
||||||
|
|
||||||
CompositeResourceDefinition compositeResourceDefinition = new CompositeResourceDefinition();
|
CompositeResourceDefinition compositeResourceDefinition = new CompositeResourceDefinition();
|
||||||
compositeResourceDefinition.setMetadata(CrossplaneMetadataBuilder.createMetadata(compositionDefinition.getCRDName()));
|
|
||||||
|
|
||||||
CompositeResourceDefinitionSpec spec = new CompositeResourceDefinitionSpec();
|
CompositeResourceDefinitionSpec spec = new CompositeResourceDefinitionSpec();
|
||||||
spec.setGroup(compositionDefinition.getGroup());
|
spec.setGroup(compositionDefinition.getGroup());
|
||||||
|
@ -99,10 +98,11 @@ public class CrossplaneCompositeResourceService {
|
||||||
Versions versions = new Versions();
|
Versions versions = new Versions();
|
||||||
versions.setName(compositionDefinition.getVersion());
|
versions.setName(compositionDefinition.getVersion());
|
||||||
|
|
||||||
// This is not 100%. isStorage vs referencable. Need to check the crossplan docs
|
// This is not 100%. isStorage vs referencable. Need to check the crossplane docs
|
||||||
versions.setReferenceable(compositionDefinition.isStorage());
|
versions.setReferenceable(compositionDefinition.isStorage());
|
||||||
versions.setServed(compositionDefinition.isServed());
|
versions.setServed(compositionDefinition.isServed());
|
||||||
|
|
||||||
|
compositeResourceDefinition.setMetadata(CrossplaneMetadataBuilder.createMetadata(namePrefix + compositionDefinition.getCRDName()));
|
||||||
|
|
||||||
Schema schema = new Schema();
|
Schema schema = new Schema();
|
||||||
schema.setOpenAPIV3Schema(getOpenAPIV3Schema(compositionDefinition.getClass(), CrossplaneCompositeResourceMixin.class));
|
schema.setOpenAPIV3Schema(getOpenAPIV3Schema(compositionDefinition.getClass(), CrossplaneCompositeResourceMixin.class));
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
package io.crossplane.compositefunctions.starter.registration;
|
package io.crossplane.compositefunctions.starter.registration;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.databind.JavaType;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
|
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
|
||||||
import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema;
|
import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema;
|
||||||
import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator;
|
import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator;
|
||||||
|
import com.fasterxml.jackson.module.jsonSchema.jakarta.factories.SchemaFactoryWrapper;
|
||||||
|
import com.fasterxml.jackson.module.jsonSchema.jakarta.factories.VisitorContext;
|
||||||
import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ArraySchema;
|
import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ArraySchema;
|
||||||
import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.versions.schema.OpenAPIV3Schema;
|
import io.crossplane.apiextensions.v1.compositeresourcedefinitionspec.versions.schema.OpenAPIV3Schema;
|
||||||
import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps;
|
import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps;
|
||||||
|
@ -29,7 +32,17 @@ public class CrossplaneJsonSchemaGenerator {
|
||||||
//Add mixin class to ignore id field as OpenShift does not support it.
|
//Add mixin class to ignore id field as OpenShift does not support it.
|
||||||
mapper.addMixIn(clazz, mixin);
|
mapper.addMixIn(clazz, mixin);
|
||||||
// apper.addMixIn(ObjectMeta.class, MetadataIgnorer.class);
|
// apper.addMixIn(ObjectMeta.class, MetadataIgnorer.class);
|
||||||
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper);
|
|
||||||
|
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
|
||||||
|
visitor.setVisitorContext(new VisitorContext(){
|
||||||
|
@Override
|
||||||
|
public String addSeenSchemaUri(JavaType aSeenSchema) {
|
||||||
|
return javaTypeToUrn(aSeenSchema);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper, visitor);
|
||||||
JsonSchema jsonSchema = generator.generateSchema(clazz);
|
JsonSchema jsonSchema = generator.generateSchema(clazz);
|
||||||
|
|
||||||
removeIdField(jsonSchema);
|
removeIdField(jsonSchema);
|
||||||
|
|
6
pom.xml
6
pom.xml
|
@ -6,7 +6,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>3.3.1</version>
|
<version>3.3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<groupId>io.crossplane.compositefunctions</groupId>
|
<groupId>io.crossplane.compositefunctions</groupId>
|
||||||
|
@ -25,8 +25,8 @@
|
||||||
<maven.compiler.source>17</maven.compiler.source>
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
|
||||||
<!-- Dependency versions -->
|
<!-- Dependency versions -->
|
||||||
<spring-boot.version>3.3.1</spring-boot.version>
|
<spring-boot.version>3.3.3</spring-boot.version>
|
||||||
<kubernetes-client.version>6.13.0</kubernetes-client.version>
|
<kubernetes-client.version>6.13.3</kubernetes-client.version>
|
||||||
<os-maven-plugin.version>1.7.1</os-maven-plugin.version>
|
<os-maven-plugin.version>1.7.1</os-maven-plugin.version>
|
||||||
<protobuf.version>3.25.1</protobuf.version>
|
<protobuf.version>3.25.1</protobuf.version>
|
||||||
<grpc.version>1.63.0</grpc.version>
|
<grpc.version>1.63.0</grpc.version>
|
||||||
|
|
Loading…
Reference in New Issue