Skip to content

Commit 67e64c0

Browse files
committed
nvmeof: add rados ns ability
add rados ns ability to nvmeof csi driver. Signed-off-by: gadi-didi <gadi.didi@ibm.com>
1 parent 468b76c commit 67e64c0

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

internal/nvmeof/controller/controllerserver.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func (cs *Server) CreateVolume(
122122

123123
backend := res.GetVolume()
124124
volumeID := backend.GetVolumeId()
125-
125+
volumeContext := backend.GetVolumeContext()
126126
defer func() {
127127
// skip cleanup if there was no error
128128
if err == nil {
@@ -141,11 +141,13 @@ func (cs *Server) CreateVolume(
141141
}
142142
}()
143143

144-
rbdImageName := res.GetVolume().GetVolumeContext()["imageName"]
145-
rbdPoolName := res.GetVolume().GetVolumeContext()["pool"]
144+
rbdImageName := volumeContext["imageName"]
145+
rbdPoolName := volumeContext["pool"]
146+
// can be empty. if it was defined in config-map the rbd csi driver would have set it already
147+
rbdRadosNameSpace := res.GetVolume().GetVolumeContext()["radosNamespace"]
146148

147149
// Step 2: Setup NVMe-oF resources
148-
nvmeofData, err := cs.createNVMeoFResources(ctx, req, rbdPoolName, rbdImageName)
150+
nvmeofData, err := cs.createNVMeoFResources(ctx, req, rbdPoolName, rbdImageName, rbdRadosNameSpace)
149151
if err != nil {
150152
log.ErrorLog(ctx, "NVMe-oF resource setup failed for volumeID %s: %v", volumeID, err)
151153

@@ -629,6 +631,7 @@ func (cs *Server) createNVMeoFResources(
629631
req *csi.CreateVolumeRequest,
630632
rbdPoolName,
631633
rbdImageName string,
634+
rbdRadosNameSpace string,
632635
) (*nvmeof.NVMeoFVolumeData, error) {
633636
// Step 1: Extract parameters (already validated)
634637
params := req.GetParameters()
@@ -697,7 +700,7 @@ func (cs *Server) createNVMeoFResources(
697700
nvmeofData.ListenerInfo)
698701

699702
// Step 4: Create namespace and set its uuid
700-
nsid, err := gateway.CreateNamespace(ctx, nvmeofData.SubsystemNQN, rbdPoolName, rbdImageName)
703+
nsid, err := gateway.CreateNamespace(ctx, nvmeofData.SubsystemNQN, rbdRadosNameSpace, rbdPoolName, rbdImageName)
701704
if err != nil {
702705
return nil, fmt.Errorf("namespace creation failed: %w", err)
703706
}

internal/nvmeof/nvmeof.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ func (c *GatewayRpcClient) Destroy() error {
104104
}
105105

106106
// CreateNamespace creates a namespace in a subsystem.
107-
func (gw *GatewayRpcClient) CreateNamespace(ctx context.Context, subsystemNQN, poolName, imageName string,
107+
func (gw *GatewayRpcClient) CreateNamespace(
108+
ctx context.Context,
109+
subsystemNQN string,
110+
radosNamespace, poolName, imageName string,
108111
) (uint32, error) {
109112
log.DebugLog(ctx, "Creating namespace for RBD %s/%s in subsystem %s",
110113
poolName, imageName, subsystemNQN)
@@ -125,7 +128,9 @@ func (gw *GatewayRpcClient) CreateNamespace(ctx context.Context, subsystemNQN, p
125128
// DisableAutoResize: nil,
126129
// ReadOnly: nil,
127130
}
128-
131+
if radosNamespace != "" {
132+
req.RadosNamespaceName = &radosNamespace
133+
}
129134
resp, err := gw.client.NamespaceAdd(ctx, req)
130135
switch {
131136
case err != nil:

0 commit comments

Comments
 (0)