Skip to content

nvmeof: add auto listeners feature into NVMe-oF CSI driver#5891

Merged
mergify[bot] merged 3 commits into
ceph:develfrom
gadididi:nvmeof/add_auto_listeners
Jan 14, 2026
Merged

nvmeof: add auto listeners feature into NVMe-oF CSI driver#5891
mergify[bot] merged 3 commits into
ceph:develfrom
gadididi:nvmeof/add_auto_listeners

Conversation

@gadididi

@gadididi gadididi commented Dec 29, 2025

Copy link
Copy Markdown
Contributor

Describe what this PR does

Add new option in nvmeof storageClass "networkMask" . This property can replace the exists property "listeners".
Instead of searching and adding every GW IP and host name in SC (every redeploy), the admin just needs once edit the StorageClass file, by one searching of the subnet mask of the deployment, and add it to the SC , and that's it!
the admin can search the subnet mask by run:
oc get network.config/cluster -o jsonpath='{.status.clusterNetwork[*].cidr}'

the Auto listener feature was merged into nvmeof GW:
ceph/ceph-nvmeof#1381
It means, the nvmeof creates the listeners automictically, and no need to provide the IPs in the StorageClass. It searches them by itself.

e.g.
prev SC:

  listeners: |
    [
      {
        "address": "10.129.2.53",
        "port": 4420,
        "hostname": "ceph-nvmeof-gateway-68645d5d89-95zc2"
      },
      {
        "address": "10.131.0.225",
        "port": 4420,
        "hostname": "ceph-nvmeof-gateway-68645d5d89-z5wvd"
      }
    ]

current:

networkMask: "10.128.0.0/24"

Is there anything that requires special attention

  • This feature is added (and not replaced with the list listener) because the auto listeners feature is not supported in old Ceph (and nvmeof) versions. I could not test it in ODF env.
  • There is another field in the StorageClass called nvmeofGatewayAddress. This feature will not solve the need to re-edit this field (every nvmeof GW redeployment) - The next nvmeof phase ( using Ceph REST API instead of calling directly to inner nvmeof GW in Ceph cluster will solve this issue)

Future concerns

Checklist:

  • Commit Message Formatting: Commit titles and messages follow
    guidelines in the developer
    guide
    .
  • Reviewed the developer guide on Submitting a Pull
    Request
  • Pending release
    notes

    updated with breaking and/or notable changes for the next major release.
  • Documentation has been updated, if necessary.
  • Unit tests have been added, if necessary.
  • Integration tests have been added, if necessary.

Show available bot commands

These commands are normally not required, but in case of issues, leave any of
the following bot commands in an otherwise empty comment in this PR:

  • /retest ci/centos/<job-name>: retest the <job-name> after unrelated
    failure (please report the failure too!)

@gadididi gadididi requested a review from nixpanic December 29, 2025 12:50
@gadididi gadididi self-assigned this Dec 29, 2025
@gadididi gadididi added the component/nvme-of Issues and PRs related to NVMe-oF. label Dec 29, 2025
@gadididi gadididi changed the title nvmeof: add auto listeners nvmeof: add auto listeners feature into NVMe-oF CSI driver Dec 29, 2025
@gadididi gadididi force-pushed the nvmeof/add_auto_listeners branch from 99962d5 to 2d1d4eb Compare December 30, 2025 07:54
add ListListeners grpc query to fetch the current
listener list for specific subsystem.
added because auto-listener feature creates automatically
listeners, and the listeners list is needed for the node-server.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
@gadididi gadididi force-pushed the nvmeof/add_auto_listeners branch from 2d1d4eb to d243f10 Compare January 11, 2026 07:10
@gadididi gadididi marked this pull request as ready for review January 11, 2026 07:38
@gadididi gadididi force-pushed the nvmeof/add_auto_listeners branch from d243f10 to d5a6b11 Compare January 11, 2026 07:50
Comment thread internal/nvmeof/controller/controllerserver.go Outdated
@gadididi gadididi requested a review from Madhu-1 January 12, 2026 09:28
@gadididi gadididi force-pushed the nvmeof/add_auto_listeners branch from d5a6b11 to c2cc772 Compare January 12, 2026 09:42

@Madhu-1 Madhu-1 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small nits

