Skip to content

Commit 95a85d8

Browse files
committed
Merge branch '122-clone-diff-size' into 'master'
fix: rename clone diff size field, remove pointers from clone fields (#122) Closes #122 See merge request postgres-ai/database-lab!97
2 parents 0d705da + cde9d2d commit 95a85d8

File tree

10 files changed

+63
-65
lines changed

10 files changed

+63
-65
lines changed

pkg/client/dblabapi/clone.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (c *Client) CreateClone(ctx context.Context, cloneRequest types.CloneCreate
9595
return nil, errors.Wrap(err, "failed to decode a response body")
9696
}
9797

98-
if clone.Status == nil {
98+
if clone.Status.Code == "" {
9999
return nil, errors.New("empty clone status given")
100100
}
101101

@@ -139,7 +139,7 @@ func (c *Client) watchCloneStatus(ctx context.Context, cloneID string, initialSt
139139
return nil, errors.Wrap(err, "failed to get clone info")
140140
}
141141

142-
if clone.Status != nil && clone.Status.Code != initialStatusCode {
142+
if clone.Status.Code != initialStatusCode {
143143
return clone, nil
144144
}
145145

@@ -232,7 +232,7 @@ func (c *Client) ResetClone(ctx context.Context, cloneID string) error {
232232
return errors.Wrap(err, "failed to watch the clone status")
233233
}
234234

235-
if clone.Status != nil && clone.Status.Code == models.StatusOK {
235+
if clone.Status.Code == models.StatusOK {
236236
return nil
237237
}
238238

pkg/client/dblabapi/clone_test.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ import (
2020
func TestClientListClones(t *testing.T) {
2121
expectedClones := []*models.Clone{{
2222
ID: "testCloneID",
23-
Metadata: &models.CloneMetadata{
24-
CloneSize: 450,
25-
CloningTime: 1,
23+
Metadata: models.CloneMetadata{
24+
CloneDiffSize: 450,
25+
CloningTime: 1,
2626
},
2727
Protected: true,
2828
DeleteAt: "2020-01-10 00:00:05.000 UTC",
2929
CreatedAt: "2020-01-10 00:00:00.000 UTC",
30-
Status: &models.Status{
30+
Status: models.Status{
3131
Code: "OK",
3232
Message: "Instance is ready",
3333
},
34-
DB: &models.Database{
34+
DB: models.Database{
3535
Username: "john",
3636
Password: "doe",
3737
},
@@ -94,18 +94,18 @@ func TestClientListClonesWithFailedRequest(t *testing.T) {
9494
func TestClientCreateClone(t *testing.T) {
9595
expectedClone := models.Clone{
9696
ID: "testCloneID",
97-
Metadata: &models.CloneMetadata{
98-
CloneSize: 450,
99-
CloningTime: 1,
97+
Metadata: models.CloneMetadata{
98+
CloneDiffSize: 450,
99+
CloningTime: 1,
100100
},
101101
Protected: true,
102102
DeleteAt: "2020-01-10 00:00:05.000 UTC",
103103
CreatedAt: "2020-01-10 00:00:00.000 UTC",
104-
Status: &models.Status{
104+
Status: models.Status{
105105
Code: "OK",
106106
Message: "Clone is ready",
107107
},
108-
DB: &models.Database{
108+
DB: models.Database{
109109
Username: "john",
110110
Password: "doe",
111111
},
@@ -127,7 +127,7 @@ func TestClientCreateClone(t *testing.T) {
127127
err = json.Unmarshal(requestBody, &cloneRequest)
128128
require.NoError(t, err)
129129
clone = expectedClone
130-
clone.Status = &models.Status{
130+
clone.Status = models.Status{
131131
Code: models.StatusCreating,
132132
Message: models.CloneMessageCreating,
133133
}
@@ -174,18 +174,18 @@ func TestClientCreateClone(t *testing.T) {
174174
func TestClientCreateCloneAsync(t *testing.T) {
175175
expectedClone := models.Clone{
176176
ID: "testCloneID",
177-
Metadata: &models.CloneMetadata{
178-
CloneSize: 450,
179-
CloningTime: 1,
177+
Metadata: models.CloneMetadata{
178+
CloneDiffSize: 450,
179+
CloningTime: 1,
180180
},
181181
Protected: true,
182182
DeleteAt: "2020-01-10 00:00:05.000 UTC",
183183
CreatedAt: "2020-01-10 00:00:00.000 UTC",
184-
Status: &models.Status{
184+
Status: models.Status{
185185
Code: "OK",
186186
Message: "Clone is ready",
187187
},
188-
DB: &models.Database{
188+
DB: models.Database{
189189
Username: "john",
190190
Password: "doe",
191191
},
@@ -267,18 +267,18 @@ func TestClientCreateCloneWithFailedRequest(t *testing.T) {
267267
func TestClientGetClone(t *testing.T) {
268268
expectedClone := &models.Clone{
269269
ID: "testCloneID",
270-
Metadata: &models.CloneMetadata{
271-
CloneSize: 450,
272-
CloningTime: 1,
270+
Metadata: models.CloneMetadata{
271+
CloneDiffSize: 450,
272+
CloningTime: 1,
273273
},
274274
Protected: true,
275275
DeleteAt: "2020-01-10 00:00:05.000 UTC",
276276
CreatedAt: "2020-01-10 00:00:00.000 UTC",
277-
Status: &models.Status{
277+
Status: models.Status{
278278
Code: "OK",
279279
Message: "Instance is ready",
280280
},
281-
DB: &models.Database{
281+
DB: models.Database{
282282
Username: "john",
283283
Password: "doe",
284284
},
@@ -341,18 +341,18 @@ func TestClientGetCloneWithFailedRequest(t *testing.T) {
341341
func TestClientUpdateClone(t *testing.T) {
342342
cloneModel := &models.Clone{
343343
ID: "testCloneID",
344-
Metadata: &models.CloneMetadata{
345-
CloneSize: 450,
346-
CloningTime: 1,
344+
Metadata: models.CloneMetadata{
345+
CloneDiffSize: 450,
346+
CloningTime: 1,
347347
},
348348
Protected: true,
349349
DeleteAt: "2020-01-10 00:00:05.000 UTC",
350350
CreatedAt: "2020-01-10 00:00:00.000 UTC",
351-
Status: &models.Status{
351+
Status: models.Status{
352352
Code: "OK",
353353
Message: "Instance is ready",
354354
},
355-
DB: &models.Database{
355+
DB: models.Database{
356356
Username: "john",
357357
Password: "doe",
358358
},
@@ -549,7 +549,7 @@ func TestClientResetClone(t *testing.T) {
549549

550550
clone := models.Clone{
551551
ID: "testCloneID",
552-
Status: &models.Status{
552+
Status: models.Status{
553553
Code: models.StatusOK,
554554
Message: models.CloneMessageOK,
555555
},

pkg/client/dblabapi/status_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ func TestClientStatus(t *testing.T) {
3030
NumClones: 1,
3131
Clones: []*models.Clone{{
3232
ID: "testCloneID",
33-
Metadata: &models.CloneMetadata{
34-
CloneSize: 45054685181,
35-
CloningTime: 1,
33+
Metadata: models.CloneMetadata{
34+
CloneDiffSize: 45054685181,
35+
CloningTime: 1,
3636
},
3737
Protected: true,
3838
DeleteAt: "2020-01-10 00:00:05.000 UTC",
3939
CreatedAt: "2020-01-10 00:00:00.000 UTC",
40-
Status: &models.Status{
40+
Status: models.Status{
4141
Code: "OK",
4242
Message: "Instance is ready",
4343
},
44-
DB: &models.Database{
44+
DB: models.Database{
4545
Username: "john",
4646
Password: "doe",
4747
},

pkg/models/clone.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@ package models
66

77
// Clone defines a clone model.
88
type Clone struct {
9-
ID string `json:"id"`
10-
Snapshot *Snapshot `json:"snapshot"`
11-
Protected bool `json:"protected"`
12-
DeleteAt string `json:"deleteAt"`
13-
CreatedAt string `json:"createdAt"`
14-
Status *Status `json:"status"`
15-
DB *Database `json:"db"`
16-
Metadata *CloneMetadata `json:"metadata"`
9+
ID string `json:"id"`
10+
Snapshot *Snapshot `json:"snapshot"`
11+
Protected bool `json:"protected"`
12+
DeleteAt string `json:"deleteAt"`
13+
CreatedAt string `json:"createdAt"`
14+
Status Status `json:"status"`
15+
DB Database `json:"db"`
16+
Metadata CloneMetadata `json:"metadata"`
1717

1818
// TODO(anatoly): Remove?
1919
Project string `json:"project"`
2020
}
2121

2222
// CloneMetadata contains fields describing a clone model.
2323
type CloneMetadata struct {
24-
CloneSize uint64 `json:"cloneSize"`
24+
CloneDiffSize uint64 `json:"cloneDiffSize"`
2525
CloningTime float64 `json:"cloningTime"`
2626
MaxIdleMinutes uint `json:"maxIdleMinutes"`
2727
}

pkg/services/cloning/cloning.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ const (
2525
// ModeMock defines a mock mode of cloning.
2626
ModeMock = "mock"
2727

28-
// cloneSize defines a default clone size.
29-
cloneSize = 10
28+
// cloneDiffSize defines a default clone size.
29+
cloneDiffSize = 10
3030
)
3131

3232
// Config contains a cloning configuration.

pkg/services/cloning/mode_base.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,11 @@ func (c *baseCloning) CreateClone(cloneRequest *types.CloneCreateRequest) (*mode
117117
Snapshot: &snapshot,
118118
Protected: cloneRequest.Protected,
119119
CreatedAt: util.FormatTime(createdAt),
120-
Status: &models.Status{
120+
Status: models.Status{
121121
Code: models.StatusCreating,
122122
Message: models.CloneMessageCreating,
123123
},
124-
DB: &models.Database{
124+
DB: models.Database{
125125
Username: cloneRequest.DB.Username,
126126
Password: cloneRequest.DB.Password,
127127
},
@@ -169,7 +169,7 @@ func (c *baseCloning) CreateClone(cloneRequest *types.CloneCreateRequest) (*mode
169169
w.timeStartedAt = time.Now()
170170

171171
clone := w.clone
172-
clone.Status = &models.Status{
172+
clone.Status = models.Status{
173173
Code: models.StatusOK,
174174
Message: models.CloneMessageOK,
175175
}
@@ -180,8 +180,8 @@ func (c *baseCloning) CreateClone(cloneRequest *types.CloneCreateRequest) (*mode
180180
clone.DB.Host, clone.DB.Port, clone.DB.Username)
181181

182182
// TODO(anatoly): Remove mock data.
183-
clone.Metadata = &models.CloneMetadata{
184-
CloneSize: cloneSize,
183+
clone.Metadata = models.CloneMetadata{
184+
CloneDiffSize: cloneDiffSize,
185185
CloningTime: w.timeStartedAt.Sub(w.timeCreatedAt).Seconds(),
186186
MaxIdleMinutes: c.Config.MaxIdleMinutes,
187187
}
@@ -252,7 +252,7 @@ func (c *baseCloning) GetClone(id string) (*models.Clone, error) {
252252
return w.clone, nil
253253
}
254254

255-
w.clone.Metadata.CloneSize = sessionState.CloneSize
255+
w.clone.Metadata.CloneDiffSize = sessionState.CloneDiffSize
256256

257257
return w.clone, nil
258258
}
@@ -388,7 +388,7 @@ func (c *baseCloning) updateCloneStatus(cloneID string, status models.Status) er
388388
return errors.Errorf("clone %q not found", cloneID)
389389
}
390390

391-
w.clone.Status = &status
391+
w.clone.Status = status
392392

393393
return nil
394394
}
@@ -420,9 +420,7 @@ func (c *baseCloning) getExpectedCloningTime() float64 {
420420

421421
c.cloneMutex.RLock()
422422
for _, cloneWrapper := range c.clones {
423-
if cloneWrapper.clone.Metadata != nil {
424-
sum += cloneWrapper.clone.Metadata.CloningTime
425-
}
423+
sum += cloneWrapper.clone.Metadata.CloningTime
426424
}
427425
c.cloneMutex.RUnlock()
428426

pkg/services/cloning/mode_base_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (s *BaseCloningSuite) TestFindWrapper() {
4848
}
4949

5050
func (s *BaseCloningSuite) TestUpdateStatus() {
51-
s.cloning.setWrapper("testCloneID", &CloneWrapper{clone: &models.Clone{Status: &models.Status{
51+
s.cloning.setWrapper("testCloneID", &CloneWrapper{clone: &models.Clone{Status: models.Status{
5252
Code: models.StatusCreating,
5353
Message: models.CloneMessageCreating,
5454
}}})
@@ -70,7 +70,7 @@ func (s *BaseCloningSuite) TestUpdateStatus() {
7070
assert.Equal(s.T(), models.Status{
7171
Code: models.StatusOK,
7272
Message: models.CloneMessageOK,
73-
}, *wrapper.clone.Status)
73+
}, wrapper.clone.Status)
7474
}
7575

7676
func (s *BaseCloningSuite) TestDeleteClone() {

pkg/services/cloning/mode_mock.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,21 @@ const (
5252

5353
// NewMockClone instances a new Clone model.
5454
func NewMockClone() *models.Clone {
55-
db := &models.Database{}
55+
db := models.Database{}
5656
snapshot := &models.Snapshot{}
5757

5858
return &models.Clone{
5959
ID: "id",
6060
Snapshot: snapshot,
61-
Metadata: &models.CloneMetadata{
62-
CloneSize: mockCloneSize,
61+
Metadata: models.CloneMetadata{
62+
CloneDiffSize: mockCloneSize,
6363
CloningTime: mockCloningTime,
6464
MaxIdleMinutes: mockMaxIdleMinutes,
6565
},
6666
Protected: false,
6767
DeleteAt: "10000",
6868
CreatedAt: "10000",
69-
Status: &models.Status{
69+
Status: models.Status{
7070
Code: models.StatusOK,
7171
Message: models.CloneMessageOK,
7272
},

pkg/services/provision/resources/resources.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,5 @@ type Snapshot struct {
4444

4545
// SessionState defines current state of a Session.
4646
type SessionState struct {
47-
CloneSize uint64
47+
CloneDiffSize uint64
4848
}

pkg/services/provision/thinclones/manager_zfs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (m *managerZFS) ListClonesNames() ([]string, error) {
4747

4848
func (m *managerZFS) GetSessionState(name string) (*resources.SessionState, error) {
4949
state := &resources.SessionState{
50-
CloneSize: defaultSessionCloneSize,
50+
CloneDiffSize: defaultSessionCloneSize,
5151
}
5252

5353
entries, err := zfs.ListFilesystems(m.runner, m.config.Pool)
@@ -70,7 +70,7 @@ func (m *managerZFS) GetSessionState(name string) (*resources.SessionState, erro
7070
return nil, errors.New("cannot get session state: specified ZFS pool does not exist")
7171
}
7272

73-
state.CloneSize = sEntry.Used
73+
state.CloneDiffSize = sEntry.Used
7474

7575
return state, nil
7676
}

0 commit comments

Comments
 (0)