From 4c164afbac3df0611a03f7dc774833ee51184178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Thu, 24 Feb 2022 09:39:51 +0100 Subject: [PATCH] versions: Update Cloud Hypervisor to 5343e09e7b8db MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's bump the Cloud Hypervisor version to 5343e09e7b8db, as that brings a few fixes we're interested in, such as: * hypervisor, vmm: Handle TDX hypercalls with INVALID_OPERAND - https://github.com/cloud-hypervisor/cloud-hypervisor/pull/3723 - This is needed for the TDX support on the cloud hypervisor driver, which is part of this very same series. * openapi: Update the PciBdf types - https://github.com/cloud-hypervisor/cloud-hypervisor/pull/3748 - This is needed due to a change in a DeviceNode field, which would cause a marshalling / demarshalling error when running with a version of cloud-hypervisor that includes the TDX fixes mentioned above. * scripts: dev_cli: Don't quote $features_build * scripts: dev_cli: Add --features option - https://github.com/cloud-hypervisor/cloud-hypervisor/pull/3773 - This is needed due to changes in the scripts used to build Cloud Hypervisor, which are used as part of Kata Containers CIs and github actions. Due to this change, we're also adapting the build scripts as part of this very same commit. Signed-off-by: Fabiano FidĂȘncio --- .../cloud-hypervisor/client/api/openapi.yaml | 23 +++++++++--- .../client/docs/DefaultApi.md | 4 +-- .../client/docs/DeviceNode.md | 8 ++--- .../client/docs/ReceiveMigrationData.md | 9 ++--- .../client/docs/SendMigrationData.md | 9 ++--- .../client/model_device_node.go | 12 +++---- .../client/model_receive_migration_data.go | 33 +++++++---------- .../client/model_send_migration_data.go | 35 ++++++++----------- .../cloud-hypervisor/cloud-hypervisor.yaml | 19 ++++++++-- .../local-build/kata-deploy-binaries.sh | 6 +++- .../cloud-hypervisor/build-static-clh.sh | 6 ++-- versions.yaml | 2 +- 12 files changed, 88 insertions(+), 78 deletions(-) diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml index b820e01cc8..4a168e53e5 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml @@ -181,6 +181,8 @@ paths: schema: $ref: '#/components/schemas/PciDeviceInfo' description: The new device was successfully added to the VM instance. + "204": + description: The new device was successfully (cold) added to the VM instance. "404": description: The new device could not be added to the VM instance. summary: Add a new device to the VM @@ -215,6 +217,8 @@ paths: schema: $ref: '#/components/schemas/PciDeviceInfo' description: The new disk was successfully added to the VM instance. + "204": + description: The new disk was successfully (cold) added to the VM instance. "500": description: The new disk could not be added to the VM instance. summary: Add a new disk to the VM @@ -234,6 +238,8 @@ paths: schema: $ref: '#/components/schemas/PciDeviceInfo' description: The new device was successfully added to the VM instance. + "204": + description: The new device was successfully (cold) added to the VM instance. "500": description: The new device could not be added to the VM instance. summary: Add a new virtio-fs device to the VM @@ -253,6 +259,8 @@ paths: schema: $ref: '#/components/schemas/PciDeviceInfo' description: The new device was successfully added to the VM instance. + "204": + description: The new device was successfully (cold) added to the VM instance. "500": description: The new device could not be added to the VM instance. summary: Add a new pmem device to the VM @@ -272,6 +280,8 @@ paths: schema: $ref: '#/components/schemas/PciDeviceInfo' description: The new device was successfully added to the VM instance. + "204": + description: The new device was successfully (cold) added to the VM instance. "500": description: The new device could not be added to the VM instance. summary: Add a new network device to the VM @@ -291,6 +301,8 @@ paths: schema: $ref: '#/components/schemas/PciDeviceInfo' description: The new device was successfully added to the VM instance. + "204": + description: The new device was successfully (cold) added to the VM instance. "500": description: The new device could not be added to the VM instance. summary: Add a new vsock device to the VM @@ -632,7 +644,7 @@ components: children: - children - children - pci_bdf: 3 + pci_bdf: pci_bdf resources: - '{}' - '{}' @@ -663,7 +675,7 @@ components: children: - children - children - pci_bdf: 3 + pci_bdf: pci_bdf resources: - '{}' - '{}' @@ -680,8 +692,7 @@ components: type: string type: array pci_bdf: - format: int32 - type: integer + type: string type: object VmCounters: additionalProperties: @@ -1757,6 +1768,8 @@ components: properties: receiver_url: type: string + required: + - receiver_url type: object SendMigrationData: example: @@ -1767,4 +1780,6 @@ components: type: string local: type: boolean + required: + - destination_url type: object diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md index 3c2c8821d9..c5ca050b60 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md @@ -1071,7 +1071,7 @@ import ( ) func main() { - receiveMigrationData := *openapiclient.NewReceiveMigrationData() // ReceiveMigrationData | The URL for the reception of migration state + receiveMigrationData := *openapiclient.NewReceiveMigrationData("ReceiverUrl_example") // ReceiveMigrationData | The URL for the reception of migration state configuration := openapiclient.NewConfiguration() api_client := openapiclient.NewAPIClient(configuration) @@ -1381,7 +1381,7 @@ import ( ) func main() { - sendMigrationData := *openapiclient.NewSendMigrationData() // SendMigrationData | The URL for sending the migration state + sendMigrationData := *openapiclient.NewSendMigrationData("DestinationUrl_example") // SendMigrationData | The URL for sending the migration state configuration := openapiclient.NewConfiguration() api_client := openapiclient.NewAPIClient(configuration) diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DeviceNode.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DeviceNode.md index 5755470551..02863e513d 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DeviceNode.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DeviceNode.md @@ -7,7 +7,7 @@ Name | Type | Description | Notes **Id** | Pointer to **string** | | [optional] **Resources** | Pointer to **[]map[string]interface{}** | | [optional] **Children** | Pointer to **[]string** | | [optional] -**PciBdf** | Pointer to **int32** | | [optional] +**PciBdf** | Pointer to **string** | | [optional] ## Methods @@ -105,20 +105,20 @@ HasChildren returns a boolean if a field has been set. ### GetPciBdf -`func (o *DeviceNode) GetPciBdf() int32` +`func (o *DeviceNode) GetPciBdf() string` GetPciBdf returns the PciBdf field if non-nil, zero value otherwise. ### GetPciBdfOk -`func (o *DeviceNode) GetPciBdfOk() (*int32, bool)` +`func (o *DeviceNode) GetPciBdfOk() (*string, bool)` GetPciBdfOk returns a tuple with the PciBdf field if it's non-nil, zero value otherwise and a boolean to check if the value has been set. ### SetPciBdf -`func (o *DeviceNode) SetPciBdf(v int32)` +`func (o *DeviceNode) SetPciBdf(v string)` SetPciBdf sets PciBdf field to given value. diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md index 652bf96bc2..394d47cebc 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md @@ -4,13 +4,13 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**ReceiverUrl** | Pointer to **string** | | [optional] +**ReceiverUrl** | **string** | | ## Methods ### NewReceiveMigrationData -`func NewReceiveMigrationData() *ReceiveMigrationData` +`func NewReceiveMigrationData(receiverUrl string, ) *ReceiveMigrationData` NewReceiveMigrationData instantiates a new ReceiveMigrationData object This constructor will assign default values to properties that have it defined, @@ -44,11 +44,6 @@ and a boolean to check if the value has been set. SetReceiverUrl sets ReceiverUrl field to given value. -### HasReceiverUrl - -`func (o *ReceiveMigrationData) HasReceiverUrl() bool` - -HasReceiverUrl returns a boolean if a field has been set. [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md index 03edd489e8..d3b6a5c1bd 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md @@ -4,14 +4,14 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**DestinationUrl** | Pointer to **string** | | [optional] +**DestinationUrl** | **string** | | **Local** | Pointer to **bool** | | [optional] ## Methods ### NewSendMigrationData -`func NewSendMigrationData() *SendMigrationData` +`func NewSendMigrationData(destinationUrl string, ) *SendMigrationData` NewSendMigrationData instantiates a new SendMigrationData object This constructor will assign default values to properties that have it defined, @@ -45,11 +45,6 @@ and a boolean to check if the value has been set. SetDestinationUrl sets DestinationUrl field to given value. -### HasDestinationUrl - -`func (o *SendMigrationData) HasDestinationUrl() bool` - -HasDestinationUrl returns a boolean if a field has been set. ### GetLocal diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_device_node.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_device_node.go index ef6aab589d..012f971967 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_device_node.go +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_device_node.go @@ -19,7 +19,7 @@ type DeviceNode struct { Id *string `json:"id,omitempty"` Resources *[]map[string]interface{} `json:"resources,omitempty"` Children *[]string `json:"children,omitempty"` - PciBdf *int32 `json:"pci_bdf,omitempty"` + PciBdf *string `json:"pci_bdf,omitempty"` } // NewDeviceNode instantiates a new DeviceNode object @@ -136,9 +136,9 @@ func (o *DeviceNode) SetChildren(v []string) { } // GetPciBdf returns the PciBdf field value if set, zero value otherwise. -func (o *DeviceNode) GetPciBdf() int32 { +func (o *DeviceNode) GetPciBdf() string { if o == nil || o.PciBdf == nil { - var ret int32 + var ret string return ret } return *o.PciBdf @@ -146,7 +146,7 @@ func (o *DeviceNode) GetPciBdf() int32 { // GetPciBdfOk returns a tuple with the PciBdf field value if set, nil otherwise // and a boolean to check if the value has been set. -func (o *DeviceNode) GetPciBdfOk() (*int32, bool) { +func (o *DeviceNode) GetPciBdfOk() (*string, bool) { if o == nil || o.PciBdf == nil { return nil, false } @@ -162,8 +162,8 @@ func (o *DeviceNode) HasPciBdf() bool { return false } -// SetPciBdf gets a reference to the given int32 and assigns it to the PciBdf field. -func (o *DeviceNode) SetPciBdf(v int32) { +// SetPciBdf gets a reference to the given string and assigns it to the PciBdf field. +func (o *DeviceNode) SetPciBdf(v string) { o.PciBdf = &v } diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go index fd7e6eff79..7549055d55 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go @@ -16,15 +16,16 @@ import ( // ReceiveMigrationData struct for ReceiveMigrationData type ReceiveMigrationData struct { - ReceiverUrl *string `json:"receiver_url,omitempty"` + ReceiverUrl string `json:"receiver_url"` } // NewReceiveMigrationData instantiates a new ReceiveMigrationData object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewReceiveMigrationData() *ReceiveMigrationData { +func NewReceiveMigrationData(receiverUrl string) *ReceiveMigrationData { this := ReceiveMigrationData{} + this.ReceiverUrl = receiverUrl return &this } @@ -36,41 +37,33 @@ func NewReceiveMigrationDataWithDefaults() *ReceiveMigrationData { return &this } -// GetReceiverUrl returns the ReceiverUrl field value if set, zero value otherwise. +// GetReceiverUrl returns the ReceiverUrl field value func (o *ReceiveMigrationData) GetReceiverUrl() string { - if o == nil || o.ReceiverUrl == nil { + if o == nil { var ret string return ret } - return *o.ReceiverUrl + + return o.ReceiverUrl } -// GetReceiverUrlOk returns a tuple with the ReceiverUrl field value if set, nil otherwise +// GetReceiverUrlOk returns a tuple with the ReceiverUrl field value // and a boolean to check if the value has been set. func (o *ReceiveMigrationData) GetReceiverUrlOk() (*string, bool) { - if o == nil || o.ReceiverUrl == nil { + if o == nil { return nil, false } - return o.ReceiverUrl, true + return &o.ReceiverUrl, true } -// HasReceiverUrl returns a boolean if a field has been set. -func (o *ReceiveMigrationData) HasReceiverUrl() bool { - if o != nil && o.ReceiverUrl != nil { - return true - } - - return false -} - -// SetReceiverUrl gets a reference to the given string and assigns it to the ReceiverUrl field. +// SetReceiverUrl sets field value func (o *ReceiveMigrationData) SetReceiverUrl(v string) { - o.ReceiverUrl = &v + o.ReceiverUrl = v } func (o ReceiveMigrationData) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} - if o.ReceiverUrl != nil { + if true { toSerialize["receiver_url"] = o.ReceiverUrl } return json.Marshal(toSerialize) diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go index 11f913bf02..6ceeedb7e7 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go @@ -16,16 +16,17 @@ import ( // SendMigrationData struct for SendMigrationData type SendMigrationData struct { - DestinationUrl *string `json:"destination_url,omitempty"` - Local *bool `json:"local,omitempty"` + DestinationUrl string `json:"destination_url"` + Local *bool `json:"local,omitempty"` } // NewSendMigrationData instantiates a new SendMigrationData object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewSendMigrationData() *SendMigrationData { +func NewSendMigrationData(destinationUrl string) *SendMigrationData { this := SendMigrationData{} + this.DestinationUrl = destinationUrl return &this } @@ -37,36 +38,28 @@ func NewSendMigrationDataWithDefaults() *SendMigrationData { return &this } -// GetDestinationUrl returns the DestinationUrl field value if set, zero value otherwise. +// GetDestinationUrl returns the DestinationUrl field value func (o *SendMigrationData) GetDestinationUrl() string { - if o == nil || o.DestinationUrl == nil { + if o == nil { var ret string return ret } - return *o.DestinationUrl + + return o.DestinationUrl } -// GetDestinationUrlOk returns a tuple with the DestinationUrl field value if set, nil otherwise +// GetDestinationUrlOk returns a tuple with the DestinationUrl field value // and a boolean to check if the value has been set. func (o *SendMigrationData) GetDestinationUrlOk() (*string, bool) { - if o == nil || o.DestinationUrl == nil { + if o == nil { return nil, false } - return o.DestinationUrl, true + return &o.DestinationUrl, true } -// HasDestinationUrl returns a boolean if a field has been set. -func (o *SendMigrationData) HasDestinationUrl() bool { - if o != nil && o.DestinationUrl != nil { - return true - } - - return false -} - -// SetDestinationUrl gets a reference to the given string and assigns it to the DestinationUrl field. +// SetDestinationUrl sets field value func (o *SendMigrationData) SetDestinationUrl(v string) { - o.DestinationUrl = &v + o.DestinationUrl = v } // GetLocal returns the Local field value if set, zero value otherwise. @@ -103,7 +96,7 @@ func (o *SendMigrationData) SetLocal(v bool) { func (o SendMigrationData) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} - if o.DestinationUrl != nil { + if true { toSerialize["destination_url"] = o.DestinationUrl } if o.Local != nil { diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml b/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml index c4dcae04c2..c9ecd399e6 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml @@ -195,6 +195,8 @@ paths: application/json: schema: $ref: '#/components/schemas/PciDeviceInfo' + 204: + description: The new device was successfully (cold) added to the VM instance. 404: description: The new device could not be added to the VM instance. @@ -231,6 +233,8 @@ paths: application/json: schema: $ref: '#/components/schemas/PciDeviceInfo' + 204: + description: The new disk was successfully (cold) added to the VM instance. 500: description: The new disk could not be added to the VM instance. @@ -251,6 +255,8 @@ paths: application/json: schema: $ref: '#/components/schemas/PciDeviceInfo' + 204: + description: The new device was successfully (cold) added to the VM instance. 500: description: The new device could not be added to the VM instance. @@ -271,6 +277,8 @@ paths: application/json: schema: $ref: '#/components/schemas/PciDeviceInfo' + 204: + description: The new device was successfully (cold) added to the VM instance. 500: description: The new device could not be added to the VM instance. @@ -291,6 +299,8 @@ paths: application/json: schema: $ref: '#/components/schemas/PciDeviceInfo' + 204: + description: The new device was successfully (cold) added to the VM instance. 500: description: The new device could not be added to the VM instance. @@ -311,6 +321,8 @@ paths: application/json: schema: $ref: '#/components/schemas/PciDeviceInfo' + 204: + description: The new device was successfully (cold) added to the VM instance. 500: description: The new device could not be added to the VM instance. @@ -428,8 +440,7 @@ components: items: type: string pci_bdf: - type: integer - format: int32 + type: string VmCounters: type: object @@ -1055,12 +1066,16 @@ components: type: boolean ReceiveMigrationData: + required: + - receiver_url type: object properties: receiver_url: type: string SendMigrationData: + required: + - destination_url type: object properties: destination_url: diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh index 1864140e1e..2a215726b9 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh @@ -28,6 +28,8 @@ readonly shimv2_builder="${static_build_dir}/shim-v2/build.sh" readonly rootfs_builder="${repo_root_dir}/tools/packaging/guest-image/build_image.sh" +ARCH=$(uname -m) + workdir="${WORKDIR:-$PWD}" destdir="${workdir}/kata-static" @@ -125,7 +127,9 @@ install_firecracker() { # Install static cloud-hypervisor asset install_clh() { - export extra_build_args="--features tdx" + if [[ "${ARCH}" == "x86_64" ]]; then + export features="tdx" + fi info "build static cloud-hypervisor" "${clh_builder}" diff --git a/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh b/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh index 61a0824ebb..1f49abcaa4 100755 --- a/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh +++ b/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh @@ -52,9 +52,9 @@ build_clh_from_source() { pushd "${repo_dir}" git fetch || true git checkout "${cloud_hypervisor_version}" - if [ -n "${extra_build_args}" ]; then - info "Build cloud-hypervisor with extra args: ${extra_build_args}" - ./scripts/dev_cli.sh build --release --libc musl -- ${extra_build_args} + if [ -n "${features}" ]; then + info "Build cloud-hypervisor enabling the following features: ${features}" + ./scripts/dev_cli.sh build --release --libc musl --features "${features}" else ./scripts/dev_cli.sh build --release --libc musl fi diff --git a/versions.yaml b/versions.yaml index 84463db8ef..c1b10ce893 100644 --- a/versions.yaml +++ b/versions.yaml @@ -75,7 +75,7 @@ assets: url: "https://github.com/cloud-hypervisor/cloud-hypervisor" uscan-url: >- https://github.com/cloud-hypervisor/cloud-hypervisor/tags.*/v?(\d\S+)\.tar\.gz - version: "55479a64d237d4c757dba19a696abefd27ec74fd" + version: "5343e09e7b8dbd5dd8ac0d90a3ad52037490dd86" firecracker: description: "Firecracker micro-VMM"