Skip to content

Releases: IBM/vpc-go-sdk

v0.70.1

17 Jul 06:05
024778e
Compare
Choose a tag to compare

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, and BareMetalServerDisk

    • 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

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 and AsPatch() extensions


Documentation & code comments

  • Enhanced documentation for:

    • CreateInstance, UpdateInstance, CreateBareMetalServer, UpdateBareMetalServer, and similar methods
    • CreateEndpointGateway now documents prototype structure and validation logic
    • ListEndpointGateways explicitly defines sort behavior

Breaking Changes

  • No methods or types were removed

v0.70.0

15 Jul 06:46
4fe515b
Compare
Choose a tag to compare

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

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, and BareMetalServerDisk

    • 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

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 and AsPatch() extensions


Documentation & code comments

  • Enhanced documentation for:

    • CreateInstance, UpdateInstance, CreateBareMetalServer, UpdateBareMetalServer, and similar methods
    • CreateEndpointGateway now documents prototype structure and validation logic
    • ListEndpointGateways explicitly defines sort behavior

Breaking Changes

  • No methods or types were removed

v0.69.1

10 Jul 11:38
2c65c11
Compare
Choose a tag to compare

Highlights

  • Updated default API version from 2025-04-22 to 2025-07-08
  • Introduced Public Address Range management for VPCs
  • Enhanced support for remote images and filtering capabilities
  • Refined DNS Resolution Binding constraints and validation
  • Improved error propagation and SDK classification

Public Address Range Management (Major Feature)

  • Introduced new resource PublicAddressRange:

    • Enables allocation and management of public IP address ranges within a VPC
  • Added new APIs:

    • ListPublicAddressRanges, GetPublicAddressRange, CreatePublicAddressRange, UpdatePublicAddressRange, DeletePublicAddressRange
  • Updated VPC struct:

    • Now includes public_address_ranges []PublicAddressRangeReference
  • Enhanced PublicGateway creation and retrieval:

    • Now supports optional public_address_range assignment
  • Added:

    • New types: PublicAddressRange, PublicAddressRangeReference, PublicAddressPrefixReference
    • Support for pagination, marshal/unmarshal, and interface conversion methods
    • Validations and helper methods like AsPublicAddressRange, IsPublicAddressRange, etc.

Image Management Enhancements

  • Added support for remote image filtering:

    • New query option remote.account.id in ListImagesOptions
  • Lifecycle operations (UpdateImage, DeprecateImage, ObsoleteImage, DeleteImage) now reject execution if remote.account is set

  • Enforced safe updates:

    • Disallow changes to operating_system and remote fields for remote images
  • Extended image unmarshalling for new types and safe parsing


DNS Resolution Binding Enhancements

  • Enforced new validation rules:

    • DNS resolution binding disallowed if:

      • The VPC already has a DNS resolution binding
      • dns.enable_hub is true
      • Multiple connected endpoint gateways exist with allow_dns_resolution_binding = true for the same service
  • Clarified error messages for binding conflicts and unsupported topologies


SDK Error Classification & Propagation

  • Introduced createSdkErrorFromApiError for standardized error mapping

  • Improved consistency of SDK error propagation across:

    • GetVPC, UpdateVPC, DeleteVPC, CreateImage, and others
  • Wrapped API errors with contextual messages and component info


Internal SDK Improvements

  • Refactored SDK headers:

    • SDK-generated headers now inserted before user-defined headers across all operations
    • Ensures proper override and precedence for headers

Documentation & Type Improvements

  • Added detailed descriptions for:

    • CreateVPC default behavior - automatic creation of ACLs, routing table, security group, address prefix
    • CreateVPCDnsResolutionBinding - preconditions and constraints
  • Improved documentation across new types (PublicAddressRange, RemoteImage, etc.)

  • Added new option constructors:

    • NewListPublicAddressRangesOptions(), NewCreatePublicAddressRangeOptions(), and more
  • Updated PublicGateway and Image examples with accurate field usage


Bug Fixes & Breaking Changes

  • Fixed inconsistent SDK error propagation in methods like DeleteVPC, UpdateVPC, UpdateImage, and DeleteImage
  • Improved internal filtering logic for image queries using remote.account.id and discontinued owner_type
  • Corrected unmarshalling and object parsing for new/extended image and network resources

v0.69.0

10 Jul 09:37
82927b2
Compare
Choose a tag to compare

Highlights

  • Updated default API version from 2025-04-22 to 2025-07-08
  • Improved error propagation and SDK classification

