From af5ebcb1bdeb3ee46876d847707e3d4947f8d75d Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Fri, 8 Aug 2008 11:21:35 +0000
Subject: [PATCH] noded: Add RPC function to rename job queue files

This will be used to archive jobs.

Reviewed-by: iustinp
---
 daemons/ganeti-noded | 10 ++++++++++
 lib/backend.py       | 12 ++++++++++++
 lib/rpc.py           | 13 +++++++++++++
 3 files changed, 35 insertions(+)

diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded
index 31a74d5e5..8cdda21df 100755
--- a/daemons/ganeti-noded
+++ b/daemons/ganeti-noded
@@ -569,6 +569,16 @@ class NodeDaemonRequestHandler(http.HTTPRequestHandler):
     """
     return backend.JobQueuePurge()
 
+  @staticmethod
+  @_RequireJobQueueLock
+  def perspective_jobqueue_rename(params):
+    """Rename a job queue file.
+
+    """
+    (old, new) = params
+
+    return backend.JobQueueRename(old, new)
+
 
 class NodeDaemonHttpServer(http.HTTPServer):
   def __init__(self, server_address):
diff --git a/lib/backend.py b/lib/backend.py
index f157c196f..2d7f6c984 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1690,6 +1690,18 @@ def JobQueuePurge():
   _CleanDirectory(constants.JOB_QUEUE_ARCHIVE_DIR)
 
 
+def JobQueueRename(old, new):
+  """Renames a job queue file.
+
+  """
+  if not (_IsJobQueueFile(old) and _IsJobQueueFile(new)):
+    return False
+
+  os.rename(old, new)
+
+  return True
+
+
 def CloseBlockDevices(disks):
   """Closes the given block devices.
 
diff --git a/lib/rpc.py b/lib/rpc.py
index 368d1f713..9fd542ccb 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -826,3 +826,16 @@ def call_jobqueue_purge(node):
   c.connect(node)
   c.run()
   return c.getresult().get(node, False)
+
+
+def call_jobqueue_rename(node_list, old, new):
+  """Rename a job queue file.
+
+  This is a multi-node call.
+
+  """
+  c = Client("jobqueue_rename", [old, new])
+  c.connect_list(node_list)
+  c.run()
+  result = c.getresult()
+  return result
-- 
GitLab