调用VMware vCenter REST API创建磁盘时提示‘存在不允许的联合字段’的原因
分析vCenter REST API创建磁盘失败的原因
从你提供的请求详情来看,请求体里的配置存在几个明显的错误,这正是导致API返回错误的核心原因:
- 同时指定多种控制器类型,参数冲突:你的请求体里同时包含了
ide、sata、scsi三个控制器的配置字段,但一个虚拟机磁盘只能关联一种类型的控制器(要么SCSI,要么SATA,要么IDE)。这种重复且冲突的配置会直接触发API的参数校验错误。 - Backing类型未正确设置:
backing.type字段是空字符串,不符合API的必填要求。当你通过new_vmdk创建新磁盘时,这个字段需要明确设置为"VMDK_FILE"——这是创建新VMDK磁盘对应的标准backing类型。 - 磁盘类型与控制器配置不匹配:你指定了
type: "SCSI",却同时保留了ide和sata的配置项,进一步加剧了参数逻辑冲突,应该只保留与type对应的控制器字段(也就是scsi字段)。
修正后的请求体示例
你可以参考下面的正确配置调整请求体:
{ "spec": { "backing": { "type": "VMDK_FILE" }, "new_vmdk": { "capacity": 1073741824, "name": "Hard disk 2" }, "scsi": { "bus": 0, "unit": 0 }, "type": "SCSI" } }
额外提醒:
- 要确保
scsi.bus和scsi.unit对应的控制器位置是空闲的,没有被其他磁盘占用; - 如果需要使用IDE或SATA控制器,只需保留对应的
ide或sata字段,同时将type改为"IDE"或"SATA",并保持backing.type的正确设置。
内容的提问来源于stack exchange,提问作者andrewz
相关产品推荐
相关产品推荐

