为什么';s失败,消息为';具有此情况下不允许的字段的并集';当我调用VMware vCenter REST API创建磁盘时

为什么';s失败,消息为';具有此情况下不允许的字段的并集';当我调用VMware vCenter REST API创建磁盘时,vmware,vsphere,vcenter,Vmware,Vsphere,Vcenter,当我调用VMware vCenter rest api为vm创建磁盘时,api响应包含一个错误体: 请求: 方法:发布 路径:rest/vcenter/vm/vm-xxxxx/hardware/disk 标题:内容类型:应用程序/json接受:应用程序/json vmware api会话id:xxxxxxxxx 正文: { } 答复: 状态:400 正文: { } 调用api有什么问题?我还尝试了键入“IDE”,也报告“sata”,或者键入“sata”,报告“scsi” 谢谢你的建议。我找到了这

当我调用VMware vCenter rest api为vm创建磁盘时,api响应包含一个错误体:

请求:

方法:发布 路径:rest/vcenter/vm/vm-xxxxx/hardware/disk 标题:内容类型:应用程序/json接受:应用程序/json vmware api会话id:xxxxxxxxx 正文: {

}

答复: 状态:400 正文: {

}

调用api有什么问题?我还尝试了键入“IDE”,也报告“sata”,或者键入“sata”,报告“scsi”


谢谢你的建议。

我找到了这个问题的根本原因:

在响应中,它报告“Structure com.vmware.vcenter.vm.hardware.disk.create_spec有一个union,该字段不允许用于此情况” 当我们将“SCSI”、“SATA”、“IDE”指定给“type”时,消息是相同的。 这是因为“com.vmware.vcenter.vm.hardware.disk.create_spec”的定义有一个union结构,该结构由union“SCSI”、“SATA”、“IDE”组成

因此,json主体中只允许存在这3个结构中的一个,例如:

{
    "spec":{
        "ide":{
            "primary":true,
            "master":true
        },
        "type":"IDE",
        "new_vmdk":{
            "name":"Hard disk 4",
            "capacity":1073741824
        }
    }
}
或:


(3 struct部分都是可选的,因此只有提供类型,new_vmdk将创建新磁盘。即使类型也是可选的,vcenter也将使用来宾默认类型。)

实际上,您的问题是总线ID的问题
"type": "com.vmware.vapi.std.errors.invalid_argument",

"value": {

    "messages": [

        {

            "args": [

                "com.vmware.vcenter.vm.hardware.disk.create_spec",

                "sata"

            ],

            "default_message": "Structure com.vmware.vcenter.vm.hardware.disk.create_spec has a union with a field not allowed for this case: sata",

            "id": "vapi.data.structure.union.extra"

        }

    ]

}
{
    "spec":{
        "ide":{
            "primary":true,
            "master":true
        },
        "type":"IDE",
        "new_vmdk":{
            "name":"Hard disk 4",
            "capacity":1073741824
        }
    }
}
{
    "spec":{
        "type":"SCSI",
        "new_vmdk":{
            "name":"Hard disk 4",
            "capacity":1073741824
        }
    }
}