Jump to: navigation, search

Difference between revisions of "Cinder/tested-3rdParty-drivers"

(add devstack config information and more general clean up)
(cleaning up and clarifying ci information for cinder)
Line 1: Line 1:
 
= Driver Testing =
 
= Driver Testing =
  
=== Testing for new drivers in Kilo release ===
+
=== Testing for *NEW* drivers in Kilo release ===
We've implemented a simple wrapper around the tempest volume.api tests at https://github.com/openstack-dev/devstack/tree/master/driver_certs .  The process currently is for each vendor to run this test against their backend driver in their own environment.  The wrapper is very simple, it just does a fresh clone of the cinder and tempest repos and restarts services, then runs the tempest volume.api tagged tests in the tempest suites and collects the output to a temporary log file. Once you have a log file, create a cinder launchpad bug and attach the log to it. Post a comment to your driver's gerrit review with a link to the bug.
+
We've implemented a simple wrapper around the tempest volume.api tests at https://github.com/openstack-dev/devstack/tree/master/driver_certs .  The process currently is for each vendor to run this test against their backend driver in their own environment.  The wrapper is very simple, it just does a fresh clone of the cinder and tempest repos and restarts services, then runs the tempest volume.api tagged tests in the tempest suites and collects the output to a temporary log file. Once you have a log file, create a cinder launchpad bug and attach the log to it. Post a comment to your driver's gerrit review with a link to the bug. '''NOTE: Your driver needs to have a CI by the end of Kilo, or we will target your driver for removal in the L release.'''
  
=== Testing for drivers merged before Kilo release ===
+
=== Testing for drivers merged *BEFORE* Kilo release ===
'''Deadline for drivers merged before Kilo to have a CI is end of k-2 (5th of Feb 2015) - Discussion regarding this [http://eavesdrop.openstack.org/meetings/cinder/2014/cinder.2014-11-19-16.00.log.html here]'''
+
'''Deadline for drivers merged before Kilo to have a CI is end of k-2 (5th of Feb 2015). Failure will result in driver removal in the Kilo release. - Discussion regarding this [http://eavesdrop.openstack.org/meetings/cinder/2014/cinder.2014-11-19-16.00.log.html here]'''
  
To be designated as compatible, a third-party plugin and/or driver code must implement external third party testing. The testing should be Tempest executed against a Devstack build with the proposed code changes. The environment managed by the vendor should be configured to incorporate the plugin and/or driver solution. The OpenStack Infrastructure team has provided details on how to integrate 3rd party testing at:
+
The Cinder community (and other OpenStack projects) have agreed that if a vendor wishes to submit a driver for their particular storage device that said vendor should also be required to set up a third party CI system in their lab which runs tempest-dsvm-full against their device for every Cinder commit, and provides feedback in to Gerrit.
  
http://ci.openstack.org/third_party.html
+
=== Third Party CI Requirements ===
 +
