Skip to content

Commit 8afd42b

Browse files
committed
Merge branch 'xc-114350' into 'main'
create Service account only if it does not exist See merge request weblogic-cloud/weblogic-kubernetes-operator!4542
2 parents 54e54ac + bc4d01d commit 8afd42b

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItUsabilityOperatorHelmChart.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020, 2023, Oracle and/or its affiliates.
1+
// Copyright (c) 2020, 2024, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes;
@@ -311,6 +311,7 @@ void testDeleteOperatorButNotDomain() {
311311
+ "after the operator was deleted");
312312
assertTrue(checkManagedServerConfiguration(domain1Namespace, domain1Uid));
313313
} finally {
314+
cleanUpSA(opNamespace);
314315
if (!isDomain1Running) {
315316
cleanUpDomainSecrets(domain1Namespace);
316317
}

integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/ServiceAccount.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
// Copyright (c) 2020, 2021, Oracle and/or its affiliates.
1+
// Copyright (c) 2020, 2024, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes.actions.impl;
55

66
import io.kubernetes.client.openapi.ApiException;
77
import io.kubernetes.client.openapi.models.V1ServiceAccount;
8+
import io.kubernetes.client.openapi.models.V1ServiceAccountList;
89
import oracle.weblogic.kubernetes.actions.impl.primitive.Kubernetes;
910

1011
public class ServiceAccount {
@@ -31,4 +32,22 @@ public static boolean create(V1ServiceAccount serviceAccount) throws ApiExceptio
3132
public static boolean delete(String name, String namespace) {
3233
return Kubernetes.deleteServiceAccount(name, namespace);
3334
}
35+
36+
/**
37+
* Verify whether the service account exists in the namespace.
38+
* @param name name of the service account
39+
* @param namespace namespace where the service account exits
40+
* @return true if the service account exists, false otherwise
41+
*/
42+
public static boolean serviceAccountExists(String name, String namespace) {
43+
V1ServiceAccountList sas = Kubernetes.listServiceAccounts(namespace);
44+
if (sas != null) {
45+
for (V1ServiceAccount sa : sas.getItems()) {
46+
if (sa.getMetadata().getName().equals(name)) {
47+
return true;
48+
}
49+
}
50+
}
51+
return false;
52+
}
3453
}

integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/OperatorUtils.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021, 2023, Oracle and/or its affiliates.
1+
// Copyright (c) 2021, 2024, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes.utils;
@@ -11,6 +11,7 @@
1111
import io.kubernetes.client.openapi.models.V1Pod;
1212
import io.kubernetes.client.openapi.models.V1ServiceAccount;
1313
import oracle.weblogic.kubernetes.actions.impl.OperatorParams;
14+
import oracle.weblogic.kubernetes.actions.impl.ServiceAccount;
1415
import oracle.weblogic.kubernetes.actions.impl.primitive.Command;
1516
import oracle.weblogic.kubernetes.actions.impl.primitive.CommandParams;
1617
import oracle.weblogic.kubernetes.actions.impl.primitive.HelmParams;
@@ -441,12 +442,14 @@ public static OperatorParams installAndVerifyOperator(String opNamespace,
441442
LoggingFacade logger = getLogger();
442443

443444
// Create a service account for the unique opNamespace
444-
logger.info("Creating service account");
445-
assertDoesNotThrow(() -> createServiceAccount(new V1ServiceAccount()
446-
.metadata(new V1ObjectMeta()
447-
.namespace(opNamespace)
448-
.name(opServiceAccount))));
449-
logger.info("Created service account: {0}", opServiceAccount);
445+
if (!ServiceAccount.serviceAccountExists(opServiceAccount, opNamespace)) {
446+
logger.info("Creating service account");
447+
assertDoesNotThrow(() -> createServiceAccount(new V1ServiceAccount()
448+
.metadata(new V1ObjectMeta()
449+
.namespace(opNamespace)
450+
.name(opServiceAccount))));
451+
logger.info("Created service account: {0}", opServiceAccount);
452+
}
450453

451454
operatorImage = getOperatorImageName();
452455
if (ARM) {
@@ -647,13 +650,14 @@ public static OperatorParams installAndVerifyOperator(String opNamespace,
647650
LoggingFacade logger = getLogger();
648651

649652
// Create a service account for the unique opNamespace
650-
logger.info("Creating service account");
651-
assertDoesNotThrow(() -> createServiceAccount(new V1ServiceAccount()
652-
.metadata(new V1ObjectMeta()
653-
.namespace(opNamespace)
654-
.name(opServiceAccount))));
655-
logger.info("Created service account: {0}", opServiceAccount);
656-
653+
if (!ServiceAccount.serviceAccountExists(opServiceAccount, opNamespace)) {
654+
logger.info("Creating service account");
655+
assertDoesNotThrow(() -> createServiceAccount(new V1ServiceAccount()
656+
.metadata(new V1ObjectMeta()
657+
.namespace(opNamespace)
658+
.name(opServiceAccount))));
659+
logger.info("Created service account: {0}", opServiceAccount);
660+
}
657661

658662
// get operator image name
659663
String operatorImage = getOperatorImageName();

0 commit comments

Comments
 (0)