Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid crash when importing invalid ID #46

Merged
merged 1 commit into from
Aug 15, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 19 additions & 6 deletions kubernetes/resource_kubernetes_config_map.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,10 @@ func resourceKubernetesConfigMapCreate(d *schema.ResourceData, meta interface{})
func resourceKubernetesConfigMapRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}
log.Printf("[INFO] Reading config map %s", name)
cfgMap, err := conn.CoreV1().ConfigMaps(namespace).Get(name, metav1.GetOptions{})
if err != nil {
Expand All @@ -76,7 +79,10 @@ func resourceKubernetesConfigMapRead(d *schema.ResourceData, meta interface{}) e
func resourceKubernetesConfigMapUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

ops := patchMetadata("metadata.0.", "/metadata/", d)
if d.HasChange("data") {
Expand All @@ -102,9 +108,12 @@ func resourceKubernetesConfigMapUpdate(d *schema.ResourceData, meta interface{})
func resourceKubernetesConfigMapDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}
log.Printf("[INFO] Deleting config map: %#v", name)
err := conn.CoreV1().ConfigMaps(namespace).Delete(name, &metav1.DeleteOptions{})
err = conn.CoreV1().ConfigMaps(namespace).Delete(name, &metav1.DeleteOptions{})
if err != nil {
return err
}
Expand All @@ -118,9 +127,13 @@ func resourceKubernetesConfigMapDelete(d *schema.ResourceData, meta interface{})
func resourceKubernetesConfigMapExists(d *schema.ResourceData, meta interface{}) (bool, error) {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return false, err
}

log.Printf("[INFO] Checking config map %s", name)
_, err := conn.CoreV1().ConfigMaps(namespace).Get(name, metav1.GetOptions{})
_, err = conn.CoreV1().ConfigMaps(namespace).Get(name, metav1.GetOptions{})
if err != nil {
if statusErr, ok := err.(*errors.StatusError); ok && statusErr.ErrStatus.Code == 404 {
return false, nil
Expand Down
10 changes: 8 additions & 2 deletions kubernetes/resource_kubernetes_config_map_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,10 @@ func testAccCheckKubernetesConfigMapDestroy(s *terraform.State) error {
if rs.Type != "kubernetes_config_map" {
continue
}
namespace, name := idParts(rs.Primary.ID)
namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}
resp, err := conn.CoreV1().ConfigMaps(namespace).Get(name, meta_v1.GetOptions{})
if err == nil {
if resp.Name == rs.Primary.ID {
Expand All @@ -207,7 +210,10 @@ func testAccCheckKubernetesConfigMapExists(n string, obj *api.ConfigMap) resourc
}

conn := testAccProvider.Meta().(*kubernetes.Clientset)
namespace, name := idParts(rs.Primary.ID)
namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}
out, err := conn.CoreV1().ConfigMaps(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
return err
Expand Down
25 changes: 19 additions & 6 deletions kubernetes/resource_kubernetes_horizontal_pod_autoscaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,10 @@ func resourceKubernetesHorizontalPodAutoscalerCreate(d *schema.ResourceData, met
func resourceKubernetesHorizontalPodAutoscalerRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}
log.Printf("[INFO] Reading horizontal pod autoscaler %s", name)
svc, err := conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
Expand All @@ -130,7 +133,10 @@ func resourceKubernetesHorizontalPodAutoscalerRead(d *schema.ResourceData, meta
func resourceKubernetesHorizontalPodAutoscalerUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

ops := patchMetadata("metadata.0.", "/metadata/", d)
if d.HasChange("spec") {
Expand All @@ -155,9 +161,12 @@ func resourceKubernetesHorizontalPodAutoscalerUpdate(d *schema.ResourceData, met
func resourceKubernetesHorizontalPodAutoscalerDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}
log.Printf("[INFO] Deleting horizontal pod autoscaler: %#v", name)
err := conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Delete(name, &meta_v1.DeleteOptions{})
err = conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Delete(name, &meta_v1.DeleteOptions{})
if err != nil {
return err
}
Expand All @@ -171,9 +180,13 @@ func resourceKubernetesHorizontalPodAutoscalerDelete(d *schema.ResourceData, met
func resourceKubernetesHorizontalPodAutoscalerExists(d *schema.ResourceData, meta interface{}) (bool, error) {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return false, err
}

log.Printf("[INFO] Checking horizontal pod autoscaler %s", name)
_, err := conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Get(name, meta_v1.GetOptions{})
_, err = conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
if statusErr, ok := err.(*errors.StatusError); ok && statusErr.ErrStatus.Code == 404 {
return false, nil
Expand Down
14 changes: 12 additions & 2 deletions kubernetes/resource_kubernetes_horizontal_pod_autoscaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,12 @@ func testAccCheckKubernetesHorizontalPodAutoscalerDestroy(s *terraform.State) er
if rs.Type != "kubernetes_horizontal_pod_autoscaler" {
continue
}
namespace, name := idParts(rs.Primary.ID)

namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}

resp, err := conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Get(name, meta_v1.GetOptions{})
if err == nil {
if resp.Namespace == namespace && resp.Name == name {
Expand All @@ -181,7 +186,12 @@ func testAccCheckKubernetesHorizontalPodAutoscalerExists(n string, obj *api.Hori
}

conn := testAccProvider.Meta().(*kubernetes.Clientset)
namespace, name := idParts(rs.Primary.ID)

namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}

out, err := conn.AutoscalingV1().HorizontalPodAutoscalers(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
return err
Expand Down
26 changes: 20 additions & 6 deletions kubernetes/resource_kubernetes_limit_range.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,10 @@ func resourceKubernetesLimitRangeCreate(d *schema.ResourceData, meta interface{}
func resourceKubernetesLimitRangeRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}
log.Printf("[INFO] Reading limit range %s", name)
limitRange, err := conn.CoreV1().LimitRanges(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
Expand All @@ -129,7 +132,10 @@ func resourceKubernetesLimitRangeRead(d *schema.ResourceData, meta interface{})
func resourceKubernetesLimitRangeUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

ops := patchMetadata("metadata.0.", "/metadata/", d)
if d.HasChange("spec") {
Expand Down Expand Up @@ -160,9 +166,13 @@ func resourceKubernetesLimitRangeUpdate(d *schema.ResourceData, meta interface{}
func resourceKubernetesLimitRangeDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

log.Printf("[INFO] Deleting limit range: %#v", name)
err := conn.CoreV1().LimitRanges(namespace).Delete(name, &meta_v1.DeleteOptions{})
err = conn.CoreV1().LimitRanges(namespace).Delete(name, &meta_v1.DeleteOptions{})
if err != nil {
return err
}
Expand All @@ -176,9 +186,13 @@ func resourceKubernetesLimitRangeDelete(d *schema.ResourceData, meta interface{}
func resourceKubernetesLimitRangeExists(d *schema.ResourceData, meta interface{}) (bool, error) {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return false, err
}

log.Printf("[INFO] Checking limit range %s", name)
_, err := conn.CoreV1().LimitRanges(namespace).Get(name, meta_v1.GetOptions{})
_, err = conn.CoreV1().LimitRanges(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
if statusErr, ok := err.(*errors.StatusError); ok && statusErr.ErrStatus.Code == 404 {
return false, nil
Expand Down
14 changes: 12 additions & 2 deletions kubernetes/resource_kubernetes_limit_range_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,12 @@ func testAccCheckKubernetesLimitRangeDestroy(s *terraform.State) error {
if rs.Type != "kubernetes_limit_range" {
continue
}
namespace, name := idParts(rs.Primary.ID)

namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}

resp, err := conn.CoreV1().LimitRanges(namespace).Get(name, meta_v1.GetOptions{})
if err == nil {
if resp.Namespace == namespace && resp.Name == name {
Expand All @@ -283,7 +288,12 @@ func testAccCheckKubernetesLimitRangeExists(n string, obj *api.LimitRange) resou
}

conn := testAccProvider.Meta().(*kubernetes.Clientset)
namespace, name := idParts(rs.Primary.ID)

namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}

out, err := conn.CoreV1().LimitRanges(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
return err
Expand Down
28 changes: 22 additions & 6 deletions kubernetes/resource_kubernetes_persistent_volume_claim.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,11 @@ func resourceKubernetesPersistentVolumeClaimCreate(d *schema.ResourceData, meta
func resourceKubernetesPersistentVolumeClaimRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

log.Printf("[INFO] Reading persistent volume claim %s", name)
claim, err := conn.CoreV1().PersistentVolumeClaims(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
Expand All @@ -227,7 +231,11 @@ func resourceKubernetesPersistentVolumeClaimRead(d *schema.ResourceData, meta in

func resourceKubernetesPersistentVolumeClaimUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)
namespace, name := idParts(d.Id())

namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

ops := patchMetadata("metadata.0.", "/metadata/", d)
// The whole spec is ForceNew = nothing to update there
Expand All @@ -249,9 +257,13 @@ func resourceKubernetesPersistentVolumeClaimUpdate(d *schema.ResourceData, meta
func resourceKubernetesPersistentVolumeClaimDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

log.Printf("[INFO] Deleting persistent volume claim: %#v", name)
err := conn.CoreV1().PersistentVolumeClaims(namespace).Delete(name, &meta_v1.DeleteOptions{})
err = conn.CoreV1().PersistentVolumeClaims(namespace).Delete(name, &meta_v1.DeleteOptions{})
if err != nil {
return err
}
Expand All @@ -265,9 +277,13 @@ func resourceKubernetesPersistentVolumeClaimDelete(d *schema.ResourceData, meta
func resourceKubernetesPersistentVolumeClaimExists(d *schema.ResourceData, meta interface{}) (bool, error) {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return false, err
}

log.Printf("[INFO] Checking persistent volume claim %s", name)
_, err := conn.CoreV1().PersistentVolumeClaims(namespace).Get(name, meta_v1.GetOptions{})
_, err = conn.CoreV1().PersistentVolumeClaims(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
if statusErr, ok := err.(*errors.StatusError); ok && statusErr.ErrStatus.Code == 404 {
return false, nil
Expand Down
14 changes: 12 additions & 2 deletions kubernetes/resource_kubernetes_persistent_volume_claim_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,12 @@ func testAccCheckKubernetesPersistentVolumeClaimDestroy(s *terraform.State) erro
if rs.Type != "kubernetes_persistent_volume_claim" {
continue
}
namespace, name := idParts(rs.Primary.ID)

namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}

resp, err := conn.CoreV1().PersistentVolumeClaims(namespace).Get(name, meta_v1.GetOptions{})
if err == nil {
if resp.Namespace == namespace && resp.Name == name {
Expand All @@ -426,7 +431,12 @@ func testAccCheckKubernetesPersistentVolumeClaimExists(n string, obj *api.Persis
}

conn := testAccProvider.Meta().(*kubernetes.Clientset)
namespace, name := idParts(rs.Primary.ID)

namespace, name, err := idParts(rs.Primary.ID)
if err != nil {
return err
}

out, err := conn.CoreV1().PersistentVolumeClaims(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
return err
Expand Down
30 changes: 24 additions & 6 deletions kubernetes/resource_kubernetes_pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,12 @@ func resourceKubernetesPodCreate(d *schema.ResourceData, meta interface{}) error

func resourceKubernetesPodUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)
namespace, name := idParts(d.Id())

namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

ops := patchMetadata("metadata.0.", "/metadata/", d)
if d.HasChange("spec") {
specOps, err := patchPodSpec("/spec", "spec.0.", d)
Expand Down Expand Up @@ -123,7 +128,11 @@ func resourceKubernetesPodUpdate(d *schema.ResourceData, meta interface{}) error

func resourceKubernetesPodRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)
namespace, name := idParts(d.Id())

namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

log.Printf("[INFO] Reading pod %s", name)
pod, err := conn.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{})
Expand Down Expand Up @@ -153,9 +162,14 @@ func resourceKubernetesPodRead(d *schema.ResourceData, meta interface{}) error {

func resourceKubernetesPodDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*kubernetes.Clientset)
namespace, name := idParts(d.Id())

namespace, name, err := idParts(d.Id())
if err != nil {
return err
}

log.Printf("[INFO] Deleting pod: %#v", name)
err := conn.CoreV1().Pods(namespace).Delete(name, nil)
err = conn.CoreV1().Pods(namespace).Delete(name, nil)
if err != nil {
return err
}
Expand Down Expand Up @@ -186,9 +200,13 @@ func resourceKubernetesPodDelete(d *schema.ResourceData, meta interface{}) error
func resourceKubernetesPodExists(d *schema.ResourceData, meta interface{}) (bool, error) {
conn := meta.(*kubernetes.Clientset)

namespace, name := idParts(d.Id())
namespace, name, err := idParts(d.Id())
if err != nil {
return false, err
}

log.Printf("[INFO] Checking pod %s", name)
_, err := conn.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{})
_, err = conn.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{})
if err != nil {
if statusErr, ok := err.(*errors.StatusError); ok && statusErr.ErrStatus.Code == 404 {
return false, nil
Expand Down
Loading