Commit 1e82bc80 authored by Michael Hanselmann's avatar Michael Hanselmann

rapi: Add /2/nodes/[node_name]/storage/modify resource

Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent 8381fa2d
......@@ -541,6 +541,19 @@ Requests a list of storage units on a node. Requires the parameters
``output_fields``. The result will be a job id, using which the result can be
retrieved.
``/2/nodes/[node_name]/storage/modify``
+++++++++++++++++++++++++++++++++++++++
Modifies storage units on the node.
``PUT``
~~~~~~~
Modifies parameters of storage units on the node. Requires the parameters
``storage_type`` (one of ``file``, ``lvm-pv`` or ``lvm-vg``) and ``name`` (name
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]/tags``
+++++++++++++++++++++++++++++
......
......@@ -161,6 +161,8 @@ CONNECTOR.update({
rlib2.R_2_nodes_name_migrate,
re.compile(r'^/2/nodes/([\w\._-]+)/storage$'):
rlib2.R_2_nodes_name_storage,
re.compile(r'^/2/nodes/([\w\._-]+)/storage/modify$'):
rlib2.R_2_nodes_name_storage_modify,
"/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,
......
......@@ -323,6 +323,36 @@ class R_2_nodes_name_storage(baserlib.R_Generic):
return baserlib.SubmitJob([op])
class R_2_nodes_name_storage_modify(baserlib.R_Generic):
"""/2/nodes/[node_name]/storage/modify 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")
changes = {}
if "allocatable" in self.queryargs:
changes[constants.SF_ALLOCATABLE] = \
bool(self._checkIntVariable("allocatable", default=1))
op = opcodes.OpModifyNodeStorage(node_name=node_name,
storage_type=storage_type,
name=name,
changes=changes)
return baserlib.SubmitJob([op])
class R_2_instances(baserlib.R_Generic):
"""/2/instances resource.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment