cfg-checker benchmark module part 2

 - fixes for fio-runner error handling
 - fixes for web-server error handling
 - proper handling of 'scheduled_to' option
 - cleanup procedure
 - kube can wait for specific phases of svc, pod, pvc, pv

Change-Id: I9b241597e6314fed1dbc3aba5e8dee1637eea1c7
diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index 9570978..c1b3d4c 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -1308,3 +1308,52 @@
 
     def expose_benchmark_agent(self, agent):
         return self.kube.expose_pod_port(agent, 8765)
+
+    def cleanup_resource_by_name(self, res_type, name, ns=None, wait=False):
+        """Cleansup resource using string res_type and the ns/name
+
+        Args:
+            res_type (string): resource type name: pod, pv, pvc, svc
+            name (string): resource name to cleanup
+            ns (string, optional): Namespace to use. Default is 'qa-space'
+
+            return: (Bool) Is Success?
+        """
+        # fill defaults
+        if not ns:
+            ns = self._namespace
+        # Handle res_type errors and choose resource type
+        if not res_type:
+            logger_cli.debug(
+                "... resource type invalid: '{}'".format(res_type)
+            )
+            return False
+        elif not name:
+            logger_cli.debug("... resource name invalid: '{}'".format(name))
+            return False
+        elif res_type == "svc":
+            # Delete service
+            logger_cli.info("-> deleting svc {}/{}".format(ns, name))
+            self.kube.CoreV1.delete_namespaced_service(name, ns)
+            # TODO: Check if successfull
+        elif res_type == "pod":
+            # Delete a pod
+            logger_cli.info("-> deleting pod {}/{}".format(ns, name))
+            self.kube.CoreV1.delete_namespaced_pod(name, ns)
+            if wait:
+                self.kube.wait_for_phase(res_type, name, ns, ["Terminated"])
+        elif res_type == "pvc":
+            logger_cli.info("-> deleting pvc {}/{}".format(ns, name))
+            self.kube.CoreV1.delete_namespaced_persistent_volume_claim(
+                name,
+                ns
+            )
+            if wait:
+                self.kube.wait_for_phase(res_type, name, ns, ["Terminated"])
+        elif res_type == "pv":
+            logger_cli.info("-> deleting pv {}/{}".format(ns, name))
+            self.kube.CoreV1.delete_persistent_volume(name)
+            if wait:
+                self.kube.wait_for_phase(res_type, name, None, ["Terminated"])
+
+        return True