Skip to content

Commit 166095d

Browse files
authored
fix(template): correctly unmarshal InstanceTemplate response by type (#132)
Signed-off-by: Ujjwal Kumar <[email protected]>
1 parent f3feb81 commit 166095d

File tree

4 files changed

+533
-149
lines changed

4 files changed

+533
-149
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/IBM/vpc-go-sdk)
44
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
55

6-
# IBM Cloud VPC Go SDK Version 0.74.0
6+
# IBM Cloud VPC Go SDK Version 0.74.1
77
Go client library to interact with the various [IBM Cloud VPC Services APIs](https://cloud.ibm.com/apidocs?category=vpc).
88

99
**Note:** Given the current version of all VPC SDKs across supported languages and the current VPC API specification, we retracted the vpc-go-sdk version 1.x to version v0.6.0, which had the same features as v1.0.1.
10-
Consider using v0.74.0 from now on. Refrain from using commands like `go get -u ..` and `go get ..@latest` on go 1.14 and lower as you will not get the latest release.
10+
Consider using v0.74.1 from now on. Refrain from using commands like `go get -u ..` and `go get ..@latest` on go 1.14 and lower as you will not get the latest release.
1111

1212
This SDK uses [Semantic Versioning](https://semver.org), and as such there may be backward-incompatible changes for any new `0.y.z` version.
1313
## Table of Contents
@@ -64,7 +64,7 @@ Use this command to download and install the VPC Go SDK service to allow your Go
6464
use it:
6565

6666
```
67-
go get github.com/IBM/[email protected].0
67+
go get github.com/IBM/[email protected].1
6868
```
6969

7070

@@ -90,7 +90,7 @@ to your `Gopkg.toml` file. Here is an example:
9090
```
9191
[[constraint]]
9292
name = "github.com/IBM/vpc-go-sdk/"
93-
version = "0.74.0"
93+
version = "0.74.1"
9494
```
9595

9696
Then run `dep ensure`.

common/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
package common
22

33
// Version of the SDK
4-
const Version = "0.74.0"
4+
const Version = "0.74.1"

vpcv1/vpc_v1.go

Lines changed: 168 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -70003,154 +70003,178 @@ type InstanceTemplateIntf interface {
7000370003

7000470004
// UnmarshalInstanceTemplate unmarshals an instance of InstanceTemplate from the specified map of raw messages.
7000570005
func UnmarshalInstanceTemplate(m map[string]json.RawMessage, result interface{}) (err error) {
70006-
obj := new(InstanceTemplate)
70007-
err = core.UnmarshalModel(m, "availability_policy", &obj.AvailabilityPolicy, UnmarshalInstanceAvailabilityPolicyPrototype)
70008-
if err != nil {
70009-
err = core.SDKErrorf(err, "", "availability_policy-error", common.GetComponentInfo())
70010-
return
70011-
}
70012-
err = core.UnmarshalModel(m, "cluster_network_attachments", &obj.ClusterNetworkAttachments, UnmarshalInstanceClusterNetworkAttachmentPrototypeInstanceContext)
70013-
if err != nil {
70014-
err = core.SDKErrorf(err, "", "cluster_network_attachments-error", common.GetComponentInfo())
70015-
return
70016-
}
70017-
err = core.UnmarshalPrimitive(m, "confidential_compute_mode", &obj.ConfidentialComputeMode)
70018-
if err != nil {
70019-
err = core.SDKErrorf(err, "", "confidential_compute_mode-error", common.GetComponentInfo())
70020-
return
70021-
}
70022-
err = core.UnmarshalPrimitive(m, "created_at", &obj.CreatedAt)
70023-
if err != nil {
70024-
err = core.SDKErrorf(err, "", "created_at-error", common.GetComponentInfo())
70025-
return
70026-
}
70027-
err = core.UnmarshalPrimitive(m, "crn", &obj.CRN)
70028-
if err != nil {
70029-
err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo())
70030-
return
70031-
}
70032-
err = core.UnmarshalModel(m, "default_trusted_profile", &obj.DefaultTrustedProfile, UnmarshalInstanceDefaultTrustedProfilePrototype)
70033-
if err != nil {
70034-
err = core.SDKErrorf(err, "", "default_trusted_profile-error", common.GetComponentInfo())
70035-
return
70036-
}
70037-
err = core.UnmarshalPrimitive(m, "enable_secure_boot", &obj.EnableSecureBoot)
70038-
if err != nil {
70039-
err = core.SDKErrorf(err, "", "enable_secure_boot-error", common.GetComponentInfo())
70040-
return
70041-
}
70042-
err = core.UnmarshalPrimitive(m, "href", &obj.Href)
70043-
if err != nil {
70044-
err = core.SDKErrorf(err, "", "href-error", common.GetComponentInfo())
70045-
return
70046-
}
70047-
err = core.UnmarshalPrimitive(m, "id", &obj.ID)
70048-
if err != nil {
70049-
err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo())
70050-
return
70051-
}
70052-
err = core.UnmarshalModel(m, "keys", &obj.Keys, UnmarshalKeyIdentity)
70053-
if err != nil {
70054-
err = core.SDKErrorf(err, "", "keys-error", common.GetComponentInfo())
70055-
return
70056-
}
70057-
err = core.UnmarshalModel(m, "metadata_service", &obj.MetadataService, UnmarshalInstanceMetadataServicePrototype)
70058-
if err != nil {
70059-
err = core.SDKErrorf(err, "", "metadata_service-error", common.GetComponentInfo())
70060-
return
70061-
}
70062-
err = core.UnmarshalPrimitive(m, "name", &obj.Name)
70063-
if err != nil {
70064-
err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo())
70065-
return
70066-
}
70067-
err = core.UnmarshalModel(m, "placement_target", &obj.PlacementTarget, UnmarshalInstancePlacementTargetPrototype)
70068-
if err != nil {
70069-
err = core.SDKErrorf(err, "", "placement_target-error", common.GetComponentInfo())
70070-
return
70071-
}
70072-
err = core.UnmarshalModel(m, "profile", &obj.Profile, UnmarshalInstanceProfileIdentity)
70073-
if err != nil {
70074-
err = core.SDKErrorf(err, "", "profile-error", common.GetComponentInfo())
70075-
return
70076-
}
70077-
err = core.UnmarshalModel(m, "reservation_affinity", &obj.ReservationAffinity, UnmarshalInstanceReservationAffinityPrototype)
70078-
if err != nil {
70079-
err = core.SDKErrorf(err, "", "reservation_affinity-error", common.GetComponentInfo())
70080-
return
70081-
}
70082-
err = core.UnmarshalModel(m, "resource_group", &obj.ResourceGroup, UnmarshalResourceGroupReference)
70083-
if err != nil {
70084-
err = core.SDKErrorf(err, "", "resource_group-error", common.GetComponentInfo())
70085-
return
70086-
}
70087-
err = core.UnmarshalPrimitive(m, "total_volume_bandwidth", &obj.TotalVolumeBandwidth)
70088-
if err != nil {
70089-
err = core.SDKErrorf(err, "", "total_volume_bandwidth-error", common.GetComponentInfo())
70090-
return
70091-
}
70092-
err = core.UnmarshalPrimitive(m, "user_data", &obj.UserData)
70093-
if err != nil {
70094-
err = core.SDKErrorf(err, "", "user_data-error", common.GetComponentInfo())
70095-
return
70096-
}
70097-
err = core.UnmarshalModel(m, "volume_attachments", &obj.VolumeAttachments, UnmarshalVolumeAttachmentPrototype)
70098-
if err != nil {
70099-
err = core.SDKErrorf(err, "", "volume_attachments-error", common.GetComponentInfo())
70100-
return
70101-
}
70102-
err = core.UnmarshalPrimitive(m, "volume_bandwidth_qos_mode", &obj.VolumeBandwidthQosMode)
70103-
if err != nil {
70104-
err = core.SDKErrorf(err, "", "volume_bandwidth_qos_mode-error", common.GetComponentInfo())
70105-
return
70106-
}
70107-
err = core.UnmarshalModel(m, "vpc", &obj.VPC, UnmarshalVPCIdentity)
70108-
if err != nil {
70109-
err = core.SDKErrorf(err, "", "vpc-error", common.GetComponentInfo())
70110-
return
70111-
}
70112-
err = core.UnmarshalModel(m, "boot_volume_attachment", &obj.BootVolumeAttachment, UnmarshalVolumeAttachmentPrototypeInstanceByImageContext)
70113-
if err != nil {
70114-
err = core.SDKErrorf(err, "", "boot_volume_attachment-error", common.GetComponentInfo())
70115-
return
70116-
}
70117-
err = core.UnmarshalModel(m, "image", &obj.Image, UnmarshalImageIdentity)
70118-
if err != nil {
70119-
err = core.SDKErrorf(err, "", "image-error", common.GetComponentInfo())
70120-
return
70121-
}
70122-
err = core.UnmarshalModel(m, "zone", &obj.Zone, UnmarshalZoneIdentity)
70123-
if err != nil {
70124-
err = core.SDKErrorf(err, "", "zone-error", common.GetComponentInfo())
70125-
return
70126-
}
70127-
err = core.UnmarshalModel(m, "network_attachments", &obj.NetworkAttachments, UnmarshalInstanceNetworkAttachmentPrototype)
70128-
if err != nil {
70129-
err = core.SDKErrorf(err, "", "network_attachments-error", common.GetComponentInfo())
70130-
return
70131-
}
70132-
err = core.UnmarshalModel(m, "primary_network_attachment", &obj.PrimaryNetworkAttachment, UnmarshalInstanceNetworkAttachmentPrototype)
70133-
if err != nil {
70134-
err = core.SDKErrorf(err, "", "primary_network_attachment-error", common.GetComponentInfo())
70135-
return
70136-
}
70137-
err = core.UnmarshalModel(m, "network_interfaces", &obj.NetworkInterfaces, UnmarshalNetworkInterfacePrototype)
70138-
if err != nil {
70139-
err = core.SDKErrorf(err, "", "network_interfaces-error", common.GetComponentInfo())
70140-
return
70006+
70007+
// Check for source_snapshot presence to determine object type
70008+
var isSourceSnapshot bool
70009+
if bootVolumeRaw, exists := m["boot_volume_attachment"]; exists && len(bootVolumeRaw) > 0 && string(bootVolumeRaw) != "null" {
70010+
var bootVolumeMap map[string]json.RawMessage
70011+
if err = json.Unmarshal(bootVolumeRaw, &bootVolumeMap); err == nil {
70012+
if volumeRaw, volumeExists := bootVolumeMap["volume"]; volumeExists && len(volumeRaw) > 0 && string(volumeRaw) != "null" {
70013+
var volumeMap map[string]json.RawMessage
70014+
if err = json.Unmarshal(volumeRaw, &volumeMap); err == nil {
70015+
if _, snapshotExists := volumeMap["source_snapshot"]; snapshotExists {
70016+
isSourceSnapshot = true
70017+
}
70018+
}
70019+
}
70020+
}
7014170021
}
70142-
err = core.UnmarshalModel(m, "primary_network_interface", &obj.PrimaryNetworkInterface, UnmarshalNetworkInterfacePrototype)
70143-
if err != nil {
70144-
err = core.SDKErrorf(err, "", "primary_network_interface-error", common.GetComponentInfo())
70022+
if isSourceSnapshot {
70023+
err = core.UnmarshalModel(m, "", result, UnmarshalInstanceTemplateInstanceBySourceSnapshotInstanceTemplateContext)
70024+
if err != nil {
70025+
err = core.SDKErrorf(err, "", "unmarshal-InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContext-error", common.GetComponentInfo())
70026+
}
7014570027
return
70146-
}
70147-
err = core.UnmarshalModel(m, "catalog_offering", &obj.CatalogOffering, UnmarshalInstanceCatalogOfferingPrototype)
70148-
if err != nil {
70149-
err = core.SDKErrorf(err, "", "catalog_offering-error", common.GetComponentInfo())
70028+
} else {
70029+
obj := new(InstanceTemplate)
70030+
err = core.UnmarshalModel(m, "availability_policy", &obj.AvailabilityPolicy, UnmarshalInstanceAvailabilityPolicyPrototype)
70031+
if err != nil {
70032+
err = core.SDKErrorf(err, "", "availability_policy-error", common.GetComponentInfo())
70033+
return
70034+
}
70035+
err = core.UnmarshalModel(m, "cluster_network_attachments", &obj.ClusterNetworkAttachments, UnmarshalInstanceClusterNetworkAttachmentPrototypeInstanceContext)
70036+
if err != nil {
70037+
err = core.SDKErrorf(err, "", "cluster_network_attachments-error", common.GetComponentInfo())
70038+
return
70039+
}
70040+
err = core.UnmarshalPrimitive(m, "confidential_compute_mode", &obj.ConfidentialComputeMode)
70041+
if err != nil {
70042+
err = core.SDKErrorf(err, "", "confidential_compute_mode-error", common.GetComponentInfo())
70043+
return
70044+
}
70045+
err = core.UnmarshalPrimitive(m, "created_at", &obj.CreatedAt)
70046+
if err != nil {
70047+
err = core.SDKErrorf(err, "", "created_at-error", common.GetComponentInfo())
70048+
return
70049+
}
70050+
err = core.UnmarshalPrimitive(m, "crn", &obj.CRN)
70051+
if err != nil {
70052+
err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo())
70053+
return
70054+
}
70055+
err = core.UnmarshalModel(m, "default_trusted_profile", &obj.DefaultTrustedProfile, UnmarshalInstanceDefaultTrustedProfilePrototype)
70056+
if err != nil {
70057+
err = core.SDKErrorf(err, "", "default_trusted_profile-error", common.GetComponentInfo())
70058+
return
70059+
}
70060+
err = core.UnmarshalPrimitive(m, "enable_secure_boot", &obj.EnableSecureBoot)
70061+
if err != nil {
70062+
err = core.SDKErrorf(err, "", "enable_secure_boot-error", common.GetComponentInfo())
70063+
return
70064+
}
70065+
err = core.UnmarshalPrimitive(m, "href", &obj.Href)
70066+
if err != nil {
70067+
err = core.SDKErrorf(err, "", "href-error", common.GetComponentInfo())
70068+
return
70069+
}
70070+
err = core.UnmarshalPrimitive(m, "id", &obj.ID)
70071+
if err != nil {
70072+
err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo())
70073+
return
70074+
}
70075+
err = core.UnmarshalModel(m, "keys", &obj.Keys, UnmarshalKeyIdentity)
70076+
if err != nil {
70077+
err = core.SDKErrorf(err, "", "keys-error", common.GetComponentInfo())
70078+
return
70079+
}
70080+
err = core.UnmarshalModel(m, "metadata_service", &obj.MetadataService, UnmarshalInstanceMetadataServicePrototype)
70081+
if err != nil {
70082+
err = core.SDKErrorf(err, "", "metadata_service-error", common.GetComponentInfo())
70083+
return
70084+
}
70085+
err = core.UnmarshalPrimitive(m, "name", &obj.Name)
70086+
if err != nil {
70087+
err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo())
70088+
return
70089+
}
70090+
err = core.UnmarshalModel(m, "placement_target", &obj.PlacementTarget, UnmarshalInstancePlacementTargetPrototype)
70091+
if err != nil {
70092+
err = core.SDKErrorf(err, "", "placement_target-error", common.GetComponentInfo())
70093+
return
70094+
}
70095+
err = core.UnmarshalModel(m, "profile", &obj.Profile, UnmarshalInstanceProfileIdentity)
70096+
if err != nil {
70097+
err = core.SDKErrorf(err, "", "profile-error", common.GetComponentInfo())
70098+
return
70099+
}
70100+
err = core.UnmarshalModel(m, "reservation_affinity", &obj.ReservationAffinity, UnmarshalInstanceReservationAffinityPrototype)
70101+
if err != nil {
70102+
err = core.SDKErrorf(err, "", "reservation_affinity-error", common.GetComponentInfo())
70103+
return
70104+
}
70105+
err = core.UnmarshalModel(m, "resource_group", &obj.ResourceGroup, UnmarshalResourceGroupReference)
70106+
if err != nil {
70107+
err = core.SDKErrorf(err, "", "resource_group-error", common.GetComponentInfo())
70108+
return
70109+
}
70110+
err = core.UnmarshalPrimitive(m, "total_volume_bandwidth", &obj.TotalVolumeBandwidth)
70111+
if err != nil {
70112+
err = core.SDKErrorf(err, "", "total_volume_bandwidth-error", common.GetComponentInfo())
70113+
return
70114+
}
70115+
err = core.UnmarshalPrimitive(m, "user_data", &obj.UserData)
70116+
if err != nil {
70117+
err = core.SDKErrorf(err, "", "user_data-error", common.GetComponentInfo())
70118+
return
70119+
}
70120+
err = core.UnmarshalModel(m, "volume_attachments", &obj.VolumeAttachments, UnmarshalVolumeAttachmentPrototype)
70121+
if err != nil {
70122+
err = core.SDKErrorf(err, "", "volume_attachments-error", common.GetComponentInfo())
70123+
return
70124+
}
70125+
err = core.UnmarshalPrimitive(m, "volume_bandwidth_qos_mode", &obj.VolumeBandwidthQosMode)
70126+
if err != nil {
70127+
err = core.SDKErrorf(err, "", "volume_bandwidth_qos_mode-error", common.GetComponentInfo())
70128+
return
70129+
}
70130+
err = core.UnmarshalModel(m, "vpc", &obj.VPC, UnmarshalVPCIdentity)
70131+
if err != nil {
70132+
err = core.SDKErrorf(err, "", "vpc-error", common.GetComponentInfo())
70133+
return
70134+
}
70135+
err = core.UnmarshalModel(m, "boot_volume_attachment", &obj.BootVolumeAttachment, UnmarshalVolumeAttachmentPrototypeInstanceByImageContext)
70136+
if err != nil {
70137+
err = core.SDKErrorf(err, "", "boot_volume_attachment-error", common.GetComponentInfo())
70138+
return
70139+
}
70140+
err = core.UnmarshalModel(m, "image", &obj.Image, UnmarshalImageIdentity)
70141+
if err != nil {
70142+
err = core.SDKErrorf(err, "", "image-error", common.GetComponentInfo())
70143+
return
70144+
}
70145+
err = core.UnmarshalModel(m, "zone", &obj.Zone, UnmarshalZoneIdentity)
70146+
if err != nil {
70147+
err = core.SDKErrorf(err, "", "zone-error", common.GetComponentInfo())
70148+
return
70149+
}
70150+
err = core.UnmarshalModel(m, "network_attachments", &obj.NetworkAttachments, UnmarshalInstanceNetworkAttachmentPrototype)
70151+
if err != nil {
70152+
err = core.SDKErrorf(err, "", "network_attachments-error", common.GetComponentInfo())
70153+
return
70154+
}
70155+
err = core.UnmarshalModel(m, "primary_network_attachment", &obj.PrimaryNetworkAttachment, UnmarshalInstanceNetworkAttachmentPrototype)
70156+
if err != nil {
70157+
err = core.SDKErrorf(err, "", "primary_network_attachment-error", common.GetComponentInfo())
70158+
return
70159+
}
70160+
err = core.UnmarshalModel(m, "network_interfaces", &obj.NetworkInterfaces, UnmarshalNetworkInterfacePrototype)
70161+
if err != nil {
70162+
err = core.SDKErrorf(err, "", "network_interfaces-error", common.GetComponentInfo())
70163+
return
70164+
}
70165+
err = core.UnmarshalModel(m, "primary_network_interface", &obj.PrimaryNetworkInterface, UnmarshalNetworkInterfacePrototype)
70166+
if err != nil {
70167+
err = core.SDKErrorf(err, "", "primary_network_interface-error", common.GetComponentInfo())
70168+
return
70169+
}
70170+
err = core.UnmarshalModel(m, "catalog_offering", &obj.CatalogOffering, UnmarshalInstanceCatalogOfferingPrototype)
70171+
if err != nil {
70172+
err = core.SDKErrorf(err, "", "catalog_offering-error", common.GetComponentInfo())
70173+
return
70174+
}
70175+
reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj))
7015070176
return
7015170177
}
70152-
reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj))
70153-
return
7015470178
}
7015570179

7015670180
// InstanceTemplateCollection : InstanceTemplateCollection struct

0 commit comments

Comments
 (0)