From f4b46d182a72a4eac9b93b7e67b098eb8a8547ed Mon Sep 17 00:00:00 2001
From: Hayk Hovsepyan <hhovsepy@redhat.com>
Date: Wed, 19 May 2021 20:09:08 +0200
Subject: [PATCH] Added new config type WorkloadGroup

---
 kiali_qe/components/__init__.py |  1 +
 kiali_qe/components/enums.py    |  1 +
 kiali_qe/rest/kiali_api.py      | 16 ++++++++++++++++
 kiali_qe/rest/openshift_api.py  |  5 +++++
 4 files changed, 23 insertions(+)

diff --git a/kiali_qe/components/__init__.py b/kiali_qe/components/__init__.py
index 78cd8e90..b5b42951 100644
--- a/kiali_qe/components/__init__.py
+++ b/kiali_qe/components/__init__.py
@@ -2405,6 +2405,7 @@ def _get_item_validation(self, element):
         return get_validation(_valid, _not_valid, _warning)
 
     def _get_details_validation(self):
+        wait_to_spinner_disappear(self.browser)
         _not_valid = len(self.browser.elements(
             parent=self.DETAILS_ROOT,
             locator='.//*[contains(@class, "ace_error")]')) > 0
diff --git a/kiali_qe/components/enums.py b/kiali_qe/components/enums.py
index 9e071fe3..46d22a04 100644
--- a/kiali_qe/components/enums.py
+++ b/kiali_qe/components/enums.py
@@ -317,6 +317,7 @@ class IstioConfigObjectType(StringEnum):
     SIDECAR = ('Sidecar')
     VIRTUAL_SERVICE = ('VirtualService')
     WORKLOAD_ENTRY = ('WorkloadEntry')
+    WORKLOAD_GROUP = ('WorkloadGroup')
 
 
 class IstioConfigValidationType(StringEnum):
diff --git a/kiali_qe/rest/kiali_api.py b/kiali_qe/rest/kiali_api.py
index 51c90cbc..7b1b3b8c 100644
--- a/kiali_qe/rest/kiali_api.py
+++ b/kiali_qe/rest/kiali_api.py
@@ -46,6 +46,7 @@
                       'VirtualService': 'virtualservices',
                       'ServiceEntry': 'serviceentries',
                       'WorkloadEntry': 'workloadentries',
+                      'WorkloadGroup': 'workloadgroups',
                       'Gateway': 'gateways',
                       'Handler': 'handler',
                       'EnvoyFilter': 'envoyfilters',
@@ -336,6 +337,17 @@ def istio_config_list(self, namespaces=[], config_names=[], params=None):
                                                                     'workloadentries',
                                                                     _policy['metadata']['name'])))
 
+            # update workloadGroups
+            if len(_data['workloadGroups']) > 0:
+                for _policy in _data['workloadGroups']:
+                    items.append(IstioConfig(
+                        name=_policy['metadata']['name'],
+                        namespace=_namespace,
+                        object_type=OBJECT_TYPE.WORKLOAD_GROUP.text,
+                        validation=self.get_istio_config_validation(_namespace,
+                                                                    'workloadgroups',
+                                                                    _policy['metadata']['name'])))
+
             # update sidecars
             if len(_data['sidecars']) > 0:
                 for _policy in _data['sidecars']:
@@ -406,6 +418,10 @@ def istio_config_details(self, namespace, object_type, object_name):
             if _data['workloadEntry']:
                 config_data = _data['workloadEntry']
 
+            # get workloadGroup
+            if _data['workloadGroup']:
+                config_data = _data['workloadGroup']
+
             # get PeerAuthentication
             if _data['peerAuthentication']:
                 config_data = _data['peerAuthentication']
diff --git a/kiali_qe/rest/openshift_api.py b/kiali_qe/rest/openshift_api.py
index 4fb9c96e..10d13c35 100644
--- a/kiali_qe/rest/openshift_api.py
+++ b/kiali_qe/rest/openshift_api.py
@@ -45,6 +45,7 @@
     'DestinationRule': '_destinationrule',
     'ServiceEntry': '_serviceentry',
     'WorkloadEntry': '_workloadentry',
+    'WorkloadGroup': '_workloadgroup',
     'EnvoyFilter': '_envoyfilter',
     'PeerAuthentication': '_peerauthentication',
     'RequestAuthentication': '_requestauthentication',
@@ -143,6 +144,10 @@ def _serviceentry(self):
     def _workloadentry(self):
         return self._istio_config(kind='WorkloadEntry', api_version='v1alpha3')
 
+    @property
+    def _workloadgroup(self):
+        return self._istio_config(kind='WorkloadGroup', api_version='v1alpha3')
+
     @property
     def _kubernetes(self):
         return self._istio_config(kind='kubernetes', api_version='v1alpha2')