X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=template.ml;h=404ec6b7be72ed6479fb69f0cc44ae039ffb2d05;hb=864e9066746e865287b7ec83b0d1c145e163fe0f;hp=428ffe44be145ea139a9a55a53d9bc3d88f06334;hpb=00c6b7f0a9371df0212dbe84abb1f95c162609a0;p=mclu.git diff --git a/template.ml b/template.ml index 428ffe4..404ec6b 100644 --- a/template.ml +++ b/template.ml @@ -73,12 +73,15 @@ let run_template ~verbose filename subcmd args = type template_info = { base_image : string; + guest_arch : string option; minimum_memory : int64 option; recommended_memory : int64 option; minimum_size : int64 option; disk_bus : string option; network_model : string option; has_xml_target : bool; + needs_external_kernel : bool; + cmdline : string option; } let probe ?(verbose = false) filename = @@ -97,6 +100,10 @@ let probe ?(verbose = false) filename = | _ -> eprintf "mclu: cannot parse '%s base-image'\n" filename; exit 1 in + let guest_arch = + match run_template ~verbose filename "guest-arch" [] with + | Some [arch] -> Some arch + | _ -> None in let minimum_memory = match run_template ~verbose filename "minimum-memory" [] with | Some [memory] -> @@ -138,10 +145,29 @@ let probe ?(verbose = false) filename = let has_xml_target = run_template ~verbose filename "xml" [] <> None in + let needs_external_kernel = + match run_template ~verbose filename "needs-external-kernel" [] with + | None -> false + | Some ["1"|"yes"] -> true + | Some _ -> false in + + let cmdline = + match run_template ~verbose filename "cmdline" [] with + | Some [cmdline] -> Some cmdline + | _ -> None in + + if not needs_external_kernel && cmdline <> None then ( + eprintf "mclu: template cannot set 'cmdline' unless 'needs-external-kernel' is 'yes'.\n"; + exit 1 + ); + { base_image = base_image; + guest_arch = guest_arch; minimum_memory = minimum_memory; recommended_memory = recommended_memory; minimum_size = minimum_size; disk_bus = disk_bus; network_model = network_model; - has_xml_target = has_xml_target } + has_xml_target = has_xml_target; + needs_external_kernel = needs_external_kernel; + cmdline = cmdline }