summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/controllers/nvmeof.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/pybind/mgr/dashboard/controllers/nvmeof.py')
-rw-r--r--src/pybind/mgr/dashboard/controllers/nvmeof.py96
1 files changed, 64 insertions, 32 deletions
diff --git a/src/pybind/mgr/dashboard/controllers/nvmeof.py b/src/pybind/mgr/dashboard/controllers/nvmeof.py
index ec9c9897081..519c310a98b 100644
--- a/src/pybind/mgr/dashboard/controllers/nvmeof.py
+++ b/src/pybind/mgr/dashboard/controllers/nvmeof.py
@@ -63,7 +63,10 @@ else:
@EndpointDoc(
"Get information from a specific NVMeoF subsystem",
- parameters={"nqn": Param(str, "NVMeoF subsystem NQN")},
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ },
)
@map_model(model.Subsystem, first="subsystems")
@handle_nvmeof_error
@@ -78,6 +81,7 @@ else:
"nqn": Param(str, "NVMeoF subsystem NQN"),
"max_namespaces": Param(int, "Maximum number of namespaces", True, 1024),
"enable_ha": Param(bool, "Enable high availability"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@@ -95,6 +99,7 @@ else:
parameters={
"nqn": Param(str, "NVMeoF subsystem NQN"),
"force": Param(bool, "Force delete", "false"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@@ -111,12 +116,15 @@ else:
class NVMeoFListener(RESTController):
@EndpointDoc(
"List all NVMeoF listeners",
- parameters={"nqn": Param(str, "NVMeoF subsystem NQN")},
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ },
)
@map_collection(model.Listener, pick="listeners")
@handle_nvmeof_error
- def list(self, nqn: str):
- return NVMeoFClient().stub.list_listeners(
+ def list(self, nqn: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.list_listeners(
NVMeoFClient.pb2.list_listeners_req(subsystem=nqn)
)
@@ -128,6 +136,7 @@ else:
"traddr": Param(str, "NVMeoF transport address"),
"trsvcid": Param(int, "NVMeoF transport service port", True, 4420),
"adrfam": Param(int, "NVMeoF address family (0 - IPv4, 1 - IPv6)", True, 0),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@@ -138,9 +147,10 @@ else:
host_name: str,
traddr: str,
trsvcid: int = 4420,
- adrfam: int = 0, # IPv4
+ adrfam: int = 0, # IPv4,
+ gw_group: Optional[str] = None
):
- return NVMeoFClient().stub.create_listener(
+ return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.create_listener(
NVMeoFClient.pb2.create_listener_req(
nqn=nqn,
host_name=host_name,
@@ -158,6 +168,7 @@ else:
"traddr": Param(str, "NVMeoF transport address"),
"trsvcid": Param(int, "NVMeoF transport service port", True, 4420),
"adrfam": Param(int, "NVMeoF address family (0 - IPv4, 1 - IPv6)", True, 0),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@@ -170,8 +181,9 @@ else:
trsvcid: int = 4420,
adrfam: int = 0, # IPv4
force: bool = False,
+ gw_group: Optional[str] = None
):
- return NVMeoFClient().stub.delete_listener(
+ return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.delete_listener(
NVMeoFClient.pb2.delete_listener_req(
nqn=nqn,
host_name=host_name,
@@ -187,12 +199,15 @@ else:
class NVMeoFNamespace(RESTController):
@EndpointDoc(
"List all NVMeoF namespaces in a subsystem",
- parameters={"nqn": Param(str, "NVMeoF subsystem NQN")},
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ },
)
@map_collection(model.Namespace, pick="namespaces")
@handle_nvmeof_error
- def list(self, nqn: str):
- return NVMeoFClient().stub.list_namespaces(
+ def list(self, nqn: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.list_namespaces(
NVMeoFClient.pb2.list_namespaces_req(subsystem=nqn)
)
@@ -201,12 +216,13 @@ else:
parameters={
"nqn": Param(str, "NVMeoF subsystem NQN"),
"nsid": Param(str, "NVMeoF Namespace ID"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@map_model(model.Namespace, first="namespaces")
@handle_nvmeof_error
- def get(self, nqn: str, nsid: str):
- return NVMeoFClient().stub.list_namespaces(
+ def get(self, nqn: str, nsid: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.list_namespaces(
NVMeoFClient.pb2.list_namespaces_req(subsystem=nqn, nsid=int(nsid))
)
@@ -217,12 +233,13 @@ else:
parameters={
"nqn": Param(str, "NVMeoF subsystem NQN"),
"nsid": Param(str, "NVMeoF Namespace ID"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@map_model(model.NamespaceIOStats)
@handle_nvmeof_error
- def io_stats(self, nqn: str, nsid: str):
- return NVMeoFClient().stub.namespace_get_io_stats(
+ def io_stats(self, nqn: str, nsid: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.namespace_get_io_stats(
NVMeoFClient.pb2.namespace_get_io_stats_req(
subsystem_nqn=nqn, nsid=int(nsid))
)
@@ -237,6 +254,7 @@ else:
"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),
},
)
@map_model(model.NamespaceCreation)
@@ -250,8 +268,9 @@ else:
size: Optional[int] = 1024,
block_size: int = 512,
load_balancing_group: Optional[int] = None,
+ gw_group: Optional[str] = None,
):
- return NVMeoFClient().stub.namespace_add(
+ return NVMeoFClient(gw_group=gw_group).stub.namespace_add(
NVMeoFClient.pb2.namespace_add_req(
subsystem_nqn=nqn,
rbd_image_name=rbd_image_name,
@@ -274,6 +293,7 @@ else:
"rw_mbytes_per_second": Param(int, "Read/Write MB/s"),
"r_mbytes_per_second": Param(int, "Read MB/s"),
"w_mbytes_per_second": Param(int, "Write MB/s"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@@ -288,12 +308,13 @@ else:
rw_mbytes_per_second: Optional[int] = None,
r_mbytes_per_second: Optional[int] = None,
w_mbytes_per_second: Optional[int] = None,
+ gw_group: Optional[str] = None
):
if rbd_image_size:
mib = 1024 * 1024
new_size_mib = int((rbd_image_size + mib - 1) / mib)
- response = NVMeoFClient().stub.namespace_resize(
+ response = NVMeoFClient(gw_group=gw_group).stub.namespace_resize(
NVMeoFClient.pb2.namespace_resize_req(
subsystem_nqn=nqn, nsid=int(nsid), new_size=new_size_mib
)
@@ -336,12 +357,13 @@ else:
parameters={
"nqn": Param(str, "NVMeoF subsystem NQN"),
"nsid": Param(str, "NVMeoF Namespace ID"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@handle_nvmeof_error
- def delete(self, nqn: str, nsid: str):
- return NVMeoFClient().stub.namespace_delete(
+ def delete(self, nqn: str, nsid: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.namespace_delete(
NVMeoFClient.pb2.namespace_delete_req(subsystem_nqn=nqn, nsid=int(nsid))
)
@@ -351,7 +373,10 @@ else:
class NVMeoFHost(RESTController):
@EndpointDoc(
"List all allowed hosts for an NVMeoF subsystem",
- parameters={"nqn": Param(str, "NVMeoF subsystem NQN")},
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ },
)
@map_collection(
model.Host,
@@ -362,8 +387,8 @@ else:
else o,
)
@handle_nvmeof_error
- def list(self, nqn: str):
- return NVMeoFClient().stub.list_hosts(
+ def list(self, nqn: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.list_hosts(
NVMeoFClient.pb2.list_hosts_req(subsystem=nqn)
)
@@ -372,12 +397,13 @@ else:
parameters={
"nqn": Param(str, "NVMeoF subsystem NQN"),
"host_nqn": Param(str, 'NVMeoF host NQN. Use "*" to allow any host.'),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@handle_nvmeof_error
- def create(self, nqn: str, host_nqn: str):
- return NVMeoFClient().stub.add_host(
+ def create(self, nqn: str, host_nqn: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.add_host(
NVMeoFClient.pb2.add_host_req(subsystem_nqn=nqn, host_nqn=host_nqn)
)
@@ -386,12 +412,13 @@ else:
parameters={
"nqn": Param(str, "NVMeoF subsystem NQN"),
"host_nqn": Param(str, 'NVMeoF host NQN. Use "*" to disallow any host.'),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
},
)
@empty_response
@handle_nvmeof_error
- def delete(self, nqn: str, host_nqn: str):
- return NVMeoFClient().stub.remove_host(
+ def delete(self, nqn: str, host_nqn: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.remove_host(
NVMeoFClient.pb2.remove_host_req(subsystem_nqn=nqn, host_nqn=host_nqn)
)
@@ -400,12 +427,15 @@ else:
class NVMeoFConnection(RESTController):
@EndpointDoc(
"List all NVMeoF Subsystem Connections",
- parameters={"nqn": Param(str, "NVMeoF subsystem NQN")},
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ },
)
@map_collection(model.Connection, pick="connections")
@handle_nvmeof_error
- def list(self, nqn: str):
- return NVMeoFClient().stub.list_connections(
+ def list(self, nqn: str, gw_group: Optional[str] = None):
+ return NVMeoFClient(gw_group=gw_group).stub.list_connections(
NVMeoFClient.pb2.list_connections_req(subsystem=nqn)
)
@@ -433,16 +463,17 @@ else:
parameters={
'subsystem_nqn': (str, 'Subsystem NQN'),
"host_nqn": Param(str, 'Comma separated list of NVMeoF host NQNs'),
+ "gw_group": Param(str, "NVMeoF gateway group")
})
@empty_response
@handle_nvmeof_error
@CreatePermission
- def add(self, subsystem_nqn: str, host_nqn: str = ""):
+ def add(self, subsystem_nqn: str, gw_group: str, host_nqn: str = ""):
response = None
all_host_nqns = host_nqn.split(',')
for nqn in all_host_nqns:
- response = NVMeoFClient().stub.add_host(
+ response = NVMeoFClient(gw_group=gw_group).stub.add_host(
NVMeoFClient.pb2.add_host_req(subsystem_nqn=subsystem_nqn, host_nqn=nqn)
)
if response.status != 0:
@@ -454,16 +485,17 @@ else:
parameters={
"subsystem_nqn": Param(str, "NVMeoF subsystem NQN"),
"host_nqn": Param(str, 'Comma separated list of NVMeoF host NQN.'),
+ "gw_group": Param(str, "NVMeoF gateway group")
})
@empty_response
@handle_nvmeof_error
@DeletePermission
- def remove(self, subsystem_nqn: str, host_nqn: str):
+ def remove(self, subsystem_nqn: str, host_nqn: str, gw_group: str):
response = None
to_delete_nqns = host_nqn.split(',')
for del_nqn in to_delete_nqns:
- response = NVMeoFClient().stub.remove_host(
+ response = NVMeoFClient(gw_group=gw_group).stub.remove_host(
NVMeoFClient.pb2.remove_host_req(subsystem_nqn=subsystem_nqn, host_nqn=del_nqn)
)
if response.status != 0: