From 5809bb5bf55d39ab9041c3edae78eed3d26341ee Mon Sep 17 00:00:00 2001 From: Carolyn Rountree Date: Fri, 5 Aug 2022 17:23:31 -0500 Subject: [PATCH 1/2] add affinity to domain resource spec --- .../js/utils/k8s-domain-resource-generator.js | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/webui/src/js/utils/k8s-domain-resource-generator.js b/webui/src/js/utils/k8s-domain-resource-generator.js index cc3f69722..919020133 100644 --- a/webui/src/js/utils/k8s-domain-resource-generator.js +++ b/webui/src/js/utils/k8s-domain-resource-generator.js @@ -247,7 +247,22 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', } function getServerPodForCluster(cluster) { - return _getServerPod(getJavaOptionsForCluster(cluster), getUserMemArgsForCluster(cluster), getKubernetesResourcesForCluster(cluster)); + const serverPod = {}; + const env = []; + addIfNotNull(env, 'JAVA_OPTIONS', getJavaOptionsForCluster(cluster)); + addIfNotNull(env, 'USER_MEM_ARGS', getUserMemArgsForCluster(cluster)); + if (env.length) { + serverPod.env = env; + } + + const resources = getKubernetesResourcesForCluster(cluster); + if (resources) { + serverPod.resources = resources; + } + + serverPod.affinity = _getAffinityForServerPod(100); + + return Object.keys(serverPod).length > 0 ? serverPod : null; } function _getServerPod(javaOptions, userMemArgs, resources) { @@ -262,6 +277,7 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', if (resources) { serverPod.resources = resources; } + return Object.keys(serverPod).length > 0 ? serverPod : null; } @@ -353,6 +369,21 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', return foundValue ? resources : null; } + function _getAffinityForServerPod(weight) { + const podAffinityTerm = {}; + podAffinityTerm.labelSelector = {}; + const keyObject = {'key': 'weblogic.cluster.name', 'operator':'In', 'values':['$(CLUSTER_NAME)']}; + podAffinityTerm.labelSelector.matchExpressions = [keyObject]; + podAffinityTerm.topologyKey = 'kubernetes.io/hostname'; + const podObject = {'weight': weight, podAffinityTerm}; + + const preferredDuringSchedulingIgnoredDuringExecution = [podObject]; + const preferred = {preferredDuringSchedulingIgnoredDuringExecution}; + return {'podAntiAffinity': preferred}; + } + return K8sDomainResourceGenerator; } + + ); From 1c48c721c987fae877aa24f22c87b363993cfab6 Mon Sep 17 00:00:00 2001 From: Carolyn Rountree Date: Mon, 8 Aug 2022 15:32:21 -0500 Subject: [PATCH 2/2] rework code per suggestions --- .../js/utils/k8s-domain-resource-generator.js | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/webui/src/js/utils/k8s-domain-resource-generator.js b/webui/src/js/utils/k8s-domain-resource-generator.js index 919020133..68c161346 100644 --- a/webui/src/js/utils/k8s-domain-resource-generator.js +++ b/webui/src/js/utils/k8s-domain-resource-generator.js @@ -247,21 +247,13 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', } function getServerPodForCluster(cluster) { - const serverPod = {}; - const env = []; - addIfNotNull(env, 'JAVA_OPTIONS', getJavaOptionsForCluster(cluster)); - addIfNotNull(env, 'USER_MEM_ARGS', getUserMemArgsForCluster(cluster)); - if (env.length) { - serverPod.env = env; - } + const serverPod = _getServerPod(getJavaOptionsForCluster(cluster), getUserMemArgsForCluster(cluster), getKubernetesResourcesForCluster(cluster)) || {}; - const resources = getKubernetesResourcesForCluster(cluster); - if (resources) { - serverPod.resources = resources; + const affinity = _getAffinityForServerPod(100); + if (affinity) { + serverPod.affinity = affinity; } - serverPod.affinity = _getAffinityForServerPod(100); - return Object.keys(serverPod).length > 0 ? serverPod : null; } @@ -370,16 +362,23 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', } function _getAffinityForServerPod(weight) { - const podAffinityTerm = {}; - podAffinityTerm.labelSelector = {}; - const keyObject = {'key': 'weblogic.cluster.name', 'operator':'In', 'values':['$(CLUSTER_NAME)']}; - podAffinityTerm.labelSelector.matchExpressions = [keyObject]; - podAffinityTerm.topologyKey = 'kubernetes.io/hostname'; - const podObject = {'weight': weight, podAffinityTerm}; - - const preferredDuringSchedulingIgnoredDuringExecution = [podObject]; - const preferred = {preferredDuringSchedulingIgnoredDuringExecution}; - return {'podAntiAffinity': preferred}; + return { + podAntiAffinity: { + preferredDuringSchedulingIgnoredDuringExecution: [{ + weight: weight, + podAffinityTerm: { + topologyKey: 'kubernetes.io/hostname', + labelSelector: { + matchExpressions: [{ + key: 'weblogic.clusterName', + operator: 'In', + values: ['$(CLUSTER_NAME)'] + }] + } + } + }] + } + }; } return K8sDomainResourceGenerator;