SDK Error Classification & Propagation

  • Introduced createSdkErrorFromApiError for standardized error mapping

  • Improved consistency of SDK error propagation across:

    • GetVPC, UpdateVPC, DeleteVPC, CreateImage, and others
  • Wrapped API errors with contextual messages and component info


Internal SDK Improvements

  • Refactored SDK headers:

    • SDK-generated headers now inserted before user-defined headers across all operations
    • Ensures proper override and precedence for headers

Bug Fixes & Breaking Changes

  • Fixed inconsistent SDK error propagation in methods like DeleteVPC, UpdateVPC, UpdateImage, and DeleteImage
  • Improved internal filtering logic for image queries using remote.account.id and discontinued owner_type
  • Corrected unmarshalling and object parsing for new/extended image and network resources

v0.68.0

28 Apr 18:56
a25c81d
Compare
Choose a tag to compare

Highlights

  • Updated default API version from 2025-04-08 to 2025-04-22
  • Added regional endpoint support for VPC services
  • Added new owner type filtering for images
  • Enhanced architecture support documentation across multiple resources

Regional Endpoint Support

  • Implemented GetServiceURLForRegion function with support for all IBM Cloud regions
  • Added endpoint mapping for regions including: au-syd, br-sao, ca-mon, ca-tor, eu-de, eu-es, eu-gb, jp-osa, jp-tok, us-east, us-south
  • Replaced generic "service does not support regional URLs" error with proper region validation

Image Management Enhancements

  • Added owner_type property to Image resource (values: user, provider)
  • Added filtering capability by owner_type in ListImagesOptions
  • Updated Image reference structures for better handling of remote images

Architecture Support Documentation

  • Added explicit architecture constants and documentation for:
    • Instance VCPUs: amd64, s390x
    • Bare Metal Server CPUs: amd64, s390x
    • Various profile architecture types across resources

File Share Improvements

  • Enhanced documentation for Share properties and methods
  • Improved IOPS specifications for file shares
  • Updated transit encryption mode documentation
  • Clarified share snapshot creation requirements and inheritance behavior

Bug Fixes

  • Fixed error handling in LoadBalancerProfile unmarshalling
  • Updated service component information to reflect new API version

v0.67.1

14 Apr 10:45
6334b25
Compare
Choose a tag to compare

SDK release date : 2025-04-14

Highlights

fixed the unmarshalling issue on load balancer profiles

v0.67.0

10 Apr 06:41
0638ce7
Compare
Choose a tag to compare

SDK release date : 2025-04-10

Highlights

  • Updated default API version from 2025-04-01 to 2025-04-08

SNI Support

  • Added sni_hostname rule type for TLS negotiation
  • Enables routing based on the domain name provided during TLS handshake
  • For TCP protocol listeners, only sni_hostname rule type is supported
  • Enhanced documentation clarifying when rule field property is required vs. optional

Load Balancer as Target for Pool

  • Added ability to target another load balancer as a pool member
  • Implemented constraint: a pool cannot have multiple members targeting load balancers
  • Added specialized health monitoring logic for scenarios where load balancers target other load balancers
  • Added new resource types and identity structures to support load balancer targeting

New Changes

  • Load Balancer Policy Actions: Added new policy actions forward_to_listener and forward_to_pool to replace the deprecated forward action.
  • Load Balancer Rule Types: Added support for sni_hostname rule type for TLS negotiation, especially for TCP protocol listeners.
  • Load Balancer Pool Members:
    • Added ability to target another load balancer as a pool member
    • Added new constraint that pools must not already have a member targeting a load balancer
  • Load Balancer Profiles: Added information about targetable load balancer profiles
  • Health Monitor Documentation: Improved documentation for health monitors in load balancer pools, especially for cases where pool members target other load balancers

New Structures

  • Added support for load balancer targets including:
    • LoadBalancerListenerPolicyTargetLoadBalancerListenerReference
    • LoadBalancerPoolMemberTargetLoadBalancerReference
  • Added various identity types for supporting load balancer targeting

Documentation Updates

  • Updated documentation for load balancer listener policies and rules
  • Clarified constraints on creating load balancer pool members
  • Enhanced documentation for health monitor behavior when targeting load balancers

Bug Fixes

  • Fixed incorrect documentation about listener protocol requirements for creating policies

v0.66.0

02 Apr 09:15
6b314ef
Compare
Choose a tag to compare

1. New Features

  • support for volume bandwidth
  • support for tdx confidential compute mode

