File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed
Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -473,6 +473,29 @@ let process root_dir name x =
473473 >> = fun () ->
474474 Deferred.Result. return (R. success (Args.SR.Detach. rpc_of_response response))
475475 end
476+ | { R. name = "SR.probe" ; R. params = [ args ] } ->
477+ let args = Args.SR.Probe. request_of_rpc args in
478+ let name = args.Args.SR.Probe. queue in
479+ let device_config = args.Args.SR.Probe. device_config in
480+ begin match List. find device_config ~f: (fun (k , _ ) -> k = " uri" ) with
481+ | None ->
482+ Deferred.Result. return (R. failure (missing_uri () ))
483+ | Some (_ , uri ) ->
484+ let args = Storage.Volume.Types.SR.Probe.In. make
485+ args.Args.SR.Probe. dbg
486+ uri in
487+ let args = Storage.Volume.Types.SR.Probe.In. rpc_of_t args in
488+ let open Deferred.Result.Monad_infix in
489+ fork_exec_rpc root_dir (script root_dir name `Volume " SR.probe" ) args Storage.Volume.Types.SR.Probe.Out. t_of_rpc
490+ >> = fun response ->
491+ let srs = List. map ~f: (fun sr_stat -> sr_stat.Storage.Volume.Types. sr, {
492+ Storage_interface. total_space = sr_stat.Storage.Volume.Types. total_space;
493+ free_space = sr_stat.Storage.Volume.Types. free_space;
494+ }) response.Storage.Volume.Types.SR.Probe.Out. srs in
495+ let uris = response.Storage.Volume.Types.SR.Probe.Out. uris in
496+ let result = Storage_interface. (Probe { srs; uris }) in
497+ Deferred.Result. return (R. success (Args.SR.Probe. rpc_of_response result))
498+ end
476499 | { R. name = "SR.create" ; R. params = [ args ] } ->
477500 let args = Args.SR.Create. request_of_rpc args in
478501 let device_config = args.Args.SR.Create. device_config in
You can’t perform that action at this time.
0 commit comments