"type", R, ArgString; "mode", R, ArgString;
"devtype", R, ArgString ]);
(AddNic, mk_desc_args "nic-add" [ "bridge", O, ArgString; "mac", O, ArgString; "model", O, ArgString ]);
- (AddPCI, mk_desc_args "pci-add" [ "domain", R, ArgInt; "bus", R, ArgInt; "slot", R, ArgInt; "func", R, ArgInt ]);
+ (AddPCI, mk_desc_args "pci-add" [ "id", R, ArgInt; "domain", R, ArgInt; "bus", R, ArgInt;
+ "slot", R, ArgInt; "func", R, ArgInt;
+ "msitranslate", O, ArgBool; "power_mgmt", O, ArgBool ]);
(DelDisk, mk_desc "disk-del");
(DelNic, mk_desc "nic-del");
(DelPCI, mk_desc "pci-del");
Vmconfig.disk_dynadded = false;
} in
let cfg = get_new_config state in
- (* add disk to disks *)
+ let cfg = { cfg with disks = cfg.disks @ [ disk ] } in
set_new_config state cfg;
Xenvmlib.Ok
Vmconfig.nic_model = model;
} in
let cfg = get_new_config state in
- (* add nic to nics *)
+ let cfg = { cfg with nics = cfg.nics @ [ nic ] } in
set_new_config state cfg;
Xenvmlib.Ok
-let add_pci state domain bus slot func bind msitranslate power_mgmt =
+let add_pci state id domain bus slot func bind msitranslate power_mgmt =
let msitranslate = may (fun b -> if b then 1 else 0) msitranslate in
let power_mgmt = may (fun b -> if b then 1 else 0) power_mgmt in
+ let id = Int64.to_int id in
let pci = {
Vmconfig.pci_bind = bind;
Vmconfig.pci_domain = Int64.to_int domain;
Vmconfig.pci_power_mgmt = power_mgmt;
} in
let cfg = get_new_config state in
- (* add pci to pcis *)
+ let cfg = { cfg with pcis = cfg.pcis @ [ id, pci ] } in
set_new_config state cfg;
Xenvmlib.Ok
let model = optional_arg_nodef Tasks.args_get_string args "model" in
Vmact.add_nic state bridge mac model
| Tasks.AddPCI ->
+ let id = Tasks.args_get_int args "id" in
let domain = Tasks.args_get_int args "domain" in
let bus = Tasks.args_get_int args "bus" in
let slot = Tasks.args_get_int args "slot" in
let bind = optional_arg true Tasks.args_get_bool args "bind" in
let msitranslate = optional_arg_nodef Tasks.args_get_bool args "msitranslate" in
let power_mgmt = optional_arg_nodef Tasks.args_get_bool args "power_mgmt" in
- Vmact.add_pci state domain bus slot func bind msitranslate power_mgmt
+ Vmact.add_pci state id domain bus slot func bind msitranslate power_mgmt
| Tasks.DelDisk | Tasks.DelNic | Tasks.DelPCI ->
Xenvmlib.Error "not implemented"
| Tasks.ListDisk | Tasks.ListNic | Tasks.ListPCI ->