@@ -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 }
0 commit comments