Skip to content

Commit d066a3c

Browse files
authored
Refactor terraform errors to use new toolchain in nsg, network_port, and network peer data sources (IBM-Cloud#6529)
* Update error handling on network peer data source * Update error handling on nsg data source * Update error handling on network port data source
1 parent 690fcb4 commit d066a3c

File tree

5 files changed

+88
-62
lines changed

5 files changed

+88
-62
lines changed

ibm/service/power/data_source_ibm_pi_network_peer.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ package power
55

66
import (
77
"context"
8+
"fmt"
9+
"log"
810

911
"github.com/IBM-Cloud/power-go-client/clients/instance"
1012
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
13+
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1114
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1215
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1316
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1417
)
1518

1619
func DataSourceIBMPINetworkPeer() *schema.Resource {
17-
1820
return &schema.Resource{
1921
ReadContext: dataSourceIBMPINetworkPeerRead,
2022

@@ -110,17 +112,21 @@ func DataSourceIBMPINetworkPeer() *schema.Resource {
110112

111113
}
112114

113-
func dataSourceIBMPINetworkPeerRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
115+
func dataSourceIBMPINetworkPeerRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
114116
sess, err := meta.(conns.ClientSession).IBMPISession()
115117
if err != nil {
116-
return diag.FromErr(err)
118+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("IBMPISession failed: %s", err.Error()), "(Data) ibm_pi_network_peer", "read")
119+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
120+
return tfErr.GetDiag()
117121
}
118122
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
119123
networkPeerID := d.Get(Arg_NetworkPeerID).(string)
120124
networkC := instance.NewIBMPINetworkPeerClient(ctx, sess, cloudInstanceID)
121125
networkdata, err := networkC.GetNetworkPeer(networkPeerID)
122126
if err != nil {
123-
return diag.FromErr(err)
127+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetNetworkPeer failed: %s", err.Error()), "(Data) ibm_pi_network_peer", "read")
128+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
129+
return tfErr.GetDiag()
124130
}
125131
d.SetId(*networkdata.ID)
126132
d.Set(Attr_CreationDate, networkdata.CreationDate)
@@ -129,7 +135,7 @@ func dataSourceIBMPINetworkPeerRead(ctx context.Context, d *schema.ResourceData,
129135
d.Set(Attr_DefaultExportRouteFilter, networkdata.DefaultExportRouteFilter)
130136
d.Set(Attr_DefaultImportRouteFilter, networkdata.DefaultImportRouteFilter)
131137
d.Set(Attr_Error, networkdata.Error)
132-
exportRouteFilters := []map[string]interface{}{}
138+
exportRouteFilters := []map[string]any{}
133139
if len(networkdata.ExportRouteFilters) > 0 {
134140
for _, erp := range networkdata.ExportRouteFilters {
135141
exportRouteFilter := dataSourceIBMPINetworkPeerRouteFilterToMap(erp)
@@ -139,7 +145,7 @@ func dataSourceIBMPINetworkPeerRead(ctx context.Context, d *schema.ResourceData,
139145
d.Set(Attr_ExportRouteFilters, exportRouteFilters)
140146
d.Set(Attr_IBMASN, networkdata.IbmASN)
141147
d.Set(Attr_IBMCIDR, networkdata.IbmCidr)
142-
importRouteFilters := []map[string]interface{}{}
148+
importRouteFilters := []map[string]any{}
143149
if len(networkdata.ImportRouteFilters) > 0 {
144150
for _, irp := range networkdata.ImportRouteFilters {
145151
importRouteFilter := dataSourceIBMPINetworkPeerRouteFilterToMap(irp)

ibm/service/power/data_source_ibm_pi_network_peers.go

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@ package power
55

66
import (
77
"context"
8+
"fmt"
9+
"log"
810

11+
"github.com/IBM-Cloud/power-go-client/clients/instance"
12+
"github.com/IBM-Cloud/power-go-client/power/models"
13+
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
14+
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
915
"github.com/hashicorp/go-uuid"
1016
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1117
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1218
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
13-
14-
"github.com/IBM-Cloud/power-go-client/clients/instance"
15-
"github.com/IBM-Cloud/power-go-client/power/models"
16-
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
1719
)
1820

1921
func DataSourceIBMPINetworkPeers() *schema.Resource {
@@ -125,22 +127,26 @@ func DataSourceIBMPINetworkPeers() *schema.Resource {
125127
}
126128
}
127129

128-
func dataSourceIBMPINetworkPeersRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
130+
func dataSourceIBMPINetworkPeersRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
129131
sess, err := meta.(conns.ClientSession).IBMPISession()
130132
if err != nil {
131-
return diag.FromErr(err)
133+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("IBMPISession failed: %s", err.Error()), "(Data) ibm_pi_network_peers", "read")
134+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
135+
return tfErr.GetDiag()
132136
}
133137
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
134138

135139
networkC := instance.NewIBMPINetworkPeerClient(ctx, sess, cloudInstanceID)
136140
networkdata, err := networkC.GetNetworkPeers()
137141
if err != nil {
138-
return diag.FromErr(err)
142+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetNetworkPeers failed: %s", err.Error()), "(Data) ibm_pi_network_peers", "read")
143+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
144+
return tfErr.GetDiag()
139145
}
140146
var clientgenU, _ = uuid.GenerateUUID()
141147
d.SetId(clientgenU)
142148

143-
networkPeers := []map[string]interface{}{}
149+
networkPeers := []map[string]any{}
144150
if networkdata.NetworkPeers != nil {
145151
for _, np := range networkdata.NetworkPeers {
146152
npMap := dataSourceIBMPINetworkPeersNetworkPeerToMap(np)
@@ -153,15 +159,15 @@ func dataSourceIBMPINetworkPeersRead(ctx context.Context, d *schema.ResourceData
153159
return nil
154160
}
155161

156-
func dataSourceIBMPINetworkPeersNetworkPeerToMap(np *models.NetworkPeer) map[string]interface{} {
157-
npMap := make(map[string]interface{})
162+
func dataSourceIBMPINetworkPeersNetworkPeerToMap(np *models.NetworkPeer) map[string]any {
163+
npMap := make(map[string]any)
158164
npMap[Attr_CreationDate] = np.CreationDate
159165
npMap[Attr_CustomerASN] = np.CustomerASN
160166
npMap[Attr_CustomerCIDR] = np.CustomerCidr
161167
npMap[Attr_DefaultExportRouteFilter] = np.DefaultExportRouteFilter
162168
npMap[Attr_DefaultImportRouteFilter] = np.DefaultImportRouteFilter
163169
npMap[Attr_Error] = np.Error
164-
exportRouteFilters := []map[string]interface{}{}
170+
exportRouteFilters := []map[string]any{}
165171
if len(np.ExportRouteFilters) > 0 {
166172
for _, erf := range np.ExportRouteFilters {
167173
exportRouteFilter := dataSourceIBMPINetworkPeerRouteFilterToMap(erf)
@@ -172,7 +178,7 @@ func dataSourceIBMPINetworkPeersNetworkPeerToMap(np *models.NetworkPeer) map[str
172178
npMap[Attr_IBMASN] = np.IbmASN
173179
npMap[Attr_IBMCIDR] = np.IbmCidr
174180
npMap[Attr_ID] = np.ID
175-
importRouteFilters := []map[string]interface{}{}
181+
importRouteFilters := []map[string]any{}
176182
if len(np.ImportRouteFilters) > 0 {
177183
for _, irf := range np.ImportRouteFilters {
178184
importRouteFilter := dataSourceIBMPINetworkPeerRouteFilterToMap(irf)
@@ -194,8 +200,8 @@ func dataSourceIBMPINetworkPeersNetworkPeerToMap(np *models.NetworkPeer) map[str
194200
return npMap
195201
}
196202

197-
func dataSourceIBMPINetworkPeerRouteFilterToMap(rf *models.RouteFilter) map[string]interface{} {
198-
rfMap := make(map[string]interface{})
203+
func dataSourceIBMPINetworkPeerRouteFilterToMap(rf *models.RouteFilter) map[string]any {
204+
rfMap := make(map[string]any)
199205

200206
if rf.Action != nil {
201207
rfMap[Attr_Action] = rf.Action

ibm/service/power/data_source_ibm_pi_network_port.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ package power
55

66
import (
77
"context"
8+
"fmt"
89
"log"
910

1011
"github.com/IBM-Cloud/power-go-client/clients/instance"
1112
"github.com/IBM-Cloud/power-go-client/power/models"
1213
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
14+
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1315
"github.com/hashicorp/go-uuid"
1416
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1517
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -98,10 +100,12 @@ func DataSourceIBMPINetworkPort() *schema.Resource {
98100
}
99101
}
100102

101-
func dataSourceIBMPINetworkPortsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
103+
func dataSourceIBMPINetworkPortsRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
102104
sess, err := meta.(conns.ClientSession).IBMPISession()
103105
if err != nil {
104-
return diag.FromErr(err)
106+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("IBMPISession failed: %s", err.Error()), "(Data) ibm_pi_network_port", "read")
107+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
108+
return tfErr.GetDiag()
105109
}
106110

107111
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
@@ -115,7 +119,9 @@ func dataSourceIBMPINetworkPortsRead(ctx context.Context, d *schema.ResourceData
115119
networkportC := instance.NewIBMPINetworkClient(ctx, sess, cloudInstanceID)
116120
networkportdata, err := networkportC.GetAllPorts(networkID)
117121
if err != nil {
118-
return diag.FromErr(err)
122+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetAllPorts failed: %s", err.Error()), "(Data) ibm_pi_network_port", "read")
123+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
124+
return tfErr.GetDiag()
119125
}
120126
var clientgenU, _ = uuid.GenerateUUID()
121127
d.SetId(clientgenU)
@@ -125,11 +131,11 @@ func dataSourceIBMPINetworkPortsRead(ctx context.Context, d *schema.ResourceData
125131
return nil
126132
}
127133

128-
func flattenNetworkPorts(networkPorts []*models.NetworkPort) interface{} {
129-
result := make([]map[string]interface{}, 0, len(networkPorts))
134+
func flattenNetworkPorts(networkPorts []*models.NetworkPort) any {
135+
result := make([]map[string]any, 0, len(networkPorts))
130136
log.Printf("the number of ports is %d", len(networkPorts))
131137
for _, i := range networkPorts {
132-
l := map[string]interface{}{
138+
l := map[string]any{
133139
Attr_Description: i.Description,
134140
Attr_Href: i.Href,
135141
Attr_IPaddress: *i.IPAddress,

ibm/service/power/data_source_ibm_pi_network_security_group.go

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ package power
55

66
import (
77
"context"
8+
"fmt"
89
"log"
910

10-
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
11-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12-
1311
"github.com/IBM-Cloud/power-go-client/clients/instance"
1412
"github.com/IBM-Cloud/power-go-client/power/models"
1513
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
1614
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
15+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
16+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1717
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1818
)
1919

@@ -205,18 +205,22 @@ func DataSourceIBMPINetworkSecurityGroup() *schema.Resource {
205205
}
206206
}
207207

208-
func dataSourceIBMPINetworkSecurityGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
208+
func dataSourceIBMPINetworkSecurityGroupRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
209209
sess, err := meta.(conns.ClientSession).IBMPISession()
210210
if err != nil {
211-
return diag.FromErr(err)
211+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("IBMPISession failed: %s", err.Error()), "(Data) ibm_pi_network_security_group", "read")
212+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
213+
return tfErr.GetDiag()
212214
}
213215

214216
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
215217
nsgClient := instance.NewIBMIPINetworkSecurityGroupClient(ctx, sess, cloudInstanceID)
216218

217219
networkSecurityGroup, err := nsgClient.Get(d.Get(Arg_NetworkSecurityGroupID).(string))
218220
if err != nil {
219-
return diag.FromErr(err)
221+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Get failed: %s", err.Error()), "(Data) ibm_pi_network_security_group", "read")
222+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
223+
return tfErr.GetDiag()
220224
}
221225

222226
d.SetId(*networkSecurityGroup.ID)
@@ -231,7 +235,7 @@ func dataSourceIBMPINetworkSecurityGroupRead(ctx context.Context, d *schema.Reso
231235
d.Set(Attr_Default, networkSecurityGroup.Default)
232236

233237
if len(networkSecurityGroup.Members) > 0 {
234-
members := []map[string]interface{}{}
238+
members := []map[string]any{}
235239
for _, mbr := range networkSecurityGroup.Members {
236240
mbrMap := networkSecurityGroupMemberToMap(mbr)
237241
members = append(members, mbrMap)
@@ -242,7 +246,7 @@ func dataSourceIBMPINetworkSecurityGroupRead(ctx context.Context, d *schema.Reso
242246
d.Set(Attr_Name, networkSecurityGroup.Name)
243247

244248
if len(networkSecurityGroup.Rules) > 0 {
245-
rules := []map[string]interface{}{}
249+
rules := []map[string]any{}
246250
for _, rule := range networkSecurityGroup.Rules {
247251
ruleMap := networkSecurityGroupRuleToMap(rule)
248252
rules = append(rules, ruleMap)
@@ -253,8 +257,8 @@ func dataSourceIBMPINetworkSecurityGroupRead(ctx context.Context, d *schema.Reso
253257
return nil
254258
}
255259

256-
func networkSecurityGroupMemberToMap(mbr *models.NetworkSecurityGroupMember) map[string]interface{} {
257-
mbrMap := make(map[string]interface{})
260+
func networkSecurityGroupMemberToMap(mbr *models.NetworkSecurityGroupMember) map[string]any {
261+
mbrMap := make(map[string]any)
258262
mbrMap[Attr_ID] = mbr.ID
259263
if mbr.MacAddress != "" {
260264
mbrMap[Attr_MacAddress] = mbr.MacAddress
@@ -267,46 +271,46 @@ func networkSecurityGroupMemberToMap(mbr *models.NetworkSecurityGroupMember) map
267271
return mbrMap
268272
}
269273

270-
func networkSecurityGroupRuleToMap(rule *models.NetworkSecurityGroupRule) map[string]interface{} {
271-
ruleMap := make(map[string]interface{})
274+
func networkSecurityGroupRuleToMap(rule *models.NetworkSecurityGroupRule) map[string]any {
275+
ruleMap := make(map[string]any)
272276
ruleMap[Attr_Action] = rule.Action
273277
if rule.DestinationPort != nil {
274278
destinationPortMap := networkSecurityGroupRulePortToMap(rule.DestinationPort)
275-
ruleMap[Attr_DestinationPort] = []map[string]interface{}{destinationPortMap}
279+
ruleMap[Attr_DestinationPort] = []map[string]any{destinationPortMap}
276280
}
277281

278282
ruleMap[Attr_ID] = rule.ID
279283

280284
protocolMap := networkSecurityGroupRuleProtocolToMap(rule.Protocol)
281-
ruleMap[Attr_Protocol] = []map[string]interface{}{protocolMap}
285+
ruleMap[Attr_Protocol] = []map[string]any{protocolMap}
282286

283287
remoteMap := networkSecurityGroupRuleRemoteToMap(rule.Remote)
284-
ruleMap[Attr_Remote] = []map[string]interface{}{remoteMap}
288+
ruleMap[Attr_Remote] = []map[string]any{remoteMap}
285289

286290
if rule.SourcePort != nil {
287291
sourcePortMap := networkSecurityGroupRulePortToMap(rule.SourcePort)
288-
ruleMap[Attr_SourcePort] = []map[string]interface{}{sourcePortMap}
292+
ruleMap[Attr_SourcePort] = []map[string]any{sourcePortMap}
289293
}
290294

291295
return ruleMap
292296
}
293297

294-
func networkSecurityGroupRulePortToMap(port *models.NetworkSecurityGroupRulePort) map[string]interface{} {
295-
portMap := make(map[string]interface{})
298+
func networkSecurityGroupRulePortToMap(port *models.NetworkSecurityGroupRulePort) map[string]any {
299+
portMap := make(map[string]any)
296300
portMap[Attr_Maximum] = port.Maximum
297301
portMap[Attr_Minimum] = port.Minimum
298302
return portMap
299303
}
300304

301-
func networkSecurityGroupRuleProtocolToMap(protocol *models.NetworkSecurityGroupRuleProtocol) map[string]interface{} {
302-
protocolMap := make(map[string]interface{})
305+
func networkSecurityGroupRuleProtocolToMap(protocol *models.NetworkSecurityGroupRuleProtocol) map[string]any {
306+
protocolMap := make(map[string]any)
303307
if protocol.IcmpType != nil {
304308
protocolMap[Attr_ICMPType] = protocol.IcmpType
305309
}
306310
if len(protocol.TCPFlags) > 0 {
307-
tcpFlags := []map[string]interface{}{}
311+
tcpFlags := []map[string]any{}
308312
for _, tcpFlagsItem := range protocol.TCPFlags {
309-
tcpFlagsItemMap := make(map[string]interface{})
313+
tcpFlagsItemMap := make(map[string]any)
310314
tcpFlagsItemMap[Attr_Flag] = tcpFlagsItem.Flag
311315
tcpFlags = append(tcpFlags, tcpFlagsItemMap)
312316
}
@@ -318,8 +322,8 @@ func networkSecurityGroupRuleProtocolToMap(protocol *models.NetworkSecurityGroup
318322
return protocolMap
319323
}
320324

321-
func networkSecurityGroupRuleRemoteToMap(remote *models.NetworkSecurityGroupRuleRemote) map[string]interface{} {
322-
remoteMap := make(map[string]interface{})
325+
func networkSecurityGroupRuleRemoteToMap(remote *models.NetworkSecurityGroupRuleRemote) map[string]any {
326+
remoteMap := make(map[string]any)
323327
if remote.ID != "" {
324328
remoteMap[Attr_ID] = remote.ID
325329
}

0 commit comments

Comments
 (0)