* See the official [http://ci.openstack.org/third_party.html Third Party Testing] wiki.
  
and Tempest can be found at:
+
=== Existing CI Solutions ===
 +
* Puppet modules for deploying OpenStack CI
 +
** [https://github.com/rasselin/os-ext-testing Git repo]
 +
** Fork of Jay Pipe's external test repo and more up-to-date.
  
https://github.com/openstack/tempest
+
* Simple OpenStack Continuous Integration (sos-ci)
 +
** [https://github.com/j-griffith/sos-ci Git repo]
 +
** Builds Devstack virtual machines with Ansible.
 +
 
 +
* Jay Pipe's external testing series
 +
** '''Note:''' Jay's repo is outdated, but the articles are useful to read. A more updated fork exists.
 +
** [https://github.com/jaypipes/os-ext-testing Git Repo]
 +
** [http://www.joinfu.com/2014/01/understanding-the-openstack-ci-system/ Understanding the OpenStack CI]
 +
** [http://www.joinfu.com/2014/02/setting-up-an-external-openstack-testing-system/ Setting up CI Part 1]
 +
** [http://www.joinfu.com/2014/02/setting-up-an-openstack-external-testing-system-part-2 Setting up a CI Part 2]
  
 
=== Questions ===
 
=== Questions ===
Line 19: Line 32:
 
* Reach out to IRC nicks DuncanT or asselin on Freenode #openstack-cinder.
 
* Reach out to IRC nicks DuncanT or asselin on Freenode #openstack-cinder.
  
=== Configuring Devstack For Your Driver CI Testing ===
+
=== FAQ ===
 +
 
 +
==== What tests do I use? ====
 +
Use the OpenStack integration test suite [https://github.com/openstack/tempest Tempest]. Specifically you only need to run the [https://github.com/openstack/tempest/tree/master/tempest/api/volume volume tests]. These tests can be started with the following command from a Tempest repo:
 +
 
 +
<pre>
 +
/path/to/tempest/tools/pretty_tox.sh volume
 +
</pre>
 +
 
 +
==== How do I configure DevStack so my Driver Passes Tempest? ====
 
<pre>
 
<pre>
 
[[local|localrc]]
 
[[local|localrc]]
Line 46: Line 68:
 
</pre>
 
</pre>
  
== FAQ ==
+
==== When thirdparty CI voting will be required? ====
 
 
=== When thirdparty CI voting will be required ===
 
 
Once third party CI's become more common and stable, we'll revisit the subject. For now you can review the [http://eavesdrop.openstack.org/meetings/cinder/2014/cinder.2014-10-15-16.00.log.html discussion] on the decision.
 
Once third party CI's become more common and stable, we'll revisit the subject. For now you can review the [http://eavesdrop.openstack.org/meetings/cinder/2014/cinder.2014-10-15-16.00.log.html discussion] on the decision.

Revision as of 23:38, 18 December 2014

Driver Testing

Testing for *NEW* drivers in Kilo release

We've implemented a simple wrapper around the tempest volume.api tests at https://github.com/openstack-dev/devstack/tree/master/driver_certs . The process currently is for each vendor to run this test against their backend driver in their own environment. The wrapper is very simple, it just does a fresh clone of the cinder and tempest repos and restarts services, then runs the tempest volume.api tagged tests in the tempest suites and collects the output to a temporary log file. Once you have a log file, create a cinder launchpad bug and attach the log to it. Post a comment to your driver's gerrit review with a link to the bug. NOTE: Your driver needs to have a CI by the end of Kilo, or we will target your driver for removal in the L release.

Testing for drivers merged *BEFORE* Kilo release

Deadline for drivers merged before Kilo to have a CI is end of k-2 (5th of Feb 2015). Failure will result in driver removal in the Kilo release. - Discussion regarding this here

The Cinder community (and other OpenStack projects) have agreed that if a vendor wishes to submit a driver for their particular storage device that said vendor should also be required to set up a third party CI system in their lab which runs tempest-dsvm-full against their device for every Cinder commit, and provides feedback in to Gerrit.

Third Party CI Requirements

Existing CI Solutions

  • Puppet modules for deploying OpenStack CI
    • Git repo
    • Fork of Jay Pipe's external test repo and more up-to-date.
  • Simple OpenStack Continuous Integration (sos-ci)
    • Git repo
    • Builds Devstack virtual machines with Ansible.

Questions

  • Join Third Party Meeting
  • Reach out to IRC nicks DuncanT or asselin on Freenode #openstack-cinder.

FAQ

What tests do I use?

Use the OpenStack integration test suite Tempest. Specifically you only need to run the volume tests. These tests can be started with the following command from a Tempest repo:

/path/to/tempest/tools/pretty_tox.sh volume

How do I configure DevStack so my Driver Passes Tempest?

[[local|localrc]]
ADMIN_PASSWORD=password
MYSQL_PASSWORD=password
RABBIT_PASSWORD=password
SERVICE_PASSWORD=password
SERVICE_TOKEN=password

# These options define  expected driver capabilities
TEMPEST_VOLUME_DRIVER=foo
TEMPEST_VOLUME_VENDOR="Foo Inc"
TEMPEST_STORAGE_PROTOCOL=iSCSI

# These options allow you to specify a branch other than "master" be used
CINDER_REPO=https://review.openstack.org/openstack/cinder<br />
CINDER_BRANCH=refs/changes/83/72183/4

# Disable security groups entirely
Q_USE_SECGROUP=False
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver
CINDER_SECURE_DELETE=False

[[post-config|$CINDER_CONF]]
volume_driver=cinder.volume.drivers.foo.FooDriver

When thirdparty CI voting will be required?

Once third party CI's become more common and stable, we'll revisit the subject. For now you can review the discussion on the decision.