diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded index 83177fefc80828cb21af8155e638f9886c24c523..f069195d8a4168a352bad74486948ed1c5790c34 100755 --- a/daemons/ganeti-noded +++ b/daemons/ganeti-noded @@ -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_wipe(params): + """Wipe a block device. + + """ + bdev_s, offset, size = params + bdev = objects.Disk.FromDict(bdev_s) + return backend.BlockdevWipe(bdev, offset, size) + @staticmethod def perspective_blockdev_remove(params): """Remove a block device. diff --git a/lib/rpc.py b/lib/rpc.py index ffe64c3ebab2e1819c8888ded778126e69026f4a..0126642869d2ad894541214575f5d8f626f48079 100644 --- a/lib/rpc.py +++ b/lib/rpc.py @@ -953,6 +953,16 @@ class RpcRunner(object): return self._SingleNodeCall(node, "blockdev_create", [bdev.ToDict(), size, owner, on_primary, info]) + @_RpcTimeout(_TMO_SLOW) + def call_blockdev_wipe(self, node, bdev, offset, size): + """Request wipe at given offset with given size of a block device. + + This is a single-node call. + + """ + return self._SingleNodeCall(node, "blockdev_wipe", + [bdev.ToDict(), offset, size]) + @_RpcTimeout(_TMO_NORMAL) def call_blockdev_remove(self, node, bdev): """Request removal of a given block device.