"dhchap_key": Param(str, "Subsystem DH-HMAC-CHAP key", True, None),
"gw_group": Param(str, "NVMeoF gateway group", True, None),
"server_address": Param(str, "NVMeoF gateway address", True, None),
+ "network_mask": Param([str],
+ "Network mask to automatically create listeners",
+ True, None),
},
)
@convert_to_model(model.SubsystemStatus)
def create(self, nqn: str,
max_namespaces: Optional[int] = None, no_group_append: Optional[bool] = False,
serial_number: Optional[str] = None, dhchap_key: Optional[str] = None,
- gw_group: Optional[str] = None, server_address: Optional[str] = None):
+ gw_group: Optional[str] = None, server_address: Optional[str] = None,
+ network_mask: Optional[List[str]] = None):
return NVMeoFClient(
gw_group=gw_group,
server_address=server_address
subsystem_nqn=nqn, serial_number=serial_number,
max_namespaces=max_namespaces, enable_ha=True,
no_group_append=no_group_append,
- dhchap_key=dhchap_key
+ dhchap_key=dhchap_key, network_mask=network_mask,
)
)
)
)
+ @empty_response
+ @NvmeofCLICommand(
+ "nvmeof subsystem add_network", model.RequestStatus,
+ success_message_template=("Adding network mask {network_mask} for subsystem "
+ "{nqn}: Successful")
+ )
+ @EndpointDoc(
+ "Add subsystem network mask",
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "network_mask": Param(str, "Network mask to add"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ "server_address": Param(str, "NVMeoF gateway address", True, None),
+ },
+ )
+ @convert_to_model(model.RequestStatus)
+ @handle_nvmeof_error
+ def add_network(self, nqn: str, network_mask: str, gw_group: Optional[str] = None,
+ server_address: Optional[str] = None):
+ return NVMeoFClient(
+ gw_group=gw_group,
+ server_address=server_address
+ ).stub.add_subsystem_network(
+ NVMeoFClient.pb2.add_subsystem_network_req(
+ subsystem_nqn=nqn, network_mask=network_mask
+ )
+ )
+
+ @empty_response
+ @NvmeofCLICommand(
+ "nvmeof subsystem del_network", model.RequestStatus,
+ success_message_template=("Deleting network mask {network_mask} for subsystem "
+ "{nqn}: Successful")
+ )
+ @EndpointDoc(
+ "Delete subsystem network mask",
+ parameters={
+ "nqn": Param(str, "NVMeoF subsystem NQN"),
+ "network_mask": Param(str, "Network mask to remove"),
+ "gw_group": Param(str, "NVMeoF gateway group", True, None),
+ "server_address": Param(str, "NVMeoF gateway address", True, None),
+ },
+ )
+ @convert_to_model(model.RequestStatus)
+ @handle_nvmeof_error
+ def del_network(self, nqn: str, network_mask: str, gw_group: Optional[str] = None,
+ server_address: Optional[str] = None):
+ return NVMeoFClient(
+ gw_group=gw_group,
+ server_address=server_address
+ ).stub.del_subsystem_network(
+ NVMeoFClient.pb2.del_subsystem_network_req(
+ subsystem_nqn=nqn, network_mask=network_mask
+ )
+ )
+
@NvmeofCLICommand("nvmeof get_subsystems", model.GetSubsystems)
@convert_to_model(model.GetSubsystems)
@handle_nvmeof_error