From 279ed4d65db47076a6846f9c20cdcbcd60302275 Mon Sep 17 00:00:00 2001 From: Simon Dodsley Date: Fri, 17 May 2024 13:30:57 -0400 Subject: [PATCH] Add NVMe-TCP Cinder driver support for Pure Storage From OpenStack 2023.2 (Bobcat) the Pure Storage Cinder driver supports NVMe-TCP as a dataplane protocol. This patch adds support for this new driver type. Change-Id: I3c0ad7652a03388ab2eafa173c644a55b0405cc6 --- ansible/group_vars/all.yml | 1 + ansible/roles/cinder/defaults/main.yml | 3 +++ ansible/roles/cinder/tasks/precheck.yml | 1 + ansible/roles/cinder/templates/cinder.conf.j2 | 9 +++++++++ doc/source/reference/storage/cinder-guide-pure.rst | 14 ++++++++++++++ doc/source/reference/storage/cinder-guide.rst | 3 +++ etc/kolla/globals.yml | 1 + ...vme-tcp-driver-added.yaml-db8e3496376e843c.yaml | 5 +++++ 8 files changed, 37 insertions(+) create mode 100644 releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index f512f5c03c..1d48438c31 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -800,6 +800,7 @@ enable_cinder_backend_quobyte: "no" enable_cinder_backend_pure_iscsi: "no" enable_cinder_backend_pure_fc: "no" enable_cinder_backend_pure_roce: "no" +enable_cinder_backend_pure_nvme_tcp: "no" enable_cloudkitty: "no" enable_collectd: "no" enable_cyborg: "no" diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml index 361d3961f2..b42f9ef1a2 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -253,6 +253,8 @@ cinder_backends: enabled: "{{ enable_cinder_backend_pure_fc | bool }}" - name: "{{ cinder_backend_pure_roce_name }}" enabled: "{{ enable_cinder_backend_pure_roce | bool }}" + - name: "{{ cinder_backend_pure_nvme_tcp_name }}" + enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}" cinder_backend_ceph_name: "rbd-1" cinder_backend_lvm_name: "lvm-1" @@ -264,6 +266,7 @@ cinder_backend_quobyte_name: "QuobyteHD" cinder_backend_pure_iscsi_name: "Pure-FlashArray-iscsi" cinder_backend_pure_fc_name: "Pure-FlashArray-fc" cinder_backend_pure_roce_name: "Pure-FlashArray-roce" +cinder_backend_pure_nvme_tcp_name: "Pure-FlashArray-nvme-tcp" cinder_ceph_backends: - name: "{{ cinder_backend_ceph_name }}" diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml index 6bb50a7084..46335ad885 100644 --- a/ansible/roles/cinder/tasks/precheck.yml +++ b/ansible/roles/cinder/tasks/precheck.yml @@ -42,6 +42,7 @@ - not enable_cinder_backend_pure_iscsi | bool - not enable_cinder_backend_pure_fc | bool - not enable_cinder_backend_pure_roce | bool + - not enable_cinder_backend_pure_nvme_tcp | bool - name: Checking LVM volume group exists for Cinder become: true diff --git a/ansible/roles/cinder/templates/cinder.conf.j2 b/ansible/roles/cinder/templates/cinder.conf.j2 index 69cde541a3..409470f10b 100644 --- a/ansible/roles/cinder/templates/cinder.conf.j2 +++ b/ansible/roles/cinder/templates/cinder.conf.j2 @@ -229,6 +229,15 @@ san_ip = {{ pure_san_ip }} pure_api_token = {{ pure_api_token }} {% endif %} +{% if enable_cinder_backend_pure_nvme_tcp | bool %} +[{{ cinder_backend_pure_nvme_tcp_name }}] +volume_backend_name = {{ pure_nvme_tcp_backend }} +volume_driver = cinder.volume.drivers.pure.PureNVMEDriver +pure_nmve_transport = tcp +san_ip = {{ pure_san_ip }} +pure_api_token = {{ pure_api_token }} +{% endif %} + {% if enable_cinder_backend_pure_roce | bool %} [{{ cinder_backend_pure_roce_name }}] volume_backend_name = {{ pure_roce_backend }} diff --git a/doc/source/reference/storage/cinder-guide-pure.rst b/doc/source/reference/storage/cinder-guide-pure.rst index bd93ac48e6..b38c1ea23c 100644 --- a/doc/source/reference/storage/cinder-guide-pure.rst +++ b/doc/source/reference/storage/cinder-guide-pure.rst @@ -39,6 +39,20 @@ configure the ``FlashArray NVMe-RoCE`` Cinder driver in The NVMe-RoCE driver is only supported from OpenStack Zed and later. +To use the ``Pure Storage FlashArray NVMe-TCP`` Cinder backend, enable and +configure the ``FlashArray NVMe-TCP`` Cinder driver in +``/etc/kolla/globals.yml``. + +.. code-block:: yaml + + enable_cinder_backend_pure_nvme_tcp: "yes" + +.. end + +.. note:: + + The NVMe-TCP driver is only supported from OpenStack 2023.2 (Bobcat) and later. + It is important to note that you cannot mix iSCSI and FC Pure Storage FlashArray drivers in the same OpenStack cluster. diff --git a/doc/source/reference/storage/cinder-guide.rst b/doc/source/reference/storage/cinder-guide.rst index 49f16405c1..55fc9f7d2e 100644 --- a/doc/source/reference/storage/cinder-guide.rst +++ b/doc/source/reference/storage/cinder-guide.rst @@ -278,6 +278,9 @@ that appears in cinder.conf: * - Pure Storage FlashArray for OpenStack - cinder_backend_pure_roce_name - Pure-FlashArray-roce + * - Pure Storage FlashArray for OpenStack + - cinder_backend_pure_nvme_tcp_name + - Pure-FlashArray-nvme-tcp These are the names you use when `configuring `_ diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 92d1d7147a..82341f01c1 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -338,6 +338,7 @@ workaround_ansible_issue_8743: yes #enable_cinder_backend_pure_iscsi: "no" #enable_cinder_backend_pure_fc: "no" #enable_cinder_backend_pure_roce: "no" +#enable_cinder_backend_pure_nvme_tcp: "no" #enable_cloudkitty: "no" #enable_collectd: "no" #enable_cyborg: "no" diff --git a/releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml b/releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml new file mode 100644 index 0000000000..b886176219 --- /dev/null +++ b/releasenotes/notes/pure-nvme-tcp-driver-added.yaml-db8e3496376e843c.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Added NVMe-TCP as a new transport for Pure Storage FlashArray + Cinder driver.