Highlights
- Introduced Allowed Use Constraints for images, volumes, snapshots, and bare metal server disks
- Added new APIs to list compatible instance and server profiles
- Extended models with
allowed_use
struct definitions - Improved validations and structured error propagation for new APIs
- fix(template): correctly unmarshal InstanceTemplate response by type
Allowed use compatibility constraints (Feature)
-
Added support for compatibility filtering using
allowed_use
expressions, enabling fine-grained control over provisioning:-
Applies to
Image
,Snapshot
,Volume
, andBareMetalServerDisk
-
Evaluates provisioning constraints like:
enable_secure_boot
,gpu.count
,gpu.memory
,gpu.model
,gpu.manufacturer
-
-
Added new types:
ImageAllowedUse
,SnapshotAllowedUse
,ImageAllowedUsePrototype
,ImageAllowedUsePatch
BareMetalServerDiskAllowedUse
,SnapshotAllowedUsePrototype
,SnapshotAllowedUsePatch
-
Expressions are validated during create, patch, and provisioning workflows
Profile compatibility listing APIs
-
Added APIs to list compatible instance or server profiles based on
allowed_use
expressions:ListImageInstanceProfiles
ListImageBareMetalServerProfiles
ListSnapshotInstanceProfiles
ListVolumeInstanceProfiles
-
Each API supports:
- Pagination (
start
,limit
) - Context propagation (
WithContext
variants) - Query parameter-based versioning and generation enforcement
- Pagination (
Struct and field extensions
-
Extended existing models with new
allowed_use
fields:Image
,Snapshot
,ImagePatch
,ImagePrototype
,BareMetalServerDisk
-
Added corresponding unmarshalling and validation logic for all additions
-
Patch methods now include
allowed_use
patch helpers andAsPatch()
extensions
Documentation & code comments
-
Enhanced documentation for:
CreateInstance
,UpdateInstance
,CreateBareMetalServer
,UpdateBareMetalServer
, and similar methodsCreateEndpointGateway
now documents prototype structure and validation logicListEndpointGateways
explicitly defines sort behavior
Breaking Changes
- No methods or types were removed