Refactor common code dealing with [host:]name.
[mclu.git] / mclu_destroy.ml
index 550d3d4..a7170d8 100644 (file)
@@ -25,32 +25,7 @@ open Utils
 let get_arg_speclist () = []
 
 let destroy ~verbose ?host name =
-  let nodes = Mclu_conf.nodes () in
-  let node =
-    match host with
-    | Some host ->
-      (try List.find (fun n -> host = n.Mclu_conf.hostname) nodes
-       with Not_found ->
-         eprintf "mclu: host '%s' not found\n" host;
-         exit 1)
-    | None ->
-      (* No 'host:' prefix given, so we need to find the host. *)
-      let guests = Mclu_list.active_guests ~verbose ~nodes () in
-      let node, _ =
-        try
-          List.find (
-            fun (node, doms) ->
-              List.exists (
-                fun dom ->
-                  name = dom.Mclu_list.dom_name
-              ) doms
-          ) guests
-        with
-          Not_found ->
-            eprintf "mclu: guest '%s' not found\n" name;
-            exit 1 in
-      node in
-
+  let node, name = Mclu_list.find_guest ~verbose name in
   let uri = node.Mclu_conf.libvirt_uri in
 
   let cmd = sprintf "virsh -c %s destroy %s" (quote uri) (quote name) in
@@ -61,9 +36,7 @@ let destroy ~verbose ?host name =
   )
 
 let run ~verbose = function
-  | [ name ] ->
-    let host, name = name_parse name in
-    destroy ~verbose ?host name
+  | [ name ] -> destroy ~verbose name
   | _ ->
     eprintf "Usage: mclu destroy <[host:]name>\n";
     exit 1