Comment thread internal/nvmeof/controller/controllerserver.go Outdated
Comment thread internal/nvmeof/controller/controllerserver.go Outdated
@gadididi gadididi force-pushed the nvmeof/add_auto_listeners branch from c2cc772 to 400f2cc Compare January 12, 2026 12:15
Comment thread internal/nvmeof/controller/controllerserver.go Outdated
Comment thread internal/nvmeof/controller/controllerserver.go Outdated
add the option "networkMask" in SC. This
option is intoduced to replace the listener list entry
in the SC. with this param the admin does need to know
what are GWs IPs. just needs to provide the network mask
of the deployment. one way to get it, by run
`oc get network.config/cluster -o \
 jsonpath='{.status.clusterNetwork[*].cidr}'`
then, assign the value in networkMask field,
and that's it.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
add the networkMask param into create subsystem call.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
@gadididi gadididi force-pushed the nvmeof/add_auto_listeners branch from 400f2cc to ec191b0 Compare January 13, 2026 06:53
@gadididi

Copy link
Copy Markdown
Contributor Author

@Mergifyio queue

@mergify

mergify Bot commented Jan 13, 2026

Copy link
Copy Markdown
Contributor

queue

❌ The pull request has been removed from the queue default

Details

The merge conditions cannot be satisfied due to failing checks.

You can take a look at Queue: Embarked in merge queue check runs for more details about the failure.

@mergify

mergify Bot commented Jan 13, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

🚫 The pull request has left the queue (rule: default) at ec191b0

This pull request spent 3 hours 48 minutes 46 seconds in the queue, including 3 hours 48 minutes 31 seconds running CI.
The checks were run on draft #5926.

Required conditions to merge
  • any of:
    • all of:
      • base~=^(release-.+)$
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.34
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.34
          • status-success=ci/centos/mini-e2e/k8s-1.34
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
    • all of:
      • base=release-v3.15
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.31
          • status-success=ci/centos/mini-e2e-helm/k8s-1.31
          • status-success=ci/centos/mini-e2e/k8s-1.31
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
    • all of:
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.34
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.34
          • status-success=ci/centos/mini-e2e/k8s-1.34
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
      • base=devel
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
    • all of:
      • base=ci/centos
      • status-success=ci/centos/jjb-validate
      • status-success=ci/centos/job-validation
  • #approved-reviews-by >= 2 [🛡 GitHub branch protection]
  • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]

Reason

The merge conditions cannot be satisfied due to failing checks

Failing checks:

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio requeue comment.

@mergify mergify Bot added the queued label Jan 13, 2026
mergify Bot added a commit that referenced this pull request Jan 13, 2026
@mergify mergify Bot added dequeued and removed queued labels Jan 13, 2026
@gadididi gadididi added the ci/skip/e2e skip running e2e CI jobs label Jan 14, 2026
@gadididi

Copy link
Copy Markdown
Contributor Author

@Mergifyio queue

@mergify

mergify Bot commented Jan 14, 2026

Copy link
Copy Markdown
Contributor

queue

❌ The pull request has been removed from the queue default

Details

The merge conditions cannot be satisfied due to failing checks.

You can take a look at Queue: Embarked in merge queue check runs for more details about the failure.

@mergify

mergify Bot commented Jan 14, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

🟠 Waiting for queue conditions

Required conditions to enter a queue
  • -closed [📌 queue requirement]
  • -conflict [📌 queue requirement]
  • -draft [📌 queue requirement]
  • any of [📌 queue -> configuration change requirements]:
    • -mergify-configuration-changed
    • check-success = Configuration changed
  • any of [🔀 queue conditions]:
    • all of [📌 queue conditions of queue default]:
      • #approved-reviews-by >= 2 [🛡 GitHub branch protection]
      • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]

@gadididi

Copy link
Copy Markdown
Contributor Author

@Mergifyio requeue

@mergify

mergify Bot commented Jan 14, 2026

Copy link
Copy Markdown
Contributor

requeue

✅ The queue state of this pull request has been cleaned. It can be re-embarked automatically

@mergify mergify Bot added the queued label Jan 14, 2026
mergify Bot added a commit that referenced this pull request Jan 14, 2026
@mergify mergify Bot removed the dequeued label Jan 14, 2026
@mergify mergify Bot merged commit 2c7daf7 into ceph:devel Jan 14, 2026
27 checks passed
@mergify mergify Bot removed the queued label Jan 14, 2026
@gadididi gadididi deleted the nvmeof/add_auto_listeners branch January 14, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/skip/e2e skip running e2e CI jobs component/nvme-of Issues and PRs related to NVMe-oF.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants