X-Git-Url: http://git.annexia.org/?p=virt-top.git;a=blobdiff_plain;f=virt-ctrl%2Fvc_domain_ops.ml;h=787e71ea6f73d511d2aacfc527e08634eeac554c;hp=fbd7f283c2ec93df74b2a3f19b0d4615b20fbf74;hb=f9d99e63272520c19bddc9e4b47731d57e5658e2;hpb=474e8b8e2e98b61d5d01a58f843b9338754ecf2f diff --git a/virt-ctrl/vc_domain_ops.ml b/virt-ctrl/vc_domain_ops.ml index fbd7f28..787e71e 100644 --- a/virt-ctrl/vc_domain_ops.ml +++ b/virt-ctrl/vc_domain_ops.ml @@ -33,7 +33,7 @@ let get_domain (tree : GTree.view) (model : GTree.tree_store) | None -> None (* No row at all selected. *) | Some path -> let row = model#get_iter path in - (* Visit parent to get the conn_id. + (* Visit parent to get the connid. * If this returns None, then it's a top-level row which is * selected (ie. a connection), so just ignore. *) @@ -42,21 +42,20 @@ let get_domain (tree : GTree.view) (model : GTree.tree_store) | Some parent -> try let (_, col_domname, _, _, _, col_id) = columns in - let conn_id = model#get ~row:parent ~column:col_id in + let connid = model#get ~row:parent ~column:col_id in let conn = - List.assoc conn_id (Vc_connections.get_conns ()) in + List.assoc connid (Vc_connections.get_conns ()) in let domid = model#get ~row ~column:col_id in if domid = -1 then ( (* Inactive domain. *) let domname = model#get ~row ~column:col_domname in let dom = D.lookup_by_name conn domname in let info = D.get_info dom in - Some (dom, info, -1) - ) else if domid > 0 then ( (* Active domU. *) + Some (dom, info, connid, -1) + ) else ( (* Active domU. *) let dom = D.lookup_by_id conn domid in let info = D.get_info dom in - Some (dom, info, domid) - ) else (* Dom0 - ignore. *) - None + Some (dom, info, connid, domid) + ) with (* Domain or connection disappeared under us. *) | Not_found -> None @@ -67,30 +66,43 @@ let get_domain (tree : GTree.view) (model : GTree.tree_store) prerr_endline (Libvirt.Virterror.to_string err); None +type dops_callback_fn = + GTree.view -> GTree.tree_store -> Vc_connections.columns -> unit -> unit + let start_domain tree model columns () = match get_domain tree model columns with | None -> () - | Some (dom, _, domid) -> + | Some (dom, _, _, domid) -> if domid = -1 then D.create dom let pause_domain tree model columns () = match get_domain tree model columns with | None -> () - | Some (dom, info, domid) -> + | Some (dom, info, _, domid) -> if domid >= 0 && info.D.state <> D.InfoPaused then D.suspend dom let resume_domain tree model columns () = match get_domain tree model columns with | None -> () - | Some (dom, info, domid) -> + | Some (dom, info, _, domid) -> if domid >= 0 && info.D.state = D.InfoPaused then D.resume dom let shutdown_domain tree model columns () = match get_domain tree model columns with | None -> () - | Some (dom, info, domid) -> + | Some (dom, info, _, domid) -> if domid >= 0 && info.D.state <> D.InfoShutdown then D.shutdown dom + +let open_domain_details tree model columns () = + match get_domain tree model columns with + | None -> () + | Some (dom, info, connid, domid) -> + if domid >= 0 then ( + + + + )