Skip to content

Commit a17a079

Browse files
committed
Merge pull request #38 from djs55/probe
CP-13525: plumb through SR.probe
2 parents fbf9242 + 9092f79 commit a17a079

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

main.ml

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

0 commit comments

Comments
 (0)