Merge branch 'master' into sqlalchemy
[sfa.git] / sfa / client / sfi.py
index c551a80..ec34f45 100644 (file)
@@ -323,6 +323,8 @@ class Sfi:
                          help="root registry", metavar="URL", default=None)
         parser.add_option("-s", "--sliceapi", dest="sm", default=None, metavar="URL",
                          help="slice API - in general a SM URL, but can be used to talk to an aggregate")
+        parser.add_option("-R", "--raw", dest="raw", action="store_true", default=False,
+                          help="Display raw, unparsed server response")   
         parser.add_option("-d", "--dir", dest="sfi_dir",
                          help="config & working directory - default is %default",
                          metavar="PATH", default=Sfi.default_sfi_dir())
@@ -782,7 +784,10 @@ or version information about sfi itself
        api_options['call_id']=unique_call_id()
         result = server.ListSlices(creds, *self.ois(server,api_options))
         value = ReturnValue.get_value(result)
-        display_list(value)
+        if self.options.raw:
+            print result
+        else:
+            display_list(value)
         return
     
     # show rspec for named slice
@@ -832,7 +837,10 @@ or with an slice hrn, shows currently provisioned resources
         result = server.ListResources (creds, api_options)
         value = ReturnValue.get_value(result)
         if options.file is None:
-            display_rspec(value, options.format)
+            if self.options.raw:
+                print result
+            else:
+                display_rspec(value, options.format)
         else:
             save_rspec_to_file(value, options.file)
         return
@@ -899,7 +907,10 @@ or with an slice hrn, shows currently provisioned resources
         result = server.CreateSliver(slice_urn, creds, rspec, users, *self.ois(server, api_options))
         value = ReturnValue.get_value(result)
         if options.file is None:
-            print value
+            if self.options.raw:
+                print result
+            else:
+                print value
         else:
             save_rspec_to_file (value, options.file)
         return value
@@ -925,8 +936,12 @@ or with an slice hrn, shows currently provisioned resources
         api_options = {}
         api_options ['call_id'] = unique_call_id()
         result = server.DeleteSliver(slice_urn, creds, *self.ois(server, api_options ) )
-        # xxx no ReturnValue ??
-        return result
+        value = ReturnValue.get_value(result)
+        if self.options.raw:
+            print result
+        else:
+            print value
+        return value 
   
     def status(self, options, args):
         """
@@ -947,10 +962,13 @@ or with an slice hrn, shows currently provisioned resources
 
         # options and call_id when supported
         api_options = {}
-       api_options['call_id']=unique_call_id()
+        api_options['call_id']=unique_call_id()
         result = server.SliverStatus(slice_urn, creds, *self.ois(server,api_options))
         value = ReturnValue.get_value(result)
-        print value
+        if self.options.raw:
+            print result
+        else:
+            print value
         if options.file:
             save_variable_to_file(value, options.file, options.fileformat)
 
@@ -971,7 +989,13 @@ or with an slice hrn, shows currently provisioned resources
             delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
             creds.append(delegated_cred)
         # xxx Thierry - does this not need an api_options as well ?
-        return server.Start(slice_urn, creds)
+        result = server.Start(slice_urn, creds)
+        value = ReturnValue.get_value(result)
+        if self.options.raw:
+            print result
+        else:
+            print value
+        return value
     
     def stop(self, options, args):
         """
@@ -987,7 +1011,13 @@ or with an slice hrn, shows currently provisioned resources
         if options.delegate:
             delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
             creds.append(delegated_cred)
-        return server.Stop(slice_urn, creds)
+        result =  server.Stop(slice_urn, creds)
+        value = ReturnValue.get_value(result)
+        if self.options.raw:
+            print result
+        else:
+            print value
+        return value
     
     # reset named slice
     def reset(self, options, args):
@@ -1004,7 +1034,13 @@ or with an slice hrn, shows currently provisioned resources
         if options.delegate:
             delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
             creds.append(delegated_cred)
-        return server.reset_slice(creds, slice_urn)
+        result = server.reset_slice(creds, slice_urn)
+        value = ReturnValue.get_value(result)
+        if self.options.raw:
+            print result
+        else:
+            print value
+        return value
 
     def renew(self, options, args):
         """
@@ -1027,6 +1063,10 @@ or with an slice hrn, shows currently provisioned resources
        api_options['call_id']=unique_call_id()
         result =  server.RenewSliver(slice_urn, creds, time, *self.ois(server,api_options))
         value = ReturnValue.get_value(result)
+        if self.options.raw:
+            print result
+        else:
+            print value
         return value
 
 
@@ -1044,7 +1084,13 @@ or with an slice hrn, shows currently provisioned resources
         if options.delegate:
             delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
             creds.append(delegated_cred)
-        return server.Shutdown(slice_urn, creds)         
+        result = server.Shutdown(slice_urn, creds)
+        value = ReturnValue.get_value(result)
+        if self.options.raw:
+            print result
+        else:
+            print value
+        return value         
     
 
     def get_ticket(self, options, args):