This can be used to evacuate a node.
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
...
]
+``/2/nodes/[node_name]/evacuate``
++++++++++++++++++++++++++++++++++
+
+Evacuates all secondary instances off a node.
+
+It supports the following commands: ``POST``.
+
+``POST``
+~~~~~~~~
+
+To evacuate a node, either one of the ``iallocator`` or ``remote_node``
+parameters must be passed:
+
+ evacuate?iallocator=[iallocator]
+ evacuate?remote_node=[nodeX.example.com]
+
``/2/nodes/[node_name]/role``
+++++++++++++++++++++++++++++
re.compile(r'^/2/nodes/([\w\._-]+)$'): rlib2.R_2_nodes_name,
re.compile(r'^/2/nodes/([\w\._-]+)/tags$'): rlib2.R_2_nodes_name_tags,
re.compile(r'^/2/nodes/([\w\._-]+)/role$'): rlib2.R_2_nodes_name_role,
+ re.compile(r'^/2/nodes/([\w\._-]+)/evacuate$'):
+ rlib2.R_2_nodes_name_evacuate,
"/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,
return baserlib.SubmitJob([op])
+class R_2_nodes_name_evacuate(baserlib.R_Generic):
+ """/2/nodes/[node_name]/evacuate resource.
+
+ """
+ def POST(self):
+ """Evacuate all secondary instances off a node.
+
+ """
+ node_name = self.items[0]
+ remote_node = self._checkStringVariable("remote_node", default=None)
+ iallocator = self._checkStringVariable("iallocator", default=None)
+
+ op = opcodes.OpEvacuateNode(node_name=node_name,
+ remote_node=remote_node,
+ iallocator=iallocator)
+
+ return baserlib.SubmitJob([op])
+
+
class R_2_instances(baserlib.R_Generic):
"""/2/instances resource.