@@ -282,6 +282,36 @@ let process root_dir name x =
282282 fork_exec_rpc root_dir (script root_dir name `Volume " Volume.destroy" ) args Storage.V.Types.Volume.Destroy.Out. t_of_rpc
283283 >> = fun response ->
284284 Deferred.Result. return (R. success (Args.VDI.Destroy. rpc_of_response response))
285+ | { R. name = "VDI.snapshot" ; R. params = [ args ] } ->
286+ let open Deferred.Result.Monad_infix in
287+ let args = Args.VDI.Snapshot. request_of_rpc args in
288+ Attached_SRs. find args.Args.VDI.Snapshot. sr
289+ >> = fun sr ->
290+ let vdi_info = args.Args.VDI.Snapshot. vdi_info in
291+ let args = Storage.V.Types.Volume.Snapshot.In. make
292+ args.Args.VDI.Snapshot. dbg
293+ sr
294+ vdi_info.vdi in
295+ let args = Storage.V.Types.Volume.Snapshot.In. rpc_of_t args in
296+ fork_exec_rpc root_dir (script root_dir name `Volume " Volume.snapshot" ) args Storage.V.Types.Volume.Snapshot.Out. t_of_rpc
297+ >> = fun response ->
298+ let response = vdi_of_volume response in
299+ Deferred.Result. return (R. success (Args.VDI.Snapshot. rpc_of_response response))
300+ | { R. name = "VDI.clone" ; R. params = [ args ] } ->
301+ let open Deferred.Result.Monad_infix in
302+ let args = Args.VDI.Clone. request_of_rpc args in
303+ Attached_SRs. find args.Args.VDI.Clone. sr
304+ >> = fun sr ->
305+ let vdi_info = args.Args.VDI.Clone. vdi_info in
306+ let args = Storage.V.Types.Volume.Clone.In. make
307+ args.Args.VDI.Clone. dbg
308+ sr
309+ vdi_info.vdi in
310+ let args = Storage.V.Types.Volume.Clone.In. rpc_of_t args in
311+ fork_exec_rpc root_dir (script root_dir name `Volume " Volume.clone" ) args Storage.V.Types.Volume.Clone.Out. t_of_rpc
312+ >> = fun response ->
313+ let response = vdi_of_volume response in
314+ Deferred.Result. return (R. success (Args.VDI.Clone. rpc_of_response response))
285315 | { R. name = "VDI.attach" ; R. params = [ args ] } ->
286316 let open Deferred.Result.Monad_infix in
287317 let args = Args.VDI.Attach. request_of_rpc args in
0 commit comments