@@ -2,6 +2,7 @@ package rancher2
22
33import (
44 "fmt"
5+ "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
56 "log"
67 "time"
78
@@ -28,29 +29,36 @@ func resourceRancher2CertificateCreate(d *schema.ResourceData, meta interface{})
2829 _ , projectID := splitProjectID (d .Get ("project_id" ).(string ))
2930 name := d .Get ("name" ).(string )
3031
31- err := meta .(* Config ).ProjectExist (projectID )
32- if err != nil {
33- return err
34- }
32+ return resource .Retry (d .Timeout (schema .TimeoutCreate ), func () * resource.RetryError {
33+ err := meta .(* Config ).ProjectExist (projectID )
34+ if err != nil {
35+ return resource .NonRetryableError (err )
36+ }
3537
36- certificate , err := expandCertificate (d )
37- if err != nil {
38- return err
39- }
38+ certificate , err := expandCertificate (d )
39+ if err != nil {
40+ return resource . NonRetryableError ( err )
41+ }
4042
41- log .Printf ("[INFO] Creating Certificate %s on Project ID %s" , name , projectID )
43+ log .Printf ("[INFO] Creating Certificate %s on Project ID %s" , name , projectID )
4244
43- newCertificate , err := meta .(* Config ).CreateCertificate (certificate )
44- if err != nil {
45- return err
46- }
45+ newCertificate , err := meta .(* Config ).CreateCertificate (certificate )
46+ if err != nil {
47+ return resource . NonRetryableError ( err )
48+ }
4749
48- err = flattenCertificate (d , newCertificate )
49- if err != nil {
50- return err
51- }
50+ err = flattenCertificate (d , newCertificate )
51+ if err != nil {
52+ return resource .NonRetryableError (err )
53+ }
54+
55+ err = resourceRancher2CertificateRead (d , meta )
56+ if err != nil {
57+ return resource .NonRetryableError (err )
58+ }
5259
53- return resourceRancher2CertificateRead (d , meta )
60+ return nil
61+ })
5462}
5563
5664func resourceRancher2CertificateRead (d * schema.ResourceData , meta interface {}) error {
@@ -60,17 +68,23 @@ func resourceRancher2CertificateRead(d *schema.ResourceData, meta interface{}) e
6068
6169 log .Printf ("[INFO] Refreshing Certificate ID %s" , id )
6270
63- certificate , err := meta .(* Config ).GetCertificate (id , projectID , namespaceID )
64- if err != nil {
65- if IsNotFound (err ) || IsForbidden (err ) {
66- log .Printf ("[INFO] Certificate ID %s not found." , id )
67- d .SetId ("" )
68- return nil
71+ return resource .Retry (d .Timeout (schema .TimeoutRead ), func () * resource.RetryError {
72+ certificate , err := meta .(* Config ).GetCertificate (id , projectID , namespaceID )
73+ if err != nil {
74+ if IsNotFound (err ) || IsForbidden (err ) {
75+ log .Printf ("[INFO] Certificate ID %s not found." , id )
76+ d .SetId ("" )
77+ return nil
78+ }
79+ return resource .NonRetryableError (err )
80+ }
81+
82+ if err := flattenCertificate (d , certificate ); err != nil {
83+ return resource .NonRetryableError (err )
6984 }
70- return err
71- }
7285
73- return flattenCertificate (d , certificate )
86+ return nil
87+ })
7488}
7589
7690func resourceRancher2CertificateUpdate (d * schema.ResourceData , meta interface {}) error {
@@ -80,27 +94,34 @@ func resourceRancher2CertificateUpdate(d *schema.ResourceData, meta interface{})
8094
8195 log .Printf ("[INFO] Updating Certificate ID %s" , id )
8296
83- certificate , err := meta .(* Config ).GetCertificate (id , projectID , namespaceID )
84- if err != nil {
85- return err
86- }
97+ return resource .Retry (d .Timeout (schema .TimeoutUpdate ), func () * resource.RetryError {
98+ certificate , err := meta .(* Config ).GetCertificate (id , projectID , namespaceID )
99+ if err != nil {
100+ return resource .NonRetryableError (err )
101+ }
87102
88- update , err := expandCertificate (d )
89- if err != nil {
90- return err
91- }
103+ update , err := expandCertificate (d )
104+ if err != nil {
105+ return resource . NonRetryableError ( err )
106+ }
92107
93- newCertificate , err := meta .(* Config ).UpdateCertificate (certificate , update )
94- if err != nil {
95- return err
96- }
108+ newCertificate , err := meta .(* Config ).UpdateCertificate (certificate , update )
109+ if err != nil {
110+ return resource . NonRetryableError ( err )
111+ }
97112
98- err = flattenCertificate (d , newCertificate )
99- if err != nil {
100- return err
101- }
113+ err = flattenCertificate (d , newCertificate )
114+ if err != nil {
115+ return resource .NonRetryableError (err )
116+ }
117+
118+ err = resourceRancher2CertificateRead (d , meta )
119+ if err != nil {
120+ return resource .NonRetryableError (err )
121+ }
102122
103- return resourceRancher2CertificateRead (d , meta )
123+ return nil
124+ })
104125}
105126
106127func resourceRancher2CertificateDelete (d * schema.ResourceData , meta interface {}) error {
@@ -110,21 +131,23 @@ func resourceRancher2CertificateDelete(d *schema.ResourceData, meta interface{})
110131
111132 log .Printf ("[INFO] Deleting Certificate ID %s" , id )
112133
113- certificate , err := meta .(* Config ).GetCertificate (id , projectID , namespaceID )
114- if err != nil {
115- if IsNotFound (err ) || IsForbidden (err ) {
116- log .Printf ("[INFO] Certificate ID %s not found." , d .Id ())
117- d .SetId ("" )
118- return nil
134+ return resource .Retry (d .Timeout (schema .TimeoutDelete ), func () * resource.RetryError {
135+ certificate , err := meta .(* Config ).GetCertificate (id , projectID , namespaceID )
136+ if err != nil {
137+ if IsNotFound (err ) || IsForbidden (err ) {
138+ log .Printf ("[INFO] Certificate ID %s not found." , d .Id ())
139+ d .SetId ("" )
140+ return nil
141+ }
142+ return resource .NonRetryableError (err )
119143 }
120- return err
121- }
122144
123- err = meta .(* Config ).DeleteCertificate (certificate )
124- if err != nil {
125- return fmt .Errorf ("Error removing Certificate: %s" , err )
126- }
145+ err = meta .(* Config ).DeleteCertificate (certificate )
146+ if err != nil {
147+ return resource . NonRetryableError ( fmt .Errorf ("[ERROR] Error removing Certificate: %s" , err ) )
148+ }
127149
128- d .SetId ("" )
129- return nil
150+ d .SetId ("" )
151+ return nil
152+ })
130153}
0 commit comments