Adding dynamic namespace support 40/134040/2 1.12.1
authorwaqas.ikram <waqas.ikram@est.tech>
Thu, 6 Apr 2023 16:51:04 +0000 (17:51 +0100)
committerwaqas.ikram <waqas.ikram@est.tech>
Thu, 6 Apr 2023 16:53:26 +0000 (17:53 +0100)
Change-Id: I62ea7d94043bc2f3617e8f19b4f84a9d58c20b6b
Issue-ID: SO-4097
Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
29 files changed:
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-api/src/main/java/org/onap/so/cnfm/lcm/model/utils/AdditionalParamsConstants.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/CamundaVariableNameConstants.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/helm/HelmClient.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/helm/HelmClientImpl.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/kubernetes/KubernetesClient.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/kubernetes/KubernetesClientImpl.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/kubernetes/KubernetesResourceStatusCheck.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/CreateAsTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/InstantiateAsTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/InstantiateDeploymentItemRequest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/InstantiateDeploymentItemTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/MonitorHelmInstallStatusTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/MonitorHelmUnInstallStatusTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/TerminateAsTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/TerminateDeploymentItemRequest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/TerminateDeploymentItemTask.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/resources/InstantiateDeploymentItem.bpmn
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/main/resources/TerminateDeploymentItem.bpmn
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/helm/HelmClientTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/extclients/kubernetes/KubernetesClientTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/CreateAsTaskTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/DeleteAsTaskTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/InstantiateAsTaskTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/MockedHelmClient.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-bpmn-flows/src/test/java/org/onap/so/cnfm/lcm/bpmn/flows/tasks/TerminateAsTaskTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-database-service/src/main/java/org/onap/so/cnfm/lcm/database/beans/AsInst.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-database-service/src/main/resources/db/migration/V1_1__create_cnfm_tables.sql
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-database-service/src/test/java/org/onap/so/cnfm/lcm/database/service/DatabaseServiceProviderTest.java
so-cnfm/so-cnfm-lcm/so-cnfm-lcm-service/src/test/java/org/onap/so/cnfm/lcm/rest/AsLcmOperationOccurrencesControllerTest.java

