diff --git a/doc/rapi.rst b/doc/rapi.rst
index 1a9294d407d4b71565af8694b814775fa119d844..92c923a9277f8592937510927d78d4abba7ff8dd 100644
--- a/doc/rapi.rst
+++ b/doc/rapi.rst
@@ -570,6 +570,18 @@ Modifies parameters of storage units on the node. Requires the parameters
 of the storage unit).  Parameters can be passed additionally. Currently only
 ``allocatable`` (bool) is supported. The result will be a job id.
 
+``/2/nodes/[node_name]/storage/repair``
++++++++++++++++++++++++++++++++++++++++
+
+Repairs a storage unit on the node.
+
+``PUT``
+~~~~~~~
+
+Repairs a storage unit on the node. Requires the parameters ``storage_type``
+(currently only ``lvm-vg`` can be repaired) and ``name`` (name of the storage
+unit). The result will be a job id.
+
 ``/2/nodes/[node_name]/tags``
 +++++++++++++++++++++++++++++
 
diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py
index d82780b51a56261e30ea2bf2f9c7d6b8336d9956..96d616e17454dd89909b17c913b826c7827bfbd1 100644
--- a/lib/rapi/connector.py
+++ b/lib/rapi/connector.py
@@ -163,6 +163,8 @@ CONNECTOR.update({
       rlib2.R_2_nodes_name_storage,
   re.compile(r'^/2/nodes/([\w\._-]+)/storage/modify$'):
       rlib2.R_2_nodes_name_storage_modify,
+  re.compile(r'^/2/nodes/([\w\._-]+)/storage/repair$'):
+      rlib2.R_2_nodes_name_storage_repair,
   "/2/instances": rlib2.R_2_instances,
   re.compile(r'^/2/instances/([\w\._-]+)$'): rlib2.R_2_instances_name,
   re.compile(r'^/2/instances/([\w\._-]+)/tags$'): rlib2.R_2_instances_name_tags,
diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 3a398a572368ea7f500da5944593e683ae04541b..72937c3b579fb014acd3b8799ea4dea197b6284a 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -353,6 +353,29 @@ class R_2_nodes_name_storage_modify(baserlib.R_Generic):
     return baserlib.SubmitJob([op])
 
 
+class R_2_nodes_name_storage_repair(baserlib.R_Generic):
+  """/2/nodes/[node_name]/storage/repair ressource.
+
+  """
+  def PUT(self):
+    node_name = self.items[0]
+
+    storage_type = self._checkStringVariable("storage_type", None)
+    if not storage_type:
+      raise http.HttpBadRequest("Missing the required 'storage_type'"
+                                " parameter")
+
+    name = self._checkStringVariable("name", None)
+    if not name:
+      raise http.HttpBadRequest("Missing the required 'name'"
+                                " parameter")
+
+    op = opcodes.OpRepairNodeStorage(node_name=node_name,
+                                     storage_type=storage_type,
+                                     name=name)
+    return baserlib.SubmitJob([op])
+
+
 class R_2_instances(baserlib.R_Generic):
   """/2/instances resource.