Skip to content

Commit 0aa0a4f

Browse files
authored
Merge pull request #19 from volcengine/feat/keyPair
Feat/key pair
2 parents 5f0c740 + 3c44c1b commit 0aa0a4f

17 files changed

+951
-10
lines changed

common/common_volcengine_version.go

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

33
const (
44
TerraformProviderName = "terraform-provider-volcengine"
5-
TerraformProviderVersion = "0.0.16"
5+
TerraformProviderVersion = "0.0.17"
66
)

example/dataEcsKeyPairs/main.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
data "volcengine_ecs_key_pairs" "default"{
2+
key_pair_ids = ["kp-l8u16bn69r8ny0fz01oc", "kp-l8u1wc12n3a82ep2s1px"]
3+
}

example/ecsKeyPair/main.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
resource "volcengine_ecs_key_pair" "default" {
2+
key_pair_name = "tf-test-key-name1"
3+
description ="tftest21111"
4+
}

example/ecsKeyPairAssociate/main.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
resource "volcengine_ecs_key_pair_associate" "default" {
2+
key_pair_id = "kp-ybvyy1e5msl8u258ovrv"
3+
instance_id = "i-ybskpw36rul8u1yekckh"
4+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package ecs_key_pair
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
5+
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
6+
ve "github.com/volcengine/terraform-provider-volcengine/common"
7+
)
8+
9+
func DataSourceVolcengineEcsKeyPairs() *schema.Resource {
10+
return &schema.Resource{
11+
Read: dataSourceVolcengineEcsKeyPairsRead,
12+
Schema: map[string]*schema.Schema{
13+
"finger_print": {
14+
Type: schema.TypeString,
15+
Optional: true,
16+
Description: "The finger print info.",
17+
},
18+
"key_pair_name": {
19+
Type: schema.TypeString,
20+
Optional: true,
21+
Description: "Name of key pair.",
22+
},
23+
"name_regex": {
24+
Type: schema.TypeString,
25+
Optional: true,
26+
ValidateFunc: validation.StringIsValidRegExp,
27+
Description: "A Name Regex of ECS key pairs.",
28+
},
29+
"output_file": {
30+
Type: schema.TypeString,
31+
Optional: true,
32+
Description: "File name where to save data source results.",
33+
},
34+
"total_count": {
35+
Type: schema.TypeInt,
36+
Computed: true,
37+
Description: "The total count of ECS key pair query.",
38+
},
39+
"key_pair_names": {
40+
Type: schema.TypeList,
41+
Optional: true,
42+
Elem: &schema.Schema{Type: schema.TypeString},
43+
Description: "Key pair names info.",
44+
},
45+
"key_pair_ids": {
46+
Type: schema.TypeList,
47+
Optional: true,
48+
Elem: &schema.Schema{Type: schema.TypeString},
49+
Description: "Ids of key pair.",
50+
},
51+
"key_pairs": {
52+
Type: schema.TypeList,
53+
Computed: true,
54+
Description: "The target query key pairs info.",
55+
Elem: &schema.Resource{
56+
Schema: map[string]*schema.Schema{
57+
"finger_print": {
58+
Type: schema.TypeString,
59+
Computed: true,
60+
Description: "The finger print info.",
61+
},
62+
"id": {
63+
Type: schema.TypeString,
64+
Computed: true,
65+
Description: "The id of key pair.",
66+
},
67+
"key_pair_name": {
68+
Type: schema.TypeString,
69+
Computed: true,
70+
Description: "The name of key pair.",
71+
},
72+
"key_pair_id": {
73+
Type: schema.TypeString,
74+
Computed: true,
75+
Description: "The id of key pair.",
76+
},
77+
"description": {
78+
Type: schema.TypeString,
79+
Computed: true,
80+
Description: "The description of key pair.",
81+
},
82+
"created_at": {
83+
Type: schema.TypeString,
84+
Computed: true,
85+
Description: "The creation time of key pair.",
86+
},
87+
"updated_at": {
88+
Type: schema.TypeString,
89+
Computed: true,
90+
Description: "The update time of key pair.",
91+
},
92+
},
93+
},
94+
},
95+
},
96+
}
97+
}
98+
99+
func dataSourceVolcengineEcsKeyPairsRead(d *schema.ResourceData, meta interface{}) error {
100+
service := NewEcsKeyPairService(meta.(*ve.SdkClient))
101+
return service.Dispatcher.Data(service, d, DataSourceVolcengineEcsKeyPairs())
102+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package ecs_key_pair
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
8+
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
9+
ve "github.com/volcengine/terraform-provider-volcengine/common"
10+
)
11+
12+
/*
13+
14+
Import
15+
ECS key pair can be imported using the id, e.g.
16+
```
17+
$ terraform import volcengine_ecs_key_pair.default kp-mizl7m1kqccg5smt1bdpijuj
18+
```
19+
20+
*/
21+
22+
func ResourceVolcengineEcsKeyPair() *schema.Resource {
23+
resource := &schema.Resource{
24+
Create: resourceVolcengineEcsKeyPairCreate,
25+
Read: resourceVolcengineEcsKeyPairRead,
26+
Update: resourceVolcengineEcsKeyPairUpdate,
27+
Delete: resourceVolcengineEcsKeyPairDelete,
28+
Importer: &schema.ResourceImporter{
29+
State: schema.ImportStatePassthrough,
30+
},
31+
Schema: map[string]*schema.Schema{
32+
"key_pair_name": {
33+
Type: schema.TypeString,
34+
Required: true,
35+
ForceNew: true,
36+
ValidateFunc: validation.StringLenBetween(2, 64),
37+
Description: "The name of key pair.",
38+
},
39+
"public_key": {
40+
Type: schema.TypeString,
41+
Optional: true,
42+
ForceNew: true,
43+
StateFunc: func(v interface{}) string {
44+
switch ele := v.(type) {
45+
case string:
46+
return strings.TrimSpace(ele)
47+
default:
48+
return ""
49+
}
50+
},
51+
Description: "Public key string.",
52+
},
53+
"description": {
54+
Type: schema.TypeString,
55+
Optional: true,
56+
Description: "The description of key pair.",
57+
},
58+
"key_file": {
59+
Type: schema.TypeString,
60+
Optional: true,
61+
ForceNew: true,
62+
Description: "Target file to save info.",
63+
},
64+
"finger_print": {
65+
Type: schema.TypeString,
66+
Computed: true,
67+
Description: "The finger print info.",
68+
},
69+
"key_pair_id": {
70+
Type: schema.TypeString,
71+
Computed: true,
72+
Description: "The id of key pair.",
73+
},
74+
},
75+
}
76+
return resource
77+
}
78+
79+
func resourceVolcengineEcsKeyPairCreate(d *schema.ResourceData, meta interface{}) (err error) {
80+
service := NewEcsKeyPairService(meta.(*ve.SdkClient))
81+
err = service.Dispatcher.Create(service, d, ResourceVolcengineEcsKeyPair())
82+
if err != nil {
83+
return fmt.Errorf("error on creating ecs key pair %q, %s", d.Id(), err)
84+
}
85+
return resourceVolcengineEcsKeyPairRead(d, meta)
86+
}
87+
88+
func resourceVolcengineEcsKeyPairRead(d *schema.ResourceData, meta interface{}) (err error) {
89+
service := NewEcsKeyPairService(meta.(*ve.SdkClient))
90+
err = service.Dispatcher.Read(service, d, ResourceVolcengineEcsKeyPair())
91+
if err != nil {
92+
return fmt.Errorf("error on reading ecs key pair %q, %s", d.Id(), err)
93+
}
94+
return err
95+
}
96+
97+
func resourceVolcengineEcsKeyPairUpdate(d *schema.ResourceData, meta interface{}) (err error) {
98+
service := NewEcsKeyPairService(meta.(*ve.SdkClient))
99+
err = service.Dispatcher.Update(service, d, ResourceVolcengineEcsKeyPair())
100+
if err != nil {
101+
return fmt.Errorf("error on updating ecs key pair %q, %s", d.Id(), err)
102+
}
103+
return resourceVolcengineEcsKeyPairRead(d, meta)
104+
}
105+
106+
func resourceVolcengineEcsKeyPairDelete(d *schema.ResourceData, meta interface{}) (err error) {
107+
service := NewEcsKeyPairService(meta.(*ve.SdkClient))
108+
err = service.Dispatcher.Delete(service, d, ResourceVolcengineEcsKeyPair())
109+
if err != nil {
110+
return fmt.Errorf("error on deleting ecs key pair %q, %s", d.Id(), err)
111+
}
112+
return err
113+
}

0 commit comments

Comments
 (0)