index ce0e615..99bef60 100644 (file)
@@ -33,6 +33,8 @@ public class AdditionalParamsConstants {
     public static final String TENANT_ID_PARAM_KEY = "tenantId";
 
     public static final String RESOURCE_ID_KEY = "resourceId";
+    public static final String NAMESPACE_KEY = "namespace";
+
 
     private AdditionalParamsConstants() {}
 
index 47c5795..1a90fb5 100644 (file)
@@ -31,6 +31,7 @@ public class CamundaVariableNameConstants {
     public static final String KUBE_KINDS_PARAM_NAME = "kubeKinds";
     public static final String KIND_PARAM_NAME = "kind";
     public static final String RELEASE_NAME_PARAM_NAME = "releaseName";
+    public static final String NAMESPACE_PARAM_NAME = "namespace";
     public static final String JOB_ID_PARAM_NAME = "jobId";
     public static final String JOB_BUSINESS_KEY_PARAM_NAME = "jobBusinessKey";
     public static final String CREATE_AS_REQUEST_PARAM_NAME = "createAsRequest";
index db5d092..67ce91b 100644 (file)
@@ -32,17 +32,64 @@ import org.onap.so.cnfm.lcm.bpmn.flows.exceptions.HelmClientExecuteException;
  */
 public interface HelmClient {
 
-    void runHelmChartInstallWithDryRunFlag(final String releaseName, final Path kubeconfig, final Path helmChart)
-            throws HelmClientExecuteException;
+    /**
+     * Execute <a href="https://helm.sh/docs/helm/helm_install/">helm install</a> with dry run flag
+     *
+     * @param namespace Namespace scope for this request
+     * @param releaseName Name of the release given to helm install
+     * @param kubeconfig kubernetes configuration file path
+     * @param helmChart path of the helm chart to install
+     *
+     * @throws HelmClientExecuteException when exception occurs while executing command
+     */
+    void runHelmChartInstallWithDryRunFlag(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart) throws HelmClientExecuteException;
 
-    List<String> getKubeKinds(final String releaseName, final Path kubeconfig, final Path helmChart)
-            throws HelmClientExecuteException;
+    /**
+     * Retrieve kube kinds using <a href="https://helm.sh/docs/helm/helm_template/">helm template</a> with dry run and
+     * skip-tests flag
+     * 
+     * 
+     * @param namespace Namespace scope for this request
+     * @param releaseName Name of the release given to helm install
+     * @param kubeconfig kubernetes configuration file path
+     * @param helmChart path of the helm chart to install
+     *
+     * @return Resources for helmChart as a List of strings
+     */
+    List<String> getKubeKinds(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart) throws HelmClientExecuteException;
 
-    List<String> getKubeKindsUsingManifestCommand(final String releaseName, final Path kubeconfig)
-            throws HelmClientExecuteException;
+    /**
+     * Retrieve kube kinds using <a href="https://helm.sh/docs/helm/helm_get_manifest/">helm get manifest</a>
+     * 
+     * @param namespace Namespace scope for this request
+     * @param releaseName Name of the release given to helm install
+     * @param kubeconfig kubernetes configuration file path
+     * @return
+     * @throws HelmClientExecuteException
+     */
+    List<String> getKubeKindsUsingManifestCommand(final String namespace, final String releaseName,
+            final Path kubeconfig) throws HelmClientExecuteException;
 
-    void installHelmChart(final String releaseName, final Path kubeconfig, final Path helmChart,
+    /**
+     * @param namespace Namespace scope for this request
+     * @param releaseName Name of the release given to helm install
+     * @param kubeconfig kubernetes configuration file path
+     * @param helmChart path of the helm chart to install
+     * @param lifeCycleParams override values in a chart
+     * @throws HelmClientExecuteException
+     */
+    void installHelmChart(final String namespace, final String releaseName, final Path kubeconfig, final Path helmChart,
             final Map<String, String> lifeCycleParams) throws HelmClientExecuteException;
 
-    void unInstallHelmChart(final String releaseName, final Path kubeConfigFilePath) throws HelmClientExecuteException;
+    /**
+     * 
+     * @param namespace Namespace scope for this request
+     * @param releaseName Name of the release given to helm install
+     * @param kubeConfigFilePath kubernetes configuration file path
+     * @throws HelmClientExecuteException
+     */
+    void unInstallHelmChart(final String namespace, final String releaseName, final Path kubeConfigFilePath)
+            throws HelmClientExecuteException;
 }
index b43bda6..e53a7c6 100644 (file)
@@ -46,7 +46,6 @@ import org.springframework.stereotype.Service;
 
 @Service
 public class HelmClientImpl implements HelmClient {
-    private static final String DEFAULT_NAMESPACE = "default";
     private static final String KIND_KEY = "kind: ";
     private static final String ANY_UNICODE_NEWLINE = "\\R";
     private static final Logger logger = LoggerFactory.getLogger(HelmClientImpl.class);
@@ -60,37 +59,23 @@ public class HelmClientImpl implements HelmClient {
     private static final Set<String> SUPPORTED_KINDS = Set.of(KIND_JOB, KIND_POD, KIND_SERVICE, KIND_DEPLOYMENT,
             KIND_REPLICA_SET, KIND_DAEMON_SET, KIND_STATEFUL_SET);
 
-    /**
-     * Execute a helm install dry run
-     *
-     * @param releaseName Name of the release given to helm install
-     * @param kubeconfig kubernetes configuration file path
-     * @param helmChart path of the helm chart to install
-     *
-     * @throws HelmClientExecuteException when exception occurs on executing command
-     */
     @Override
-    public void runHelmChartInstallWithDryRunFlag(final String releaseName, final Path kubeconfig, final Path helmChart)
-            throws HelmClientExecuteException {
-        logger.info("Running dry-run on {} to cluster {} using releaseName: {}", helmChart, kubeconfig, releaseName);
-        final ProcessBuilder processBuilder = prepareDryRunCommand(releaseName, kubeconfig, helmChart);
+    public void runHelmChartInstallWithDryRunFlag(final String namespace, final String releaseName,
+            final Path kubeconfig, final Path helmChart) throws HelmClientExecuteException {
+        logger.info("Running dry-run on {} to cluster {} using namespace: {}, releaseName: {}", helmChart, kubeconfig,
+                namespace, releaseName);
+        final ProcessBuilder processBuilder = prepareDryRunCommand(namespace, releaseName, kubeconfig, helmChart);
         executeCommand(processBuilder);
         logger.info("Successfully ran dry for Chart {}", helmChart);
 
     }
 
-    /**
-     *
-     * @param releaseName Name of the release given to helm install
-     * @param kubeconfig kubernetes configuration file path
-     * @param helmChart path of the helm chart to install
-     *
-     * @return Resources for helmChart as a List of strings
-     */
     @Override
-    public List<String> getKubeKinds(final String releaseName, final Path kubeconfig, final Path helmChart) {
-        logger.info("Retrieving kinds from chart {} using releaseName {}", helmChart, releaseName);
-        final ProcessBuilder processBuilder = prepareKubeKindCommand(releaseName, kubeconfig, helmChart);
+    public List<String> getKubeKinds(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart) {
+        logger.info("Retrieving kinds from chart {} using namespace: {}, releaseName {}", helmChart, namespace,
+                releaseName);
+        final ProcessBuilder processBuilder = prepareKubeKindCommand(namespace, releaseName, kubeconfig, helmChart);
         final String response = executeCommand(processBuilder);
         if (StringUtils.isEmpty(response)) {
             logger.warn("Response is empty: {}", response);
@@ -104,11 +89,12 @@ public class HelmClientImpl implements HelmClient {
 
 
     @Override
-    public List<String> getKubeKindsUsingManifestCommand(final String releaseName, final Path kubeConfig)
-            throws HelmClientExecuteException {
-        logger.info("Retrieving kinds from helm release history using releaseName {}", releaseName);
+    public List<String> getKubeKindsUsingManifestCommand(final String namespace, final String releaseName,
+            final Path kubeConfig) throws HelmClientExecuteException {
+        logger.info("Retrieving kinds from helm release history using namespace: {}, releaseName {}", namespace,
+                releaseName);
 
-        final ProcessBuilder processBuilder = prepareGetKubeKindCommand(releaseName, kubeConfig);
+        final ProcessBuilder processBuilder = prepareGetKubeKindCommand(namespace, releaseName, kubeConfig);
         final String response = executeCommand(processBuilder);
         if (StringUtils.isEmpty(response)) {
             logger.warn("Response is empty: {}", response);
@@ -120,35 +106,22 @@ public class HelmClientImpl implements HelmClient {
         return kinds;
     }
 
-
-    /**
-     *
-     * @param releaseName Name of the release given to helm install
-     * @param kubeconfig kubernetes configuration file path
-     * @param helmChart path of the helm chart to install
-     * @throws HelmClientExecuteException when exception occurs on executing command
-     */
     @Override
-    public void installHelmChart(final String releaseName, final Path kubeconfig, final Path helmChart,
-            final Map<String, String> lifeCycleParams) throws HelmClientExecuteException {
+    public void installHelmChart(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart, final Map<String, String> lifeCycleParams) throws HelmClientExecuteException {
         logger.info("Installing {} to cluster {} using releaseName: {}", helmChart, kubeconfig, releaseName);
         final ProcessBuilder processBuilder =
-                prepareInstallCommand(releaseName, kubeconfig, helmChart, lifeCycleParams);
+                prepareInstallCommand(namespace, releaseName, kubeconfig, helmChart, lifeCycleParams);
         executeCommand(processBuilder);
         logger.info("Chart {} installed successfully", helmChart);
 
     }
 
-    /**
-     * @param releaseName Name of the release given to helm install
-     * @param kubeConfigFilePath kubernetes configuration file path
-     * @throws HelmClientExecuteException when exception occurs on executing command
-     */
     @Override
-    public void unInstallHelmChart(final String releaseName, final Path kubeConfigFilePath)
+    public void unInstallHelmChart(final String namespace, final String releaseName, final Path kubeConfigFilePath)
             throws HelmClientExecuteException {
         logger.info("uninstalling the release {} from cluster {}", releaseName, kubeConfigFilePath);
-        final ProcessBuilder processBuilder = prepareUnInstallCommand(releaseName, kubeConfigFilePath);
+        final ProcessBuilder processBuilder = prepareUnInstallCommand(namespace, releaseName, kubeConfigFilePath);
         final String commandResponse = executeCommand(processBuilder);
         if (!StringUtils.isEmpty(commandResponse) && commandResponse.contains("Release not loaded")) {
             throw new HelmClientExecuteException(
@@ -158,15 +131,16 @@ public class HelmClientImpl implements HelmClient {
         logger.info("Release {} uninstalled successfully", releaseName);
     }
 
-    private ProcessBuilder prepareDryRunCommand(final String releaseName, final Path kubeconfig, final Path helmChart) {
-        final List<String> helmArguments = List.of("helm", "install", releaseName, "-n", DEFAULT_NAMESPACE,
+    private ProcessBuilder prepareDryRunCommand(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart) {
+        final List<String> helmArguments = List.of("helm", "install", releaseName, "-n", namespace,
                 helmChart.toString(), "--dry-run", "--kubeconfig", kubeconfig.toString());
         return getProcessBuilder().command(helmArguments);
     }
 
-    private ProcessBuilder prepareInstallCommand(final String releaseName, final Path kubeconfig, final Path helmChart,
-            final Map<String, String> lifeCycleParams) {
-        final List<String> commands = new ArrayList<>(List.of("helm", "install", releaseName, "-n", DEFAULT_NAMESPACE,
+    private ProcessBuilder prepareInstallCommand(final String namespace, final String releaseName,
+            final Path kubeconfig, final Path helmChart, final Map<String, String> lifeCycleParams) {
+        final List<String> commands = new ArrayList<>(List.of("helm", "install", releaseName, "-n", namespace,
                 helmChart.toString(), "--kubeconfig", kubeconfig.toString()));
 
         if (lifeCycleParams != null && !lifeCycleParams.isEmpty()) {
@@ -190,25 +164,26 @@ public class HelmClientImpl implements HelmClient {
         }
     }
 
-    private ProcessBuilder prepareUnInstallCommand(final String releaseName, final Path kubeConfig) {
+    private ProcessBuilder prepareUnInstallCommand(final String namespace, final String releaseName,
+            final Path kubeConfig) {
         logger.debug("Will remove tis log after checking ubeconfig path: {}", kubeConfig.toFile().getName());
-        final List<String> helmArguments = new ArrayList<>(List.of("helm", "uninstall", releaseName, "-n",
-                DEFAULT_NAMESPACE, "--kubeconfig", kubeConfig.toString()));
+        final List<String> helmArguments = new ArrayList<>(
+                List.of("helm", "uninstall", releaseName, "-n", namespace, "--kubeconfig", kubeConfig.toString()));
         return getProcessBuilder().command(helmArguments);
     }
 
-    private ProcessBuilder prepareKubeKindCommand(final String releaseName, final Path kubeconfig,
-            final Path helmChart) {
-        final List<String> commands =
-                List.of("helm", "template", releaseName, "-n", DEFAULT_NAMESPACE, helmChart.toString(), "--dry-run",
-                        "--kubeconfig", kubeconfig.toString(), "--skip-tests", "| grep kind | uniq");
+    private ProcessBuilder prepareKubeKindCommand(final String namespace, final String releaseName,
+            final Path kubeconfig, final Path helmChart) {
+        final List<String> commands = List.of("helm", "template", releaseName, "-n", namespace, helmChart.toString(),
+                "--dry-run", "--kubeconfig", kubeconfig.toString(), "--skip-tests", "| grep kind | uniq");
         final List<String> helmArguments = List.of("sh", "-c", toString(commands));
         return getProcessBuilder().command(helmArguments);
     }
 
-    private ProcessBuilder prepareGetKubeKindCommand(final String releaseName, final Path kubeconfig) {
-        final List<String> commands = List.of("helm", "get", "manifest", releaseName, "-n", DEFAULT_NAMESPACE,
-                "--kubeconfig", kubeconfig.toString(), "| grep kind | uniq");
+    private ProcessBuilder prepareGetKubeKindCommand(final String namespace, final String releaseName,
+            final Path kubeconfig) {
+        final List<String> commands = List.of("helm", "get", "manifest", releaseName, "-n", namespace, "--kubeconfig",
+                kubeconfig.toString(), "| grep kind | uniq");
         final List<String> helmArguments = List.of("sh", "-c", toString(commands));
         return getProcessBuilder().command(helmArguments);
     }
index d4a3425..5efeaef 100644 (file)
@@ -30,26 +30,25 @@ import io.kubernetes.client.openapi.ApiClient;
  */
 public interface KubernetesClient extends KubernetesResourceStatusCheck {
 
-    List<KubernetesResource> getJobResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
+    List<KubernetesResource> getJobResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
-    List<KubernetesResource> getDeploymentResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
+    List<KubernetesResource> getDeploymentResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
-    List<KubernetesResource> getPodResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
+    List<KubernetesResource> getPodResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
-    List<KubernetesResource> getServiceResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
+    List<KubernetesResource> getServiceResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
-    List<KubernetesResource> getReplicaSetResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
+    List<KubernetesResource> getReplicaSetResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
-    List<KubernetesResource> getDaemonSetResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
-
-    List<KubernetesResource> getStatefulSetResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException;
+    List<KubernetesResource> getDaemonSetResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
+    List<KubernetesResource> getStatefulSetResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException;
 
 }
index 5018091..2f4e1b9 100644 (file)
@@ -114,13 +114,14 @@ public class KubernetesClientImpl implements KubernetesClient {
     private Integer timeoutSeconds;
 
     @Override
-    public boolean isJobReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isJobReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if Job is ready using labelSelector: {}", labelSelector);
+
+        logger.debug("Will check if Job is ready using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final BatchV1Api batchV1Api = new BatchV1Api(apiClient);
-            final Call call = batchV1Api.listJobForAllNamespacesCall(null, null, null, labelSelector, null, null, null,
-                    null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = batchV1Api.listNamespacedJobCall(namespace, null, null, null, null, labelSelector, null,
+                    null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1Job, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1Job>>() {}.getType());
@@ -134,9 +135,9 @@ public class KubernetesClientImpl implements KubernetesClient {
                     logger.debug("JobList is ready ...");
                     return true;
                 }
+
                 logger.debug("JobList is not yet Ready: {}", jobNotReadyList);
                 return false;
-
             }
 
             logger.warn("No items found in jobList : {}", readyResources);
@@ -147,18 +148,20 @@ public class KubernetesClientImpl implements KubernetesClient {
         } catch (final RuntimeException runtimeException) {
             handleRuntimeException(KIND_JOB, labelSelector, runtimeException);
         }
+
         logger.debug("Returning false as Job is not ready ...");
         return false;
     }
 
     @Override
-    public boolean isPodReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isPodReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if Pod is ready using labelSelector: {}", labelSelector);
+
+        logger.debug("Will check if Pod is ready using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final CoreV1Api coreV1Api = new CoreV1Api(apiClient);
-            final Call call = coreV1Api.listPodForAllNamespacesCall(null, null, null, labelSelector, null, null, null,
-                    null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = coreV1Api.listNamespacedPodCall(namespace, null, null, null, null, labelSelector, null,
+                    null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1Pod, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1Pod>>() {}.getType());
@@ -172,9 +175,9 @@ public class KubernetesClientImpl implements KubernetesClient {
                     logger.debug("PodList is ready ...");
                     return true;
                 }
+
                 logger.debug("PodList is not yet Ready: {}", podNotReadyList);
                 return false;
-
             }
 
             logger.warn("No items found in podList : {}", readyResources);
@@ -187,18 +190,18 @@ public class KubernetesClientImpl implements KubernetesClient {
         }
 
         logger.debug("Returning false as Pod is not ready ...");
-
         return false;
     }
 
     @Override
-    public boolean isServiceReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isServiceReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if Service is ready using labelSelector: {}", labelSelector);
+
+        logger.debug("Will check if Service is ready using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final CoreV1Api api = new CoreV1Api(apiClient);
-            final Call call = api.listServiceForAllNamespacesCall(null, null, null, labelSelector, null, null, null,
-                    null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = api.listNamespacedServiceCall(namespace, null, null, null, null, labelSelector, null,
+                    null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1Service, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1Service>>() {}.getType());
@@ -212,9 +215,9 @@ public class KubernetesClientImpl implements KubernetesClient {
                     logger.debug("ServiceList is ready ...");
                     return true;
                 }
+
                 logger.debug("ServiceList is not yet Ready: {}", serviceNotReadyList);
                 return false;
-
             }
 
             logger.warn("No items found in serviceList : {}", readyResources);
@@ -231,14 +234,15 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isDeploymentReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isDeploymentReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if Deployment is ready using labelSelector: {}", labelSelector);
 
+        logger.debug("Will check if Deployment is ready using namespace: {}, labelSelector: {}", namespace,
+                labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
-            final Call call = appsV1Api.listDeploymentForAllNamespacesCall(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = appsV1Api.listNamespacedDeploymentCall(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1Deployment, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1Deployment>>() {}.getType());
@@ -252,9 +256,9 @@ public class KubernetesClientImpl implements KubernetesClient {
                     logger.debug("DeploymentList is ready ...");
                     return true;
                 }
+
                 logger.debug("DeploymentList is not yet Ready: {}", deploymentNotReadyList);
                 return false;
-
             }
 
             logger.warn("No items found in deploymentList : {}", readyResources);
@@ -271,13 +275,15 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isReplicaSetReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isReplicaSetReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if ReplicaSet is ready using labelSelector: {}", labelSelector);
+
+        logger.debug("Will check if ReplicaSet is ready using namespace: {}, labelSelector: {}", namespace,
+                labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
-            final Call call = appsV1Api.listReplicaSetForAllNamespacesCall(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = appsV1Api.listNamespacedReplicaSetCall(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1ReplicaSet, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1ReplicaSet>>() {}.getType());
@@ -291,9 +297,9 @@ public class KubernetesClientImpl implements KubernetesClient {
                     logger.debug("ReplicaSetList is ready ...");
                     return true;
                 }
+
                 logger.debug("ReplicaSetList is not yet Ready: {}", replicaSet);
                 return false;
-
             }
 
             logger.warn("No items found in replicaSetList : {}", readyResources);
@@ -304,18 +310,21 @@ public class KubernetesClientImpl implements KubernetesClient {
         } catch (final RuntimeException runtimeException) {
             handleRuntimeException(KIND_REPLICA_SET, labelSelector, runtimeException);
         }
+
         logger.debug("Returning false as ReplicaSet is not ready ...");
         return false;
     }
 
     @Override
-    public boolean isDaemonSetReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isDaemonSetReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if DaemonSet is ready using labelSelector: {}", labelSelector);
+
+        logger.debug("Will check if DaemonSet is ready using namespace: {}, labelSelector: {}", namespace,
+                labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
-            final Call call = appsV1Api.listDaemonSetForAllNamespacesCall(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = appsV1Api.listNamespacedDaemonSetCall(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1DaemonSet, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1DaemonSet>>() {}.getType());
@@ -329,9 +338,9 @@ public class KubernetesClientImpl implements KubernetesClient {
                     logger.debug("DaemonSetList is ready ...");
                     return true;
                 }
+
                 logger.debug("DaemonSetList is not yet Ready: {}", daemonSetNotReadyList);
                 return false;
-
             }
 
             logger.warn("No items found in daemonSetList : {}", readyResources);
@@ -342,18 +351,21 @@ public class KubernetesClientImpl implements KubernetesClient {
         } catch (final RuntimeException runtimeException) {
             handleRuntimeException(KIND_DAEMON_SET, labelSelector, runtimeException);
         }
+
         logger.debug("Returning false as DaemonSet is not ready ...");
         return false;
     }
 
     @Override
-    public boolean isStatefulSetReady(final ApiClient apiClient, final String labelSelector)
+    public boolean isStatefulSetReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Will check if StatefulSet is ready using labelSelector: {}", labelSelector);
+
+        logger.debug("Will check if StatefulSet is ready using namespace: {}, labelSelector: {}", namespace,
+                labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
-            final Call call = appsV1Api.listStatefulSetForAllNamespacesCall(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, ENABLE_WATCH, null);
+            final Call call = appsV1Api.listNamespacedStatefulSetCall(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, ENABLE_WATCH, null);
 
             final Map<V1StatefulSet, String> readyResources =
                     getReadyResources(apiClient, call, new TypeToken<Response<V1StatefulSet>>() {}.getType());
@@ -385,13 +397,14 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isServiceDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isServiceDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is Service deleted by using labelSelector: {}", labelSelector);
+
+        logger.debug("Check is Service deleted by using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final CoreV1Api coreV1Api = new CoreV1Api(apiClient);
-            final V1ServiceList v1ServiceList = coreV1Api.listServiceForAllNamespaces(null, null, null, labelSelector,
-                    null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1ServiceList v1ServiceList = coreV1Api.listNamespacedService(namespace, null, null, null, null,
+                    labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list service for all Namespaces: {}", v1ServiceList);
             return v1ServiceList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -404,13 +417,14 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isPodDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isPodDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is Pod deleted by using labelSelector: {}", labelSelector);
+
+        logger.debug("Check is Pod deleted by using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final CoreV1Api coreV1Api = new CoreV1Api(apiClient);
-            final V1PodList v1PodList = coreV1Api.listPodForAllNamespaces(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1PodList v1PodList = coreV1Api.listNamespacedPod(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list Pod for all Namespaces: {}", v1PodList);
             return v1PodList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -423,13 +437,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isJobDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isJobDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is Job deleted by using labelSelector: {}", labelSelector);
+        logger.debug("Check is Job deleted by using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final BatchV1Api batchV1Api = new BatchV1Api(apiClient);
-            final V1JobList v1JobList = batchV1Api.listJobForAllNamespaces(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1JobList v1JobList = batchV1Api.listNamespacedJob(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list Job for all Namespaces: {}", v1JobList);
             return v1JobList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -442,13 +456,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isDeploymentDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isDeploymentDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is Deployment deleted by using labelSelector: {}", labelSelector);
+        logger.debug("Check is Deployment deleted by using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api batchV1Api = new AppsV1Api(apiClient);
-            final V1DeploymentList v1DeploymentList = batchV1Api.listDeploymentForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1DeploymentList v1DeploymentList = batchV1Api.listNamespacedDeployment(namespace, null, null, null,
+                    null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list Deployment for all Namespaces: {}", v1DeploymentList);
             return v1DeploymentList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -461,13 +475,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isReplicaSetDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isReplicaSetDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is ReplicaSet deleted by using labelSelector: {}", labelSelector);
+        logger.debug("Check is ReplicaSet deleted by using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api batchV1Api = new AppsV1Api(apiClient);
-            final V1ReplicaSetList v1ReplicaSetList = batchV1Api.listReplicaSetForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1ReplicaSetList v1ReplicaSetList = batchV1Api.listNamespacedReplicaSet(namespace, null, null, null,
+                    null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list ReplicaSet for all Namespaces: {}", v1ReplicaSetList);
             return v1ReplicaSetList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -480,13 +494,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isDaemonSetDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isDaemonSetDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is DaemonSet deleted by using labelSelector: {}", labelSelector);
+        logger.debug("Check is DaemonSet deleted by using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api batchV1Api = new AppsV1Api(apiClient);
-            final V1DaemonSetList v1DaemonSetList = batchV1Api.listDaemonSetForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1DaemonSetList v1DaemonSetList = batchV1Api.listNamespacedDaemonSet(namespace, null, null, null,
+                    null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list DaemonSet for all Namespaces: {}", v1DaemonSetList);
             return v1DaemonSetList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -499,13 +513,14 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public boolean isStatefulSetDeleted(final ApiClient apiClient, final String labelSelector)
+    public boolean isStatefulSetDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException {
-        logger.debug("Check is StatefulSet deleted by using labelSelector: {}", labelSelector);
+        logger.debug("Check is StatefulSet deleted by using namespace: {}, labelSelector: {}", namespace,
+                labelSelector);
         try {
             final AppsV1Api batchV1Api = new AppsV1Api(apiClient);
-            final V1StatefulSetList v1StatefulSetList = batchV1Api.listStatefulSetForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1StatefulSetList v1StatefulSetList = batchV1Api.listNamespacedStatefulSet(namespace, null, null,
+                    null, null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
             logger.debug("Response from list StatefulSet for all Namespaces: {}", v1StatefulSetList);
             return v1StatefulSetList.getItems().isEmpty();
         } catch (final ApiException exception) {
@@ -519,13 +534,13 @@ public class KubernetesClientImpl implements KubernetesClient {
 
 
     @Override
-    public List<KubernetesResource> getJobResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving Jobs using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getJobResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving Jobs using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final BatchV1Api batchV1Api = new BatchV1Api(apiClient);
-            final V1JobList jobList = batchV1Api.listJobForAllNamespaces(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1JobList jobList = batchV1Api.listNamespacedJob(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received Jobs: {}", jobList);
             return getKubernetesResource(jobList);
@@ -543,13 +558,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public List<KubernetesResource> getDeploymentResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving Deployment using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getDeploymentResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving Deployment using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
-            final V1DeploymentList deploymentList = appsV1Api.listDeploymentForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1DeploymentList deploymentList = appsV1Api.listNamespacedDeployment(namespace, null, null, null,
+                    null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received Deployments: {}", deploymentList);
             return getKubernetesResource(deploymentList);
@@ -567,13 +582,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public List<KubernetesResource> getPodResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving Pod using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getPodResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving Pod using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final CoreV1Api coreV1Api = new CoreV1Api(apiClient);
-            final V1PodList podList = coreV1Api.listPodForAllNamespaces(null, null, null, labelSelector, null, null,
-                    null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1PodList podList = coreV1Api.listNamespacedPod(namespace, null, null, null, null, labelSelector,
+                    null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received Pods: {}", podList);
             return getKubernetesResource(podList);
@@ -591,13 +606,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public List<KubernetesResource> getServiceResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving Service using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getServiceResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving Service using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final CoreV1Api coreV1Api = new CoreV1Api(apiClient);
-            final V1ServiceList serviceList = coreV1Api.listServiceForAllNamespaces(null, null, null, labelSelector,
-                    null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1ServiceList serviceList = coreV1Api.listNamespacedService(namespace, null, null, null, null,
+                    labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received Services: {}", serviceList);
             return getKubernetesResource(serviceList);
@@ -615,13 +630,13 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public List<KubernetesResource> getReplicaSetResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving ReplicaSet using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getReplicaSetResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving ReplicaSet using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
-            final V1ReplicaSetList replicaSetList = appsV1Api.listReplicaSetForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1ReplicaSetList replicaSetList = appsV1Api.listNamespacedReplicaSet(namespace, null, null, null,
+                    null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received ReplicaSets: {}", replicaSetList);
             return getKubernetesResource(replicaSetList);
@@ -639,14 +654,14 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public List<KubernetesResource> getDaemonSetResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving DaemonSet using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getDaemonSetResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving DaemonSet using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
 
-            final V1DaemonSetList daemonSetList = appsV1Api.listDaemonSetForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1DaemonSetList daemonSetList = appsV1Api.listNamespacedDaemonSet(namespace, null, null, null, null,
+                    labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received DaemonSets: {}", daemonSetList);
             return getKubernetesResource(daemonSetList);
@@ -664,14 +679,14 @@ public class KubernetesClientImpl implements KubernetesClient {
     }
 
     @Override
-    public List<KubernetesResource> getStatefulSetResources(final ApiClient apiClient, final String labelSelector)
-            throws KubernetesRequestProcessingException {
-        logger.debug("Retrieving StatefulSet using labelSelector: {}", labelSelector);
+    public List<KubernetesResource> getStatefulSetResources(final ApiClient apiClient, final String namespace,
+            final String labelSelector) throws KubernetesRequestProcessingException {
+        logger.debug("Retrieving StatefulSet using namespace: {}, labelSelector: {}", namespace, labelSelector);
         try {
             final AppsV1Api appsV1Api = new AppsV1Api(apiClient);
 
-            final V1StatefulSetList statefulSetList = appsV1Api.listStatefulSetForAllNamespaces(null, null, null,
-                    labelSelector, null, null, null, null, timeoutSeconds, DISABLE_WATCH);
+            final V1StatefulSetList statefulSetList = appsV1Api.listNamespacedStatefulSet(namespace, null, null, null,
+                    null, labelSelector, null, null, null, timeoutSeconds, DISABLE_WATCH);
 
             logger.debug("Received StatefulSets: {}", statefulSetList);
             return getKubernetesResource(statefulSetList);
index b32fd65..a75957a 100644 (file)
@@ -29,45 +29,45 @@ import org.onap.so.cnfm.lcm.bpmn.flows.exceptions.KubernetesRequestProcessingExc
  *
  */
 public interface KubernetesResourceStatusCheck {
-    boolean isJobReady(final ApiClient apiClient, final String labelSelector)
+    boolean isJobReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isPodReady(final ApiClient apiClient, final String labelSelector)
+    boolean isPodReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isServiceReady(final ApiClient apiClient, final String labelSelector)
+    boolean isServiceReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isDeploymentReady(final ApiClient apiClient, final String labelSelector)
+    boolean isDeploymentReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isReplicaSetReady(final ApiClient apiClient, final String labelSelector)
+    boolean isReplicaSetReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isDaemonSetReady(final ApiClient apiClient, final String labelSelector)
+    boolean isDaemonSetReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isStatefulSetReady(final ApiClient apiClient, final String labelSelector)
+    boolean isStatefulSetReady(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isServiceDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isServiceDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isPodDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isPodDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isJobDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isJobDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isDeploymentDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isDeploymentDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isReplicaSetDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isReplicaSetDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isDaemonSetDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isDaemonSetDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 
-    boolean isStatefulSetDeleted(final ApiClient apiClient, final String labelSelector)
+    boolean isStatefulSetDeleted(final ApiClient apiClient, final String namespace, final String labelSelector)
             throws KubernetesRequestProcessingException;
 }
index 6e2b489..f63ffb4 100644 (file)
@@ -31,18 +31,18 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.extclients.sdc.SdcCsarPropertiesCo
 import static org.onap.so.cnfm.lcm.bpmn.flows.extclients.sdc.SdcCsarPropertiesConstants.PROVIDER_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.CLOUD_OWNER_PARAM_KEY;
 import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.CLOUD_REGION_PARAM_KEY;
+import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.NAMESPACE_KEY;
 import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.RESOURCE_ID_KEY;
 import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.SERVICE_INSTANCE_ID_PARAM_KEY;
 import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.SERVICE_INSTANCE_NAME_PARAM_KEY;
 import static org.onap.so.cnfm.lcm.model.utils.AdditionalParamsConstants.TENANT_ID_PARAM_KEY;
-import java.util.Arrays;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.UUID;
-import java.time.LocalDateTime;
-
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.so.cnfm.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
@@ -51,9 +51,9 @@ import org.onap.so.cnfm.lcm.bpmn.flows.extclients.sdc.SdcCsarPackageParser;
 import org.onap.so.cnfm.lcm.bpmn.flows.extclients.sdc.SdcPackageProvider;
 import org.onap.so.cnfm.lcm.database.beans.AsDeploymentItem;
 import org.onap.so.cnfm.lcm.database.beans.AsInst;
+import org.onap.so.cnfm.lcm.database.beans.AsLifecycleParam;
 import org.onap.so.cnfm.lcm.database.beans.JobStatusEnum;
 import org.onap.so.cnfm.lcm.database.beans.State;
-import org.onap.so.cnfm.lcm.database.beans.AsLifecycleParam;
 import org.onap.so.cnfm.lcm.database.service.DatabaseServiceProvider;
 import org.onap.so.cnfm.lcm.model.AsInstance;
 import org.onap.so.cnfm.lcm.model.AsInstance.InstantiationStateEnum;
@@ -73,6 +73,7 @@ public class CreateAsTask extends AbstractServiceTask {
     private static final String ASD_PROPERTIES_PARAM_NAME = "asdProperties";
     private static final String DOES_AS_PACKAGE_EXISTS_PARAM_NAME = "doesAsPackageExists";
     private static final String DOES_AS_INSTANCE_EXISTS_PARAM_NAME = "doesAsInstanceExists";
+    private static final String DEFAULT_NAMESPACE = "default";
     private static final Logger logger = LoggerFactory.getLogger(CreateAsTask.class);
 
     private final AaiServiceProvider aaiServiceProvider;
@@ -180,6 +181,7 @@ public class CreateAsTask extends AbstractServiceTask {
             final String cloudRegion = getMandatoryValue(additionalParams, CLOUD_REGION_PARAM_KEY, execution);
             final String tenantId = getMandatoryValue(additionalParams, TENANT_ID_PARAM_KEY, execution);
             final String resourceId = (String) additionalParams.get(RESOURCE_ID_KEY);
+            final String namespace = getNamespace((String) additionalParams.get(NAMESPACE_KEY));
 
             final String serviceInstanceName =
                     getMandatoryValue(additionalParams, SERVICE_INSTANCE_NAME_PARAM_KEY, execution);
@@ -202,7 +204,8 @@ public class CreateAsTask extends AbstractServiceTask {
                     .asApplicationVersion(getParamValue(asdProperties, APPLICATION_VERSION_PARAM_NAME))
                     .description(createAsRequest.getAsInstanceDescription()).serviceInstanceId(serviceInstanceId)
                     .serviceInstanceName(serviceInstanceName).cloudOwner(cloudOwner).cloudRegion(cloudRegion)
-                    .tenantId(tenantId).status(State.NOT_INSTANTIATED).statusUpdatedTime(LocalDateTime.now());
+                    .tenantId(tenantId).namespace(namespace).status(State.NOT_INSTANTIATED)
+                    .statusUpdatedTime(LocalDateTime.now());
 
             @SuppressWarnings("unchecked")
             final List<DeploymentItem> deploymentItems =
@@ -327,6 +330,15 @@ public class CreateAsTask extends AbstractServiceTask {
         return asInstId;
     }
 
+    private String getNamespace(final String namespace) {
+        if (namespace != null && !namespace.isBlank()) {
+            logger.debug("Namespace found in additionalParams namespace: {}", namespace);
+            return namespace;
+        }
+        logger.debug("No namespace found in additionalParams, will use namespace: {}", DEFAULT_NAMESPACE);
+        return DEFAULT_NAMESPACE;
+    }
+
     private String getParamValue(final Map<String, Object> properties, final String key) {
         final Object object = properties.get(key);
         if (object != null) {
index 9fa3100..e378d57 100644 (file)
@@ -215,6 +215,8 @@ public class InstantiateAsTask extends AbstractServiceTask {
         setJobStatus(execution, IN_PROGRESS, "Preparing InstantiateDeploymentItemRequest requests");
 
         final String asInstId = (String) execution.getVariable(AS_INSTANCE_ID_PARAM_NAME);
+        final AsInst asInst = getAsInst(execution, asInstId);
+
         final InstantiateAsRequest instantiateAsRequest =
                 (InstantiateAsRequest) execution.getVariable(INSTANTIATE_AS_REQUEST_PARAM_NAME);
 
@@ -254,7 +256,8 @@ public class InstantiateAsTask extends AbstractServiceTask {
             requests.add(new InstantiateDeploymentItemRequest().asInstId(asInstId)
                     .asDeploymentItemInstId(asDeploymentItemInstId).asDeploymentItemName(asDeploymentItem.getName())
                     .helmArtifactFilePath(artifactFilePath).deploymentOrder(asDeploymentItem.getDeploymentOrder())
-                    .kubeConfigFile(kubeConfigFile).lifeCycleParameters(lifeCycleParams).releaseName((releaseName)));
+                    .kubeConfigFile(kubeConfigFile).lifeCycleParameters(lifeCycleParams).releaseName((releaseName))
+                    .namespace(asInst.getNamespace()));
 
         });
 
index b7b8598..5eeef53 100644 (file)
@@ -41,6 +41,7 @@ public class InstantiateDeploymentItemRequest implements Serializable, Comparabl
     private Integer deploymentOrder;
     private Map<String, String> lifeCycleParameters;
     private String releaseName;
+    private String namespace;
 
     private static final Comparator<Integer> COMPARATOR = Comparator.nullsFirst(Integer::compare);
 
@@ -148,10 +149,23 @@ public class InstantiateDeploymentItemRequest implements Serializable, Comparabl
         return this;
     }
 
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(final String namespace) {
+        this.namespace = namespace;
+    }
+
+    public InstantiateDeploymentItemRequest namespace(final String namespace) {
+        this.namespace = namespace;
+        return this;
+    }
+
     @Override
     public int hashCode() {
         return Objects.hash(asInstId, asDeploymentItemInstId, asDeploymentItemName, helmArtifactFilePath,
-                deploymentOrder, kubeConfigFile, lifeCycleParameters, releaseName);
+                deploymentOrder, kubeConfigFile, lifeCycleParameters, releaseName, namespace);
     }
 
     @Override
@@ -170,7 +184,7 @@ public class InstantiateDeploymentItemRequest implements Serializable, Comparabl
                     && Objects.equals(deploymentOrder, other.deploymentOrder)
                     && Objects.equals(kubeConfigFile, other.kubeConfigFile)
                     && Objects.equals(lifeCycleParameters, other.lifeCycleParameters)
-                    && Objects.equals(releaseName, other.releaseName);
+                    && Objects.equals(releaseName, other.releaseName) && Objects.equals(namespace, other.namespace);
         }
         return false;
     }
@@ -187,6 +201,7 @@ public class InstantiateDeploymentItemRequest implements Serializable, Comparabl
         sb.append("    kubeConfigFile: ").append(toIndentedString(kubeConfigFile)).append("\n");
         sb.append("    LifeCycleParameters: ").append(toIndentedString(lifeCycleParameters)).append("\n");
         sb.append("    releaseName: ").append(toIndentedString(releaseName)).append("\n");
+        sb.append("    namespace: ").append(toIndentedString(namespace)).append("\n");
         sb.append("}");
         return sb.toString();
     }
index 4017946..b8b4893 100644 (file)
@@ -25,6 +25,7 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.AS_IN
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_CONFIG_FILE_PATH_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_KINDS_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_KINDS_RESULT_PARAM_NAME;
+import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.NAMESPACE_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.RELEASE_NAME_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_DAEMON_SET;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_DEPLOYMENT;
@@ -33,8 +34,6 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_POD;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_REPLICA_SET;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_SERVICE;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_STATEFUL_SET;
-
-import io.kubernetes.client.openapi.ApiClient;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -59,6 +58,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import io.kubernetes.client.openapi.ApiClient;
 
 /**
  *
@@ -161,13 +161,14 @@ public class InstantiateDeploymentItemTask extends AbstractServiceTask {
                 (InstantiateDeploymentItemRequest) execution.getVariable(INSTANTIATE_REQUEST_PARAM_NAME);
 
         final String releaseName = request.getReleaseName();
+        final String namespace = request.getNamespace();
 
         try {
             final Path kubeConfigFilePath = Paths.get(request.getKubeConfigFile());
             final Path helmChartPath = Paths.get(request.getHelmArtifactFilePath());
 
             logger.debug("Running helm install with dry run flag");
-            helmClient.runHelmChartInstallWithDryRunFlag(releaseName, kubeConfigFilePath, helmChartPath);
+            helmClient.runHelmChartInstallWithDryRunFlag(namespace, releaseName, kubeConfigFilePath, helmChartPath);
         } catch (final Exception exception) {
             final String message = "Unable to run helm install with dry run flag";
             logger.error(message, exception);
@@ -187,7 +188,10 @@ public class InstantiateDeploymentItemTask extends AbstractServiceTask {
             final Path kubeConfigFilePath = Paths.get(request.getKubeConfigFile());
             final Path helmChartPath = Paths.get(request.getHelmArtifactFilePath());
             final String releaseName = request.getReleaseName();
-            final List<String> kubeKinds = helmClient.getKubeKinds(releaseName, kubeConfigFilePath, helmChartPath);
+            final String namespace = request.getNamespace();
+
+            final List<String> kubeKinds =
+                    helmClient.getKubeKinds(namespace, releaseName, kubeConfigFilePath, helmChartPath);
 
             if (kubeKinds.isEmpty()) {
                 abortOperation(execution,
@@ -218,14 +222,18 @@ public class InstantiateDeploymentItemTask extends AbstractServiceTask {
 
         final InstantiateDeploymentItemRequest request =
                 (InstantiateDeploymentItemRequest) execution.getVariable(INSTANTIATE_REQUEST_PARAM_NAME);
+
+        final String namespace = request.getNamespace();
         final String releaseName = request.getReleaseName();
+
         execution.setVariable(RELEASE_NAME_PARAM_NAME, releaseName);
+        execution.setVariable(NAMESPACE_PARAM_NAME, namespace);
         try {
             final Path kubeConfigFilePath = Paths.get(request.getKubeConfigFile());
             final Path helmChartPath = Paths.get(request.getHelmArtifactFilePath());
             final Map<String, String> lifeCycleParams = request.getLifeCycleParameters();
 
-            helmClient.installHelmChart(releaseName, kubeConfigFilePath, helmChartPath, lifeCycleParams);
+            helmClient.installHelmChart(namespace, releaseName, kubeConfigFilePath, helmChartPath, lifeCycleParams);
         } catch (final Exception exception) {
             final String message = "Unable to install helm chart: " + request.getHelmArtifactFilePath()
                     + " using kube-config file: " + request.getKubeConfigFile();
@@ -263,6 +271,7 @@ public class InstantiateDeploymentItemTask extends AbstractServiceTask {
 
     public void retrieveKubernetesResources(final DelegateExecution execution) {
         logger.info("Executing retrieveKubernetesResources");
+        final String namespace = (String) execution.getVariable(NAMESPACE_PARAM_NAME);
         final String releaseName = (String) execution.getVariable(RELEASE_NAME_PARAM_NAME);
         final String kubeConfigFile = (String) execution.getVariable(KUBE_CONFIG_FILE_PATH_PARAM_NAME);
         @SuppressWarnings("unchecked")
@@ -279,25 +288,29 @@ public class InstantiateDeploymentItemTask extends AbstractServiceTask {
                             labelSelector);
                     switch (kind) {
                         case KIND_JOB:
-                            resources.addAll(kubernetesClient.getJobResources(apiClient, labelSelector));
+                            resources.addAll(kubernetesClient.getJobResources(apiClient, namespace, labelSelector));
                             break;
                         case KIND_POD:
-                            resources.addAll(kubernetesClient.getPodResources(apiClient, labelSelector));
+                            resources.addAll(kubernetesClient.getPodResources(apiClient, namespace, labelSelector));
                             break;
                         case KIND_SERVICE:
-                            resources.addAll(kubernetesClient.getServiceResources(apiClient, labelSelector));
+                            resources.addAll(kubernetesClient.getServiceResources(apiClient, namespace, labelSelector));
                             break;
                         case KIND_DEPLOYMENT:
-                            resources.addAll(kubernetesClient.getDeploymentResources(apiClient, labelSelector));
+                            resources.addAll(
+                                    kubernetesClient.getDeploymentResources(apiClient, namespace, labelSelector));
                             break;
                         case KIND_REPLICA_SET:
-                            resources.addAll(kubernetesClient.getReplicaSetResources(apiClient, labelSelector));
+                            resources.addAll(
+                                    kubernetesClient.getReplicaSetResources(apiClient, namespace, labelSelector));
                             break;
                         case KIND_DAEMON_SET:
-                            resources.addAll(kubernetesClient.getDaemonSetResources(apiClient, labelSelector));
+                            resources.addAll(
+                                    kubernetesClient.getDaemonSetResources(apiClient, namespace, labelSelector));
                             break;
                         case KIND_STATEFUL_SET:
-                            resources.addAll(kubernetesClient.getStatefulSetResources(apiClient, labelSelector));
+                            resources.addAll(
+                                    kubernetesClient.getStatefulSetResources(apiClient, namespace, labelSelector));
                             break;
                         default:
                             logger.warn("Unknown resource type {} found skipping it ...", kind);
index 4462829..7156d4d 100644 (file)
@@ -24,8 +24,8 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.AS_DE
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KIND_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_CONFIG_FILE_PATH_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_KINDS_RESULT_PARAM_NAME;
+import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.NAMESPACE_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.RELEASE_NAME_PARAM_NAME;
-
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_DAEMON_SET;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_DEPLOYMENT;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_JOB;
@@ -33,8 +33,6 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_POD;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_REPLICA_SET;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_SERVICE;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_STATEFUL_SET;
-
-import io.kubernetes.client.openapi.ApiClient;
 import java.util.Map;
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.onap.so.cnfm.lcm.bpmn.flows.exceptions.KubernetesRequestTimeOut;
@@ -46,6 +44,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import io.kubernetes.client.openapi.ApiClient;
 
 
 /**
@@ -89,33 +88,35 @@ public class MonitorHelmInstallStatusTask extends AbstractServiceTask {
         logger.info("Executing isResourceReady ");
         final String kind = (String) execution.getVariable(KIND_PARAM_NAME);
         final String releaseName = (String) execution.getVariable(RELEASE_NAME_PARAM_NAME);
+        final String namespace = (String) execution.getVariable(NAMESPACE_PARAM_NAME);
         final String kubeConfigFile = (String) execution.getVariable(KUBE_CONFIG_FILE_PATH_PARAM_NAME);
         final String labelSelector = "app.kubernetes.io/instance=" + releaseName;
         try {
             final ApiClient apiClient = kubernetesClientProvider.getApiClient(kubeConfigFile);
             boolean isReady = false;
-            logger.debug("Will check if resource type: {} is ready using labelSelector: {}", kind, labelSelector);
+            logger.debug("Will check if resource type: {} is ready using namespace: {}, labelSelector: {}", kind,
+                    namespace, labelSelector);
             switch (kind) {
                 case KIND_JOB:
-                    isReady = kubernetesClient.isJobReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isJobReady(apiClient, namespace, labelSelector);
                     break;
                 case KIND_POD:
-                    isReady = kubernetesClient.isPodReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isPodReady(apiClient, namespace, labelSelector);
                     break;
                 case KIND_SERVICE:
-                    isReady = kubernetesClient.isServiceReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isServiceReady(apiClient, namespace, labelSelector);
                     break;
                 case KIND_DEPLOYMENT:
-                    isReady = kubernetesClient.isDeploymentReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isDeploymentReady(apiClient, namespace, labelSelector);
                     break;
                 case KIND_REPLICA_SET:
-                    isReady = kubernetesClient.isReplicaSetReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isReplicaSetReady(apiClient, namespace, labelSelector);
                     break;
                 case KIND_DAEMON_SET:
-                    isReady = kubernetesClient.isDaemonSetReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isDaemonSetReady(apiClient, namespace, labelSelector);
                     break;
                 case KIND_STATEFUL_SET:
-                    isReady = kubernetesClient.isStatefulSetReady(apiClient, labelSelector);
+                    isReady = kubernetesClient.isStatefulSetReady(apiClient, namespace, labelSelector);
                     break;
 
                 default:
index 3f2a1bd..5d2f41c 100644 (file)
@@ -24,8 +24,8 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.AS_DE
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KIND_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_CONFIG_FILE_PATH_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_KINDS_RESULT_PARAM_NAME;
+import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.NAMESPACE_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.RELEASE_NAME_PARAM_NAME;
-
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_DAEMON_SET;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_DEPLOYMENT;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_JOB;
@@ -33,8 +33,6 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_POD;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_REPLICA_SET;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_SERVICE;
 import static org.onap.so.cnfm.lcm.bpmn.flows.Constants.KIND_STATEFUL_SET;
-
-import io.kubernetes.client.openapi.ApiClient;
 import java.util.Map;
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.onap.so.cnfm.lcm.bpmn.flows.exceptions.KubernetesRequestTimeOut;
@@ -46,6 +44,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import io.kubernetes.client.openapi.ApiClient;
 
 /**
  * @author Raviteja Karumuri (raviteja.karumuri@est.tech)
@@ -84,6 +83,7 @@ public class MonitorHelmUnInstallStatusTask extends AbstractServiceTask {
     public void isResourceDeleted(final DelegateExecution execution) {
         logger.info("Executing isResourceDeleted ");
         final String kind = (String) execution.getVariable(KIND_PARAM_NAME);
+        final String namespace = (String) execution.getVariable(NAMESPACE_PARAM_NAME);
         final String releaseName = (String) execution.getVariable(RELEASE_NAME_PARAM_NAME);
         final String kubeConfigFile = (String) execution.getVariable(KUBE_CONFIG_FILE_PATH_PARAM_NAME);
         final String labelSelector = "app.kubernetes.io/instance=" + releaseName;
@@ -93,25 +93,25 @@ public class MonitorHelmUnInstallStatusTask extends AbstractServiceTask {
             logger.debug("Will check if resource type: {} is Deleted using labelSelector: {}", kind, labelSelector);
             switch (kind) {
                 case KIND_JOB:
-                    isDeleted = kubernetesClient.isJobDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isJobDeleted(apiClient, namespace, labelSelector);
                     break;
                 case KIND_POD:
-                    isDeleted = kubernetesClient.isPodDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isPodDeleted(apiClient, namespace, labelSelector);
                     break;
                 case KIND_SERVICE:
-                    isDeleted = kubernetesClient.isServiceDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isServiceDeleted(apiClient, namespace, labelSelector);
                     break;
                 case KIND_DEPLOYMENT:
-                    isDeleted = kubernetesClient.isDeploymentDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isDeploymentDeleted(apiClient, namespace, labelSelector);
                     break;
                 case KIND_REPLICA_SET:
-                    isDeleted = kubernetesClient.isReplicaSetDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isReplicaSetDeleted(apiClient, namespace, labelSelector);
                     break;
                 case KIND_DAEMON_SET:
-                    isDeleted = kubernetesClient.isDaemonSetDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isDaemonSetDeleted(apiClient, namespace, labelSelector);
                     break;
                 case KIND_STATEFUL_SET:
-                    isDeleted = kubernetesClient.isStatefulSetDeleted(apiClient, labelSelector);
+                    isDeleted = kubernetesClient.isStatefulSetDeleted(apiClient, namespace, labelSelector);
                     break;
 
                 default:
index 4ffcb2d..e863108 100644 (file)
@@ -132,6 +132,8 @@ public class TerminateAsTask extends AbstractServiceTask {
         final String asInstId = (String) execution.getVariable(AS_INSTANCE_ID_PARAM_NAME);
         final String kubeConfigFile = (String) execution.getVariable(KUBE_CONFIG_FILE_PARAM_NAME);
 
+        final AsInst asInst = getAsInst(execution, asInstId);
+
         final List<AsDeploymentItem> asDeploymentItems =
                 databaseServiceProvider.getAsDeploymentItemByAsInstId(asInstId);
 
@@ -147,6 +149,7 @@ public class TerminateAsTask extends AbstractServiceTask {
             terminatedeploymentitemrequest.setDeploymentOrder(asDeploymentItem.getDeploymentOrder());
             terminatedeploymentitemrequest.setKubeConfigFile(kubeConfigFile);
             terminatedeploymentitemrequest.setReleaseName(asDeploymentItem.getReleaseName());
+            terminatedeploymentitemrequest.setNamespace(asInst.getNamespace());
 
             requests.add(terminatedeploymentitemrequest);
 
index b4fb233..3ef3ebe 100644 (file)
@@ -40,6 +40,7 @@ public class TerminateDeploymentItemRequest implements Serializable, Comparable<
     private String kubeConfigFile;
     private Integer deploymentOrder;
     private String releaseName;
+    private String namespace;
 
     private static final Comparator<Integer> COMPARATOR = Comparator.nullsFirst(Integer::compare).reversed();
 
@@ -83,6 +84,14 @@ public class TerminateDeploymentItemRequest implements Serializable, Comparable<
         this.releaseName = releaseName;
     }
 
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(final String namespace) {
+        this.namespace = namespace;
+    }
+
     @Override
     public boolean equals(final Object obj) {
         if (obj instanceof TerminateDeploymentItemRequest) {
@@ -91,15 +100,14 @@ public class TerminateDeploymentItemRequest implements Serializable, Comparable<
                     && Objects.equals(asDeploymentItemInstId, that.asDeploymentItemInstId)
                     && Objects.equals(kubeConfigFile, that.kubeConfigFile)
                     && Objects.equals(deploymentOrder, that.deploymentOrder)
-                    && Objects.equals(releaseName, that.releaseName);
+                    && Objects.equals(releaseName, that.releaseName) && Objects.equals(namespace, that.namespace);
         }
         return false;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(asInstId, asDeploymentItemInstId, kubeConfigFile, deploymentOrder,
-                releaseName);
+        return Objects.hash(asInstId, asDeploymentItemInstId, kubeConfigFile, deploymentOrder, releaseName, namespace);
     }
 
     @Override
@@ -116,6 +124,7 @@ public class TerminateDeploymentItemRequest implements Serializable, Comparable<
         sb.append("    deploymentOrder: ").append(toIndentedString(deploymentOrder)).append("\n");
         sb.append("    kubeConfigFile: ").append(toIndentedString(kubeConfigFile)).append("\n");
         sb.append("    releaseName: ").append(toIndentedString(releaseName)).append("\n");
+        sb.append("    namespace: ").append(toIndentedString(namespace)).append("\n");
         sb.append("}");
         return sb.toString();
     }
index e78f8f0..6c1e187 100644 (file)
@@ -24,6 +24,7 @@ import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.AS_DE
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_CONFIG_FILE_PATH_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_KINDS_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.KUBE_KINDS_RESULT_PARAM_NAME;
+import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.NAMESPACE_PARAM_NAME;
 import static org.onap.so.cnfm.lcm.bpmn.flows.CamundaVariableNameConstants.RELEASE_NAME_PARAM_NAME;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -99,10 +100,11 @@ public class TerminateDeploymentItemTask extends AbstractServiceTask {
         final TerminateDeploymentItemRequest request =
                 (TerminateDeploymentItemRequest) execution.getVariable(TERMINATE_REQUEST_PARAM_NAME);
         final String releaseName = request.getReleaseName();
+        final String namespace = request.getNamespace();
 
         try {
             final Path kubeConfigFilePath = Paths.get(request.getKubeConfigFile());
-            helmClient.unInstallHelmChart(releaseName, kubeConfigFilePath);
+            helmClient.unInstallHelmChart(namespace, releaseName, kubeConfigFilePath);
         } catch (final Exception exception) {
             final String message = "Failed to uninstall helm chart: " + " using kube-config file: "
                     + request.getKubeConfigFile() + "for reason: " + exception.getMessage();
@@ -135,9 +137,11 @@ public class TerminateDeploymentItemTask extends AbstractServiceTask {
         final TerminateDeploymentItemRequest request =
                 (TerminateDeploymentItemRequest) execution.getVariable(TERMINATE_REQUEST_PARAM_NAME);
         final String releaseName = request.getReleaseName();
+        final String namespace = request.getNamespace();
         final Path kubeConfigFilePath = Paths.get(request.getKubeConfigFile());
         final Map<String, Boolean> kubeKindsMap = new HashMap<>();
-        final List<String> kinds = helmClient.getKubeKindsUsingManifestCommand(releaseName, kubeConfigFilePath);
+        final List<String> kinds =
+                helmClient.getKubeKindsUsingManifestCommand(namespace, releaseName, kubeConfigFilePath);
         if (kinds.isEmpty()) {
             abortOperation(execution,
                     "Unable to retrieve kinds from helm release history for releaseName: " + releaseName);
@@ -145,6 +149,7 @@ public class TerminateDeploymentItemTask extends AbstractServiceTask {
         kinds.forEach(kind -> kubeKindsMap.put(kind, false));
 
         execution.setVariable(RELEASE_NAME_PARAM_NAME, releaseName);
+        execution.setVariable(NAMESPACE_PARAM_NAME, namespace);
         execution.setVariable(KUBE_KINDS_RESULT_PARAM_NAME, kubeKindsMap);
         execution.setVariable(KUBE_KINDS_PARAM_NAME, kinds);
     }
index ede1341..9c20f22 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0do535p" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.12.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0do535p" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
   <bpmn:process id="InstantiateDeploymentItem" name="InstantiateDeploymentItem" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1">
       <bpmn:outgoing>Flow_0ghkhbe</bpmn:outgoing>
@@ -43,6 +43,7 @@
         <camunda:out source="kubeKindsResult" target="kubeKindsResult" />
         <camunda:in source="releaseName" target="releaseName" />
         <camunda:in source="kubeConfigFilePath" target="kubeConfigFilePath" />
+        <camunda:in source="namespace" target="namespace" />
       </bpmn:extensionElements>
       <bpmn:incoming>Flow_0drw9oj</bpmn:incoming>
       <bpmn:outgoing>Flow_01sku2c</bpmn:outgoing>
index d5b2073..5212a51 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1va0vwc" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.12.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1va0vwc" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
   <bpmn:process id="TerminateDeploymentItem" isExecutable="true">
     <bpmn:startEvent id="Terminate_deployment_start_event">
       <bpmn:outgoing>Flow_11nr4yl</bpmn:outgoing>
@@ -31,6 +31,7 @@
         <camunda:out source="kubeKindsResult" target="kubeKindsResult" />
         <camunda:in source="releaseName" target="releaseName" />
         <camunda:in source="kubeConfigFilePath" target="kubeConfigFilePath" />
+        <camunda:in source="namespace" target="namespace" />
       </bpmn:extensionElements>
       <bpmn:incoming>Flow_0hqyoqt</bpmn:incoming>
       <bpmn:outgoing>Flow_0tc7pv4</bpmn:outgoing>
   <bpmn:error id="Error_04z28em" name="AsWorkflowProcessingException" errorCode="INSTANTIATE_AS_WORKFLOW_PROCESSING_EXCEPTION" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="TerminateDeploymentItem">
+      <bpmndi:BPMNEdge id="Flow_1ey2cql_di" bpmnElement="Flow_1ey2cql">
+        <di:waypoint x="500" y="120" />
+        <di:waypoint x="570" y="120" />
+      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_044y6ke_di" bpmnElement="Flow_044y6ke">
         <di:waypoint x="1510" y="120" />
         <di:waypoint x="1590" y="120" />
         <di:waypoint x="188" y="120" />
         <di:waypoint x="240" y="120" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1ey2cql_di" bpmnElement="Flow_1ey2cql">
-        <di:waypoint x="500" y="120" />
-        <di:waypoint x="570" y="120" />
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="Event_0fwtu82_di" bpmnElement="Terminate_deployment_start_event">
         <dc:Bounds x="152" y="102" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0ij2kxo_di" bpmnElement="Activity_08pudch">
-        <dc:Bounds x="240" y="80" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0sj1npl_di" bpmnElement="Activity_0sj1npl">
         <dc:Bounds x="570" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1d6qam7_di" bpmnElement="Activity_1d6qam7">
-        <dc:Bounds x="400" y="80" width="100" height="80" />
+      <bpmndi:BPMNShape id="Activity_0ij2kxo_di" bpmnElement="Activity_08pudch">
+        <dc:Bounds x="240" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_11evvnx_di" bpmnElement="Event_11evvnx">
         <dc:Bounds x="1762" y="102" width="36" height="36" />
       <bpmndi:BPMNShape id="Activity_1jdaz83_di" bpmnElement="Activity_1jdaz83">
         <dc:Bounds x="1410" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_1d6qam7_di" bpmnElement="Activity_1d6qam7">
+        <dc:Bounds x="400" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_04fi7zc_di" bpmnElement="Event_04fi7zc">
         <dc:Bounds x="802" y="142" width="36" height="36" />
         <bpmndi:BPMNLabel>
index 1856dec..4f6de0f 100644 (file)
@@ -54,6 +54,7 @@ public class HelmClientTest {
     private static final Path DUMMY_HELM_CHART = Paths.get("/some/dir/dummy/dummy-chart.tgz");
     private static final Path DUMMY_KUBE_CONFIG = Paths.get("/some/dir/dummy/kube-config");
     private static final String DUMMY_RELEASE_NAME = "RELEASE_NAME";
+    private static final String DUMMY_NAME_SPACE = "default";
     private static final PropertiesToYamlConverter PROPERTIES_TO_YAML_CONVERTER = new PropertiesToYamlConverter();
     private static final List<String> EXPECTED_COMMANDS = Arrays.asList("helm", "install", DUMMY_RELEASE_NAME, "-n",
             "default", DUMMY_HELM_CHART.toString(), "--dry-run", "--kubeconfig", DUMMY_KUBE_CONFIG.toString());
@@ -87,7 +88,8 @@ public class HelmClientTest {
             final HelmClient objUnderTest =
                     new StubbedHelmClientImpl(PROPERTIES_TO_YAML_CONVERTER, mockedProcessBuilder);
 
-            objUnderTest.runHelmChartInstallWithDryRunFlag(DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG, DUMMY_HELM_CHART);
+            objUnderTest.runHelmChartInstallWithDryRunFlag(DUMMY_NAME_SPACE, DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG,
+                    DUMMY_HELM_CHART);
         }
 
     }
@@ -101,13 +103,14 @@ public class HelmClientTest {
             final ProcessBuilder mockedProcessBuilder = mock(ProcessBuilder.class);
 
             final ListMatcher expectedCommandsMatcher = new ListMatcher(EXPECTED_COMMANDS);
-            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream, FAILED_EXIT_CODE,
-                    EXPECTED_COMMANDS);
+            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream,
+                    FAILED_EXIT_CODE, EXPECTED_COMMANDS);
 
             final HelmClient objUnderTest =
                     new StubbedHelmClientImpl(PROPERTIES_TO_YAML_CONVERTER, mockedProcessBuilder);
 
-            objUnderTest.runHelmChartInstallWithDryRunFlag(DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG, DUMMY_HELM_CHART);
+            objUnderTest.runHelmChartInstallWithDryRunFlag(DUMMY_NAME_SPACE, DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG,
+                    DUMMY_HELM_CHART);
         }
     }
 
@@ -121,13 +124,13 @@ public class HelmClientTest {
             final ProcessBuilder mockedProcessBuilder = mock(ProcessBuilder.class);
 
             final ListMatcher expectedCommandsMatcher = new ListMatcher(EXPECTED_GET_KUBE_KINDS_COMMANDS);
-            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream, SUCCESSFUL_EXIT_CODE,
-                    EXPECTED_GET_KUBE_KINDS_COMMANDS);
+            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream,
+                    SUCCESSFUL_EXIT_CODE, EXPECTED_GET_KUBE_KINDS_COMMANDS);
 
             final HelmClient objUnderTest =
                     new StubbedHelmClientImpl(PROPERTIES_TO_YAML_CONVERTER, mockedProcessBuilder);
-            final List<String> actualKubeKinds =
-                    objUnderTest.getKubeKinds(DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG, DUMMY_HELM_CHART);
+            final List<String> actualKubeKinds = objUnderTest.getKubeKinds(DUMMY_NAME_SPACE, DUMMY_RELEASE_NAME,
+                    DUMMY_KUBE_CONFIG, DUMMY_HELM_CHART);
 
             assertEquals(Arrays.asList(Constants.KIND_REPLICA_SET), actualKubeKinds);
 
@@ -144,14 +147,14 @@ public class HelmClientTest {
             final ProcessBuilder mockedProcessBuilder = mock(ProcessBuilder.class);
 
             final ListMatcher expectedCommandsMatcher = new ListMatcher(EXPECTED_GET_KUBE_KINDS_MANIFEST_COMMANDS);
-            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream, SUCCESSFUL_EXIT_CODE,
-                    EXPECTED_GET_KUBE_KINDS_COMMANDS);
+            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream,
+                    SUCCESSFUL_EXIT_CODE, EXPECTED_GET_KUBE_KINDS_COMMANDS);
 
             final HelmClient objUnderTest =
                     new StubbedHelmClientImpl(PROPERTIES_TO_YAML_CONVERTER, mockedProcessBuilder);
 
-            final List<String> actualKubeKinds =
-                    objUnderTest.getKubeKindsUsingManifestCommand(DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG);
+            final List<String> actualKubeKinds = objUnderTest.getKubeKindsUsingManifestCommand(DUMMY_NAME_SPACE,
+                    DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG);
             assertEquals(Arrays.asList(Constants.KIND_DAEMON_SET), actualKubeKinds);
         }
     }
@@ -165,13 +168,13 @@ public class HelmClientTest {
             final ProcessBuilder mockedProcessBuilder = mock(ProcessBuilder.class);
 
             final ListMatcher expectedCommandsMatcher = new ListMatcher(EXPECTED_HELM_INSTALL_COMMANDS);
-            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream, SUCCESSFUL_EXIT_CODE,
-                    EXPECTED_HELM_INSTALL_COMMANDS);
+            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream,
+                    SUCCESSFUL_EXIT_CODE, EXPECTED_HELM_INSTALL_COMMANDS);
 
             final HelmClient objUnderTest =
                     new StubbedHelmClientImpl(PROPERTIES_TO_YAML_CONVERTER, mockedProcessBuilder);
 
-            objUnderTest.installHelmChart(DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG, DUMMY_HELM_CHART,
+            objUnderTest.installHelmChart(DUMMY_NAME_SPACE, DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG, DUMMY_HELM_CHART,
                     Collections.emptyMap());
         }
     }
@@ -185,13 +188,13 @@ public class HelmClientTest {
             final ProcessBuilder mockedProcessBuilder = mock(ProcessBuilder.class);
 
             final ListMatcher expectedCommandsMatcher = new ListMatcher(EXPECTED_HELM_UNINSTALL_COMMANDS);
-            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream, SUCCESSFUL_EXIT_CODE,
-                    EXPECTED_HELM_UNINSTALL_COMMANDS);
+            mockProcessBuilder(mockedProcessBuilder, expectedCommandsMatcher, errorStream, inputStream,
+                    SUCCESSFUL_EXIT_CODE, EXPECTED_HELM_UNINSTALL_COMMANDS);
 
             final HelmClient objUnderTest =
                     new StubbedHelmClientImpl(PROPERTIES_TO_YAML_CONVERTER, mockedProcessBuilder);
 
-            objUnderTest.unInstallHelmChart(DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG);
+            objUnderTest.unInstallHelmChart(DUMMY_NAME_SPACE, DUMMY_RELEASE_NAME, DUMMY_KUBE_CONFIG);
         }
     }
 
index 7d69436..8dcab50 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.so.cnfm.lcm.bpmn.flows.extclients.kubernetes;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
@@ -74,6 +75,7 @@ import okio.BufferedSource;
  */
 public class KubernetesClientTest {
 
+    private static final String DUMMY_NAME_SPACE = "default";
     private static final String DUMMY_LABEL_SELECTOR = "app.kubernetes.io/instance=test";
     private static final String BATCH_V1 = "batch/v1";
     private static final String V1 = "v1";
@@ -90,7 +92,7 @@ public class KubernetesClientTest {
     public void testIsJobReady_jobStatusComplete_true() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(getJobResponse("Complete", "Running"));
-        assertTrue(objUnderTest.isJobReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isJobReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -98,7 +100,7 @@ public class KubernetesClientTest {
     public void testIsJobReady_jobStatusFailed_throwException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(getJobResponse("Failed", "Not Running"));
-        objUnderTest.isJobReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isJobReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -106,7 +108,7 @@ public class KubernetesClientTest {
     public void testIsJobReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isJobReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isJobReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -114,7 +116,7 @@ public class KubernetesClientTest {
     public void testIsJobReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isJobReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isJobReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -122,7 +124,7 @@ public class KubernetesClientTest {
     public void testIsJobReady_jobStatusPending_false() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(getJobResponse("pending", "pending"));
-        assertFalse(objUnderTest.isJobReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isJobReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -131,7 +133,7 @@ public class KubernetesClientTest {
 
         final V1PodCondition condition = new V1PodCondition().type("Ready").status(Boolean.TRUE.toString());
         final ApiClient mockedApiClient = mockApiClientResponse(getPodResponse(condition));
-        assertTrue(objUnderTest.isPodReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isPodReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -140,7 +142,7 @@ public class KubernetesClientTest {
 
         final V1PodCondition condition = new V1PodCondition().type("Ready").status(Boolean.FALSE.toString());
         final ApiClient mockedApiClient = mockApiClientResponse(getPodResponse(condition));
-        assertFalse(objUnderTest.isPodReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isPodReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -148,7 +150,7 @@ public class KubernetesClientTest {
     public void testIsPodReady_missingCondition_false() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(getPodResponse(null));
-        assertFalse(objUnderTest.isPodReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isPodReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -156,7 +158,7 @@ public class KubernetesClientTest {
     public void testIsPodReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isPodReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isPodReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -164,14 +166,14 @@ public class KubernetesClientTest {
     public void testIsPodReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isPodReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isPodReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
     @Test
     public void testIsServiceReady_exists_true() throws ApiException, IOException {
         final ApiClient mockedApiClient = mockApiClientResponse(getServiceResponse());
-        assertTrue(objUnderTest.isServiceReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isServiceReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -179,7 +181,7 @@ public class KubernetesClientTest {
     public void testIsServiceReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isServiceReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isServiceReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -187,7 +189,7 @@ public class KubernetesClientTest {
     public void testIsServiceReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isServiceReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isServiceReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -199,7 +201,7 @@ public class KubernetesClientTest {
         final V1DeploymentSpec spec = new V1DeploymentSpec().replicas(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDeploymentResponse(status, spec));
-        assertTrue(objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -211,7 +213,7 @@ public class KubernetesClientTest {
         final V1DeploymentSpec spec = new V1DeploymentSpec().replicas(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDeploymentResponse(status, spec));
-        assertFalse(objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -221,7 +223,7 @@ public class KubernetesClientTest {
         final V1DeploymentSpec spec = new V1DeploymentSpec().replicas(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDeploymentResponse(null, spec));
-        assertFalse(objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -229,7 +231,7 @@ public class KubernetesClientTest {
     public void testIsDeploymentReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -237,7 +239,7 @@ public class KubernetesClientTest {
     public void testIsDeploymentReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isDeploymentReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -249,7 +251,7 @@ public class KubernetesClientTest {
         final V1ReplicaSetSpec spec = new V1ReplicaSetSpec().replicas(Integer.valueOf(1));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getReplicaSetResponse(status, spec));
-        assertTrue(objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -260,7 +262,7 @@ public class KubernetesClientTest {
         final V1ReplicaSetSpec spec = new V1ReplicaSetSpec().replicas(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getReplicaSetResponse(status, spec));
-        assertFalse(objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -270,7 +272,7 @@ public class KubernetesClientTest {
         final V1ReplicaSetStatus status = new V1ReplicaSetStatus().readyReplicas(Integer.valueOf(1));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getReplicaSetResponse(status, null));
-        assertFalse(objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -278,7 +280,7 @@ public class KubernetesClientTest {
     public void testIsReplicaSetReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -286,7 +288,7 @@ public class KubernetesClientTest {
     public void testIsReplicaSetReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isReplicaSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -301,7 +303,7 @@ public class KubernetesClientTest {
                 .numberReady(Integer.valueOf(2)).updatedNumberScheduled(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDaemonSetResponse(status, spec));
-        assertTrue(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
 
     }
@@ -314,7 +316,7 @@ public class KubernetesClientTest {
         final V1DaemonSetStatus status = new V1DaemonSetStatus();
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDaemonSetResponse(status, spec));
-        assertTrue(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -328,7 +330,7 @@ public class KubernetesClientTest {
 
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDaemonSetResponse(status, spec));
-        assertFalse(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -344,7 +346,7 @@ public class KubernetesClientTest {
                 .numberReady(Integer.valueOf(2)).updatedNumberScheduled(Integer.valueOf(6));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDaemonSetResponse(status, spec));
-        assertTrue(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
 
     }
@@ -361,7 +363,7 @@ public class KubernetesClientTest {
                 .numberReady(Integer.valueOf(1)).updatedNumberScheduled(Integer.valueOf(6));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getDaemonSetResponse(status, spec));
-        assertFalse(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -369,7 +371,7 @@ public class KubernetesClientTest {
     public void testIsDaemonSetReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -377,7 +379,7 @@ public class KubernetesClientTest {
     public void testIsDaemonSetReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isDaemonSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -393,7 +395,7 @@ public class KubernetesClientTest {
                 new V1StatefulSetStatus().updatedReplicas(Integer.valueOf(2)).readyReplicas(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getStatefulSetResponse(status, spec));
-        assertTrue(objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
 
     }
@@ -406,7 +408,7 @@ public class KubernetesClientTest {
         final V1StatefulSetStatus status = new V1StatefulSetStatus();
 
         final ApiClient mockedApiClient = mockApiClientResponse(getStatefulSetResponse(status, spec));
-        assertTrue(objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertTrue(objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
 
     }
 
@@ -420,14 +422,14 @@ public class KubernetesClientTest {
         final V1StatefulSetStatus status = new V1StatefulSetStatus().updatedReplicas(Integer.valueOf(2));
 
         final ApiClient mockedApiClient = mockApiClientResponse(getStatefulSetResponse(status, spec));
-        assertFalse(objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR));
+        assertFalse(objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR));
     }
 
     @Test(expected = KubernetesRequestProcessingException.class)
     public void testIsStatefulSetReady_apiExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(ApiException.class);
-        objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -435,7 +437,7 @@ public class KubernetesClientTest {
     public void testIsStatefulSetReady_RuntimeExceptionThrown_throwsException() throws ApiException, IOException {
 
         final ApiClient mockedApiClient = mockApiClientResponse(RuntimeException.class);
-        objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_LABEL_SELECTOR);
+        objUnderTest.isStatefulSetReady(mockedApiClient, DUMMY_NAME_SPACE, DUMMY_LABEL_SELECTOR);
 
     }
 
@@ -512,6 +514,7 @@ public class KubernetesClientTest {
         final BufferedSource mockedBufferedSource = mock(BufferedSource.class);
         final Call mockedCall = mock(Call.class);
 
+        when(mockedApiClient.escapeString(anyString())).thenCallRealMethod();
         when(mockedApiClient.getJSON()).thenReturn(json);
         doNothing().when(mockedResponse).close();
         when(mockedResponse.body()).thenReturn(mockedResponseBody);
index c5683e8..5beadbd 100644 (file)
@@ -206,7 +206,7 @@ public class CreateAsTaskTest extends BaseTest {
                 .asPackageId(UUID.randomUUID().toString()).asdInvariantId(asdId).asProvider(DUMMY_VALUE)
                 .asApplicationName(DUMMY_VALUE).asApplicationVersion(DUMMY_VALUE).serviceInstanceId(DUMMY_VALUE)
                 .serviceInstanceName(DUMMY_VALUE).cloudOwner(DUMMY_VALUE).cloudRegion(DUMMY_VALUE).tenantId(DUMMY_VALUE)
-                .status(State.INSTANTIATED).statusUpdatedTime(LocalDateTime.now()));
+                .namespace(DUMMY_VALUE).status(State.INSTANTIATED).statusUpdatedTime(LocalDateTime.now()));
 
         try {
             objUnderTest.runCreateAsJob(createAsRequest);
index 9ad993b..3b5d5c6 100644 (file)
@@ -184,12 +184,12 @@ public class DeleteAsTaskTest extends BaseTest {
     private void addDummyAsToDatabase(final String asInstanceId, final State state) {
         final String asdId = UUID.randomUUID().toString();
 
-        final AsInst asInst =
-                new AsInst().asInstId(asInstanceId).name("asName").asdId(asdId).asdInvariantId(asInstanceId)
-                        .status(state).statusUpdatedTime(LocalDateTime.now()).asApplicationName("asApplicationName")
-                        .asApplicationVersion("asApplicationVersion").asProvider("asProvider")
-                        .serviceInstanceId(SERVICE_INSTANCE_ID).serviceInstanceName("serviceInstanceName")
-                        .cloudOwner("cloudOwner").cloudRegion("cloudRegion").tenantId("tenantId");
+        final AsInst asInst = new AsInst().asInstId(asInstanceId).name("asName").asdId(asdId)
+                .asdInvariantId(asInstanceId).status(state).statusUpdatedTime(LocalDateTime.now())
+                .asApplicationName("asApplicationName").asApplicationVersion("asApplicationVersion")
+                .asProvider("asProvider").serviceInstanceId(SERVICE_INSTANCE_ID)
+                .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
+                .tenantId("tenantId").namespace("namespace");
         databaseServiceProvider.saveAsInst(asInst);
     }
 
index 3080459..3061bff 100644 (file)
@@ -104,6 +104,7 @@ import io.kubernetes.client.util.Watch;
  * @author Waqas Ikram (waqas.ikram@est.tech)
  */
 public class InstantiateAsTaskTest extends BaseTest {
+    private static final String NAMESPACE_VALUE = "default";
     private static final String BATCH_V1 = "batch/v1";
     private static final String V1 = "v1";
     private static final String APPS_V1 = "apps/v1";
@@ -312,7 +313,7 @@ public class InstantiateAsTaskTest extends BaseTest {
                 .asApplicationName("asApplicationName").asApplicationVersion("asApplicationVersion")
                 .asProvider("asProvider").serviceInstanceId(SERVICE_INSTANCE_ID)
                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
-                .tenantId("tenantId");
+                .tenantId("tenantId").namespace(NAMESPACE_VALUE);
 
         databaseServiceProvider.saveAsInst(asInst);
 
@@ -339,55 +340,65 @@ public class InstantiateAsTaskTest extends BaseTest {
     }
 
     private void mockKubernetesClientEndpoint() {
-        wireMockServer.stubFor(get(urlMatching("/apis/batch/v1/jobs\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME
-                + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true"))
+        wireMockServer.stubFor(get(urlMatching("/apis/batch/v1/namespaces/" + NAMESPACE_VALUE
+                + "/jobs\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME
+                + ")&timeoutSeconds=1&watch=true"))
                         .willReturn(aResponse().withBody(getJobResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/apis/batch/v1/jobs\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getJobList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(
+                get(urlMatching("/apis/batch/v1/namespaces/" + NAMESPACE_VALUE + "/jobs\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getJobList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
 
-        wireMockServer.stubFor(get(urlMatching("/api/v1/pods\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|"
-                + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true"))
-                        .willReturn(aResponse().withBody(getPodResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/api/v1/pods\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getPodList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(get(urlMatching(
+                "/api/v1/namespaces/" + NAMESPACE_VALUE + "/pods\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME
+                        + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true")).willReturn(
+                                aResponse().withBody(getPodResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(
+                get(urlMatching("/api/v1/namespaces/" + NAMESPACE_VALUE + "/pods\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getPodList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
 
-        wireMockServer.stubFor(get(urlMatching("/api/v1/services\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME
-                + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true")).willReturn(
+        wireMockServer.stubFor(get(urlMatching("/api/v1/namespaces/" + NAMESPACE_VALUE + "/services\\?labelSelector.*("
+                + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME
+                + ")&timeoutSeconds=1&watch=true")).willReturn(
                         aResponse().withBody(getServiceResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/api/v1/services\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getServiceList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-
-        wireMockServer
-                .stubFor(get(urlMatching("/apis/apps/v1/deployments\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME
-                        + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true"))
-                                .willReturn(aResponse().withBody(getDeploymentResponse()).withHeader(ACCEPT,
-                                        APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/deployments\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getDeploymentList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-
-        wireMockServer
-                .stubFor(get(urlMatching("/apis/apps/v1/replicasets\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME
-                        + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true"))
-                                .willReturn(aResponse().withBody(getReplicaSetResponse()).withHeader(ACCEPT,
-                                        APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/replicasets\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getReplicaSetList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-
-        wireMockServer
-                .stubFor(get(urlMatching("/apis/apps/v1/daemonsets\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME
-                        + "|" + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true"))
-                                .willReturn(aResponse().withBody(getDaemonSetResponse()).withHeader(ACCEPT,
-                                        APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/daemonsets\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getDaemonSetList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
-
         wireMockServer.stubFor(
-                get(urlMatching("/apis/apps/v1/statefulsets\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|"
-                        + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true"))
-                                .willReturn(aResponse().withBody(getStatefulSetResponse()).withHeader(ACCEPT,
-                                        APPLICATION_JSON_VALUE)));
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/statefulsets\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getStatefulSetList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+                get(urlMatching("/api/v1/namespaces/" + NAMESPACE_VALUE + "/services\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getServiceList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/namespaces/" + NAMESPACE_VALUE
+                + "/deployments\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|"
+                + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true")).willReturn(
+                        aResponse().withBody(getDeploymentResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/deployments\\?labelSelector.*&watch=false"))
+                        .willReturn(
+                                aResponse().withBody(getDeploymentList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/namespaces/" + NAMESPACE_VALUE
+                + "/replicasets\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|"
+                + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true")).willReturn(
+                        aResponse().withBody(getReplicaSetResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/replicasets\\?labelSelector.*&watch=false"))
+                        .willReturn(
+                                aResponse().withBody(getReplicaSetList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/namespaces/" + NAMESPACE_VALUE
+                + "/daemonsets\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|"
+                + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true")).willReturn(
+                        aResponse().withBody(getDaemonSetResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/daemonsets\\?labelSelector.*&watch=false"))
+                        .willReturn(
+                                aResponse().withBody(getDaemonSetList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/namespaces/" + NAMESPACE_VALUE
+                + "/statefulsets\\?labelSelector.*(" + DEPLOYMENT_ITEM_1_RELEASE_NAME + "|"
+                + DEPLOYMENT_ITEM_2_RELEASE_NAME + ")&timeoutSeconds=1&watch=true")).willReturn(
+                        aResponse().withBody(getStatefulSetResponse()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/statefulsets\\?labelSelector.*&watch=false"))
+                        .willReturn(
+                                aResponse().withBody(getStatefulSetList()).withHeader(ACCEPT, APPLICATION_JSON_VALUE)));
     }
 
     private String getStatefulSetResponse() {
@@ -558,7 +569,7 @@ public class InstantiateAsTaskTest extends BaseTest {
                 .asdInvariantId(as_inst_id).status(State.NOT_INSTANTIATED).statusUpdatedTime(LocalDateTime.now())
                 .asApplicationName("asApplicationName").asApplicationVersion("asApplicationVersion")
                 .asProvider("asProvider").serviceInstanceId(as_inst_id).serviceInstanceName("serviceInstanceName")
-                .cloudOwner("cloudOwner").cloudRegion("cloudRegion").tenantId("tenantId");
+                .cloudOwner("cloudOwner").cloudRegion("cloudRegion").tenantId("tenantId").namespace(NAMESPACE_VALUE);
 
         final String helmFile1 = "Artifacts/Deployment/HELM/sampleapp-db-operator-helm.tgz";
         final AsLifecycleParam lcp1 = new AsLifecycleParam().asLifecycleParam(DEPLOYMENT_ITEM_1_LIFECYCLE_PARAM_1);
index 2b718d5..1729b5d 100644 (file)
@@ -45,8 +45,8 @@ public class MockedHelmClient implements HelmClient {
     }
 
     @Override
-    public void runHelmChartInstallWithDryRunFlag(final String releaseName, final Path kubeconfig,
-            final Path helmChart) {
+    public void runHelmChartInstallWithDryRunFlag(final String namespace, final String releaseName,
+            final Path kubeconfig, final Path helmChart) {
         Integer count = counter.get(releaseName);
         if (count == null) {
             count = 0;
@@ -56,7 +56,8 @@ public class MockedHelmClient implements HelmClient {
     }
 
     @Override
-    public List<String> getKubeKinds(final String releaseName, final Path kubeconfig, final Path helmChart) {
+    public List<String> getKubeKinds(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart) {
         Integer count = counter.get(releaseName);
         if (count == null) {
             count = 0;
@@ -66,7 +67,8 @@ public class MockedHelmClient implements HelmClient {
     }
 
     @Override
-    public List<String> getKubeKindsUsingManifestCommand(final String releaseName, final Path kubeconfig) {
+    public List<String> getKubeKindsUsingManifestCommand(final String namespace, final String releaseName,
+            final Path kubeconfig) {
         Integer count = unInstallCounter.get(releaseName);
         if (count == null) {
             count = 0;
@@ -76,8 +78,8 @@ public class MockedHelmClient implements HelmClient {
     }
 
     @Override
-    public void installHelmChart(final String releaseName, final Path kubeconfig, final Path helmChart,
-            final Map<String, String> lifeCycleParams) {
+    public void installHelmChart(final String namespace, final String releaseName, final Path kubeconfig,
+            final Path helmChart, final Map<String, String> lifeCycleParams) {
         Integer count = counter.get(releaseName);
         if (count == null) {
             count = 0;
@@ -86,7 +88,7 @@ public class MockedHelmClient implements HelmClient {
     }
 
     @Override
-    public void unInstallHelmChart(final String releaseName, final Path kubeConfigFilePath)
+    public void unInstallHelmChart(final String namespace, final String releaseName, final Path kubeConfigFilePath)
             throws HelmClientExecuteException {
         Integer count = unInstallCounter.get(releaseName);
         if (count == null) {
index 832d675..4f89617 100644 (file)
@@ -73,6 +73,7 @@ import org.springframework.beans.factory.annotation.Value;
  */
 public class TerminateAsTaskTest extends BaseTest {
 
+    private static final String NAMESPACE_VALUE = "default";
     private static final String AS_INST_ID = UUID.randomUUID().toString();
     private static final String AS_DEPLOYMENT_ITEM_ONE_INST_ID = UUID.randomUUID().toString();
     private static final String AS_DEPLOYMENT_ITEM_TWO_INST_ID = UUID.randomUUID().toString();
@@ -154,7 +155,7 @@ public class TerminateAsTaskTest extends BaseTest {
                 .asApplicationName("asApplicationName").asApplicationVersion("asApplicationVersion")
                 .asProvider("asProvider").serviceInstanceId(SERVICE_INSTANCE_ID)
                 .serviceInstanceName(SERVICE_INSTANCE_NAME).cloudOwner("cloudOwner").cloudRegion("cloudRegion")
-                .tenantId("tenantId");
+                .tenantId("tenantId").namespace(NAMESPACE_VALUE);
 
         final String helmFile1 = "Artifacts/Deployment/HELM/sampleapp-db-operator-helm.tgz";
         final AsDeploymentItem dItemOne = new AsDeploymentItem().asDeploymentItemInstId(AS_DEPLOYMENT_ITEM_ONE_INST_ID)
@@ -176,26 +177,40 @@ public class TerminateAsTaskTest extends BaseTest {
 
     private void mockKubernetesClientEndpoint() {
 
-        wireMockServer.stubFor(get(urlMatching("/apis/batch/v1/jobs\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getJobList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
-
-        wireMockServer.stubFor(get(urlMatching("/api/v1/pods\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getPodList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
-
-        wireMockServer.stubFor(get(urlMatching("/api/v1/services\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getServiceList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
-
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/deployments\\?labelSelector.*&watch=false")).willReturn(
-                aResponse().withBody(getDeploymentList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
-
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/daemonsets\\?labelSelector.*&watch=false"))
-                .willReturn(aResponse().withBody(getDaemonList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
-
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/replicasets\\?labelSelector.*&watch=false")).willReturn(
-                aResponse().withBody(getReplicaSetList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
-
-        wireMockServer.stubFor(get(urlMatching("/apis/apps/v1/statefulsets\\?labelSelector.*&watch=false")).willReturn(
-                aResponse().withBody(getStatefulSetList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
+        wireMockServer.stubFor(
+                get(urlMatching("/apis/batch/v1/namespaces/" + NAMESPACE_VALUE + "/jobs\\?labelSelector.*&watch=false"))
+                        .willReturn(
+                                aResponse().withBody(getJobList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(
+                get(urlMatching("/api/v1/namespaces/" + NAMESPACE_VALUE + "/pods\\?labelSelector.*&watch=false"))
+                        .willReturn(
+                                aResponse().withBody(getPodList()).withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(
+                get(urlMatching("/api/v1/namespaces/" + NAMESPACE_VALUE + "/services\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getServiceList()).withHeader(CONTENT_TYPE,
+                                APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/deployments\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getDeploymentList()).withHeader(CONTENT_TYPE,
+                                APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/daemonsets\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getDaemonList()).withHeader(CONTENT_TYPE,
+                                APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/replicasets\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getReplicaSetList()).withHeader(CONTENT_TYPE,
+                                APPLICATION_JSON_VALUE)));
+
+        wireMockServer.stubFor(get(urlMatching(
+                "/apis/apps/v1/namespaces/" + NAMESPACE_VALUE + "/statefulsets\\?labelSelector.*&watch=false"))
+                        .willReturn(aResponse().withBody(getStatefulSetList()).withHeader(CONTENT_TYPE,
+                                APPLICATION_JSON_VALUE)));
     }
 
     private void mockAAIEndPoints() {
index e6538bc..b47047b 100644 (file)
@@ -86,6 +86,9 @@ public class AsInst {
     @Column(name = "TENANT_ID", nullable = false)
     private String tenantId;
 
+    @Column(name = "NAME_SPACE", nullable = false)
+    private String namespace;
+
     @Enumerated(EnumType.STRING)
     @Column(name = "STATUS", nullable = false)
     private State status;
@@ -282,6 +285,19 @@ public class AsInst {
         return this;
     }
 
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(final String namespace) {
+        this.namespace = namespace;
+    }
+
+    public AsInst namespace(final String namespace) {
+        this.namespace = namespace;
+        return this;
+    }
+
     public State getStatus() {
         return status;
     }
@@ -326,7 +342,7 @@ public class AsInst {
     public int hashCode() {
         return Objects.hash(asInstId, name, description, asPackageId, asdId, asdInvariantId, asProvider,
                 asApplicationName, asApplicationVersion, serviceInstanceId, serviceInstanceName, cloudOwner,
-                cloudRegion, tenantId, status, statusUpdatedTime, asdeploymentItems);
+                cloudRegion, tenantId, namespace, status, statusUpdatedTime, asdeploymentItems);
     }
 
     @Override
@@ -346,7 +362,8 @@ public class AsInst {
                     && Objects.equals(serviceInstanceId, other.serviceInstanceId)
                     && Objects.equals(serviceInstanceName, other.serviceInstanceName)
                     && Objects.equals(cloudOwner, other.cloudOwner) && Objects.equals(cloudRegion, other.cloudRegion)
-                    && Objects.equals(tenantId, other.tenantId) && Objects.equals(status, other.status)
+                    && Objects.equals(tenantId, other.tenantId) && Objects.equals(namespace, other.namespace)
+                    && Objects.equals(status, other.status)
                     && Objects.equals(statusUpdatedTime, other.statusUpdatedTime)
                     && Objects.equals(asdeploymentItems, other.asdeploymentItems);
         }
@@ -370,6 +387,7 @@ public class AsInst {
         sb.append("    cloudOwner: ").append(toIndentedString(cloudOwner)).append("\n");
         sb.append("    cloudRegion: ").append(toIndentedString(cloudRegion)).append("\n");
         sb.append("    tenantId: ").append(toIndentedString(tenantId)).append("\n");
+        sb.append("    namespace: ").append(toIndentedString(namespace)).append("\n");
         sb.append("    status: ").append(toIndentedString(status)).append("\n");
         sb.append("    statusUpdatedTime: ").append(toIndentedString(statusUpdatedTime)).append("\n");
         sb.append("    asdeploymentItems: ").append(toIndentedString(asdeploymentItems)).append("\n");
index 5e75171..de447d3 100644 (file)
@@ -40,6 +40,7 @@ CREATE TABLE IF NOT EXISTS `AS_INST` (
   `CLOUD_OWNER` varchar(255) NOT NULL,
   `CLOUD_REGION` varchar(255) NOT NULL,
   `TENANT_ID` varchar(255) NOT NULL,
+  `NAME_SPACE` varchar(255) NOT NULL,
   `STATUS` varchar(255) NOT NULL,
   `STATUS_UPDATED_TIME` DATETIME NOT NULL,
   PRIMARY KEY (`AS_INST_ID`)
index 4397fb5..062f501 100644 (file)
@@ -102,7 +102,7 @@ public class DatabaseServiceProviderTest {
                 .asdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME).asApplicationName("asApplicationName")
                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_ID)
                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
-                .tenantId("tenantId");
+                .tenantId("tenantId").namespace("namespace");
 
         databaseServiceProvider.saveAsInst(asInst);
 
@@ -135,7 +135,7 @@ public class DatabaseServiceProviderTest {
                 .asdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME).asApplicationName("asApplicationName")
                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_ID)
                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
-                .tenantId("tenantId");
+                .tenantId("tenantId").namespace("namespace");
 
         databaseServiceProvider.saveAsInst(asInst);
 
@@ -177,13 +177,15 @@ public class DatabaseServiceProviderTest {
                 databaseServiceProvider.getAsLifecycleParam(aslifecycleparam.getAsLifecycleParamId());
         final AsLifecycleParam actualLifecycleParam = actualLP.get();
         assertEquals(aslifecycleparam.getLifecycleParam(), actualLifecycleParam.getLifecycleParam());
-        assertEquals(asdeploymentItem.getAsDeploymentItemInstId(), actualLifecycleParam.getAsDeploymentItemInst().getAsDeploymentItemInstId());
+        assertEquals(asdeploymentItem.getAsDeploymentItemInstId(),
+                actualLifecycleParam.getAsDeploymentItemInst().getAsDeploymentItemInstId());
         assertEquals(aslifecycleparam.getAsLifecycleParamId(), actualLifecycleParam.getAsLifecycleParamId());
 
-        List<AsLifecycleParam> aslifecycleParamsList =
-                databaseServiceProvider.getAsLifecycleParamByAsDeploymentItemId(asdeploymentItem.getAsDeploymentItemInstId());
+        List<AsLifecycleParam> aslifecycleParamsList = databaseServiceProvider
+                .getAsLifecycleParamByAsDeploymentItemId(asdeploymentItem.getAsDeploymentItemInstId());
         assertFalse(aslifecycleParamsList.isEmpty());
-        assertEquals(asdeploymentItem.getAsDeploymentItemInstId(), aslifecycleParamsList.get(0).getAsDeploymentItemInst().getAsDeploymentItemInstId());
+        assertEquals(asdeploymentItem.getAsDeploymentItemInstId(),
+                aslifecycleParamsList.get(0).getAsDeploymentItemInst().getAsDeploymentItemInstId());
     }
 
     @Test
@@ -193,7 +195,7 @@ public class DatabaseServiceProviderTest {
                 .asdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME).asApplicationName("asApplicationName")
                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_ID)
                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
-                .tenantId("tenantId");
+                .tenantId("tenantId").namespace("namespace");
 
         databaseServiceProvider.saveAsInst(asInst);
 
index 4f1a0b6..fc71ed9 100644 (file)
@@ -117,7 +117,7 @@ public class AsLcmOperationOccurrencesControllerTest {
                 .asdInvariantId(RANDOM_UUID).statusUpdatedTime(now).asApplicationName("asApplicationName")
                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_UUID)
                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
-                .tenantId("tenantId");
+                .tenantId("tenantId").namespace("namespace");
 
         databaseServiceProvider.saveAsInst(asInst);