move clientbin one step upwards
[sfa.git] / clientbin / sfiListSlivers.py
diff --git a/clientbin/sfiListSlivers.py b/clientbin/sfiListSlivers.py
new file mode 100755 (executable)
index 0000000..c9611d0
--- /dev/null
@@ -0,0 +1,39 @@
+#! /usr/bin/env python
+
+import sys
+from sfa.client.sfi_commands import Commands
+
+from sfa.rspecs.rspec import RSpec
+
+from sfa.planetlab.plxrn import xrn_to_hostname
+
+command = Commands(usage="%prog [options]",
+                   description="List all slivers in the RSpec. " + 
+                   "Use this to display the list of nodes belonging to " + 
+                   "the slice.")
+command.add_show_attributes_option()
+command.prep()
+
+if command.opts.infile:
+    rspec = RSpec(command.opts.infile)
+    nodes = rspec.version.get_nodes_with_slivers()
+    
+    if command.opts.showatt:
+        defaults = rspec.version.get_default_sliver_attributes()
+        if defaults:
+            print "ALL NODES"
+            for (name, value) in defaults:
+                print "  %s: %s" % (name, value)        
+
+    for node in nodes:
+        hostname = None
+        if node.get('component_id'):
+            hostname = xrn_to_hostname(node['component_id'])
+        if hostname:
+            print hostname
+            if command.opts.showatt:
+                atts = rspec.version.get_sliver_attributes(hostname)
+                for (name, value) in atts:
+                    print "  %s: %s" % (name, value)
+
+