From 4b05fa8a5faec3584e40f30b687cf3ea28abf158 Mon Sep 17 00:00:00 2001 From: yuval Date: Tue, 20 Aug 2024 15:05:14 +0300 Subject: [PATCH] add lightbits driver support Change-Id: I50c5a1443c5d2012388debed20b96274bc69e7e7 --- ansible/group_vars/all.yml | 1 + ansible/roles/cinder/defaults/main.yml | 13 ++++++++ ansible/roles/cinder/tasks/precheck.yml | 11 +++++++ ansible/roles/cinder/templates/cinder.conf.j2 | 11 +++++++ .../storage/cinder-guide-lightbits.rst | 33 +++++++++++++++++++ doc/source/reference/storage/cinder-guide.rst | 3 ++ doc/source/reference/storage/index.rst | 1 + etc/kolla/globals.yml | 1 + ...inder-plugin-support-f5445f2dbb1a56ed.yaml | 4 +++ 9 files changed, 78 insertions(+) create mode 100644 doc/source/reference/storage/cinder-guide-lightbits.rst create mode 100644 releasenotes/notes/add-lightbits-cinder-plugin-support-f5445f2dbb1a56ed.yaml diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 7ee3f0b8f6..9f46d2cc84 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -848,6 +848,7 @@ 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_cinder_backend_lightbits: "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 dd8f11c66a..6cd8b8f146 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -256,6 +256,8 @@ cinder_backends: enabled: "{{ enable_cinder_backend_pure_roce | bool }}" - name: "{{ cinder_backend_pure_nvme_tcp_name }}" enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}" + - name: "{{ cinder_backend_lightbits_name }}" + enabled: "{{ enable_cinder_backend_lightbits | bool }}" cinder_backend_ceph_name: "rbd-1" cinder_backend_lvm_name: "lvm-1" @@ -267,6 +269,7 @@ 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_backend_lightbits_name: "Lightbits-NVMe-TCP" cinder_ceph_backends: - name: "{{ cinder_backend_ceph_name }}" @@ -307,6 +310,16 @@ pure_fc_backend: "pure_fc_backend" pure_api_token: pure_san_ip: +################################ +# Lightbits Storage Driver +############################### +lightbits_nvme_tcp_backend_name: "lightbits_nvme_backend" +lightos_skip_ssl_verify: False +lightos_api_port: 443 +lightos_default_num_replicas: 3 +lightos_api_address: +lightos_jwt: + ################################ # Cinder Backup S3 ################################ diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml index 632636ddff..0c42e37668 100644 --- a/ansible/roles/cinder/tasks/precheck.yml +++ b/ansible/roles/cinder/tasks/precheck.yml @@ -43,6 +43,7 @@ - not enable_cinder_backend_pure_fc | bool - not enable_cinder_backend_pure_roce | bool - not enable_cinder_backend_pure_nvme_tcp | bool + - not enable_cinder_backend_lightbits | bool - name: Checking LVM volume group exists for Cinder become: true @@ -68,6 +69,16 @@ - cinder_backup_s3_secret_key when: cinder_backup_driver == "s3" +- name: Check if Lightbits configurations are defined + assert: + that: + - vars[item] is defined + msg: "Cinder Lightbits backend is enabled, the {{ item }} variable must be defined." + with_items: + - lightos_api_address + - lightos_jwt + when: enable_cinder_backend_lightbits == "yes" + - name: Check if cinder_cluster_name is configured for HA configurations assert: that: diff --git a/ansible/roles/cinder/templates/cinder.conf.j2 b/ansible/roles/cinder/templates/cinder.conf.j2 index 649e05f357..52b37cde16 100644 --- a/ansible/roles/cinder/templates/cinder.conf.j2 +++ b/ansible/roles/cinder/templates/cinder.conf.j2 @@ -241,6 +241,17 @@ san_ip = {{ pure_san_ip }} pure_api_token = {{ pure_api_token }} {% endif %} +{% if enable_cinder_backend_lightbits | bool %} +[{{ cinder_backend_lightbits_name }}] +volume_driver = cinder.volume.drivers.lightos.LightOSVolumeDriver +volume_backend_name = {{ lightbits_nvme_tcp_backend_name }} +lightos_api_address = {{ lightbits_target_ips }} +lightos_api_port = {{ lightbits_api_port }} +lightos_default_num_replicas = {{ lightbits_default_num_replicas }} +lightos_skip_ssl_verify = {{ lightbits_skip_ssl_verify }} +lightos_jwt = {{ lightbits_JWT }} +{% endif %} + [privsep_entrypoint] helper_command=sudo cinder-rootwrap /etc/cinder/rootwrap.conf privsep-helper --config-file /etc/cinder/cinder.conf diff --git a/doc/source/reference/storage/cinder-guide-lightbits.rst b/doc/source/reference/storage/cinder-guide-lightbits.rst new file mode 100644 index 0000000000..b09d0e4a1f --- /dev/null +++ b/doc/source/reference/storage/cinder-guide-lightbits.rst @@ -0,0 +1,33 @@ +.. cinder-guide-Lightbits: + +===================================== +Lightbits labs storage for OpenStack +===================================== + +Lightbits labs Cinder Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To use the ``Lightbits labs`` Cinder backend, enable and +configure the ``Lightbits labs`` Cinder driver in +``/etc/kolla/globals.yml``. + +.. code-block:: yaml + + enable_cinder_backend_lightbits: "yes" + +.. end + +Also set the values for the following parameters in ``/etc/kolla/globals.yml``: + +- ``lightos_api_address`` +- ``lightos_api_port`` +- ``lightos_default_num_replicas`` +- ``lightos_skip_ssl_verify`` +- ``lightos_jwt`` + + +For details on how to use these parameters, refer to the +`Lightbits labs Cinder Reference Guide `_. + +There are numerous other parameters that can be set for this driver and +these are detailed in the above link. diff --git a/doc/source/reference/storage/cinder-guide.rst b/doc/source/reference/storage/cinder-guide.rst index 7c45a8d28e..cd674d8cc2 100644 --- a/doc/source/reference/storage/cinder-guide.rst +++ b/doc/source/reference/storage/cinder-guide.rst @@ -296,6 +296,9 @@ that appears in cinder.conf: * - Pure Storage FlashArray for OpenStack - cinder_backend_pure_nvme_tcp_name - Pure-FlashArray-nvme-tcp + * - Lightbits Labs storage backend + - cinder_backend_lightbits_name + - Lightbits-NVMe-TCP These are the names you use when `configuring `_ diff --git a/doc/source/reference/storage/index.rst b/doc/source/reference/storage/index.rst index ad18929a64..05c2d7bf60 100644 --- a/doc/source/reference/storage/index.rst +++ b/doc/source/reference/storage/index.rst @@ -12,6 +12,7 @@ supported by kolla. cinder-guide cinder-guide-quobyte cinder-guide-pure + cinder-guide-lightbits manila-guide manila-hnas-guide swift-guide diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 2afc0a1554..be251c77c0 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -342,6 +342,7 @@ workaround_ansible_issue_8743: yes #enable_cinder_backend_pure_fc: "no" #enable_cinder_backend_pure_roce: "no" #enable_cinder_backend_pure_nvme_tcp: "no" +#enable_cinder_backend_lightbits: "no" #enable_cloudkitty: "no" #enable_collectd: "no" #enable_cyborg: "no" diff --git a/releasenotes/notes/add-lightbits-cinder-plugin-support-f5445f2dbb1a56ed.yaml b/releasenotes/notes/add-lightbits-cinder-plugin-support-f5445f2dbb1a56ed.yaml new file mode 100644 index 0000000000..bae5510268 --- /dev/null +++ b/releasenotes/notes/add-lightbits-cinder-plugin-support-f5445f2dbb1a56ed.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add Lightbits(NVMe/TCP) Cinder plugin support.