diff --git a/lib/rpc.py b/lib/rpc.py index 609549ed7e8672dd0d105a5245496370caa2801e..633dc6a7aff1a8d3e424de86a1901dba793b71cf 100644 --- a/lib/rpc.py +++ b/lib/rpc.py @@ -988,6 +988,16 @@ class RpcRunner(object): return self._SingleNodeCall(node, "blockdev_rename", [(d.ToDict(), uid) for d, uid in devlist]) + @_RpcTimeout(_TMO_NORMAL) + def call_blockdev_pause_resume_sync(self, node, disks, pause): + """Request a pause/resume of given block device. + + This is a single-node call. + + """ + return self._SingleNodeCall(node, "blockdev_pause_resume_sync", + [[bdev.ToDict() for bdev in disks], pause]) + @_RpcTimeout(_TMO_NORMAL) def call_blockdev_assemble(self, node, disk, owner, on_primary): """Request assembling of a given block device. diff --git a/lib/server/noded.py b/lib/server/noded.py index 63d5e474ca938a7a99b8ac3c4524e262f15e5438..bf557bc17c348241d61796968b8dc7e71ed27a8d 100644 --- a/lib/server/noded.py +++ b/lib/server/noded.py @@ -183,6 +183,15 @@ class NodeHttpServer(http.server.HttpServer): raise ValueError("can't unserialize data!") return backend.BlockdevCreate(bdev, size, owner, on_primary, info) + @staticmethod + def perspective_blockdev_pause_resume_sync(params): + """Pause/resume sync of a block device. + + """ + disks_s, pause = params + disks = [objects.Disk.FromDict(bdev_s) for bdev_s in disks_s] + return backend.BlockdevPauseResumeSync(disks, pause) + @staticmethod def perspective_blockdev_wipe(params): """Wipe a block device.