Skip to content

Commit 4103d9c

Browse files
authored
Merge pull request #220 from bencord0/import_cloud_project_user
r/cloud_project_user: Add an importer
2 parents e56b779 + 001cff6 commit 4103d9c

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

Diff for: ovh/resource_cloud_project_user.go

+25-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package ovh
22

33
import (
4+
"context"
45
"fmt"
56
"log"
67
"net/url"
8+
"os"
79
"regexp"
810
"strconv"
11+
"strings"
912
"time"
1013

1114
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
@@ -22,9 +25,7 @@ func resourceCloudProjectUser() *schema.Resource {
2225
Delete: resourceCloudProjectUserDelete,
2326

2427
Importer: &schema.ResourceImporter{
25-
State: func(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
26-
return []*schema.ResourceData{d}, nil
27-
},
28+
StateContext: resourceCloudProjectUserImportState,
2829
},
2930

3031
Schema: map[string]*schema.Schema{
@@ -105,6 +106,27 @@ func resourceCloudProjectUser() *schema.Resource {
105106
}
106107
}
107108

109+
func resourceCloudProjectUserImportState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
110+
userId := d.Id()
111+
// Fallback to the environment variable if service_name not given
112+
serviceName := os.Getenv("OVH_CLOUD_PROJECT_SERVICE")
113+
114+
splitId := strings.SplitN(userId, "/", 2)
115+
if len(splitId) == 2 {
116+
serviceName = splitId[0]
117+
userId = splitId[1]
118+
}
119+
120+
if serviceName == "" || userId == "" {
121+
return nil, fmt.Errorf("Import Id is not service_name/id formatted")
122+
}
123+
124+
d.SetId(userId)
125+
d.Set("service_name", serviceName)
126+
127+
return []*schema.ResourceData{d}, nil
128+
}
129+
108130
func validateCloudProjectUserRoleFunc(v interface{}, k string) (ws []string, errors []error) {
109131
err := helpers.ValidateStringEnum(v.(string), []string{
110132
"administrator",

0 commit comments

Comments
 (0)