Skip to content

Commit 20ff764

Browse files
committed
Create CRDHelper to improve unit test
1 parent 40a0d23 commit 20ff764

File tree

3 files changed

+81
-51
lines changed

3 files changed

+81
-51
lines changed

src/main/java/oracle/kubernetes/operator/Main.java

Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@
2525
import io.kubernetes.client.models.V1Service;
2626
import io.kubernetes.client.models.V1ServiceList;
2727
import io.kubernetes.client.models.V1Status;
28-
import io.kubernetes.client.models.V1beta1CustomResourceDefinition;
29-
import io.kubernetes.client.models.V1beta1CustomResourceDefinitionNames;
30-
import io.kubernetes.client.models.V1beta1CustomResourceDefinitionSpec;
3128
import io.kubernetes.client.models.V1beta1Ingress;
3229
import io.kubernetes.client.models.V1beta1IngressList;
3330
import io.kubernetes.client.util.Watch;
@@ -37,6 +34,7 @@
3734
import oracle.kubernetes.operator.domain.model.oracle.kubernetes.weblogic.domain.v1.DomainList;
3835
import oracle.kubernetes.operator.domain.model.oracle.kubernetes.weblogic.domain.v1.DomainSpec;
3936
import oracle.kubernetes.operator.domain.model.oracle.kubernetes.weblogic.domain.v1.ServerStartup;
37+
import oracle.kubernetes.operator.helpers.CRDHelper;
4038
import oracle.kubernetes.operator.helpers.CallBuilder;
4139
import oracle.kubernetes.operator.helpers.ClientHelper;
4240
import oracle.kubernetes.operator.helpers.ClientHolder;
@@ -152,7 +150,7 @@ public static void main(String[] args) {
152150
startRestServer(principal, targetNamespaces);
153151

154152
// create the Custom Resource Definitions if they are not already there
155-
checkAndCreateCustomResourceDefinition(client);
153+
CRDHelper.checkAndCreateCustomResourceDefinition(client);
156154

157155
try {
158156
HealthCheckHelper healthCheck = new HealthCheckHelper(client, namespace, targetNamespaces);
@@ -353,50 +351,6 @@ public void onThrowable(Packet packet, Throwable throwable) {
353351
// -----------------------------------------------------------------------------
354352

355353

356-
private static void checkAndCreateCustomResourceDefinition(ClientHolder client) {
357-
LOGGER.entering();
358-
359-
V1beta1CustomResourceDefinition crd = new V1beta1CustomResourceDefinition();
360-
crd.setApiVersion("apiextensions.k8s.io/v1beta1");
361-
crd.setKind("CustomResourceDefinition");
362-
V1ObjectMeta om = new V1ObjectMeta();
363-
om.setName("domains.weblogic.oracle");
364-
crd.setMetadata(om);
365-
V1beta1CustomResourceDefinitionSpec crds = new V1beta1CustomResourceDefinitionSpec();
366-
crds.setGroup("weblogic.oracle");
367-
crds.setVersion("v1");
368-
crds.setScope("Namespaced");
369-
V1beta1CustomResourceDefinitionNames crdn = new V1beta1CustomResourceDefinitionNames();
370-
crdn.setPlural("domains");
371-
crdn.setSingular("domain");
372-
crdn.setKind("Domain");
373-
crdn.setShortNames(Collections.singletonList("dom"));
374-
crds.setNames(crdn);
375-
crd.setSpec(crds);
376-
377-
V1beta1CustomResourceDefinition existingCRD = null;
378-
try {
379-
380-
existingCRD = client.callBuilder().readCustomResourceDefinition(
381-
crd.getMetadata().getName());
382-
383-
} catch (ApiException e) {
384-
if (e.getCode() != CallBuilder.NOT_FOUND) {
385-
LOGGER.warning(MessageKeys.EXCEPTION, e);
386-
}
387-
}
388-
389-
try {
390-
if (existingCRD == null) {
391-
LOGGER.info(MessageKeys.CREATING_CRD, crd.toString());
392-
client.callBuilder().createCustomResourceDefinition(crd);
393-
}
394-
} catch (ApiException e) {
395-
LOGGER.warning(MessageKeys.EXCEPTION, e);
396-
}
397-
LOGGER.exiting();
398-
}
399-
400354
private static void normalizeDomainSpec(DomainSpec spec) {
401355
// Normalize DomainSpec so that equals() will work correctly
402356
String imageName = spec.getImage();
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Copyright 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.helpers;
5+
6+
import java.util.Collections;
7+
8+
import io.kubernetes.client.ApiException;
9+
import io.kubernetes.client.models.V1ObjectMeta;
10+
import io.kubernetes.client.models.V1beta1CustomResourceDefinition;
11+
import io.kubernetes.client.models.V1beta1CustomResourceDefinitionNames;
12+
import io.kubernetes.client.models.V1beta1CustomResourceDefinitionSpec;
13+
import oracle.kubernetes.operator.logging.LoggingFacade;
14+
import oracle.kubernetes.operator.logging.LoggingFactory;
15+
import oracle.kubernetes.operator.logging.MessageKeys;
16+
17+
/**
18+
* Helper class to ensure Domain CRD is created
19+
*
20+
*/
21+
public class CRDHelper {
22+
private static final LoggingFacade LOGGER = LoggingFactory.getLogger("Operator", "Operator");
23+
24+
private CRDHelper() {}
25+
26+
/**
27+
* Validates and, if necessary, created domains.weblogic.oracle CRD. No need
28+
* to be async as operator can not begin processing until CRD exists
29+
* @param client Client holder
30+
*/
31+
public static void checkAndCreateCustomResourceDefinition(ClientHolder client) {
32+
LOGGER.entering();
33+
34+
V1beta1CustomResourceDefinition crd = new V1beta1CustomResourceDefinition();
35+
crd.setApiVersion("apiextensions.k8s.io/v1beta1");
36+
crd.setKind("CustomResourceDefinition");
37+
V1ObjectMeta om = new V1ObjectMeta();
38+
om.setName("domains.weblogic.oracle");
39+
crd.setMetadata(om);
40+
V1beta1CustomResourceDefinitionSpec crds = new V1beta1CustomResourceDefinitionSpec();
41+
crds.setGroup("weblogic.oracle");
42+
crds.setVersion("v1");
43+
crds.setScope("Namespaced");
44+
V1beta1CustomResourceDefinitionNames crdn = new V1beta1CustomResourceDefinitionNames();
45+
crdn.setPlural("domains");
46+
crdn.setSingular("domain");
47+
crdn.setKind("Domain");
48+
crdn.setShortNames(Collections.singletonList("dom"));
49+
crds.setNames(crdn);
50+
crd.setSpec(crds);
51+
52+
V1beta1CustomResourceDefinition existingCRD = null;
53+
try {
54+
55+
existingCRD = client.callBuilder().readCustomResourceDefinition(
56+
crd.getMetadata().getName());
57+
58+
} catch (ApiException e) {
59+
if (e.getCode() != CallBuilder.NOT_FOUND) {
60+
LOGGER.warning(MessageKeys.EXCEPTION, e);
61+
}
62+
}
63+
64+
try {
65+
if (existingCRD == null) {
66+
LOGGER.info(MessageKeys.CREATING_CRD, crd.toString());
67+
client.callBuilder().createCustomResourceDefinition(crd);
68+
}
69+
} catch (ApiException e) {
70+
LOGGER.warning(MessageKeys.EXCEPTION, e);
71+
}
72+
LOGGER.exiting();
73+
}
74+
}

src/test/java/oracle/kubernetes/operator/WatchTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55

66
import com.google.gson.reflect.TypeToken;
7-
import io.kubernetes.client.ApiException;
87
import io.kubernetes.client.models.V1Namespace;
98
import io.kubernetes.client.util.Watch;
109
import oracle.kubernetes.TestUtils;
1110
import oracle.kubernetes.operator.domain.model.oracle.kubernetes.weblogic.domain.v1.Domain;
11+
import oracle.kubernetes.operator.helpers.CRDHelper;
1212
import oracle.kubernetes.operator.helpers.ClientHelper;
1313
import oracle.kubernetes.operator.helpers.ClientHolder;
1414
import oracle.kubernetes.operator.logging.LoggingFactory;
@@ -23,8 +23,6 @@
2323
import java.util.logging.Handler;
2424
import java.util.logging.Logger;
2525

26-
import static junit.framework.TestCase.fail;
27-
2826
@NotThreadSafe
2927
public class WatchTest {
3028

@@ -47,6 +45,7 @@ public void testNamespaceWatch() throws Exception {
4745

4846
ClientHolder client = ClientHelper.getInstance().take();
4947

48+
@SuppressWarnings("unused")
5049
Watch<V1Namespace> watch = Watch.createWatch(
5150
client.getApiClient(),
5251
client.getCoreApiClient().listNamespaceCall(null,
@@ -71,6 +70,9 @@ public void testCustomResourceWatch() throws Exception {
7170
Assume.assumeTrue(TestUtils.isKubernetesAvailable());
7271

7372
ClientHolder client = ClientHelper.getInstance().take();
73+
CRDHelper.checkAndCreateCustomResourceDefinition(client);
74+
75+
@SuppressWarnings("unused")
7476
Watch<Domain> watch = Watch.createWatch(
7577
client.getApiClient(),
7678
client.getWeblogicApiClient().listWebLogicOracleV1DomainForAllNamespacesCall(null,

0 commit comments

Comments
 (0)