diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded
index 75e9f819b4fdf418828ee04b7c29226ebe63b62a..db3c7aa88648bf23528553089d51ee9b57c99b27 100755
--- a/daemons/ganeti-noded
+++ b/daemons/ganeti-noded
@@ -42,6 +42,7 @@ from ganeti import jstore
 from ganeti import daemon
 from ganeti import http
 from ganeti import utils
+from ganeti import storage
 
 import ganeti.http.server
 
@@ -354,6 +355,16 @@ class NodeHttpServer(http.server.HttpServer):
     """
     return backend.ListVolumeGroups()
 
+  # Storage --------------------------
+
+  @staticmethod
+  def perspective_storage_list(params):
+    """Get list of storage units.
+
+    """
+    (su_name, su_args, name, fields) = params
+    return storage.GetStorage(su_name, *su_args).List(name, fields)
+
   # bridge  --------------------------
 
   @staticmethod
diff --git a/lib/rpc.py b/lib/rpc.py
index 5286c2aab8a51aa0aa764460971729f8193e155a..a46444bade5156f83903a9104e8eef8760a421f5 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -432,6 +432,15 @@ class RpcRunner(object):
     """
     return self._MultiNodeCall(node_list, "vg_list", [])
 
+  def call_storage_list(self, node_list, su_name, su_args, name, fields):
+    """Get list of storage units..
+
+    This is a multi-node call.
+
+    """
+    return self._MultiNodeCall(node_list, "storage_list",
+                               [su_name, su_args, name, fields])
+
   def call_bridges_exist(self, node, bridges_list):
     """Checks if a node has all the bridges given.