44package vpc
55
66import (
7+ "context"
78 "fmt"
89 "log"
910
1011 "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1112 "github.com/IBM/vpc-go-sdk/vpcv1"
13+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1214 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1315)
1416
1517func DataSourceIBMISSSHKey () * schema.Resource {
1618 return & schema.Resource {
17- Read : dataSourceIBMISSSHKeyRead ,
19+ ReadContext : dataSourceIBMISSSHKeyRead ,
1820
1921 Schema : map [string ]* schema.Schema {
2022 "resource_group" : {
@@ -119,7 +121,7 @@ func DataSourceIBMISSSHKey() *schema.Resource {
119121 }
120122}
121123
122- func dataSourceIBMISSSHKeyRead (d * schema.ResourceData , meta interface {}) error {
124+ func dataSourceIBMISSSHKeyRead (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
123125 name := ""
124126 if nameOk , ok := d .GetOk (isKeyName ); ok {
125127 name = nameOk .(string )
@@ -129,27 +131,31 @@ func dataSourceIBMISSSHKeyRead(d *schema.ResourceData, meta interface{}) error {
129131 id = idOk .(string )
130132 }
131133
132- err := keyGetByNameOrId (d , meta , name , id )
133- if err != nil {
134- return err
134+ diag := keyGetByNameOrId (context , d , meta , name , id )
135+ if diag != nil {
136+ return diag
135137 }
136138 return nil
137139}
138140
139- func keyGetByNameOrId (d * schema.ResourceData , meta interface {}, name , id string ) error {
141+ func keyGetByNameOrId (context context. Context , d * schema.ResourceData , meta interface {}, name , id string ) diag. Diagnostics {
140142 sess , err := vpcClient (meta )
141143 if err != nil {
142- return err
144+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "(Data) ibm_is_ssh_key" , "read" , "initialize-client" )
145+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
146+ return tfErr .GetDiag ()
143147 }
144148 var key vpcv1.Key
145149
146150 if id != "" {
147151 getKeyOptions := & vpcv1.GetKeyOptions {
148152 ID : & id ,
149153 }
150- keyintf , response , err := sess .GetKey ( getKeyOptions )
154+ keyintf , _ , err := sess .GetKeyWithContext ( context , getKeyOptions )
151155 if err != nil {
152- return fmt .Errorf ("[ERROR] Error GetKey %s\n %s" , err , response )
156+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("GetKeyWithContext failed: %s" , err .Error ()), "(Data) ibm_is_ssh_key" , "read" )
157+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
158+ return tfErr .GetDiag ()
153159 }
154160 key = * keyintf
155161
@@ -163,9 +169,11 @@ func keyGetByNameOrId(d *schema.ResourceData, meta interface{}, name, id string)
163169 listKeysOptions .Start = & start
164170 }
165171
166- keys , response , err := sess .ListKeys ( listKeysOptions )
172+ keys , _ , err := sess .ListKeysWithContext ( context , listKeysOptions )
167173 if err != nil {
168- return fmt .Errorf ("[ERROR] Error fetching Keys %s\n %s" , err , response )
174+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("ListKeysWithContext failed: %s" , err .Error ()), "(Data) ibm_is_ssh_key" , "read" )
175+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
176+ return tfErr .GetDiag ()
169177 }
170178 start = flex .GetNext (keys .Next )
171179 allrecs = append (allrecs , keys .Keys ... )
@@ -181,33 +189,50 @@ func keyGetByNameOrId(d *schema.ResourceData, meta interface{}, name, id string)
181189 }
182190 }
183191 if ! found {
184- return fmt .Errorf ("[ERROR] No SSH Key found with name %s" , name )
192+ err = fmt .Errorf ("[ERROR] No SSH Key found with name %s" , name )
193+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("Not found: %s" , err .Error ()), "(Data) ibm_is_ssh_key" , "read" )
194+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
195+ return tfErr .GetDiag ()
185196 }
186197 }
187198 d .SetId (* key .ID )
188- d .Set ("name" , * key .Name )
189- d .Set (isKeyType , * key .Type )
190- d .Set (isKeyFingerprint , * key .Fingerprint )
191- d .Set (isKeyLength , * key .Length )
199+ if err = d .Set ("name" , key .Name ); err != nil {
200+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting name: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-name" ).GetDiag ()
201+ }
202+ if err = d .Set ("type" , key .Type ); err != nil {
203+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting type: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-type" ).GetDiag ()
204+ }
205+ if err = d .Set ("fingerprint" , key .Fingerprint ); err != nil {
206+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting fingerprint: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-fingerprint" ).GetDiag ()
207+ }
208+ if err = d .Set ("length" , flex .IntValue (key .Length )); err != nil {
209+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting length: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-length" ).GetDiag ()
210+ }
192211 controller , err := flex .GetBaseController (meta )
193212 if err != nil {
194- return err
213+ return flex . DiscriminatedTerraformErrorf ( err , fmt . Sprintf ( "Error setting resource_controller_url: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-resource_controller_url" ). GetDiag ()
195214 }
215+ d .Set (flex .ResourceControllerURL , controller + "/vpc/compute/sshKeys" )
196216 if err = d .Set ("created_at" , flex .DateTimeToString (key .CreatedAt )); err != nil {
197- return err
217+ return flex . DiscriminatedTerraformErrorf ( err , fmt . Sprintf ( "Error setting created_at: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-created_at" ). GetDiag ()
198218 }
199219 if err = d .Set ("href" , key .Href ); err != nil {
200- return err
220+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting href: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-href" ).GetDiag ()
221+ }
222+ if err = d .Set (flex .ResourceName , key .Name ); err != nil {
223+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting resource_name: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-resource_name" ).GetDiag ()
224+ }
225+ if err = d .Set (flex .ResourceCRN , key .CRN ); err != nil {
226+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting resource_crn: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-resource_crn" ).GetDiag ()
227+ }
228+ if err = d .Set ("crn" , key .CRN ); err != nil {
229+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting crn: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-crn" ).GetDiag ()
201230 }
202- d .Set (flex .ResourceControllerURL , controller + "/vpc/compute/sshKeys" )
203- d .Set (flex .ResourceName , * key .Name )
204- d .Set (flex .ResourceCRN , * key .CRN )
205- d .Set (IsKeyCRN , * key .CRN )
206231 if key .ResourceGroup != nil {
207232 d .Set (flex .ResourceGroupName , * key .ResourceGroup .ID )
208233 }
209- if key .PublicKey != nil {
210- d . Set ( isKeyPublicKey , * key . PublicKey )
234+ if err = d . Set ( "public_key" , key .PublicKey ); err != nil {
235+ return flex . DiscriminatedTerraformErrorf ( err , fmt . Sprintf ( "Error setting public_key: %s" , err ), "(Data) ibm_is_ssh_key" , "read" , "set-public_key" ). GetDiag ( )
211236 }
212237 tags , err := flex .GetGlobalTagsUsingCRN (meta , * key .CRN , "" , isUserTagType )
213238 if err != nil {
0 commit comments