comments about help() on stderr and magic numbers in return codes apply here as well as in previous patch

more comments inline

2015-09-14 14:05 GMT+02:00 <olichtne@redhat.com>:
From: Ondrej Lichtner <olichtne@redhat.com>

This patch implements report delete functionality and get/show
functionality for Test and TestExecution objects.

For test get, we try both by_id and by_uid options.

Signed-off-by: Ondrej Lichtner <olichtne@redhat.com>
---
 perfrepo | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 86 insertions(+), 2 deletions(-)

diff --git a/perfrepo b/perfrepo
index cda306c..8f6349b 100755
--- a/perfrepo
+++ b/perfrepo
@@ -66,10 +66,78 @@ class GenericCLI(object):
         return -1

 class TestCLI(GenericCLI):
-    pass
+    def print_help(self):
+        """
+        Print usage for the report object
+        """
+        print("Usage: %s test help" % sys.argv[0], file=sys.stderr)
+        print("", file=sys.stderr)
+        print("       %s test get {ID | UID}" % sys.argv[0], file=sys.stderr)
+        print("       %s test show {ID | UID}" % sys.argv[0], file=sys.stderr)
+
+    def run(self):
+        argv = self._argv
+        if len(argv) == 0:
+            return -1
+        elif argv[0] == "help":
+            self.print_help()
+            return 0
+        elif argv[0] in ["get", "show"]:
+            try:
+                test_id = int(argv[1])
+                test = self._perf_api.test_get_by_id(test_id)
+                if test is None:
+                    test = self._perf_api.test_get_by_uid(test_id)
+                if test is None:
+                    print("Test not found.")
+                else:
+                    print(test)
+            except IndexError:
+                print("No ID specified!", file=sys.stderr)
+                return -1
+            except ValueError:
+                print("ID needs to be an integer!", file=sys.stderr)
+                return -1
+        else:
+            print("Command '%s' not implemented for Tests." % argv[0], file=sys.stderr)
+            return -1
+        return 0

 class TestExecCLI(GenericCLI):
-    pass
+    def print_help(self):
+        """
+        Print usage for the report object
+        """
+        print("Usage: %s texec help" % sys.argv[0], file=sys.stderr)
+        print("", file=sys.stderr)
+        print("       %s texec get ID" % sys.argv[0], file=sys.stderr)
+        print("       %s texec show ID" % sys.argv[0], file=sys.stderr)
+
+    def run(self):
+        argv = self._argv
+        if len(argv) == 0:
+            return -1
+        elif argv[0] == "help":
+            self.print_help()
+            return 0
+        elif argv[0] in ["get", "show"]:
+            try:
+                exec_id = int(argv[1])
+                texec = self._perf_api.testExecution_get(exec_id)
+                if texec is None:
+                    print("TestExecution not found.")
+                else:
+                    print(texec)
+            except IndexError:
+                print("No ID specified!", file=sys.stderr)
+                return -1
+            except ValueError:
+                print("ID needs to be an integer!", file=sys.stderr)
+                return -1

​since more opts will be implemented in future, each method should have it's own method for better readability
and sustainability
 
+        else:
+            print("Command '%s' not implemented for TestExecutions." % argv[0], file=sys.stderr)
+            return -1
+        return 0

 class ReportCLI(GenericCLI):
     def print_help(self):
@@ -110,6 +178,8 @@ class ReportCLI(GenericCLI):
         print("                     edit is implicit - noOP == 'edit'", file=sys.stderr)
         print("                     OPs 'edit' and 'del' require NUM, whereas 'add' requires NAME", file=sys.stderr)
         print("                     if chart OP == 'add' then all further OPs are 'add' as in the 'report create' command", file=sys.stderr)
+        print("", file=sys.stderr)
+        print("       %s report delete ID" % sys.argv[0], file=sys.stderr)

​this should be in previous commit​
 

     def _parse_baseline(self, argv):
         baseline = {}
@@ -450,6 +520,20 @@ class ReportCLI(GenericCLI):
             return self._do_create(argv)
         elif argv[0] in ["update"]:
             return self._do_update(argv)
+        elif argv[0] in ["delete"]:
+            try:
+                report_id = int(argv[1])
+                result = self._perf_api.report_delete_by_id(report_id)
+                if result:
+                    print("Report deleted.")
+                else:
+                    print("Report delete failed.")
+            except IndexError:
+                print("No ID specified!", file=sys.stderr)
+                return -1
+            except ValueError:
+                print("ID needs to be an integer!", file=sys.stderr)
+                return -1
         else:
             print("Command '%s' not implemented for Reports." % argv[0], file=sys.stderr)
             return -1
--
2.5.2

_______________________________________________
LNST-developers mailing list
LNST-developers@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/lnst-developers



--
​Best regards,​

Jiri Prochazka 
LNST Developer 
+420 532 294 633 | jprochaz@redhat.com
Red Hat Czech | Purkyňova 71/99, 612 00 Brno