feat: confidential computing#684
Merged
Merged
Conversation
avirtopeanu-ionos
requested review from
a team,
adeatcu-ionos,
cavramoniu-ionos,
Copilot,
cristiGuranIonos,
mimihalescu and
rmocanu-ionos
and removed request for
a team
July 17, 2026 11:40
Contributor
There was a problem hiding this comment.
Pull request overview
Adds Confidential Computing (SEV-SNP) support to ionosctl for image upload and server creation flows, while updating the vendored Cloud API v6 Go SDK to expose new API fields (required/enabled features, storage type, Kubernetes taints, etc.) and extending CLI output/docs accordingly.
Changes:
- Add
--confidentialtoimage upload(FTP path + enforced/overridden mutable image properties + improved FTP credential resolution for token-auth users). - Add
--confidentialtoserver create(image-derived cores/CPU family, inline boot-volume creation with--size/--storage-type, and filtered--image-idcompletion). - Update SDK dependency to
github.com/ionos-cloud/sdk-go/v6 v6.3.11and surface new feature-related columns/filters in CLI + docs.
Reviewed changes
Copilot reviewed 39 out of 57 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| vendor/modules.txt | Update vendored module list for sdk-go/v6 v6.3.11. |
| vendor/github.com/ionos-cloud/sdk-go/v6/response.go | Add safer helpers for status code and Location parsing. |
| vendor/github.com/ionos-cloud/sdk-go/v6/README.md | Document newly generated model types in the SDK README. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_volume_properties.go | Extend image/template volume comments to describe Confidential Computing constraints. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_template_properties.go | Add storageType support to template properties. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_taint_effect.go | Add new generated enum for Kubernetes taint effects. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_server_properties.go | Add enabledFeatures plus Confidential Computing semantics in comments. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_location_properties.go | Add metroRegion field support. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_kubernetes_node_pool_taint.go | Add generated model for node pool taints. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_kubernetes_node_pool_properties.go | Add taints field to node pool properties. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_kubernetes_node_pool_properties_for_put.go | Add taints field for node pool PUT. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_kubernetes_node_pool_properties_for_post.go | Add taints field for node pool POST. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_image_properties.go | Add requiredFeatures field to image properties. |
| vendor/github.com/ionos-cloud/sdk-go/v6/model_cpu_architecture_properties.go | Add enabledFeatures to CPU architecture properties. |
| vendor/github.com/ionos-cloud/sdk-go/v6/configuration.go | Bump SDK user agent to v6.3.11. |
| vendor/github.com/ionos-cloud/sdk-go/v6/client.go | Bump SDK version + improve retry logging and response-body draining on retries. |
| vendor/github.com/ionos-cloud/sdk-go/v6/api_servers.go | SDK update; add/adjust error handling paths for server console endpoint. |
| internal/constants/constants.go | Introduce confidential flag constant. |
| go.sum | Update checksums for sdk-go/v6 v6.3.11. |
| go.mod | Bump sdk-go/v6 dependency to v6.3.11. |
| docs/subcommands/Compute Engine/template/list.md | Add storageType to template list filter docs. |
| docs/subcommands/Compute Engine/server/update.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/token/get.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/suspend.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/stop.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/start.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/resume.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/reboot.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/list.md | Add enabledFeatures filter + EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/gpu/list.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/get.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/delete.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/create.md | Document --confidential, plus --size/--storage-type for confidential boot volume. |
| docs/subcommands/Compute Engine/server/console/get.md | Add EnabledFeatures column documentation. |
| docs/subcommands/Compute Engine/server/cdrom/list.md | Add requiredFeatures to image-related filter docs. |
| docs/subcommands/Compute Engine/location/list.md | Add metroRegion filter + CPU enabled-features column docs. |
| docs/subcommands/Compute Engine/location/get.md | Add CPU enabled-features column docs. |
| docs/subcommands/Compute Engine/location/cpu/list.md | Add EnabledFeatures column docs for CPU families. |
| docs/subcommands/Compute Engine/image/upload.md | Document token vs basic creds for FTP + add RequiredFeatures column and --confidential help. |
| docs/subcommands/Compute Engine/image/update.md | Add RequiredFeatures column documentation. |
| docs/subcommands/Compute Engine/image/list.md | Add requiredFeatures filter + RequiredFeatures column documentation. |
| docs/subcommands/Compute Engine/image/get.md | Add RequiredFeatures column documentation. |
| docs/subcommands/Compute Engine/image/delete.md | Add RequiredFeatures column documentation. |
| commands/compute/server/server.go | Add EnabledFeatures to server table columns. |
| commands/compute/server/run_server.go | Enforce confidential server-create constraints + attach image-derived boot volume inline. |
| commands/compute/server/create.go | Add --confidential, --size, --storage-type; filter --image-id completion for confidential images. |
| commands/compute/server/confidential_test.go | Add tests for confidential server creation behavior (no cores/cpuFamily, volume attach, columns). |
| commands/compute/request/run_request.go | Fix timeout lookup to use global viper key for persistent --timeout. |
| commands/compute/request/request_test.go | Add regression test ensuring --timeout is honored during request wait. |
| commands/compute/location/location.go | Add CpuEnabledFeatures output column. |
| commands/compute/location/cpu.go | Add EnabledFeatures output column for CPU families. |
| commands/compute/location/confidential_test.go | Add tests ensuring enabled-features columns are exposed. |
| commands/compute/image/upload.go | Add --confidential upload mode, forced property set, FTP credential resolution, and correct timeout key. |
| commands/compute/image/upload_test.go | Add unit tests for FTP credential selection logic. |
| commands/compute/image/image.go | Add RequiredFeatures image output column. |
| commands/compute/image/confidential_test.go | Add tests for confidential image property forcing and validation. |
| CHANGELOG.md | Add release notes for Confidential Computing support and new columns. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
cavramoniu-ionos
approved these changes
Jul 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



image upload --confidentialuploads to the/confidential-images/FTP directory. Restricted to QCOW2 images (which must carry aLAUNCH_ARTIFACTSpartition), and forces the image's mutable properties to the only values the platform accepts:cloud-init NONE, all hot-plug disabled, and legacy BIOS off. Conflicting explicit flags are rejected.server create --confidentialcreates a Confidential VM from a confidential boot image. Requires--type ENTERPRISEand--image-id(a private, SEV-SNP image;--image-idtab-completion is filtered to these). A boot volume is built from the image and attached in the same request (size it with--size/--storage-type), so the API can derivecoresandcpuFamilyfrom the image'slaunch-config.json—--coresand--cpu-familymust not be set.RequiredFeaturesandEnabledFeaturescolumns.