]> xenbits.xen.org Git - xenclient/toolstack.git/commitdiff
Add ability to eject and insert CDs
authorJon Ludlam <Jonathan.Ludlam@eu.citrix.com>
Tue, 25 Aug 2009 17:18:12 +0000 (18:18 +0100)
committerJon Ludlam <Jonathan.Ludlam@eu.citrix.com>
Tue, 25 Aug 2009 17:18:12 +0000 (18:18 +0100)
xenvm/tasks.ml
xenvm/vmact.ml
xenvm/xenvm.ml

index 953fb1781ee7cd69ff07de71e0a9efbf6836b823..92998fe2b606bddab5bce551495ac76d607eea92 100644 (file)
@@ -41,6 +41,9 @@ type action =
        | ListPCI
        | Trigger
        | Device
+        | CDEject
+        | CDInsertFile
+        | CDInsertReal
        | ReadConfig
        | Help
 
@@ -107,6 +110,14 @@ let actions_table = [
        (ListDisk,   mk_desc_nb "disk_list");
        (ListNic,    mk_desc_nb "nic_list");
        (ListPCI,    mk_desc_nb "pci_list");
+
+       (CDEject,    mk_desc_args "cd_eject" [ "virtpath", R, ArgString; ]);
+       (CDInsertFile,mk_desc_args "cd_insert_file" [ "virtpath", R, ArgString; 
+                                                     "physpath", R, ArgString ]);
+       (CDInsertReal,mk_desc_args "cd_insert_real" [ "virtpath", R, ArgString;
+                                                      "physpath", R, ArgString ]);
+                   
+
        (ReadConfig, mk_desc_args_nb "read_config" [ "path", O, ArgString ]);
        (Help,       mk_desc_nb "help");
        (*
index ad8794e3373aebc346961c552964fc4e9e62225a..eb09d883c6b190ee2b429d6e9ebea8c1233cda7d 100644 (file)
@@ -110,6 +110,18 @@ let add_disk_to_vm ~xs state disk =
                               ~protocol state.vm_domid in
        ()
 
+let cd_eject ~xs state virtpath =
+        Device.Vbd.media_eject ~xs ~virtpath state.vm_domid;
+       Xenvmlib.Ok
+
+let cd_insert_file ~xs state virtpath physpath =
+        Device.Vbd.media_insert ~xs ~virtpath ~physpath ~phystype:Device.Vbd.File state.vm_domid;
+       Xenvmlib.Ok
+
+let cd_insert_real ~xs state virtpath physpath =
+        Device.Vbd.media_insert ~xs ~virtpath ~physpath ~phystype:Device.Vbd.Phys state.vm_domid;
+       Xenvmlib.Ok
+
 let add_nic_to_vm ~xs state nic =
        let netty = Netman.Bridge nic.nic_bridge in
        let (_: Device_common.device) =
index 989193cf580773ff7e32382a6f7a728aa8d7957c..a090c52958eb9b5647f22f5c072c48bfdb9d31d5 100644 (file)
@@ -490,6 +490,17 @@ let do_task state (task, args) =
                let cmd = Tasks.args_get_string args "cmd" in
                let extra = Tasks.args_get_liststring args "extra" in
                with_xcs (fun xc xs -> Vmact.device_cmd xc xs state ty cmd extra)
+        | Tasks.CDEject ->
+               let virtpath = Tasks.args_get_string args "virtpath" in
+               with_xcs (fun xc xs -> Vmact.cd_eject xs state virtpath)
+        | Tasks.CDInsertReal ->
+                let virtpath = Tasks.args_get_string args "virtpath" in
+                let physpath = Tasks.args_get_string args "physpath" in
+                with_xcs (fun xc xs -> Vmact.cd_insert_real xs state virtpath physpath)
+        | Tasks.CDInsertFile ->
+                let virtpath = Tasks.args_get_string args "virtpath" in
+                let physpath = Tasks.args_get_string args "physpath" in
+                with_xcs (fun xc xs -> Vmact.cd_insert_file xs state virtpath physpath)
        | Tasks.ReadConfig ->
                let path =
                        try Some (Tasks.args_get_string args "path")