Describe(): no need to send None value in api_options
[sfa.git] / sfa / client / sfi.py
index 6e60f63..8c6fe7c 100644 (file)
@@ -1120,10 +1120,13 @@ use this if you mean an authority instead""")
 
         api_options = {'call_id': unique_call_id(),
                        'cached': True,
-                       'info': options.info,
+                       #'info': options.info,
                        'list_leases': options.list_leases,
                        'geni_rspec_version': {'type': 'geni', 'version': '3'},
                       }
+        if options.info:
+            api_options['info'] = options.info
+
         if options.rspec_version:
             version_manager = VersionManager()
             server_version = self.get_cached_server_version(server)
@@ -1144,10 +1147,10 @@ use this if you mean an authority instead""")
 
         return 
 
-    @register_command("slice_hrn","")
+    @register_command("slice_hrn [<sliver_urn> ... <sliver_urn>]","")
     def delete(self, options, args):
         """
-        de-allocate and de-provision all or named slivers of the slice (Delete)
+        de-allocate and de-provision all or named slivers of the named slice (Delete)
         """
         server = self.sliceapi()
 
@@ -1155,6 +1158,13 @@ use this if you mean an authority instead""")
         slice_hrn = args[0]
         slice_urn = hrn_to_urn(slice_hrn, 'slice') 
 
+        if len(args) > 1:
+            # we have sliver urns
+            sliver_urns = args[1:]
+        else:
+            # we provision all the slivers of the slice
+            sliver_urns = [slice_urn]
+
         # creds
         slice_cred = self.slice_credential(slice_hrn)
         creds = [slice_cred]
@@ -1164,7 +1174,7 @@ use this if you mean an authority instead""")
         api_options ['call_id'] = unique_call_id()
         if options.show_credential:
             show_credentials(creds)
-        result = server.Delete([slice_urn], creds, *self.ois(server, api_options ) )
+        result = server.Delete(sliver_urns, creds, *self.ois(server, api_options ) )
         value = ReturnValue.get_value(result)
         if self.options.raw:
             save_raw_to_file(result, self.options.raw, self.options.rawformat, self.options.rawbanner)
@@ -1229,15 +1239,21 @@ use this if you mean an authority instead""")
         return value
         
 
-    @register_command("slice_hrn","")
+    @register_command("slice_hrn [<sliver_urn> ... <sliver_urn>]","")
     def provision(self, options, args):
         """
-        provision already allocated resources of named slice (Provision)
+        provision all or named already allocated slivers of the named slice (Provision)
         """
         server = self.sliceapi()
         server_version = self.get_cached_server_version(server)
         slice_hrn = args[0]
         slice_urn = Xrn(slice_hrn, type='slice').get_urn()
+        if len(args) > 1:
+            # we have sliver urns
+            sliver_urns = args[1:]
+        else:
+            # we provision all the slivers of the slice
+            sliver_urns = [slice_urn]
 
         # credentials
         creds = [self.slice_credential(slice_hrn)]
@@ -1278,7 +1294,7 @@ use this if you mean an authority instead""")
             users = pg_users_arg(user_records)
         
         api_options['geni_users'] = users
-        result = server.Provision([slice_urn], creds, api_options)
+        result = server.Provision(sliver_urns, creds, api_options)
         value = ReturnValue.get_value(result)
         if self.options.raw:
             save_raw_to_file(result, self.options.raw, self.options.rawformat, self.options.rawbanner)
@@ -1291,7 +1307,7 @@ use this if you mean an authority instead""")
     @register_command("slice_hrn","")
     def status(self, options, args):
         """
-        retrieve the status of the slivers belonging to tne named slice (Status)
+        retrieve the status of the slivers belonging to the named slice (Status)
         """
         server = self.sliceapi()
 
@@ -1317,17 +1333,23 @@ use this if you mean an authority instead""")
         # Thierry: seemed to be missing
         return value
 
-    @register_command("slice_hrn action","")
+    @register_command("slice_hrn [<sliver_urn> ... <sliver_urn>] action","")
     def action(self, options, args):
         """
-        Perform the named operational action on these slivers
+        Perform the named operational action on all or named slivers of the named slice
         """
         server = self.sliceapi()
         api_options = {}
         # slice urn
         slice_hrn = args[0]
-        action = args[1]
-        slice_urn = Xrn(slice_hrn, type='slice').get_urn() 
+        slice_urn = Xrn(slice_hrn, type='slice').get_urn()
+        if len(args) > 2:
+            # we have sliver urns
+            sliver_urns = args[1:-1]
+        else:
+            # we provision all the slivers of the slice
+            sliver_urns = [slice_urn]
+        action = args[-1]
         # cred
         slice_cred = self.slice_credential(args[0])
         creds = [slice_cred]
@@ -1335,7 +1357,7 @@ use this if you mean an authority instead""")
             delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
             creds.append(delegated_cred)
         
-        result = server.PerformOperationalAction([slice_urn], creds, action , api_options)
+        result = server.PerformOperationalAction(sliver_urns, creds, action , api_options)
         value = ReturnValue.get_value(result)
         if self.options.raw:
             save_raw_to_file(result, self.options.raw, self.options.rawformat, self.options.rawbanner)
@@ -1343,18 +1365,26 @@ use this if you mean an authority instead""")
             print value
         return value
 
-    @register_command("slice_hrn time","")
+    @register_command("slice_hrn [<sliver_urn> ... <sliver_urn>] time","")
     def renew(self, options, args):
         """
-        renew slice (RenewSliver)
+        renew slice (Renew)
         """
         server = self.sliceapi()
-        if len(args) != 2:
+        if len(args) < 2:
             self.print_help()
             sys.exit(1)
-        [ slice_hrn, input_time ] = args
-        # slice urn    
-        slice_urn = hrn_to_urn(slice_hrn, 'slice') 
+        slice_hrn = args[0]
+        slice_urn = Xrn(slice_hrn, type='slice').get_urn()
+
+        if len(args) > 2:
+            # we have sliver urns
+            sliver_urns = args[1:-1]
+        else:
+            # we provision all the slivers of the slice
+            sliver_urns = [slice_urn]
+        input_time = args[-1]
+
         # time: don't try to be smart on the time format, server-side will
         # creds
         slice_cred = self.slice_credential(args[0])
@@ -1364,7 +1394,7 @@ use this if you mean an authority instead""")
         api_options['call_id']=unique_call_id()
         if options.show_credential:
             show_credentials(creds)
-        result =  server.Renew([slice_urn], creds, input_time, *self.ois(server,api_options))
+        result =  server.Renew(sliver_urns, creds, input_time, *self.ois(server,api_options))
         value = ReturnValue.get_value(result)
         if self.options.raw:
             save_raw_to_file(result, self.options.raw, self.options.rawformat, self.options.rawbanner)