Added Functions/Methods

  • func (*VolumeProfileBandwidth) isaVolumeProfileBandwidth() bool {
  • func (*VolumeProfileBandwidthDependent) isaVolumeProfileBandwidth() bool {
  • func (*VolumeProfileBandwidthDependentRange) isaVolumeProfileBandwidth() bool {
  • func (*VolumeProfileBandwidthEnum) isaVolumeProfileBandwidth() bool {
  • func (*VolumeProfileBandwidthFixed) isaVolumeProfileBandwidth() bool {
  • func (*VolumeProfileBandwidthRange) isaVolumeProfileBandwidth() bool {

Added Struct Fields

Added Constants

  • InstanceConfidentialComputeModeTdxConst = "tdx"
  • InstanceGpuManufacturerIntelConst = "intel"
  • InstancePatchConfidentialComputeModeTdxConst = "tdx"
  • InstanceProfileGpuManufacturerValuesIntelConst = "intel"
  • InstanceProfileSupportedConfidentialComputeModesDefaultTdxConst = "tdx"
  • InstanceProfileSupportedConfidentialComputeModesValuesTdxConst = "tdx"
  • InstancePrototypeConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeConfidentialComputeModeTdxConst = "tdx"
  • VPNGatewayModePolicyConst = "policy"
  • InstancePrototypeInstanceByCatalogOfferingConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByImageConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceBySourceSnapshotConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceBySourceTemplateConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByVolumeConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateByImageConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateBySourceSnapshotConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateBySourceTemplateConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceByImageInstanceTemplateContextConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextConfidentialComputeModeTdxConst = "tdx"
  • VolumeProfileBandwidthDependentTypeDependentConst = "dependent"
  • VolumeProfileBandwidthDependentRangeTypeDependentRangeConst = "dependent_range"
  • VolumeProfileBandwidthEnumTypeEnumConst = "enum"
  • VolumeProfileBandwidthFixedTypeFixedConst = "fixed"
  • VolumeProfileBandwidthRangeTypeRangeConst = "range"
  • InstancePrototypeInstanceByCatalogOfferingInstanceByCatalogOfferingInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByCatalogOfferingInstanceByCatalogOfferingInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByImageInstanceByImageInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByImageInstanceByImageInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceBySourceSnapshotInstanceBySourceSnapshotInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceBySourceSnapshotInstanceBySourceSnapshotInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByVolumeInstanceByVolumeInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstancePrototypeInstanceByVolumeInstanceByVolumeInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateByCatalogOfferingInstanceTemplateByCatalogOfferingInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateByCatalogOfferingInstanceTemplateByCatalogOfferingInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateByImageInstanceTemplateByImageInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateByImageInstanceTemplateByImageInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateBySourceSnapshotInstanceTemplateBySourceSnapshotInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplatePrototypeInstanceTemplateBySourceSnapshotInstanceTemplateBySourceSnapshotInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextInstanceByCatalogOfferingInstanceTemplateContextInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextInstanceByCatalogOfferingInstanceTemplateContextInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceByImageInstanceTemplateContextInstanceByImageInstanceTemplateContextInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceByImageInstanceTemplateContextInstanceByImageInstanceTemplateContextInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextInstanceBySourceSnapshotInstanceTemplateContextInstanceByNetworkAttachmentConfidentialComputeModeTdxConst = "tdx"
  • InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextInstanceBySourceSnapshotInstanceTemplateContextInstanceByNetworkInterfaceConfidentialComputeModeTdxConst = "tdx"

2. Breaking Changes

Modified Function Signatures

``

-func (vpc *VpcV1) DeleteSnapshot(deleteSnapshotOptions *DeleteSnapshotOptions) (result *Snapshot, response *core.DetailedResponse, err error) {
#### ``
```diff
-func (vpc *VpcV1) DeleteSnapshotWithContext(ctx context.Context, deleteSnapshotOptions *DeleteSnapshotOptions) (result *Snapshot, response *core.DetailedResponse, err error) {

### Removed Functions/Methods

- func (vpc *VpcV1) DeleteSnapshot(deleteSnapshotOptions *DeleteSnapshotOptions) (result *Snapshot, response *core.DetailedResponse, err error) {
- func (vpc *VpcV1) DeleteSnapshotWithContext(ctx context.Context, deleteSnapshotOptions *DeleteSnapshotOptions) (result *Snapshot, response *core.DetailedResponse, err error) {




### API Version Changes
 2025-04-01

v0.65.0

12 Mar 14:59
bab0fd9
Compare
Choose a tag to compare

NEW FEATURES

  • Support for Snapshot in DeleteSnapshot response
  • Support for FailsafePolicy in LoadBalancerPool, LoadBalancerPoolPatch
  • Support for FailsafePolicyActions in LoadBalancer
  • Added StorageGeneration property to Snapshot and Volume
  • Added new constants for hardware manufacturers:
    • InstanceGpuManufacturerNvidiaConst = "nvidia"
    • InstanceVcpuManufacturerAmdConst = "amd"
    • InstanceVcpuManufacturerIBMConst = "ibm"
    • InstanceVcpuManufacturerIntelConst = "intel"
    • DedicatedHostProfileVcpuManufacturerValueAmdConst = "amd"
    • DedicatedHostProfileVcpuManufacturerValueIBMConst = "ibm"
    • DedicatedHostProfileVcpuManufacturerValueIntelConst = "intel"
  • Added constants for failsafe policy actions:
    • LoadBalancerFailsafePolicyActionsBypassConst = "bypass"
    • LoadBalancerFailsafePolicyActionsDropConst = "drop"
    • LoadBalancerFailsafePolicyActionsFailConst = "fail"
    • LoadBalancerFailsafePolicyActionsForwardConst = "forward"
  • Added new Snapshot lifecycle state constant:
    • SnapshotLifecycleStateUnusableConst = "unusable"

BREAKING CHANGES

  • In CreateLoadBalancerOptions, Pools is changed from LoadBalancerPoolPrototype to LoadBalancerPoolPrototypeLoadBalancerContext
  • In CreateLoadBalancerPoolOptions, HealthMonitor is changed from LoadBalancerPoolHealthMonitorPrototype to LoadBalancerPoolHealthMonitorPrototypeIntf
  • Removed Default field from InstanceProfileVcpuArchitecture
  • Removed Default field from InstanceProfileVcpuManufacturer
  • OperatingSystem field in Image is now required (added validate:"required")
  • DeleteLoadBalancerPool adds restriction that pool must not "be the target pool in the failsafe policy for any other pool"
  • Constants renamed due to type renames:
    • LoadBalancerPoolPrototypeProxyProtocolDisabledConst → LoadBalancerPoolPrototypeLoadBalancerContextProxyProtocolDisabledConst
    • LoadBalancerPoolPrototypeProxyProtocolV1Const → LoadBalancerPoolPrototypeLoadBalancerContextProxyProtocolV1Const
    • LoadBalancerPoolPrototypeProxyProtocolV2Const → LoadBalancerPoolPrototypeLoadBalancerContextProxyProtocolV2Const
    • LoadBalancerPoolPrototypeProtocolHTTPConst → LoadBalancerPoolPrototypeLoadBalancerContextProtocolHTTPConst
    • LoadBalancerPoolPrototypeProtocolHTTPSConst → LoadBalancerPoolPrototypeLoadBalancerContextProtocolHTTPSConst
    • LoadBalancerPoolPrototypeProtocolTCPConst → LoadBalancerPoolPrototypeLoadBalancerContextProtocolTCPConst
    • LoadBalancerPoolPrototypeProtocolUDPConst → LoadBalancerPoolPrototypeLoadBalancerContextProtocolUDPConst
    • LoadBalancerPoolPrototypeAlgorithmLeastConnectionsConst → LoadBalancerPoolPrototypeLoadBalancerContextAlgorithmLeastConnectionsConst
    • LoadBalancerPoolPrototypeAlgorithmRoundRobinConst → LoadBalancerPoolPrototypeLoadBalancerContextAlgorithmRoundRobinConst
    • LoadBalancerPoolPrototypeAlgorithmWeightedRoundRobinConst → LoadBalancerPoolPrototypeLoadBalancerContextAlgorithmWeightedRoundRobinConst

CHANGES

  • API version updated to 2025-03-04 (from 2024-12-17)
  • API version date range updated to 2025-03-08 (from 2024-12-18)
  • Documentation improvements:
    • Load balancer port ranges now described as "non-overlapping" instead of "unique"
    • Flow Log Collector now explicitly mentions "TCP and UDP data" rather than general "data"
    • Port range and protocol descriptions more precise
  • Default values documented:
    • Unspecified connection limit for load balancers will default to 15000
    • Unspecified idle connection timeout will default to 50
    • Unspecified weight for load balancer pool members will default to 50

BUG FIXES

  • None

v0.64.1

12 Feb 08:27
c53606d
Compare
Choose a tag to compare

What's Changed

  • chore(deps): bump golang.org/x/crypto from 0.21.0 to 0.31.0 by @dependabot in #109
  • chore(deps): bump golang.org/x/net from 0.23.0 to 0.33.0 by @dependabot in #110

Full Changelog: v0.64.0...v0.64.1