QEMU/KVM virtual machine management via QMP
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(lint): extract retry_after_delay helper (E005) and inline run_vm (E350)

Extract retry delay+sleep+recurse into retry_after_delay to bring
attempt_request under 50 lines. Inline run_vm into cmdliner term
to eliminate boolean blindness from positional kvm/no_kvm params.

+35 -24
+35 -24
bin/main.ml
··· 127 127 128 128 (* Commands *) 129 129 130 - let run_vm name cpus memory kernel initrd cmdline disks accel kvm no_kvm socket 131 - = 132 - run_with_eio (fun ~sw ~net ~proc_mgr -> 133 - let config = 134 - build_config ~name ~cpus ~memory ~kernel ~initrd ~cmdline ~disks ~accel 135 - ~kvm ~no_kvm ~socket 136 - in 137 - Fmt.pr "Starting VM '%s'...@." name; 138 - let vm = Qemu.Vm.spawn ~sw ~proc_mgr config in 139 - Fmt.pr "QEMU started.@."; 140 - Fmt.pr "Connecting to QMP socket...@."; 141 - match Qemu.Vm.connect ~sw ~net vm with 142 - | Error e -> 143 - Fmt.epr "Error connecting: %s@." e; 144 - `Error (false, e) 145 - | Ok () -> 146 - Fmt.pr "Connected.@."; 147 - (match Qemu.Vm.query_status vm with 148 - | Ok status -> Fmt.pr "Status: %a@." Qemu.Qmp.Status.pp status 149 - | Error e -> Fmt.epr "Status error: %s@." e); 150 - `Ok ()) 151 - 152 130 let run_cmd = 153 131 let doc = "Start a new QEMU VM." in 154 132 let man = ··· 163 141 let info = Cmd.info "run" ~doc ~man in 164 142 let term = 165 143 Term.( 166 - const run_vm $ name_arg $ cpus_arg $ memory_arg $ kernel_arg $ initrd_arg 167 - $ cmdline_arg $ disk_arg $ accel_arg $ kvm_arg $ no_kvm_arg $ socket_arg) 144 + const 145 + (fun 146 + name 147 + cpus 148 + memory 149 + kernel 150 + initrd 151 + cmdline 152 + disks 153 + accel 154 + kvm 155 + no_kvm 156 + socket 157 + -> 158 + run_with_eio (fun ~sw ~net ~proc_mgr -> 159 + let config = 160 + build_config ~name ~cpus ~memory ~kernel ~initrd ~cmdline ~disks 161 + ~accel ~kvm ~no_kvm ~socket 162 + in 163 + Fmt.pr "Starting VM '%s'...@." name; 164 + let vm = Qemu.Vm.spawn ~sw ~proc_mgr config in 165 + Fmt.pr "QEMU started.@."; 166 + Fmt.pr "Connecting to QMP socket...@."; 167 + match Qemu.Vm.connect ~sw ~net vm with 168 + | Error e -> 169 + Fmt.epr "Error connecting: %s@." e; 170 + `Error (false, e) 171 + | Ok () -> 172 + Fmt.pr "Connected.@."; 173 + (match Qemu.Vm.query_status vm with 174 + | Ok status -> Fmt.pr "Status: %a@." Qemu.Qmp.Status.pp status 175 + | Error e -> Fmt.epr "Status error: %s@." e); 176 + `Ok ())) 177 + $ name_arg $ cpus_arg $ memory_arg $ kernel_arg $ initrd_arg $ cmdline_arg 178 + $ disk_arg $ accel_arg $ kvm_arg $ no_kvm_arg $ socket_arg) 168 179 in 169 180 Cmd.v info (Term.ret term) 170 181