support for returning readable error messages to user
smbaker [Sat, 22 Sep 2012 06:26:45 +0000 (23:26 -0700)]
apps/gacksadmin/gacksclient.php

index 2e48458..f08e836 100644 (file)
@@ -68,6 +68,29 @@ class GACKSAPI
      return $this->call($name, $args);\r
   }\r
 \r
+  function check_verbose_fault($fault_msg)\r
+  {\r
+      $lines = explode("\n", $fault_msg);\r
+      foreach ($lines as $line) {\r
+          if (strpos($line, ":")) {\r
+              $fault = explode(":", $line);\r
+              $fault = $fault[0];\r
+          }\r
+      }\r
+      switch ($fault) {\r
+          case "GacksEnforcerNoReservation":\r
+              $msg = "Your account does not have permission to reserve the type of resource you have requested. You may wish to upgrade to a higher service class.";\r
+              break;\r
+          default:\r
+              $msg = NULL;\r
+              break;\r
+      }\r
+\r
+      if ($msg) {\r
+          throw new GacksClientException($msg);\r
+      }\r
+  }\r
+\r
   function internal_call($method, $args = NULL)\r
   {\r
     $curl = curl_init();\r
@@ -115,6 +138,7 @@ class GACKSAPI
     } else {\r
       $ret = xmlrpc_decode($output);\r
       if (is_array($ret) && xmlrpc_is_fault($ret)) {\r
+        $this->check_verbose_fault($ret['faultString']);\r
         $this->error_log('Fault Code ' . $ret['faultCode'] . ': ' .\r
                          $ret['faultString'], $backtrace_level, true);\r
         $ret = NULL;\r