Skip to content

Commit 4418987

Browse files
committed
vra_deployment.recreate_if_expired_at check: split out helper function
more idiomatic Go. Change requested by @tenthirtyam Signed-off-by: Jonathan Biegert <[email protected]>
1 parent 6f5fdf7 commit 4418987

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

Diff for: vra/resource_deployment.go

+22-15
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,21 @@ const (
3434
UpdateDeploymentActionName = "update"
3535
)
3636

37+
// parse timestamp in API response. Helper for resourceDeployment
38+
func getParsedTime(d *schema.ResourceDiff, key string) (time.Time, bool) {
39+
timeStr, ok := d.GetOk(key)
40+
if !ok {
41+
log.Printf("[INFO] Missing or invalid time string for key %s: %#v", key, timeStr)
42+
return time.Time{}, false
43+
}
44+
parsedTime, err := strfmt.ParseDateTime(timeStr.(string))
45+
if err != nil {
46+
log.Printf("[INFO] Failed to parse DateTime for key %s: %#v", key, timeStr)
47+
return time.Time{}, false
48+
}
49+
return time.Time(parsedTime), true
50+
}
51+
3752
func resourceDeployment() *schema.Resource {
3853
return &schema.Resource{
3954
CreateContext: resourceDeploymentCreate,
@@ -44,25 +59,17 @@ func resourceDeployment() *schema.Resource {
4459
CustomizeDiff: customdiff.ForceNewIf(
4560
"recreate_if_expired_at",
4661
func(ctx context.Context, d *schema.ResourceDiff, meta interface{}) bool {
47-
planTimeStr, ok := d.GetOk("recreate_if_expired_at")
48-
if !ok {
49-
log.Printf("[DEBUG] Don't special-handle expired deployment, recreate_if_expired_at = %#v", planTimeStr)
50-
return false // don't check expiration
51-
}
52-
planTime, err := strfmt.ParseDateTime(planTimeStr.(string))
53-
if err != nil {
54-
log.Printf("[DEBUG] Failed to parse DateTime variable recreate_if_expired_at: %#v", planTime)
62+
planTime, valid := getParsedTime(d, "recreate_if_expired_at")
63+
if !valid {
5564
return false
5665
}
57-
expirationTimeStr := d.Get("lease_expire_at")
58-
expirationTime, err := strfmt.ParseDateTime(expirationTimeStr.(string))
59-
if err != nil {
60-
log.Printf("[DEBUG] Failed to parse DateTime attribute lease_expire_at: %#v", expirationTimeStr)
66+
expirationTime, valid := getParsedTime(d, "lease_expire_at")
67+
if !valid {
6168
return false
6269
}
63-
log.Printf("checking if expirationTime %s < planTime %s", expirationTime, planTime)
64-
return time.Time(expirationTime).Before(time.Time(planTime))
65-
}),
70+
return expirationTime.Before(planTime)
71+
},
72+
),
6673

6774
Importer: &schema.ResourceImporter{
6875
StateContext: schema.ImportStatePassthroughContext,

0 commit comments

Comments
 (0)