save registry records in ~/.sfi dir unless and abs path is given. in slices() print...
[sfa.git] / cmdline / sfi.py
index f9e53a2..4573d7f 100755 (executable)
@@ -7,11 +7,11 @@ import sys
 import os, os.path
 import tempfile
 from optparse import OptionParser
-from util.cert import Keypair, Certificate
-from util.credential import Credential
-from util.geniclient import GeniClient
-from util.gid import create_uuid
-from util.record import GeniRecord
+from geni.util.cert import Keypair, Certificate
+from geni.util.credential import Credential
+from geni.util.geniclient import GeniClient
+from geni.util.gid import create_uuid
+from geni.util.record import GeniRecord
 
 sfi_dir = os.path.expanduser("~/.sfi/")
 slicemgr = None
@@ -406,29 +406,33 @@ def update(opts, args):
 def nodes(opts, args):
    global slicemgr
    user_cred = get_user_cred() 
-   if (len(args) == 0):
+   if not opts.format:
       context = None
    else:
-      context = args[0]
-   result = slicemgr.list_nodes(user_cred, context)
-   display_rspec(opts.format, result)
+      context = opts.format
+   results = slicemgr.list_nodes(user_cred, context)
+   if opts.format in ['rspec']:     
+      display_rspec(results)
+   else:
+      display_list(results)
    if (opts.file is not None):
-      save_rspec_to_file(opts.file, result)
+      rspec = slicemgr.list_nodes(user_cred, 'rspec')
+      save_rspec_to_file(rspec, opts.file)
    return
 
 # list instantiated slices
 def slices(opts, args):
    global slicemgr
    user_cred = get_user_cred() 
-   result = slicemgr.list_slices(user_cred)
-   display_rspec(opts.format, results)
+   results = slicemgr.list_slices(user_cred)
+   display_list(results)
    return
 
 # show rspec for named slice
 def resources(opts, args):
    global slicemgr
    slice_cred = get_slice_cred(args[0])
-   result = slicemgr.get_slice_resources(slice_cred, args[0])
+   result = slicemgr.list_resources(slice_cred, args[0])
    display_rspec(opts.format, result)
    if (opts.file is not None):
       save_rspec_to_file(opts.file, result)
@@ -474,12 +478,23 @@ def reset(opts, args):
 #
 #
 
-def display_rspec(format, rspec):
-   print "display rspec"
+def display_rspec(rspec):
+   print rspec
    return
 
-def save_rspec_to_file(file, rspec):
-   print "save rspec"
+def display_list(results):
+    for result in results:
+        print result
+
+def save_rspec_to_file(rspec, filename):
+   if not filename.startswith(os.sep):
+       filename = sfi_dir + filename
+   if not filename.endswith(".rspec"):
+       filename = filename + ".rspec"
+
+   f = open(filename, 'w')
+   f.write(rspec)
+   f.close()
    return
 
 def display_records(recordList):
@@ -487,7 +502,9 @@ def display_records(recordList):
       display_record(record)
 
 def display_record(record):
-   record.dump(False)
+   #record.dump(False)
+   info = record.getdict()
+   print "%s (%s)" % (info['hrn'], info['type'])
    return
 
 def filter_records(type, records):
@@ -507,6 +524,8 @@ def save_records_to_file(filename, recordList):
        index = index + 1
 
 def save_record_to_file(filename, record):
+   if not filename.startswith(os.sep):
+       filename = sfi_dir + filename
    print "saving record", record.name, "to file", filename
    str = record.save_to_string()
    file(filename, "w").write(str)