Skip to content

Commit a6f01f4

Browse files
authored
Merge pull request ceph#61698 from afreen23/wip-fix-nsapi
mgr/dashboard: (refactor)fix image size in nvmeof namespace create/update api Reviewed-by: Afreen Misbah <[email protected]>
2 parents fd080eb + 7fa78e6 commit a6f01f4

File tree

6 files changed

+55
-37
lines changed

6 files changed

+55
-37
lines changed

src/pybind/mgr/dashboard/controllers/nvmeof.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ def io_stats(self, nqn: str, nsid: str, gw_group: Optional[str] = None):
339339
"rbd_pool": Param(str, "RBD pool name"),
340340
"rbd_image_name": Param(str, "RBD image name"),
341341
"create_image": Param(bool, "Create RBD image"),
342-
"size": Param(int, "RBD image size"),
342+
"rbd_image_size": Param(int, "RBD image size"),
343343
"block_size": Param(int, "NVMeoF namespace block size"),
344344
"load_balancing_group": Param(int, "Load balancing group"),
345345
"gw_group": Param(str, "NVMeoF gateway group", True, None),
@@ -354,7 +354,7 @@ def create(
354354
rbd_image_name: str,
355355
rbd_pool: str = "rbd",
356356
create_image: Optional[bool] = True,
357-
size: Optional[int] = 1024,
357+
rbd_image_size: Optional[int] = 1024,
358358
block_size: int = 512,
359359
load_balancing_group: Optional[int] = None,
360360
gw_group: Optional[str] = None,
@@ -366,7 +366,7 @@ def create(
366366
rbd_pool_name=rbd_pool,
367367
block_size=block_size,
368368
create_image=create_image,
369-
size=size,
369+
size=rbd_image_size,
370370
anagrpid=load_balancing_group,
371371
)
372372
)

src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ describe('NvmeofNamespacesFormComponent', () => {
6363
expect(nvmeofService.createNamespace).toHaveBeenCalledWith(mockSubsystemNQN, {
6464
rbd_image_name: image,
6565
rbd_pool: null,
66-
size: 1073741824
66+
rbd_image_size: 1073741824
6767
});
6868
});
6969

src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.ts

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ActivatedRoute, Router } from '@angular/router';
44
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
55
import {
66
NamespaceCreateRequest,
7-
NamespaceEditRequest,
7+
NamespaceUpdateRequest,
88
NvmeofService
99
} from '~/app/shared/api/nvmeof.service';
1010
import { ActionLabelsI18n, URLVerbs } from '~/app/shared/constants/app.constants';
@@ -120,23 +120,41 @@ export class NvmeofNamespacesFormComponent implements OnInit {
120120
});
121121
}
122122

