(* Probe the template for various features. *)
let template_info = Template.probe ~verbose template_filename in
+ (* Check --size is not too small. *)
+ let size =
+ match !size, template_info.Template.minimum_size with
+ | 0L, None -> 0L (* virt-builder default *)
+ | 0L, Some min_size -> (* go with template minimum size *)
+ min_size
+ | size, Some min_size when size < min_size ->
+ eprintf "mclu: --size parameter is smaller than the minimum specified by the template (%s).\n"
+ (human_size min_size);
+ exit 1
+ | size, _ -> size in (* go with user-specified size *)
+
(* Decide how much RAM we will give the guest. This affects our
* choice of node, so do it early.
*)
fpf "export format=%s\n" (quote format);
fpf "export name=%s\n" (quote name);
fpf "export output=%s\n" (quote remote_image);
- (match !size with
+ (match size with
| 0L -> ()
| size -> fpf "export size=%s\n" (quote (sprintf "--size %Ldb" size))
);
base_image : string;
minimum_memory : int64 option;
recommended_memory : int64 option;
+ minimum_size : int64 option;
disk_bus : string option;
network_model : string option;
}
exit 1
);
| _ -> None in
+ let minimum_size =
+ match run_template ~verbose filename "minimum-size" [] with
+ | Some [size] ->
+ (try Some (bytes_of_human_size size)
+ with Not_found ->
+ eprintf "mclu: cannot parse output of '%s minimum-size'\n"
+ filename;
+ exit 1
+ );
+ | _ -> None in
let disk_bus =
match run_template ~verbose filename "disk-bus" [] with
| Some [answer] -> Some answer
{ base_image = base_image;
minimum_memory = minimum_memory;
recommended_memory = recommended_memory;
+ minimum_size = minimum_size;
disk_bus = disk_bus;
network_model = network_model }
base_image : string;
minimum_memory : int64 option;
recommended_memory : int64 option;
+ minimum_size : int64 option;
disk_bus : string option;
network_model : string option;
}