use of io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionSpec in project kubernetes-client by fabric8io.
the class CRGeneratorRunner method generate.
public List<WritableCRCompilationUnit> generate(CustomResourceDefinition crd, String basePackageName) {
CustomResourceDefinitionSpec crSpec = crd.getSpec();
String crName = crSpec.getNames().getKind();
String group = crSpec.getGroup();
List<WritableCRCompilationUnit> writableCUs = new ArrayList<>(crSpec.getVersions().size());
for (CustomResourceDefinitionVersion crdv : crSpec.getVersions()) {
String version = crdv.getName();
String pkg = Optional.ofNullable(basePackageName).map(p -> p + "." + version).orElse(version);
AbstractJSONSchema2Pojo specGenerator = null;
String prefix = crName;
if (config.getPrefixStrategy() == Config.Prefix.NEVER) {
prefix = "";
}
JSONSchemaProps spec = crdv.getSchema().getOpenAPIV3Schema().getProperties().get("spec");
if (spec != null) {
String suffix = (config.getSuffixStrategy() != Config.Suffix.NEVER) ? "Spec" : "";
specGenerator = AbstractJSONSchema2Pojo.fromJsonSchema("spec", spec, pkg, prefix, suffix, config);
}
AbstractJSONSchema2Pojo statusGenerator = null;
JSONSchemaProps status = crdv.getSchema().getOpenAPIV3Schema().getProperties().get("status");
if (status != null) {
String suffix = (config.getSuffixStrategy() != Config.Suffix.NEVER) ? "Status" : "";
statusGenerator = AbstractJSONSchema2Pojo.fromJsonSchema("status", status, pkg, prefix, suffix, config);
}
AbstractJSONSchema2Pojo crGenerator = new JCRObject(pkg, crName, group, version, prefix + "Spec", prefix + "Status", specGenerator != null, statusGenerator != null, crdv.getStorage(), crdv.getServed(), config);
List<GeneratorResult.ClassResult> classResults = validateAndAggregate(crGenerator, specGenerator, statusGenerator);
writableCUs.add(new WritableCRCompilationUnit(classResults));
}
return writableCUs;
}
use of io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionSpec in project stackgres by ongres.
the class WebhookConfiguratorImplTest method configureWebhook_shouldNotFail.
@Test
void configureWebhook_shouldNotFail() {
var definition = crdFinder.scanDefinitions().get(0);
final String certificate = StringUtil.generateRandom();
ArgumentCaptor<CustomResourceDefinition> crdCaptor = ArgumentCaptor.forClass(CustomResourceDefinition.class);
when(crdWriter.update(crdCaptor.capture())).thenReturn(definition);
webhookConfigurator.configureWebhook(definition.getMetadata().getName(), certificate);
CustomResourceDefinition crd = crdCaptor.getValue();
final CustomResourceDefinitionSpec spec = crd.getSpec();
final CustomResourceConversion conversion = spec.getConversion();
final WebhookClientConfig clientConfig = conversion.getWebhook().getClientConfig();
final ServiceReference service = clientConfig.getService();
assertEquals("Webhook", conversion.getStrategy());
assertEquals(OPERATOR_NAME, service.getName());
assertEquals(OPERATOR_NAMESPACE, service.getNamespace());
assertEquals("/stackgres/conversion/" + definition.getSpec().getNames().getSingular(), service.getPath());
assertEquals(certificate, clientConfig.getCaBundle());
assertFalse(spec.getPreserveUnknownFields());
}
use of io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionSpec in project kubernetes-client by fabric8io.
the class CustomResourceDefinitionContextTest method v1beta1CRDFromCustomResourceType.
@Test
@DisplayName("v1beta1CRDFromCustomResourceType correctly generates CRD builder for v1beta1 version")
void v1beta1CRDFromCustomResourceType() {
final CustomResourceDefinition crd = CustomResourceDefinitionContext.v1beta1CRDFromCustomResourceType(Good.class).build();
final CustomResourceDefinitionSpec spec = crd.getSpec();
final CustomResourceDefinitionNames names = spec.getNames();
final String plural = "goods";
Assertions.assertEquals(plural, names.getPlural());
Assertions.assertEquals("good", names.getSingular());
Assertions.assertEquals("Good", names.getKind());
Assertions.assertEquals(plural + "." + Good.GROUP, crd.getMetadata().getName());
Assertions.assertEquals(Good.VERSION, spec.getVersion());
Assertions.assertEquals(Good.VERSION, spec.getVersions().get(0).getName());
}
Aggregations