Skip to content

Commit 8ff72bb

Browse files
authored
Merge pull request #315 from matprig/kube/fix/import-resource-kube-kubeconfig
add kubeconfig in state when import
2 parents e1a1561 + ec17b1b commit 8ff72bb

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

ovh/resource_cloud_project_kube.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,20 @@ func resourceCloudProjectKubeImportState(d *schema.ResourceData, meta interface{
174174
givenId := d.Id()
175175
splitId := strings.SplitN(givenId, "/", 2)
176176
if len(splitId) != 2 {
177-
return nil, fmt.Errorf("Import Id is not service_name/kubeid formatted")
177+
return nil, fmt.Errorf("import Id is not service_name/kubeid formatted")
178178
}
179179
serviceName := splitId[0]
180180
id := splitId[1]
181181
d.SetId(id)
182182
d.Set("service_name", serviceName)
183183

184+
// add kubeconfig in state
185+
kubeConfig, err := getKubeconfig(meta.(*Config), serviceName, d.Id())
186+
if err != nil {
187+
return nil, err
188+
}
189+
d.Set("kubeconfig", kubeConfig)
190+
184191
results := make([]*schema.ResourceData, 1)
185192
results[0] = d
186193
return results, nil
@@ -240,13 +247,11 @@ func resourceCloudProjectKubeRead(d *schema.ResourceData, meta interface{}) erro
240247
}
241248

242249
if d.IsNewResource() {
243-
kubeconfigRaw := CloudProjectKubeKubeConfigResponse{}
244-
endpoint := fmt.Sprintf("/cloud/project/%s/kube/%s/kubeconfig", serviceName, res.Id)
245-
err := config.OVHClient.Post(endpoint, nil, &kubeconfigRaw)
250+
kubeConfig, err := getKubeconfig(config, serviceName, res.Id)
246251
if err != nil {
247252
return err
248253
}
249-
d.Set("kubeconfig", kubeconfigRaw.Content)
254+
d.Set("kubeconfig", kubeConfig)
250255
}
251256

252257
log.Printf("[DEBUG] Read kube %+v", res)
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package ovh
2+
3+
import "fmt"
4+
5+
// getKubeconfig call the kubeconfig endpoint to retreive the kube config file
6+
func getKubeconfig(config *Config, serviceName string, kubeID string) (*string, error) {
7+
kubeconfigRaw := CloudProjectKubeKubeConfigResponse{}
8+
endpoint := fmt.Sprintf("/cloud/project/%s/kube/%s/kubeconfig", serviceName, kubeID)
9+
err := config.OVHClient.Post(endpoint, nil, &kubeconfigRaw)
10+
if err != nil {
11+
return nil, err
12+
}
13+
return &kubeconfigRaw.Content, nil
14+
}

0 commit comments

Comments
 (0)