Skip to content

Commit dc200b1

Browse files
Merge pull request #242 from RedisLabs/feat/region-id
Region ID and Essentials DB RedisVersion support
2 parents 39af593 + 172cf07 commit dc200b1

File tree

7 files changed

+114
-0
lines changed

7 files changed

+114
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,3 +278,5 @@ CLAUDE.md
278278

279279
coverage.out
280280
swagger-redis-api.json
281+
282+
.vscode

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
All notable changes to this project will be documented in this file.
33
See updating [Changelog example here](https://keepachangelog.com/en/1.0.0/).
44

5+
## 0.42.0 (10th November 2025)
6+
7+
### Added:
8+
9+
* Added `ID` field to `Region` struct in account model
10+
* Added Redis version support for Essentials databases: `RedisVersion` field and `UpgradeRedisVersion()` method
11+
512
## 0.41.0 (3rd November 2025)
613

714
### Added:

account_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,12 @@ func TestAccount_ListRegions(t *testing.T) {
6868
s := httptest.NewServer(testServer("apiKey", "secret", getRequest(t, "/regions", `{
6969
"regions": [
7070
{
71+
"id": 1,
7172
"name": "asia-east1",
7273
"provider": "GCP"
7374
},
7475
{
76+
"id": 2,
7577
"name": "eu-west-1",
7678
"provider": "AWS"
7779
}
@@ -92,10 +94,12 @@ func TestAccount_ListRegions(t *testing.T) {
9294

9395
assert.ElementsMatch(t, []*account.Region{
9496
{
97+
ID: redis.Int(1),
9598
Name: redis.String("asia-east1"),
9699
Provider: redis.String("GCP"),
97100
},
98101
{
102+
ID: redis.Int(2),
99103
Name: redis.String("eu-west-1"),
100104
Provider: redis.String("AWS"),
101105
},

fixed_database_test.go

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ func TestFixedDatabase_Create(t *testing.T) {
2424
`{
2525
"name": "my-test-fixed-database",
2626
"protocol": "memcached",
27+
"redisVersion": "7.4",
2728
"respVersion": "resp2",
2829
"dataPersistence": "none",
2930
"dataEvictionPolicy": "noeviction",
@@ -84,6 +85,7 @@ func TestFixedDatabase_Create(t *testing.T) {
8485
fixedDatabases.CreateFixedDatabase{
8586
Name: redis.String("my-test-fixed-database"),
8687
Protocol: redis.String("memcached"),
88+
RedisVersion: redis.String("7.4"),
8789
RespVersion: redis.String("resp2"),
8890
DataPersistence: redis.String("none"),
8991
DataEvictionPolicy: redis.String("noeviction"),
@@ -124,6 +126,7 @@ func TestFixedDatabase_List(t *testing.T) {
124126
"protocol": "memcached",
125127
"provider": "AWS",
126128
"region": "us-west-1",
129+
"redisVersion": "7.4",
127130
"respVersion": "resp2",
128131
"status": "draft",
129132
"planMemoryLimit": 1,
@@ -228,6 +231,7 @@ func TestFixedDatabase_List(t *testing.T) {
228231
Protocol: redis.String("memcached"),
229232
Provider: redis.String("AWS"),
230233
Region: redis.String("us-west-1"),
234+
RedisVersion: redis.String("7.4"),
231235
RespVersion: redis.String("resp2"),
232236
Status: redis.String("draft"),
233237
PlanMemoryLimit: redis.Float64(1),
@@ -286,6 +290,7 @@ func TestFixedDatabase_Get(t *testing.T) {
286290
"protocol": "memcached",
287291
"provider": "AWS",
288292
"region": "us-west-1",
293+
"redisVersion": "7.4",
289294
"respVersion": "resp2",
290295
"status": "draft",
291296
"planMemoryLimit": 1,
@@ -354,6 +359,7 @@ func TestFixedDatabase_Get(t *testing.T) {
354359
Protocol: redis.String("memcached"),
355360
Provider: redis.String("AWS"),
356361
Region: redis.String("us-west-1"),
362+
RedisVersion: redis.String("7.4"),
357363
RespVersion: redis.String("resp2"),
358364
Status: redis.String("draft"),
359365
PlanMemoryLimit: redis.Float64(1),
@@ -546,3 +552,74 @@ func TestFixedDatabase_Delete(t *testing.T) {
546552
require.NoError(t, err)
547553

548554
}
555+
556+
func TestFixedDatabase_UpgradeRedisVersion(t *testing.T) {
557+
server := httptest.NewServer(
558+
testServer(
559+
"apiKey",
560+
"secret",
561+
postRequest(
562+
t,
563+
"/fixed/subscriptions/111728/databases/51055029/upgrade",
564+
`{
565+
"targetRedisVersion": "7.4"
566+
}`,
567+
`{
568+
"taskId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
569+
"commandType": "fixedDatabaseUpgradeRedisVersionRequest",
570+
"status": "received",
571+
"description": "Task request received and is being queued for processing.",
572+
"timestamp": "2024-05-10T14:14:14.736763484Z",
573+
"links": [
574+
{
575+
"rel": "task",
576+
"type": "GET",
577+
"href": "https://api-staging.qa.redislabs.com/v1/tasks/a1b2c3d4-5678-90ab-cdef-1234567890ab"
578+
}
579+
]
580+
}`,
581+
),
582+
getRequest(
583+
t,
584+
"/tasks/a1b2c3d4-5678-90ab-cdef-1234567890ab",
585+
`{
586+
"taskId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
587+
"commandType": "fixedDatabaseUpgradeRedisVersionRequest",
588+
"status": "processing-completed",
589+
"description": "Request processing completed successfully and its resources are now being provisioned / de-provisioned.",
590+
"timestamp": "2024-05-10T14:14:34.153537279Z",
591+
"response": {
592+
"resourceId": 51055029,
593+
"additionalResourceId": 111728
594+
},
595+
"links": [
596+
{
597+
"rel": "resource",
598+
"type": "GET",
599+
"href": "https://api-staging.qa.redislabs.com/v1/fixed/subscriptions/111728/databases/51055029"
600+
},
601+
{
602+
"rel": "self",
603+
"type": "GET",
604+
"href": "https://api-staging.qa.redislabs.com/v1/tasks/a1b2c3d4-5678-90ab-cdef-1234567890ab"
605+
}
606+
]
607+
}`,
608+
),
609+
),
610+
)
611+
612+
subject, err := clientFromTestServer(server, "apiKey", "secret")
613+
require.NoError(t, err)
614+
615+
err = subject.FixedDatabases.UpgradeRedisVersion(
616+
context.TODO(),
617+
111728,
618+
51055029,
619+
fixedDatabases.UpgradeRedisVersion{
620+
TargetRedisVersion: redis.String("7.4"),
621+
},
622+
)
623+
624+
require.NoError(t, err)
625+
}

service/account/model.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ func (o regions) String() string {
3131
}
3232

3333
type Region struct {
34+
ID *int `json:"id,omitempty"`
3435
Name *string `json:"name,omitempty"`
3536
Provider *string `json:"provider,omitempty"`
3637
}

service/fixed/databases/model.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type CreateFixedDatabase struct {
2929
Password *string `json:"password,omitempty"`
3030
Alerts *[]*databases.Alert `json:"alerts,omitempty"`
3131
Modules *[]*databases.Module `json:"modules,omitempty"`
32+
RedisVersion *string `json:"redisVersion,omitempty"`
3233
}
3334

3435
type UpdateFixedDatabase struct {
@@ -61,6 +62,7 @@ type FixedDatabase struct {
6162
Provider *string `json:"provider,omitempty"`
6263
Region *string `json:"region,omitempty"`
6364
RedisVersionCompliance *string `json:"redisVersionCompliance,omitempty"`
65+
RedisVersion *string `json:"redisVersion,omitempty"`
6466
RespVersion *string `json:"respVersion,omitempty"`
6567
Status *string `json:"status,omitempty"`
6668
PlanMemoryLimit *float64 `json:"planMemoryLimit,omitempty"`
@@ -160,6 +162,14 @@ func (o Import) String() string {
160162
return internal.ToString(o)
161163
}
162164

165+
type UpgradeRedisVersion struct {
166+
TargetRedisVersion *string `json:"targetRedisVersion,omitempty"`
167+
}
168+
169+
func (o UpgradeRedisVersion) String() string {
170+
return internal.ToString(o)
171+
}
172+
163173
type listFixedDatabaseResponse struct {
164174
FixedSubscription *listDbSubscription `json:"subscription,omitempty"`
165175
}

service/fixed/databases/service.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,19 @@ func (a *API) Update(ctx context.Context, subscription int, database int, update
8585
return a.taskWaiter.Wait(ctx, *task.ID)
8686
}
8787

88+
// UpgradeRedisVersion will upgrade the Redis version of an existing fixed database.
89+
func (a *API) UpgradeRedisVersion(ctx context.Context, subscription int, database int, upgradeVersion UpgradeRedisVersion) error {
90+
var task internal.TaskResponse
91+
err := a.client.Post(ctx, fmt.Sprintf("upgrade fixed database %d version for subscription %d", database, subscription), fmt.Sprintf("/fixed/subscriptions/%d/databases/%d/upgrade", subscription, database), upgradeVersion, &task)
92+
if err != nil {
93+
return err
94+
}
95+
96+
a.logger.Printf("Waiting for fixed database %d for subscription %d to finish being upgraded", database, subscription)
97+
98+
return a.taskWaiter.Wait(ctx, *task.ID)
99+
}
100+
88101
// Delete will destroy an existing fixed database.
89102
func (a *API) Delete(ctx context.Context, subscription int, database int) error {
90103
var task internal.TaskResponse

0 commit comments

Comments
 (0)