cinderlib/doc/source/validated.rst
Gorka Eguileor fbd7a72c1b Fix configuration options
When fixing bug #1854188 (Change-ID:
I62e992804a3ae6aa0b4aa4f883807783197d4b33) we broke configuration
options, because now we cannot pass configuration options from the
DEFAULT section, and some ListOpt don't work because cinderlib was
incorrectly expecting all these options to have bounds=True, but some
don't define it and default to False.

Most of the "crazy" code we currently have around oslo config is because
we wanted to support drivers that add configuration options on runtime
and reload the configuration.

This made sense when cinderlib was not an OpenStack official project,
but now that it is it makes more sense to force Cinder drivers to do the
right thing.

Aligned with this, this patch removes all the faking of the cinder.conf
file as a StringIO object, and simply sets things in the configuration
object that is passed to the drivers, which is the only thing they
should be using.

This will make cinderlib code more robust, even if some drivers will now
need to be modified to work with cinderlib.

We are validating known configuration options and ignoring unknown ones,
like Cinder does.

The NetApp driver was one of the drivers that would get broken, but
since I have access to it and we can make a very small and targeted
workaround to avoid breaking it, we do it as well.

Closes-Bug: #1856556
Change-Id: I67fbf8e9d7ee79f3d6617b4d0ae755dae0e1987a
2019-12-19 11:05:22 +01:00

7.1 KiB

Validated drivers

We are in the process of validating the cinderlib support of more Cinder drivers and adding more automated testing of drivers on Cinder's gate.

For now we have 2 backends, LVM and Ceph, that are tested on every Cinder and cinderlib patch that is submitted and merged.

We have also been able to manually test multiple backends ourselves and received reports of other backends that have been successfully tested.

In this document we present the list of all these drivers, and for each one we include the storage array that was used, the configuration (with masked sensitive data), any necessary external requirements -such as packages or libraries-, whether it is being automatically tested on the OpenStack gates or not, and any additional notes.

Currently the following backends have been verified:

LVM

  • Storage: LVM with LIO
  • Connection type: iSCSI
  • Requirements: None
  • Automated testing: On cinderlib and Cinder jobs.

Configuration:

backends:
    - volume_backend_name: lvm
      volume_driver: cinder.volume.drivers.lvm.LVMVolumeDriver
      volume_group: cinder-volumes
      target_protocol: iscsi
      target_helper: lioadm

Ceph

  • Storage: Ceph/RBD
  • Versions: Luminous v12.2.5
  • Connection type: RBD
  • Requirements:
    • ceph-common package
    • ceph.conf file
    • Ceph keyring file
  • Automated testing: On cinderlib and Cinder jobs.
  • Notes:
    • If we don't define the keyring configuration parameter (must use an absolute path) in our rbd_ceph_conf to point to our rbd_keyring_conf file, we'll need the rbd_keyring_conf to be in /etc/ceph/.
    • rbd_keyring_confg must always be present and must follow the naming

      convention of $cluster.client.$rbd_user.conf.

    • Current driver cannot delete a snapshot if there's a dependent volume (a volume created from it exists).

Configuration:

backends:
    - volume_backend_name: ceph
      volume_driver: cinder.volume.drivers.rbd.RBDDriver
      rbd_user: cinder
      rbd_pool: volumes
      rbd_ceph_conf: tmp/ceph.conf
      rbd_keyring_conf: /etc/ceph/ceph.client.cinder.keyring

XtremIO

  • Storage: Dell EMC XtremIO
  • Versions: v4.0.15-20_hotfix_3
  • Connection type: iSCSI, FC
  • Requirements: None
  • Automated testing: No

Configuration for iSCSI:

backends:
    - volume_backend_name: xtremio
      volume_driver: cinder.volume.drivers.dell_emc.xtremio.XtremIOISCSIDriver
      xtremio_cluster_name: CLUSTER_NAME
      use_multipath_for_image_xfer: true
      san_ip: w.x.y.z
      san_login: user
      san_password: toomanysecrets

Configuration for FC:

backends:
    - volume_backend_name: xtremio
      volume_driver: cinder.volume.drivers.dell_emc.xtremio.XtremIOFCDriver
      xtremio_cluster_name: CLUSTER_NAME
      use_multipath_for_image_xfer: true
      san_ip: w.x.y.z
      san_login: user
      san_password: toomanysecrets

Kaminario

  • Storage: Kaminario K2
  • Versions: VisionOS v6.0.72.10
  • Connection type: iSCSI
  • Requirements:
    • krest Python package from PyPi
  • Automated testing: No

Configuration:

backends:
    - volume_backend_name: kaminario
      volume_driver: cinder.volume.drivers.kaminario.kaminario_iscsi.KaminarioISCSIDriver
      san_ip: w.x.y.z
      san_login: user
      san_password: toomanysecrets
      use_multipath_for_image_xfer: true

SolidFire

  • Storage: NetApp SolidFire
  • Versions: Unknown
  • Connection type: iSCSI
  • Requirements: None
  • Automated testing: No

Configuration:

backends:
    - volume_backend_name: solidfire
      volume_driver: cinder.volume.drivers.solidfire.SolidFireDriver
      san_ip: w.x.y.z
      san_login: admin
      san_password: toomanysecrets
      sf_allow_template_caching = false
      image_volume_cache_enabled = True
      volume_clear = zero

VMAX

  • Storage: Dell EMC VMAX
  • Versions: Unknown
  • Connection type: iSCSI
  • Automated testing: No
size_precision: 2
backends:
    - image_volume_cache_enabled: True
      volume_clear: zero
      volume_backend_name: VMAX_ISCSI_DIAMOND
      volume_driver: cinder.volume.drivers.dell_emc.vmax.iscsi.VMAXISCSIDriver
      san_ip: w.x.y.z
      san_rest_port: 8443
      san_login: user
      san_password: toomanysecrets
      vmax_srp: SRP_1
      vmax_array: 000197800128
      vmax_port_groups: [os-iscsi-pg]

3PAR

  • Storage: HPE 3PAR 8200
  • Versions: 3.3.1.410 (MU2)+P32,P34,P37,P40,P41,P45
  • Connection type: iSCSI
  • Requirements:
    • python-3parclient>=4.1.0 Python package from PyPi
  • Automated testing: No
  • Notes:
    • Features work as expected, but due to a bug in the 3PAR driver the stats test (test_stats_with_creation_on_3par) fails.

Configuration:

backends:
     - volume_backend_name: 3par
       hpe3par_api_url: https://w.x.y.z:8080/api/v1
       hpe3par_username: user
       hpe3par_password: toomanysecrets
       hpe3par_cpg: [CPG_name]
       san_ip: w.x.y.z
       san_login: user
       san_password: toomanysecrets
       volume_driver: cinder.volume.drivers.hpe.hpe_3par_iscsi.HPE3PARISCSIDriver
       hpe3par_iscsi_ips: [w.x.y2.z2,w.x.y2.z3,w.x.y2.z4,w.x.y2.z4]
       hpe3par_debug: false
       hpe3par_iscsi_chap_enabled: false
       hpe3par_snapshot_retention: 0
       hpe3par_snapshot_expiration: 1
       use_multipath_for_image_xfer: true

Synology

  • Storage: Synology DS916+
  • Versions: DSM 6.2.1-23824 Update 6
  • Connection type: iSCSI
  • Requirements: None
  • Automated testing: No

Configuration:

backends:
     - volume_backend_name: synology
       volume_driver: cinder.volume.drivers.synology.synology_iscsi.SynoISCSIDriver
       iscs_protocol: iscsi
       target_ip_address: synology.example.com
       synology_admin_port: 5001
       synology_username: admin
       synology_password: toomanysecrets
       synology_pool_name: volume1
       driver_use_ssl: true

QNAP

  • Storage: QNAP TS-831X
  • Versions: 4.3.5.0728
  • Connection type: iSCSI
  • Requirements: None
  • Automated testing: No

Configuration:

backends:
     - volume_backend_name: qnap
       volume_driver: cinder.volume.drivers.qnap.QnapISCSIDriver
       use_multipath_for_image_xfer: true
       qnap_management_url: https://w.x.y.z:443
       iscsi_ip_address: w.x.y.z
       qnap_storage_protocol: iscsi
       qnap_poolname: Storage Pool 1
       san_login: admin
       san_password: toomanysecrets