Skip to content

Commit de24e7b

Browse files
committed
Merge pull request #9 from djs55/add-clone-snapshot
Add support for VDI.clone and VDI.snapshot
2 parents e7fb15b + e7a046b commit de24e7b

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

main.ml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)