Fix vppctl error messages to handle lack off permissions 09/7509/2
authorEd Warnicke <hagbard@gmail.com>
Mon, 10 Jul 2017 19:03:12 +0000 (19:03 +0000)
committerNeale Ranns <nranns@cisco.com>
Tue, 11 Jul 2017 08:03:16 +0000 (08:03 +0000)
Change-Id: Ia35edcb14eb8d786065ee4ab394f4f1aa52e1625
Signed-off-by: Ed Warnicke <hagbard@gmail.com>
src/scripts/vppctl

index a59b4b6..1483685 100755 (executable)
@@ -21,6 +21,8 @@ import subprocess
 import re
 import sys
 from optparse import OptionParser
+from errno import EACCES, EPERM, ENOENT
+
 
 try:
         import readline
@@ -43,6 +45,30 @@ class Vppctl(Cmd):
                         readline.set_history_length(persishist_size)
                         readline.write_history_file(persishist)
 
+        def print_file_error_message(self,e, file_name):
+                #PermissionError
+                if e.errno==EPERM or e.errno==EACCES:
+                        print("PermissionError error({0}): {1} for:\n{2}".format(e.errno, e.strerror, file_name))
+                        #FileNotFoundError
+                elif e.errno==ENOENT:
+                        print("FileNotFoundError error({0}): {1} as:\n{2}".format(e.errno, e.strerror, file_name))
+                elif IOError:
+                        print("I/O error({0}): {1} as:\n{2}".format(e.errno, e.strerror, file_name))
+                elif OSError:
+                        print("OS error({0}): {1} as:\n{2}".format(e.errno, e.strerror, file_name))
+
+        def testPermissions(self):
+                if(self.api_prefix is None):
+                        filename = "/dev/shm/vpe-api"
+                else:
+                        filename = "/dev/shm/%s-vpe-api" % self.api_prefix
+                try:
+                        file = open(filename)
+                        file.close()
+                except (IOError, OSError) as e:
+                        self.print_file_error_message(e,filename)
+                        sys.exit()
+
         def runVat(self, line):
                 input_prefix = "exec "
                 input_command = input_prefix + line
@@ -53,6 +79,7 @@ class Vppctl(Cmd):
                 else:
                         command = ['vpp_api_test',"chroot prefix %s " % self.api_prefix]
 
+                self.testPermissions()
                 vpp_process = subprocess.Popen(command,
                         stderr=subprocess.PIPE,
                         stdin=subprocess.PIPE,