123-
buildRequest(): NamespaceCreateRequest | NamespaceEditRequest {
123+
updateRequest(rbdImageSize: number): NamespaceUpdateRequest {
124+
const request: NamespaceUpdateRequest = {
125+
gw_group: this.group,
126+
rbd_image_size: rbdImageSize
127+
};
128+
return request;
129+
}
130+
131+
createRequest(rbdImageSize: number): NamespaceCreateRequest {
132+
const image = this.nsForm.getValue('image');
133+
const pool = this.nsForm.getValue('pool');
134+
const request: NamespaceCreateRequest = {
135+
gw_group: this.group,
136+
rbd_image_name: image,
137+
rbd_pool: pool
138+
};
139+
if (rbdImageSize) {
140+
request['rbd_image_size'] = rbdImageSize;
141+
}
142+
return request;
143+
}
144+
145+
buildRequest() {
124146
const image_size = this.nsForm.getValue('image_size');
125-
const image_size_unit = this.nsForm.getValue('unit');
126-
const request = {} as NamespaceCreateRequest | NamespaceEditRequest;
127-
request['gw_group'] = this.group;
147+
let rbdImageSize: number = null;
128148
if (image_size) {
129-
const key: string = this.edit ? 'rbd_image_size' : 'size';
149+
const image_size_unit = this.nsForm.getValue('unit');
130150
const value: number = this.formatterService.toBytes(image_size + image_size_unit);
131-
request[key] = value;
151+
rbdImageSize = value;
132152
}
133-
if (!this.edit) {
134-
const image = this.nsForm.getValue('image');
135-
const pool = this.nsForm.getValue('pool');
136-
request['rbd_image_name'] = image;
137-
request['rbd_pool'] = pool;
153+
if (this.edit) {
154+
return this.updateRequest(rbdImageSize);
155+
} else {
156+
return this.createRequest(rbdImageSize);
138157
}
139-
return request;
140158
}
141159

142160
validateSize() {
@@ -157,7 +175,7 @@ export class NvmeofNamespacesFormComponent implements OnInit {
157175
this.invalidSizeError = false;
158176
const component = this;
159177
const taskUrl: string = `nvmeof/namespace/${this.edit ? URLVerbs.EDIT : URLVerbs.CREATE}`;
160-
const request = this.buildRequest();
178+
const request: NamespaceCreateRequest | NamespaceUpdateRequest = this.buildRequest();
161179
let action: Observable<any>;
162180

163181
if (this.edit) {
@@ -169,7 +187,7 @@ export class NvmeofNamespacesFormComponent implements OnInit {
169187
call: this.nvmeofService.updateNamespace(
170188
this.subsystemNQN,
171189
this.nsid,
172-
request as NamespaceEditRequest
190+
request as NamespaceUpdateRequest
173191
)
174192
});
175193
} else {

src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ describe('NvmeofService', () => {
159159
const mockNamespaceObj = {
160160
rbd_image_name: 'nvme_ns_image:12345678',
161161
rbd_pool: 'rbd',
162-
size: 1024,
162+
rbd_image_size: 1024,
163163
gw_group: mockGroupName
164164
};
165165
service.createNamespace(mockNQN, mockNamespaceObj).subscribe();

src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,29 @@ import { catchError, mapTo } from 'rxjs/operators';
77

88
export const MAX_NAMESPACE = 1024;
99

10-
export interface ListenerRequest {
10+
type NvmeofRequest = {
1111
gw_group: string;
12+
};
13+
14+
export type ListenerRequest = NvmeofRequest & {
1215
host_name: string;
1316
traddr: string;
1417
trsvcid: number;
15-
}
18+
};
1619

17-
export interface NamespaceCreateRequest {
20+
export type NamespaceCreateRequest = NvmeofRequest & {
1821
rbd_image_name: string;
1922
rbd_pool: string;
20-
size: number;
21-
gw_group: string;
22-
}
23+
rbd_image_size?: number;
24+
};
2325

24-
export interface NamespaceEditRequest {
26+
export type NamespaceUpdateRequest = NvmeofRequest & {
2527
rbd_image_size: number;
26-
gw_group: string;
27-
}
28+
};
2829

29-
export interface InitiatorRequest {
30+
export type InitiatorRequest = NvmeofRequest & {
3031
host_nqn: string;
31-
gw_group: string;
32-
}
32+
};
3333

3434
const API_PATH = 'api/nvmeof';
3535
const UI_API_PATH = 'ui-api/nvmeof';
@@ -144,7 +144,7 @@ export class NvmeofService {
144144
});
145145
}
146146

147-
updateNamespace(subsystemNQN: string, nsid: string, request: NamespaceEditRequest) {
147+
updateNamespace(subsystemNQN: string, nsid: string, request: NamespaceUpdateRequest) {
148148
return this.http.patch(`${API_PATH}/subsystem/${subsystemNQN}/namespace/${nsid}`, request, {
149149
observe: 'response'
150150
});

src/pybind/mgr/dashboard/openapi.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9012,14 +9012,14 @@ paths:
90129012
rbd_image_name:
90139013
description: RBD image name
90149014
type: string
9015+
rbd_image_size:
9016+
default: 1024
9017+
description: RBD image size
9018+
type: integer
90159019
rbd_pool:
90169020
default: rbd
90179021
description: RBD pool name
90189022
type: string
9019-
size:
9020-
default: 1024
9021-
description: RBD image size
9022-
type: integer
90239023
required:
90249024
- rbd_image_name
90259025
type: object

0 commit comments

Comments
 (0)