| k :: [] -> k, ""
| _ -> failwith "bad format for platform. expecting k=v"
in
+ let config_cpus_affinity_of_string s =
+ match String.split ~limit:2 ':' s with
+ | k :: v :: [] ->
+ let id = int_of_string k in
+ let args = String.split ',' v in
+ let vcpus = List.map int_of_string args in
+ (id, vcpus)
+ | _ -> failwith "bad format for cpu affinity. expecting id:list"
+ in
match field with
| "disk" -> { cfg with disks = cfg.disks @ [ config_disk_of_string value ] }
| "nic" | "vif" -> { cfg with nics = cfg.nics @ [ config_nic_of_string value ] }
| "platform" -> { cfg with platform = cfg.platform @ [ config_platform_of_string value ] }
| "extra-local-watch" -> { cfg with extra_local_watches = cfg.extra_local_watches @ [ value ] }
| "extra-vm-watch" -> { cfg with extra_vm_watches = cfg.extra_vm_watches @ [ value ] }
+ | "cpus-affinity" -> { cfg with cpus_affinity = cfg.cpus_affinity @ [ config_cpus_affinity_of_string value ] }
| _ -> raise (Unknown_field field)
let list_del cfg field index =
] in
let kv k v =
match k with
- | "disk" | "vif" | "nic" | "pci" | "cpuid"
+ | "disk" | "vif" | "nic" | "pci" | "cpuid" | "cpus-affinity"
| "extra-hvm" | "extra-local-watch" | "extra-vm-watch" ->
cfg := list_add !cfg k v
| _ ->