From 47cda6aafa57e601a091096cf223e843c625cd9a Mon Sep 17 00:00:00 2001 From: Romain Slootmaekers Date: Tue, 11 Jul 2017 11:36:54 +0200 Subject: [PATCH] fail with msg iso assert list-presets includes version --- ocaml/src/alba_json.ml | 4 +++- ocaml/src/albamgr_client.ml | 38 ++++++++++++++++++++++++++++++------- ocaml/src/albamgr_plugin.ml | 22 ++++++++++++++------- ocaml/src/cli_preset.ml | 21 ++++++++++++++------ 4 files changed, 64 insertions(+), 21 deletions(-) diff --git a/ocaml/src/alba_json.ml b/ocaml/src/alba_json.ml index 5baccb8e..e7df2e94 100644 --- a/ocaml/src/alba_json.ml +++ b/ocaml/src/alba_json.ml @@ -273,6 +273,7 @@ module Preset = struct object_checksum : object_checksum; fragment_encryption : fragment_encryption; in_use : (bool [@default true]); + version: int64; } [@@deriving yojson] let to_yojson t = @@ -293,7 +294,7 @@ module Preset = struct type t_list = t list [@@deriving yojson] - let make (name, preset, is_default, in_use) = + let make (name, preset, version, is_default, in_use) = let open Preset in { name; policies = preset.policies; @@ -319,6 +320,7 @@ module Preset = struct | AlgoWithKey (AES (CTR, L256), key) -> AES_CTR_256 (HexString.show key) | NoEncryption -> NO_ENCRYPTION); in_use; + version; } let to_preset diff --git a/ocaml/src/albamgr_client.ml b/ocaml/src/albamgr_client.ml index 186ab68e..a435dc98 100644 --- a/ocaml/src/albamgr_client.ml +++ b/ocaml/src/albamgr_client.ml @@ -208,6 +208,16 @@ object(self) client # query ListPresets RangeQueryArgs.({ first; finc; last; reverse; max; }) + >>= fun r -> + Lwt.return r + + method list_presets2 ~first ~finc ~last ~reverse ~max = + use_optional_feature + (fun () -> + client # query + ListPresets2 + RangeQueryArgs.({ first; finc; last; + reverse; max; })) method list_all_presets () = list_all_x @@ -217,19 +227,33 @@ object(self) ~last:None ~reverse:false ~max:(-1)) + method get_preset ~preset_name = self # list_presets ~first:preset_name ~finc:true ~last:(Some(preset_name, true)) ~max:1 ~reverse:false >>= fun ((_, presets), _) -> Lwt.return (List.hd presets) - method list_presets2 ~first ~finc ~last ~reverse ~max = - use_optional_feature - (fun () -> - client # query - ListPresets2 - RangeQueryArgs.({ first; finc; last; - reverse; max; })) + + + method list_all_presets2 () = + list_all_x + ~first:"" + (fun (name, + (_preset:Preset.t), + (_version:Preset.version), + (_is_default:bool), (_in_use:bool)) -> name) + (fun ~first ~finc -> + self # list_presets2 + ~last:None + ~reverse:false ~max:(-1) + ~first ~finc + >>= fun r -> + match r with + | None -> Lwt.return ((0,[]), false) + | Some r -> Lwt.return r + ) + method get_preset2 ~preset_name = self # list_presets2 diff --git a/ocaml/src/albamgr_plugin.ml b/ocaml/src/albamgr_plugin.ml index 5532e889..078e8842 100644 --- a/ocaml/src/albamgr_plugin.ml +++ b/ocaml/src/albamgr_plugin.ml @@ -1520,13 +1520,21 @@ let albamgr_user_hook : HookRegistry.h = fun (ic, oc, _cid) db backend -> ); ] | Some v -> let version', namespace_ids' = deserialize Preset.Propagation.from_buffer v in - assert (version' = preset_version); - [ Update.Assert (propagation_key, Some v); - Update.Set (propagation_key, - serialize - Preset.Propagation.to_buffer - (version', namespace_id :: namespace_ids') - ); ] + (* assert (version' = preset_version); *) + if version' = preset_version + then + [ Update.Assert (propagation_key, Some v); + Update.Set (propagation_key, + serialize + Preset.Propagation.to_buffer + (version', namespace_id :: namespace_ids') + ); ] + else + let msg = Printf.sprintf + "%S version'=%Li <> preset_version=%Li" + preset_name version' preset_version + in + failwith msg in let osd_ids = diff --git a/ocaml/src/cli_preset.ml b/ocaml/src/cli_preset.ml index ab30539e..775a319a 100644 --- a/ocaml/src/cli_preset.ml +++ b/ocaml/src/cli_preset.ml @@ -169,16 +169,25 @@ let alba_list_presets cfg_url tls_config to_json verbose = cfg ~tls_config (fun client -> - client # list_all_presets ()) >>= fun (cnt, presets) -> + client # list_all_presets2 ()) + >>= fun (cnt, presets) -> if to_json - then begin - let res = List.map Alba_json.Preset.make presets in - print_result res Alba_json.Preset.t_list_to_yojson - end else + then + begin + let res = List.map Alba_json.Preset.make presets in + print_result res Alba_json.Preset.t_list_to_yojson + end + else Lwt_io.printlf "Found %i presets: %s" cnt - ([%show : (Preset.name * Preset.t * bool * bool) list] presets) + ([%show : (Preset.name + * Preset.t + * Preset.version + * bool (* is_default *) + * bool (* in_use *) + ) list] + presets) in lwt_cmd_line ~to_json ~verbose t