diff --git a/htest/Test/Ganeti/Luxi.hs b/htest/Test/Ganeti/Luxi.hs index 8faf50ef3fb51ca93ffa818eb6e89a65868cffab..0dc39e96dca9509c5c8ff4edcf2ad5c05918a12e 100644 --- a/htest/Test/Ganeti/Luxi.hs +++ b/htest/Test/Ganeti/Luxi.hs @@ -82,6 +82,8 @@ instance Arbitrary Luxi.LuxiOp where Luxi.ReqAutoArchiveJobs -> Luxi.AutoArchiveJobs <$> arbitrary <*> arbitrary Luxi.ReqCancelJob -> Luxi.CancelJob <$> arbitrary + Luxi.ReqChangeJobPriority -> Luxi.ChangeJobPriority <$> arbitrary <*> + arbitrary Luxi.ReqSetDrainFlag -> Luxi.SetDrainFlag <$> arbitrary Luxi.ReqSetWatcherPause -> Luxi.SetWatcherPause <$> arbitrary diff --git a/htools/Ganeti/Luxi.hs b/htools/Ganeti/Luxi.hs index 8ad7f32b74bdf39d918567095a0ea5cf7c74d150..9b959fcd7adb682695aa277022bf5becf05dabf4 100644 --- a/htools/Ganeti/Luxi.hs +++ b/htools/Ganeti/Luxi.hs @@ -163,6 +163,10 @@ $(genLuxiOp "LuxiOp" , (luxiReqCancelJob, [ simpleField "job" [t| Int |] ] ) + , (luxiReqChangeJobPriority, + [ simpleField "job" [t| Int |] + , simpleField "priority" [t| Int |] ] + ) , (luxiReqSetDrainFlag, [ simpleField "flag" [t| Bool |] ] ) @@ -392,6 +396,10 @@ decodeCall (LuxiCall call args) = [job] <- fromJVal args rid <- parseJobId job return $ CancelJob rid + ReqChangeJobPriority -> do + (job, priority) <- fromJVal args + rid <- parseJobId job + return $ ChangeJobPriority rid priority ReqSetDrainFlag -> do [flag] <- fromJVal args return $ SetDrainFlag flag diff --git a/lib/luxi.py b/lib/luxi.py index 306952dead65412b7612c317dd48c0088b51d6ba..c32175361143ec58133d5e3e1e7547b95bdb50be 100644 --- a/lib/luxi.py +++ b/lib/luxi.py @@ -54,6 +54,7 @@ REQ_SUBMIT_MANY_JOBS = "SubmitManyJobs" REQ_WAIT_FOR_JOB_CHANGE = "WaitForJobChange" REQ_CANCEL_JOB = "CancelJob" REQ_ARCHIVE_JOB = "ArchiveJob" +REQ_CHANGE_JOB_PRIORITY = "ChangeJobPriority" REQ_AUTO_ARCHIVE_JOBS = "AutoArchiveJobs" REQ_QUERY = "Query" REQ_QUERY_FIELDS = "QueryFields" @@ -73,6 +74,7 @@ REQ_ALL = frozenset([ REQ_ARCHIVE_JOB, REQ_AUTO_ARCHIVE_JOBS, REQ_CANCEL_JOB, + REQ_CHANGE_JOB_PRIORITY, REQ_QUERY, REQ_QUERY_CLUSTER_INFO, REQ_QUERY_CONFIG_VALUES, @@ -488,6 +490,9 @@ class Client(object): def ArchiveJob(self, job_id): return self.CallMethod(REQ_ARCHIVE_JOB, (job_id, )) + def ChangeJobPriority(self, job_id, priority): + return self.CallMethod(REQ_CHANGE_JOB_PRIORITY, (job_id, priority)) + def AutoArchiveJobs(self, age): timeout = (DEF_RWTO - 1) / 2 return self.CallMethod(REQ_AUTO_ARCHIVE_JOBS, (age, timeout)) diff --git a/lib/server/masterd.py b/lib/server/masterd.py index 7cd7a80c79528076b0b11c1be37ecb8338cf6ef0..46be85efa9f44d8d103402e33dfac5fc920196b2 100644 --- a/lib/server/masterd.py +++ b/lib/server/masterd.py @@ -303,6 +303,12 @@ class ClientOps: logging.info("Received job cancel request for %s", job_id) return queue.CancelJob(job_id) + elif method == luxi.REQ_CHANGE_JOB_PRIORITY: + (job_id, priority) = args + logging.info("Received request to change priority for job %s to %s", + job_id, priority) + return queue.ChangeJobPriority(job_id, priority) + elif method == luxi.REQ_ARCHIVE_JOB: (job_id, ) = args logging.info("Received job archive request for %s", job_id) diff --git a/test/ganeti.rapi.testutils_unittest.py b/test/ganeti.rapi.testutils_unittest.py index 53dcaa74f802792598cb707618b70368a0e4dd9f..91ba27d66a3615da2c162d7d4e80f272b30927da 100755 --- a/test/ganeti.rapi.testutils_unittest.py +++ b/test/ganeti.rapi.testutils_unittest.py @@ -41,6 +41,7 @@ KNOWN_UNUSED_LUXI = frozenset([ luxi.REQ_SUBMIT_MANY_JOBS, luxi.REQ_ARCHIVE_JOB, luxi.REQ_AUTO_ARCHIVE_JOBS, + luxi.REQ_CHANGE_JOB_PRIORITY, luxi.REQ_QUERY_EXPORTS, luxi.REQ_QUERY_CONFIG_VALUES, luxi.REQ_QUERY_TAGS,