Skip to content

Commit 024778e

Browse files
authored
fix(template): correctly unmarshal InstanceTemplate response by type (#124)
Signed-off-by: Ujjwal Kumar <[email protected]>
1 parent 4fe515b commit 024778e

File tree

3 files changed

+168
-144
lines changed

3 files changed

+168
-144
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.70.0
6+
# IBM Cloud VPC Go SDK Version 0.70.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.70.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.70.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.70.0"
93+
version = "0.70.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.70.0"
4+
const Version = "0.70.1"

vpcv1/vpc_v1.go

Lines changed: 163 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -69593,149 +69593,173 @@ type InstanceTemplateIntf interface {
6959369593

6959469594
// UnmarshalInstanceTemplate unmarshals an instance of InstanceTemplate from the specified map of raw messages.
6959569595
func UnmarshalInstanceTemplate(m map[string]json.RawMessage, result interface{}) (err error) {
69596-
obj := new(InstanceTemplate)
69597-
err = core.UnmarshalModel(m, "availability_policy", &obj.AvailabilityPolicy, UnmarshalInstanceAvailabilityPolicyPrototype)
69598-
if err != nil {
69599-
err = core.SDKErrorf(err, "", "availability_policy-error", common.GetComponentInfo())
69600-
return
69601-
}
69602-
err = core.UnmarshalModel(m, "cluster_network_attachments", &obj.ClusterNetworkAttachments, UnmarshalInstanceClusterNetworkAttachmentPrototypeInstanceContext)
69603-
if err != nil {
69604-
err = core.SDKErrorf(err, "", "cluster_network_attachments-error", common.GetComponentInfo())
69605-
return
69606-
}
69607-
err = core.UnmarshalPrimitive(m, "confidential_compute_mode", &obj.ConfidentialComputeMode)
69608-
if err != nil {
69609-
err = core.SDKErrorf(err, "", "confidential_compute_mode-error", common.GetComponentInfo())
69610-
return
69611-
}
69612-
err = core.UnmarshalPrimitive(m, "created_at", &obj.CreatedAt)
69613-
if err != nil {
69614-
err = core.SDKErrorf(err, "", "created_at-error", common.GetComponentInfo())
69615-
return
69616-
}
69617-
err = core.UnmarshalPrimitive(m, "crn", &obj.CRN)
69618-
if err != nil {
69619-
err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo())
69620-
return
69621-
}
69622-
err = core.UnmarshalModel(m, "default_trusted_profile", &obj.DefaultTrustedProfile, UnmarshalInstanceDefaultTrustedProfilePrototype)
69623-
if err != nil {
69624-
err = core.SDKErrorf(err, "", "default_trusted_profile-error", common.GetComponentInfo())
69625-
return
69626-
}
69627-
err = core.UnmarshalPrimitive(m, "enable_secure_boot", &obj.EnableSecureBoot)
69628-
if err != nil {
69629-
err = core.SDKErrorf(err, "", "enable_secure_boot-error", common.GetComponentInfo())
69630-
return
69631-
}
69632-
err = core.UnmarshalPrimitive(m, "href", &obj.Href)
69633-
if err != nil {
69634-
err = core.SDKErrorf(err, "", "href-error", common.GetComponentInfo())
69635-
return
69636-
}
69637-
err = core.UnmarshalPrimitive(m, "id", &obj.ID)
69638-
if err != nil {
69639-
err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo())
69640-
return
69641-
}
69642-
err = core.UnmarshalModel(m, "keys", &obj.Keys, UnmarshalKeyIdentity)
69643-
if err != nil {
69644-
err = core.SDKErrorf(err, "", "keys-error", common.GetComponentInfo())
69645-
return
69646-
}
69647-
err = core.UnmarshalModel(m, "metadata_service", &obj.MetadataService, UnmarshalInstanceMetadataServicePrototype)
69648-
if err != nil {
69649-
err = core.SDKErrorf(err, "", "metadata_service-error", common.GetComponentInfo())
69650-
return
69651-
}
69652-
err = core.UnmarshalPrimitive(m, "name", &obj.Name)
69653-
if err != nil {
69654-
err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo())
69655-
return
69656-
}
69657-
err = core.UnmarshalModel(m, "placement_target", &obj.PlacementTarget, UnmarshalInstancePlacementTargetPrototype)
69658-
if err != nil {
69659-
err = core.SDKErrorf(err, "", "placement_target-error", common.GetComponentInfo())
69660-
return
69661-
}
69662-
err = core.UnmarshalModel(m, "profile", &obj.Profile, UnmarshalInstanceProfileIdentity)
69663-
if err != nil {
69664-
err = core.SDKErrorf(err, "", "profile-error", common.GetComponentInfo())
69665-
return
69666-
}
69667-
err = core.UnmarshalModel(m, "reservation_affinity", &obj.ReservationAffinity, UnmarshalInstanceReservationAffinityPrototype)
69668-
if err != nil {
69669-
err = core.SDKErrorf(err, "", "reservation_affinity-error", common.GetComponentInfo())
69670-
return
69671-
}
69672-
err = core.UnmarshalModel(m, "resource_group", &obj.ResourceGroup, UnmarshalResourceGroupReference)
69673-
if err != nil {
69674-
err = core.SDKErrorf(err, "", "resource_group-error", common.GetComponentInfo())
69675-
return
69676-
}
69677-
err = core.UnmarshalPrimitive(m, "total_volume_bandwidth", &obj.TotalVolumeBandwidth)
69678-
if err != nil {
69679-
err = core.SDKErrorf(err, "", "total_volume_bandwidth-error", common.GetComponentInfo())
69680-
return
69681-
}
69682-
err = core.UnmarshalPrimitive(m, "user_data", &obj.UserData)
69683-
if err != nil {
69684-
err = core.SDKErrorf(err, "", "user_data-error", common.GetComponentInfo())
69685-
return
69686-
}
69687-
err = core.UnmarshalModel(m, "volume_attachments", &obj.VolumeAttachments, UnmarshalVolumeAttachmentPrototype)
69688-
if err != nil {
69689-
err = core.SDKErrorf(err, "", "volume_attachments-error", common.GetComponentInfo())
69690-
return
69691-
}
69692-
err = core.UnmarshalModel(m, "vpc", &obj.VPC, UnmarshalVPCIdentity)
69693-
if err != nil {
69694-
err = core.SDKErrorf(err, "", "vpc-error", common.GetComponentInfo())
69695-
return
69696-
}
69697-
err = core.UnmarshalModel(m, "boot_volume_attachment", &obj.BootVolumeAttachment, UnmarshalVolumeAttachmentPrototypeInstanceByImageContext)
69698-
if err != nil {
69699-
err = core.SDKErrorf(err, "", "boot_volume_attachment-error", common.GetComponentInfo())
69700-
return
69701-
}
69702-
err = core.UnmarshalModel(m, "image", &obj.Image, UnmarshalImageIdentity)
69703-
if err != nil {
69704-
err = core.SDKErrorf(err, "", "image-error", common.GetComponentInfo())
69705-
return
69706-
}
69707-
err = core.UnmarshalModel(m, "zone", &obj.Zone, UnmarshalZoneIdentity)
69708-
if err != nil {
69709-
err = core.SDKErrorf(err, "", "zone-error", common.GetComponentInfo())
69710-
return
69711-
}
69712-
err = core.UnmarshalModel(m, "network_attachments", &obj.NetworkAttachments, UnmarshalInstanceNetworkAttachmentPrototype)
69713-
if err != nil {
69714-
err = core.SDKErrorf(err, "", "network_attachments-error", common.GetComponentInfo())
69715-
return
69716-
}
69717-
err = core.UnmarshalModel(m, "primary_network_attachment", &obj.PrimaryNetworkAttachment, UnmarshalInstanceNetworkAttachmentPrototype)
69718-
if err != nil {
69719-
err = core.SDKErrorf(err, "", "primary_network_attachment-error", common.GetComponentInfo())
69720-
return
69721-
}
69722-
err = core.UnmarshalModel(m, "network_interfaces", &obj.NetworkInterfaces, UnmarshalNetworkInterfacePrototype)
69723-
if err != nil {
69724-
err = core.SDKErrorf(err, "", "network_interfaces-error", common.GetComponentInfo())
69725-
return
69596+
69597+
// Check for source_snapshot presence to determine object type
69598+
var isSourceSnapshot bool
69599+
if bootVolumeRaw, exists := m["boot_volume_attachment"]; exists && len(bootVolumeRaw) > 0 && string(bootVolumeRaw) != "null" {
69600+
var bootVolumeMap map[string]json.RawMessage
69601+
if err = json.Unmarshal(bootVolumeRaw, &bootVolumeMap); err == nil {
69602+
if volumeRaw, volumeExists := bootVolumeMap["volume"]; volumeExists && len(volumeRaw) > 0 && string(volumeRaw) != "null" {
69603+
var volumeMap map[string]json.RawMessage
69604+
if err = json.Unmarshal(volumeRaw, &volumeMap); err == nil {
69605+
if _, snapshotExists := volumeMap["source_snapshot"]; snapshotExists {
69606+
isSourceSnapshot = true
69607+
}
69608+
}
69609+
}
69610+
}
6972669611
}
69727-
err = core.UnmarshalModel(m, "primary_network_interface", &obj.PrimaryNetworkInterface, UnmarshalNetworkInterfacePrototype)
69728-
if err != nil {
69729-
err = core.SDKErrorf(err, "", "primary_network_interface-error", common.GetComponentInfo())
69612+
if isSourceSnapshot {
69613+
err = core.UnmarshalModel(m, "", result, UnmarshalInstanceTemplateInstanceBySourceSnapshotInstanceTemplateContext)
69614+
if err != nil {
69615+
err = core.SDKErrorf(err, "", "unmarshal-InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContext-error", common.GetComponentInfo())
69616+
}
6973069617
return
69731-
}
69732-
err = core.UnmarshalModel(m, "catalog_offering", &obj.CatalogOffering, UnmarshalInstanceCatalogOfferingPrototype)
69733-
if err != nil {
69734-
err = core.SDKErrorf(err, "", "catalog_offering-error", common.GetComponentInfo())
69618+
} else {
69619+
obj := new(InstanceTemplate)
69620+
err = core.UnmarshalModel(m, "availability_policy", &obj.AvailabilityPolicy, UnmarshalInstanceAvailabilityPolicyPrototype)
69621+
if err != nil {
69622+
err = core.SDKErrorf(err, "", "availability_policy-error", common.GetComponentInfo())
69623+
return
69624+
}
69625+
err = core.UnmarshalModel(m, "cluster_network_attachments", &obj.ClusterNetworkAttachments, UnmarshalInstanceClusterNetworkAttachmentPrototypeInstanceContext)
69626+
if err != nil {
69627+
err = core.SDKErrorf(err, "", "cluster_network_attachments-error", common.GetComponentInfo())
69628+
return
69629+
}
69630+
err = core.UnmarshalPrimitive(m, "confidential_compute_mode", &obj.ConfidentialComputeMode)
69631+
if err != nil {
69632+
err = core.SDKErrorf(err, "", "confidential_compute_mode-error", common.GetComponentInfo())
69633+
return
69634+
}
69635+
err = core.UnmarshalPrimitive(m, "created_at", &obj.CreatedAt)
69636+
if err != nil {
69637+
err = core.SDKErrorf(err, "", "created_at-error", common.GetComponentInfo())
69638+
return
69639+
}
69640+
err = core.UnmarshalPrimitive(m, "crn", &obj.CRN)
69641+
if err != nil {
69642+
err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo())
69643+
return
69644+
}
69645+
err = core.UnmarshalModel(m, "default_trusted_profile", &obj.DefaultTrustedProfile, UnmarshalInstanceDefaultTrustedProfilePrototype)
69646+
if err != nil {
69647+
err = core.SDKErrorf(err, "", "default_trusted_profile-error", common.GetComponentInfo())
69648+
return
69649+
}
69650+
err = core.UnmarshalPrimitive(m, "enable_secure_boot", &obj.EnableSecureBoot)
69651+
if err != nil {
69652+
err = core.SDKErrorf(err, "", "enable_secure_boot-error", common.GetComponentInfo())
69653+
return
69654+
}
69655+
err = core.UnmarshalPrimitive(m, "href", &obj.Href)
69656+
if err != nil {
69657+
err = core.SDKErrorf(err, "", "href-error", common.GetComponentInfo())
69658+
return
69659+
}
69660+
err = core.UnmarshalPrimitive(m, "id", &obj.ID)
69661+
if err != nil {
69662+
err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo())
69663+
return
69664+
}
69665+
err = core.UnmarshalModel(m, "keys", &obj.Keys, UnmarshalKeyIdentity)
69666+
if err != nil {
69667+
err = core.SDKErrorf(err, "", "keys-error", common.GetComponentInfo())
69668+
return
69669+
}
69670+
err = core.UnmarshalModel(m, "metadata_service", &obj.MetadataService, UnmarshalInstanceMetadataServicePrototype)
69671+
if err != nil {
69672+
err = core.SDKErrorf(err, "", "metadata_service-error", common.GetComponentInfo())
69673+
return
69674+
}
69675+
err = core.UnmarshalPrimitive(m, "name", &obj.Name)
69676+
if err != nil {
69677+
err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo())
69678+
return
69679+
}
69680+
err = core.UnmarshalModel(m, "placement_target", &obj.PlacementTarget, UnmarshalInstancePlacementTargetPrototype)
69681+
if err != nil {
69682+
err = core.SDKErrorf(err, "", "placement_target-error", common.GetComponentInfo())
69683+
return
69684+
}
69685+
err = core.UnmarshalModel(m, "profile", &obj.Profile, UnmarshalInstanceProfileIdentity)
69686+
if err != nil {
69687+
err = core.SDKErrorf(err, "", "profile-error", common.GetComponentInfo())
69688+
return
69689+
}
69690+
err = core.UnmarshalModel(m, "reservation_affinity", &obj.ReservationAffinity, UnmarshalInstanceReservationAffinityPrototype)
69691+
if err != nil {
69692+
err = core.SDKErrorf(err, "", "reservation_affinity-error", common.GetComponentInfo())
69693+
return
69694+
}
69695+
err = core.UnmarshalModel(m, "resource_group", &obj.ResourceGroup, UnmarshalResourceGroupReference)
69696+
if err != nil {
69697+
err = core.SDKErrorf(err, "", "resource_group-error", common.GetComponentInfo())
69698+
return
69699+
}
69700+
err = core.UnmarshalPrimitive(m, "total_volume_bandwidth", &obj.TotalVolumeBandwidth)
69701+
if err != nil {
69702+
err = core.SDKErrorf(err, "", "total_volume_bandwidth-error", common.GetComponentInfo())
69703+
return
69704+
}
69705+
err = core.UnmarshalPrimitive(m, "user_data", &obj.UserData)
69706+
if err != nil {
69707+
err = core.SDKErrorf(err, "", "user_data-error", common.GetComponentInfo())
69708+
return
69709+
}
69710+
err = core.UnmarshalModel(m, "volume_attachments", &obj.VolumeAttachments, UnmarshalVolumeAttachmentPrototype)
69711+
if err != nil {
69712+
err = core.SDKErrorf(err, "", "volume_attachments-error", common.GetComponentInfo())
69713+
return
69714+
}
69715+
err = core.UnmarshalModel(m, "vpc", &obj.VPC, UnmarshalVPCIdentity)
69716+
if err != nil {
69717+
err = core.SDKErrorf(err, "", "vpc-error", common.GetComponentInfo())
69718+
return
69719+
}
69720+
err = core.UnmarshalModel(m, "boot_volume_attachment", &obj.BootVolumeAttachment, UnmarshalVolumeAttachmentPrototypeInstanceByImageContext)
69721+
if err != nil {
69722+
err = core.SDKErrorf(err, "", "boot_volume_attachment-error", common.GetComponentInfo())
69723+
return
69724+
}
69725+
err = core.UnmarshalModel(m, "image", &obj.Image, UnmarshalImageIdentity)
69726+
if err != nil {
69727+
err = core.SDKErrorf(err, "", "image-error", common.GetComponentInfo())
69728+
return
69729+
}
69730+
err = core.UnmarshalModel(m, "zone", &obj.Zone, UnmarshalZoneIdentity)
69731+
if err != nil {
69732+
err = core.SDKErrorf(err, "", "zone-error", common.GetComponentInfo())
69733+
return
69734+
}
69735+
err = core.UnmarshalModel(m, "network_attachments", &obj.NetworkAttachments, UnmarshalInstanceNetworkAttachmentPrototype)
69736+
if err != nil {
69737+
err = core.SDKErrorf(err, "", "network_attachments-error", common.GetComponentInfo())
69738+
return
69739+
}
69740+
err = core.UnmarshalModel(m, "primary_network_attachment", &obj.PrimaryNetworkAttachment, UnmarshalInstanceNetworkAttachmentPrototype)
69741+
if err != nil {
69742+
err = core.SDKErrorf(err, "", "primary_network_attachment-error", common.GetComponentInfo())
69743+
return
69744+
}
69745+
err = core.UnmarshalModel(m, "network_interfaces", &obj.NetworkInterfaces, UnmarshalNetworkInterfacePrototype)
69746+
if err != nil {
69747+
err = core.SDKErrorf(err, "", "network_interfaces-error", common.GetComponentInfo())
69748+
return
69749+
}
69750+
err = core.UnmarshalModel(m, "primary_network_interface", &obj.PrimaryNetworkInterface, UnmarshalNetworkInterfacePrototype)
69751+
if err != nil {
69752+
err = core.SDKErrorf(err, "", "primary_network_interface-error", common.GetComponentInfo())
69753+
return
69754+
}
69755+
err = core.UnmarshalModel(m, "catalog_offering", &obj.CatalogOffering, UnmarshalInstanceCatalogOfferingPrototype)
69756+
if err != nil {
69757+
err = core.SDKErrorf(err, "", "catalog_offering-error", common.GetComponentInfo())
69758+
return
69759+
}
69760+
reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj))
6973569761
return
6973669762
}
69737-
reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj))
69738-
return
6973969763
}
6974069764

6974169765
// InstanceTemplateCollection : InstanceTemplateCollection struct

0 commit comments

Comments
 (0)