Skip to content

Commit d20571f

Browse files
Add memcached-1.6.15 to the list of allowed memcache versions (#9375) (#16531)
[upstream:905133647a32023e4aab64b0336b3f265f563295] Signed-off-by: Modular Magician <[email protected]>
1 parent 2413e08 commit d20571f

File tree

4 files changed

+54
-13
lines changed

4 files changed

+54
-13
lines changed

.changelog/9375.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
memcache: added `MEMCACHE_1_6_15` as a possible value for `memcache_version` in `google_memcache_instance`
3+
```

google/services/memcache/resource_memcache_instance.go

+48-12
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,10 @@ resolution and up to nine fractional digits.`,
237237
"memcache_version": {
238238
Type: schema.TypeString,
239239
Optional: true,
240-
ValidateFunc: verify.ValidateEnum([]string{"MEMCACHE_1_5", ""}),
240+
ValidateFunc: verify.ValidateEnum([]string{"MEMCACHE_1_5", "MEMCACHE_1_6_15", ""}),
241241
Description: `The major version of Memcached software. If not provided, latest supported version will be used.
242242
Currently the latest supported major version is MEMCACHE_1_5. The minor version will be automatically
243-
determined by our system based on the latest supported minor version. Default value: "MEMCACHE_1_5" Possible values: ["MEMCACHE_1_5"]`,
243+
determined by our system based on the latest supported minor version. Default value: "MEMCACHE_1_5" Possible values: ["MEMCACHE_1_5", "MEMCACHE_1_6_15"]`,
244244
Default: "MEMCACHE_1_5",
245245
},
246246
"region": {
@@ -613,12 +613,6 @@ func resourceMemcacheInstanceUpdate(d *schema.ResourceData, meta interface{}) er
613613
} else if v, ok := d.GetOkExists("node_count"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, nodeCountProp)) {
614614
obj["nodeCount"] = nodeCountProp
615615
}
616-
memcacheVersionProp, err := expandMemcacheInstanceMemcacheVersion(d.Get("memcache_version"), d, config)
617-
if err != nil {
618-
return err
619-
} else if v, ok := d.GetOkExists("memcache_version"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, memcacheVersionProp)) {
620-
obj["memcacheVersion"] = memcacheVersionProp
621-
}
622616
maintenancePolicyProp, err := expandMemcacheInstanceMaintenancePolicy(d.Get("maintenance_policy"), d, config)
623617
if err != nil {
624618
return err
@@ -648,10 +642,6 @@ func resourceMemcacheInstanceUpdate(d *schema.ResourceData, meta interface{}) er
648642
updateMask = append(updateMask, "nodeCount")
649643
}
650644

651-
if d.HasChange("memcache_version") {
652-
updateMask = append(updateMask, "memcacheVersion")
653-
}
654-
655645
if d.HasChange("maintenance_policy") {
656646
updateMask = append(updateMask, "maintenancePolicy")
657647
}
@@ -697,6 +687,52 @@ func resourceMemcacheInstanceUpdate(d *schema.ResourceData, meta interface{}) er
697687
return err
698688
}
699689
}
690+
d.Partial(true)
691+
692+
if d.HasChange("memcache_version") {
693+
obj := make(map[string]interface{})
694+
695+
memcacheVersionProp, err := expandMemcacheInstanceMemcacheVersion(d.Get("memcache_version"), d, config)
696+
if err != nil {
697+
return err
698+
} else if v, ok := d.GetOkExists("memcache_version"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, memcacheVersionProp)) {
699+
obj["memcacheVersion"] = memcacheVersionProp
700+
}
701+
702+
url, err := tpgresource.ReplaceVars(d, config, "{{MemcacheBasePath}}projects/{{project}}/locations/{{region}}/instances/{{name}}:upgrade")
703+
if err != nil {
704+
return err
705+
}
706+
707+
// err == nil indicates that the billing_project value was found
708+
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
709+
billingProject = bp
710+
}
711+
712+
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
713+
Config: config,
714+
Method: "POST",
715+
Project: billingProject,
716+
RawURL: url,
717+
UserAgent: userAgent,
718+
Body: obj,
719+
Timeout: d.Timeout(schema.TimeoutUpdate),
720+
})
721+
if err != nil {
722+
return fmt.Errorf("Error updating Instance %q: %s", d.Id(), err)
723+
} else {
724+
log.Printf("[DEBUG] Finished updating Instance %q: %#v", d.Id(), res)
725+
}
726+
727+
err = MemcacheOperationWaitTime(
728+
config, res, project, "Updating Instance", userAgent,
729+
d.Timeout(schema.TimeoutUpdate))
730+
if err != nil {
731+
return err
732+
}
733+
}
734+
735+
d.Partial(false)
700736

701737
return resourceMemcacheInstanceRead(d, meta)
702738
}

google/services/memcache/resource_memcache_instance_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ resource "google_memcache_instance" "test" {
8888
"max-item-size" = "8388608"
8989
}
9090
}
91+
92+
memcache_version = "MEMCACHE_1_6_15"
9193
}
9294
9395
data "google_compute_network" "memcache_network" {

website/docs/r/memcache_instance.html.markdown

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ The following arguments are supported:
147147
Currently the latest supported major version is MEMCACHE_1_5. The minor version will be automatically
148148
determined by our system based on the latest supported minor version.
149149
Default value is `MEMCACHE_1_5`.
150-
Possible values are: `MEMCACHE_1_5`.
150+
Possible values are: `MEMCACHE_1_5`, `MEMCACHE_1_6_15`.
151151

152152
* `memcache_parameters` -
153153
(Optional)

0 commit comments

Comments
 (0)