Skip to content

Commit d27916a

Browse files
committed
Add status validation to CRD
1 parent 3333f3d commit d27916a

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

operator/src/main/java/oracle/kubernetes/operator/helpers/CRDHelper.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2018, Oracle Corporation and/or its affiliates. All rights reserved.
1+
// Copyright 2018, 2019, Oracle Corporation and/or its affiliates. All rights reserved.
22
// Licensed under the Universal Permissive License v 1.0 as shown at
33
// http://oss.oracle.com/licenses/upl.
44

@@ -8,7 +8,14 @@
88

99
import com.google.gson.Gson;
1010
import com.google.gson.JsonElement;
11-
import io.kubernetes.client.models.*;
11+
import io.kubernetes.client.models.V1ObjectMeta;
12+
import io.kubernetes.client.models.V1beta1CustomResourceDefinition;
13+
import io.kubernetes.client.models.V1beta1CustomResourceDefinitionNames;
14+
import io.kubernetes.client.models.V1beta1CustomResourceDefinitionSpec;
15+
import io.kubernetes.client.models.V1beta1CustomResourceSubresourceScale;
16+
import io.kubernetes.client.models.V1beta1CustomResourceSubresources;
17+
import io.kubernetes.client.models.V1beta1CustomResourceValidation;
18+
import io.kubernetes.client.models.V1beta1JSONSchemaProps;
1219
import java.util.Collections;
1320
import java.util.HashMap;
1421
import oracle.kubernetes.json.SchemaGenerator;
@@ -23,6 +30,7 @@
2330
import oracle.kubernetes.operator.work.Packet;
2431
import oracle.kubernetes.operator.work.Step;
2532
import oracle.kubernetes.weblogic.domain.v2.DomainSpec;
33+
import oracle.kubernetes.weblogic.domain.v2.DomainStatus;
2634

2735
/** Helper class to ensure Domain CRD is created */
2836
public class CRDHelper {
@@ -116,9 +124,16 @@ static V1beta1CustomResourceValidation createSchemaValidation() {
116124

117125
static V1beta1JSONSchemaProps createOpenAPIV3Schema() {
118126
Gson gson = new Gson();
119-
JsonElement jsonElement = gson.toJsonTree(createSchemaGenerator().generate(DomainSpec.class));
120-
V1beta1JSONSchemaProps spec = gson.fromJson(jsonElement, V1beta1JSONSchemaProps.class);
121-
return new V1beta1JSONSchemaProps().putPropertiesItem("spec", spec);
127+
JsonElement jsonElementSpec =
128+
gson.toJsonTree(createSchemaGenerator().generate(DomainSpec.class));
129+
V1beta1JSONSchemaProps spec = gson.fromJson(jsonElementSpec, V1beta1JSONSchemaProps.class);
130+
JsonElement jsonElementStatus =
131+
gson.toJsonTree(createSchemaGenerator().generate(DomainStatus.class));
132+
V1beta1JSONSchemaProps status =
133+
gson.fromJson(jsonElementStatus, V1beta1JSONSchemaProps.class);
134+
return new V1beta1JSONSchemaProps()
135+
.putPropertiesItem("spec", spec)
136+
.putPropertiesItem("status", status);
122137
}
123138

124139
static SchemaGenerator createSchemaGenerator() {

operator/src/test/java/oracle/kubernetes/operator/helpers/CRDHelperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ private boolean hasSchemaVerification(V1beta1CustomResourceDefinition actualBody
210210
if (validation == null) return false;
211211

212212
V1beta1JSONSchemaProps openAPIV3Schema = validation.getOpenAPIV3Schema();
213-
if (openAPIV3Schema == null || openAPIV3Schema.getProperties().size() != 1) return false;
213+
if (openAPIV3Schema == null || openAPIV3Schema.getProperties().size() != 2) return false;
214214

215215
V1beta1JSONSchemaProps spec = openAPIV3Schema.getProperties().get("spec");
216216
if (spec == null || spec.getProperties().isEmpty()) return false;

0 commit comments

Comments
 (0)