1package gridscale 2 3import ( 4 "context" 5 "fmt" 6 7 "github.com/gridscale/gsclient-go/v3" 8 "github.com/hashicorp/terraform-plugin-sdk/helper/schema" 9 "github.com/hashicorp/terraform-plugin-sdk/helper/validation" 10) 11 12func dataSourceGridscaleSshkey() *schema.Resource { 13 return &schema.Resource{ 14 Read: dataSourceGridscaleSshkeyRead, 15 16 Schema: map[string]*schema.Schema{ 17 "resource_id": &schema.Schema{ 18 Type: schema.TypeString, 19 Required: true, 20 Description: "ID of a resource", 21 ValidateFunc: validation.NoZeroValues, 22 }, 23 "name": { 24 Type: schema.TypeString, 25 Description: "The human-readable name of the object. It supports the full UTF-8 charset, with a maximum of 64 characters.", 26 Computed: true}, 27 "sshkey": { 28 Type: schema.TypeString, 29 Description: "sshkey_string is the OpenSSH public key string (all key types are supported => ed25519, ecdsa, dsa, rsa, rsa1)", 30 Computed: true}, 31 "status": { 32 Type: schema.TypeString, 33 Computed: true, 34 }, 35 "create_time": { 36 Type: schema.TypeString, 37 Description: "The date and time the object was initially created", 38 Computed: true, 39 }, 40 "change_time": { 41 Type: schema.TypeString, 42 Description: "The date and time of the last object change", 43 Computed: true, 44 }, 45 "labels": { 46 Type: schema.TypeSet, 47 Description: "List of labels.", 48 Computed: true, 49 Elem: &schema.Schema{Type: schema.TypeString}, 50 }, 51 }, 52 } 53} 54 55func dataSourceGridscaleSshkeyRead(d *schema.ResourceData, meta interface{}) error { 56 client := meta.(*gsclient.Client) 57 58 id := d.Get("resource_id").(string) 59 errorPrefix := fmt.Sprintf("read SSH key (%s) datasource -", id) 60 61 sshkey, err := client.GetSshkey(context.Background(), id) 62 if err != nil { 63 return fmt.Errorf("%s error: %v", errorPrefix, err) 64 } 65 66 d.SetId(sshkey.Properties.ObjectUUID) 67 if err = d.Set("name", sshkey.Properties.Name); err != nil { 68 return fmt.Errorf("%s error setting name: %v", errorPrefix, err) 69 } 70 if err = d.Set("sshkey", sshkey.Properties.Sshkey); err != nil { 71 return fmt.Errorf("%s error setting sshkey: %v", errorPrefix, err) 72 } 73 if err = d.Set("status", sshkey.Properties.Status); err != nil { 74 return fmt.Errorf("%s error setting status: %v", errorPrefix, err) 75 } 76 if err = d.Set("create_time", sshkey.Properties.CreateTime.String()); err != nil { 77 return fmt.Errorf("%s error setting create_time: %v", errorPrefix, err) 78 } 79 if err = d.Set("change_time", sshkey.Properties.ChangeTime.String()); err != nil { 80 return fmt.Errorf("%s error setting change_time: %v", errorPrefix, err) 81 } 82 if err = d.Set("labels", sshkey.Properties.Labels); err != nil { 83 return fmt.Errorf("%s error setting labels: %v", errorPrefix, err) 84 } 85 86 return nil 87} 88