"rbd_pool": Param(str, "RBD pool name"),
"rbd_image_name": Param(str, "RBD image name"),
"create_image": Param(bool, "Create RBD image"),
- "size": Param(int, "RBD image size"),
+ "rbd_image_size": Param(int, "RBD image size"),
"block_size": Param(int, "NVMeoF namespace block size"),
"load_balancing_group": Param(int, "Load balancing group"),
"gw_group": Param(str, "NVMeoF gateway group", True, None),
rbd_image_name: str,
rbd_pool: str = "rbd",
create_image: Optional[bool] = True,
- size: Optional[int] = 1024,
+ rbd_image_size: Optional[int] = 1024,
block_size: int = 512,
load_balancing_group: Optional[int] = None,
gw_group: Optional[str] = None,
rbd_pool_name=rbd_pool,
block_size=block_size,
create_image=create_image,
- size=size,
+ size=rbd_image_size,
anagrpid=load_balancing_group,
)
)
expect(nvmeofService.createNamespace).toHaveBeenCalledWith(mockSubsystemNQN, {
rbd_image_name: image,
rbd_pool: null,
- size: 1073741824
+ rbd_image_size: 1073741824
});
});
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import {
NamespaceCreateRequest,
- NamespaceEditRequest,
+ NamespaceUpdateRequest,
NvmeofService
} from '~/app/shared/api/nvmeof.service';
import { ActionLabelsI18n, URLVerbs } from '~/app/shared/constants/app.constants';
});
}
- buildRequest(): NamespaceCreateRequest | NamespaceEditRequest {
+ updateRequest(rbdImageSize: number): NamespaceUpdateRequest {
+ const request: NamespaceUpdateRequest = {
+ gw_group: this.group,
+ rbd_image_size: rbdImageSize
+ };
+ return request;
+ }
+
+ createRequest(rbdImageSize: number): NamespaceCreateRequest {
+ const image = this.nsForm.getValue('image');
+ const pool = this.nsForm.getValue('pool');
+ const request: NamespaceCreateRequest = {
+ gw_group: this.group,
+ rbd_image_name: image,
+ rbd_pool: pool
+ };
+ if (rbdImageSize) {
+ request['rbd_image_size'] = rbdImageSize;
+ }
+ return request;
+ }
+
+ buildRequest() {
const image_size = this.nsForm.getValue('image_size');
- const image_size_unit = this.nsForm.getValue('unit');
- const request = {} as NamespaceCreateRequest | NamespaceEditRequest;
- request['gw_group'] = this.group;
+ let rbdImageSize: number = null;
if (image_size) {
- const key: string = this.edit ? 'rbd_image_size' : 'size';
+ const image_size_unit = this.nsForm.getValue('unit');
const value: number = this.formatterService.toBytes(image_size + image_size_unit);
- request[key] = value;
+ rbdImageSize = value;
}
- if (!this.edit) {
- const image = this.nsForm.getValue('image');
- const pool = this.nsForm.getValue('pool');
- request['rbd_image_name'] = image;
- request['rbd_pool'] = pool;
+ if (this.edit) {
+ return this.updateRequest(rbdImageSize);
+ } else {
+ return this.createRequest(rbdImageSize);
}
- return request;
}
validateSize() {
this.invalidSizeError = false;
const component = this;
const taskUrl: string = `nvmeof/namespace/${this.edit ? URLVerbs.EDIT : URLVerbs.CREATE}`;
- const request = this.buildRequest();
+ const request: NamespaceCreateRequest | NamespaceUpdateRequest = this.buildRequest();
let action: Observable<any>;
if (this.edit) {
call: this.nvmeofService.updateNamespace(
this.subsystemNQN,
this.nsid,
- request as NamespaceEditRequest
+ request as NamespaceUpdateRequest
)
});
} else {
const mockNamespaceObj = {
rbd_image_name: 'nvme_ns_image:12345678',
rbd_pool: 'rbd',
- size: 1024,
+ rbd_image_size: 1024,
gw_group: mockGroupName
};
service.createNamespace(mockNQN, mockNamespaceObj).subscribe();
export const MAX_NAMESPACE = 1024;
-export interface ListenerRequest {
+type NvmeofRequest = {
gw_group: string;
+};
+
+export type ListenerRequest = NvmeofRequest & {
host_name: string;
traddr: string;
trsvcid: number;
-}
+};
-export interface NamespaceCreateRequest {
+export type NamespaceCreateRequest = NvmeofRequest & {
rbd_image_name: string;
rbd_pool: string;
- size: number;
- gw_group: string;
-}
+ rbd_image_size?: number;
+};
-export interface NamespaceEditRequest {
+export type NamespaceUpdateRequest = NvmeofRequest & {
rbd_image_size: number;
- gw_group: string;
-}
+};
-export interface InitiatorRequest {
+export type InitiatorRequest = NvmeofRequest & {
host_nqn: string;
- gw_group: string;
-}
+};
const API_PATH = 'api/nvmeof';
const UI_API_PATH = 'ui-api/nvmeof';
});
}
- updateNamespace(subsystemNQN: string, nsid: string, request: NamespaceEditRequest) {
+ updateNamespace(subsystemNQN: string, nsid: string, request: NamespaceUpdateRequest) {
return this.http.patch(`${API_PATH}/subsystem/${subsystemNQN}/namespace/${nsid}`, request, {
observe: 'response'
});
rbd_image_name:
description: RBD image name
type: string
+ rbd_image_size:
+ default: 1024
+ description: RBD image size
+ type: integer
rbd_pool:
default: rbd
description: RBD pool name
type: string
- size:
- default: 1024
- description: RBD image size
- type: integer
required:
- rbd_image_name
type: object