我正在尝试为一些开源软件编写一个补丁,因为它不能完全符合我的要求 - 除了我根本不懂Python!我希望这很简单,但它打败了我.
背景:我正在编写的补丁是用于管理KVM虚拟机集群的Ganeti,但它不支持KVM和Qemu的所有可能的命令行选项,例如USB传递,所以我试图修改它以允许这个.
kvm_cmd.extend()用于添加将在VM启动时传递的KVM CLI args数组.如果参数是空格分隔的,则每个参数变为单独的字符串,例如-usb -device usb-host,hostbus=1,hostdev=14变为"-usb", "-device", "usb-host,hostbus=1,hostdev=14".
我在编译代码后运行以下命令:
gnt-instance modify -H usb_pass="1;14"
Run Code Online (Sandbox Code Playgroud)
我想将此添加到现有的命令行参数列表中"-usb -device usb-host,hostbus=1,hostdev=14".这是我添加的代码(以及在其他地方声明变量; HV_USBPASSTHROUGH是一个字符串,但这是魔术发生的地方)
usb_pass = instance.hvparams[constants.HV_USBPASSTHROUGH]
if usb_pass:
usb_pass_arr = []
usb_pass_arr = usb_pass.split(";")
kvm_cmd.extend(["-usb", "-device", "usb-host,hostbus=%s,hostaddr=%s" %
usb_pass_arr])
Run Code Online (Sandbox Code Playgroud)
我通过上面的代码运行上面的命令得到以下错误: Could not start instance: Error while executing backend function: not enough arguments for format string