Jump to: navigation, search

Difference between revisions of "DriverLog"

(Created page with "== DriverLog ==")
 
(DriverLog)
Line 1: Line 1:
== DriverLog ==
+
== Mission ==
 +
The DriverLog project is on a mission to provide information about drivers and plugins developed for both OpenStack itself and projects related to OpenStack.
 +
When it comes to a production OpenStack deployment a customer wants to have an assurance that certain hardware/virtual appliances will really work with certain OpenStack components.
 +
The DriverLog project aimed at enabling potential users/developers to quickly determine if a particular vendor driver exists and has been tested for a particular OpenStack release.
 +
 
 +
== Target audience ==
 +
==== Vendors ====
 +
* Readily available, community supported driver marketplace.
 +
* One common and measurable version of the truth with regards to vendor driver compatibility with OpenStack releases.
 +
==== OpenStack customers ====
 +
* Standardized information OpenStack users can use and trust.
 +
* Improved quality and reliability of OpenStack.
 +
==== OpenStack Community ====
 +
* Encourage more participation of vendors in the community.
 +
* Meet the quality, reliability and openness expected by OpenStack users.
 +
* Accelerate OpenStack mission of building a universal, open fabric for an heterogeneous set of components while avoiding component fragmentation and non-operable point products.
 +
== Description ==
 +
DriverLog is a service that collects and processes information about OpenStack drivers, their maintainers, availability in trunk, CI testing status and makes it possible to visualize it in a convenient web dashboard. 
 +
The Driver dashboard makes it possible to view data by project, vendor and other factors.
 +
== Tracked projects ==
 +
DriverLog stores a list of projects and their drivers in  the configuration file default_data.json.
 +
Any contributor can add an untracked project. The projects section represents the list of tracked projects. It has the following format:
 +
"projects": [
 +
        {
 +
            "id": "openstack/cinder",
 +
            "name": "Cinder (Block Storage)"
 +
        },
 +
        {
 +
            "id": "openstack/neutron",
 +
            "name": "Neutron (Networking)"
 +
        },
 +
        {
 +
            "id": "openstack/nova",
 +
            "name": "Nova (Compute)"
 +
        },
 +
        {
 +
            "id": "openstack/sahara",
 +
            "name": "Sahara (Data Processing)"
 +
        }
 +
    ],
 +
== Tracked releases ==
 +
The releases section represents the list of OpenStack releases. It has the following format:
 +
 
 +
    "releases": [
 +
        {
 +
            "id": "austin",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Austin"
 +
        },
 +
        {
 +
            "id": "bexar",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Bexar"
 +
        },
 +
        {
 +
            "id": "cactus",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Cactus"
 +
        },
 +
        {
 +
            "id": "diablo",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Diablo"
 +
        },
 +
        {
 +
            "id": "essex",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Essex"
 +
        },
 +
        {
 +
            "id": "folsom",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Folsom"
 +
        },
 +
        {
 +
            "id": "grizzly",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Grizzly"
 +
        },
 +
        {
 +
            "id": "havana",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Havana"
 +
        },
 +
        {
 +
            "id": "icehouse",
 +
            "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Icehouse"
 +
        },
 +
        {
 +
            "id": "juno",
 +
            "wiki": "https://wiki.openstack.org/wiki/Releases"
 +
        }
 +
    ],
 +
 
 +
== Tracked drivers ==
 +
Any contributor can add an untracked driver. The drivers section represents the list of tracked drivers . It has the following format:
 +
        {
 +
            "project_id": "openstack/cinder",
 +
            "vendor": "EMC",
 +
            "name": "SMI-S (FC)",
 +
            "maintainer": {
 +
                "name": "Xing Yang",
 +
                "email": "xing.yang@emc.com"
 +
            },
 +
            "os_versions": [
 +
                {
 +
                    "os_version": "Icehouse",
 +
                    "verification": "3rd_party_verification",
 +
                    "verifiers": [
 +
                        {
 +
                            "name": "Xing Yang",
 +
                            "launchpad_id": "xing-yang"
 +
                        }
 +
                    ],
 +
                    "success": true
 +
                }
 +
            ]
 +
        },
 +
For each driver the following parameters were specified:
 +
* project_id -  OpenStack project
 +
* vendor - Driver vendor
 +
* name - Driver name
 +
* Description- - driver description
 +
* Maintainer - information about driver maintainer, including name, email, irc id
 +
* wiki - link to the OpenStack wiki page with driver setup instructions
 +
:* os_versions -  a list of OpenStack releases the driver supported in
 +
:* os_version - release version
 +
:* verification - this parameter shows if the driver is tested on external CI.  If vendor run tests on external CI the parameter should be set to ‘external_ci_verification’. If not it will be ‘self_verification’.
 +
:* success - the testing status
 +
 
 +
== How To’s ==
 +
==== Add a new driver to DriverLog ====
 +
* A vendor wants to add a new driver.
 +
* A vendor adds a new driver  section to the DriverLog JSON file.
 +
*        {
 +
*            "project_id": "openstack/neutron",
 +
*            "vendor": "Extreme Networks",
 +
*            "name": "Neutron Plugin",
 +
*            "wiki": "http://extrcdn.extremenetworks.com/wp-content/uploads/2014/02/SDN_OpenStack_Install_Guide_Final1.pdf",
 +
*            "os_versions": [
 +
*            ]
 +
*        },
 +
*
 +
* Records in config file should be sorted by key - (project_id, vendor, name). The configuration file automatically validated against the config file scheme.
 +
* A project DriverLog Core Engineer receives a request to review a commit.
 +
* An DriverLog Core Engineer makes a review. If everything is ok  an DriverLog Core Engineer merges an update.
 +
* A driver is getting displayed in the Drivers list on the DriverLog Dashboard. ‘CI tested’ column will be empty.
 +
 
 +
==== External CI verification ====
 +
* In order to update to this level, a vendor must have deployed and external voting CI environment that runs automatic tests against a driver on every commit. Instructions for setting up external CI can be found here:
 +
:* [http://www.joinfu.com/2014/01/understanding-the-openstack-ci-system/ Understanding the OpenStack CI System]
 +
:* [http://www.joinfu.com/2014/02/setting-up-an-external-openstack-testing-system/comment-page-1/#comment-216389 Setting Up an External OpenStack Testing System – Part 1]
 +
:* [http://www.joinfu.com/2014/02/setting-up-an-openstack-external-testing-system-part-2/ Setting Up an External OpenStack Testing System – Part 2]
 +
* Once a vendor set up an external CI environment and tested a driver there he/she can change the driver’s verification level to ‘external_ci_verification’.
 +
* A verification level ‘external_ci_verification’  and a CI environment ID (ci_id) should be set up in the configuration file.
 +
''Note: ci_id is a required field, otherwise backend will not find voting marks in Gerrit.''
 +
    {
 +
            "project_id": "openstack/neutron",
 +
            "vendor": "Embrane",
 +
            "name": "Neutron Plugin",
 +
            "maintainer": {
 +
                "name": "Ivar Lazzaro",
 +
                "irc": "ivar-lazzaro"
 +
            },
 +
            "wiki": "https://wiki.openstack.org/wiki/Neutron/EmbraneNeutronPlugin",
 +
            "os_versions": [
 +
                {
 +
                    "verification": "external_ci_verification",
 +
                    "ci_id": "eci"
 +
                }
 +
            ]
 +
        },
 +
 
 +
* A vendor submits a patch.
 +
* A DriverLog Core Engineer makes a review. If everything is ok  he/she merges an update.
 +
* The actual results of driver testing are stored in Gerrit. The backend runs as a scheduled background butch performing the following logic every 4 hours:
 +
:* The DriverLog backend by using CI environment ID (ci_id) recognizes which Gerrit reviews are related to this driver.
 +
:* The backend parses all merged patches from new to old. 
 +
:* For every review it checks ci_id and branch (version). 
 +
:* If pair ci_id+branch appears for the first time, then the backend stores the pair with test run result and link
 +
''Note: Only known ci_id’s from default_data.json are processed by the backend.''
 +
== Release Notes ==
 +
'''Release 0.1'''
 +
* Nova, Cinder, Neutron and Sahara projects included into DriverLog.
 +
* Information about supported drivers from projects’ wiki pages was manually converted into JSON config file:
 +
:* https://wiki.openstack.org/wiki/HypervisorSupportMatrix 
 +
:* https://wiki.openstack.org/wiki/CinderSupportMatrix 
 +
:* https://wiki.openstack.org/wiki/Neutron#Using_Neutron
 +
== Code ==
 +
==== Source ====
 +
https://github.com/stackforge/driverlog
 +
==== Pending Code Reviews ====
 +
https://review.openstack.org/#/q/status:open+driverlog,n,z
 +
==== Project space ====
 +
https://launchpad.net/driverlog
 +
==== Blueprints ====
 +
https://blueprints.launchpad.net/driverlog
 +
==== Bugs ====
 +
https://bugs.launchpad.net/driverlog
 +
==== Web-site ====
 +
http://staging.stackalytics.com/driverlog/

Revision as of 15:32, 23 April 2014

Mission

The DriverLog project is on a mission to provide information about drivers and plugins developed for both OpenStack itself and projects related to OpenStack. When it comes to a production OpenStack deployment a customer wants to have an assurance that certain hardware/virtual appliances will really work with certain OpenStack components. The DriverLog project aimed at enabling potential users/developers to quickly determine if a particular vendor driver exists and has been tested for a particular OpenStack release.

Target audience

Vendors

  • Readily available, community supported driver marketplace.
  • One common and measurable version of the truth with regards to vendor driver compatibility with OpenStack releases.

OpenStack customers

  • Standardized information OpenStack users can use and trust.
  • Improved quality and reliability of OpenStack.

OpenStack Community

  • Encourage more participation of vendors in the community.
  • Meet the quality, reliability and openness expected by OpenStack users.
  • Accelerate OpenStack mission of building a universal, open fabric for an heterogeneous set of components while avoiding component fragmentation and non-operable point products.

Description

DriverLog is a service that collects and processes information about OpenStack drivers, their maintainers, availability in trunk, CI testing status and makes it possible to visualize it in a convenient web dashboard. The Driver dashboard makes it possible to view data by project, vendor and other factors.

Tracked projects

DriverLog stores a list of projects and their drivers in the configuration file default_data.json. Any contributor can add an untracked project. The projects section represents the list of tracked projects. It has the following format:

"projects": [
       {
           "id": "openstack/cinder",
           "name": "Cinder (Block Storage)"
       },
       {
           "id": "openstack/neutron",
           "name": "Neutron (Networking)"
       },
       {
           "id": "openstack/nova",
           "name": "Nova (Compute)"
       },
       {
           "id": "openstack/sahara",
           "name": "Sahara (Data Processing)"
       }
   ],

Tracked releases

The releases section represents the list of OpenStack releases. It has the following format:

   "releases": [
       {
           "id": "austin",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Austin"
       },
       {
           "id": "bexar",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Bexar"
       },
       {
           "id": "cactus",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Cactus"
       },
       {
           "id": "diablo",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Diablo"
       },
       {
           "id": "essex",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Essex"
       },
       {
           "id": "folsom",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Folsom"
       },
       {
           "id": "grizzly",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Grizzly"
       },
       {
           "id": "havana",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Havana"
       },
       {
           "id": "icehouse",
           "wiki": "https://wiki.openstack.org/wiki/ReleaseNotes/Icehouse"
       },
       {
           "id": "juno",
           "wiki": "https://wiki.openstack.org/wiki/Releases"
       }
   ],

Tracked drivers

Any contributor can add an untracked driver. The drivers section represents the list of tracked drivers . It has the following format:

        {
           "project_id": "openstack/cinder",
           "vendor": "EMC",
           "name": "SMI-S (FC)",
           "maintainer": {
               "name": "Xing Yang",
               "email": "xing.yang@emc.com"
           },
           "os_versions": [
               {
                   "os_version": "Icehouse",
                   "verification": "3rd_party_verification",
                   "verifiers": [
                       {
                           "name": "Xing Yang",
                           "launchpad_id": "xing-yang"
                       }
                   ],
                   "success": true
               }
           ]
       },

For each driver the following parameters were specified:

  • project_id - OpenStack project
  • vendor - Driver vendor
  • name - Driver name
  • Description- - driver description
  • Maintainer - information about driver maintainer, including name, email, irc id
  • wiki - link to the OpenStack wiki page with driver setup instructions
  • os_versions - a list of OpenStack releases the driver supported in
  • os_version - release version
  • verification - this parameter shows if the driver is tested on external CI. If vendor run tests on external CI the parameter should be set to ‘external_ci_verification’. If not it will be ‘self_verification’.
  • success - the testing status

How To’s

Add a new driver to DriverLog

  • A vendor wants to add a new driver.
  • A vendor adds a new driver section to the DriverLog JSON file.
  • {
  • "project_id": "openstack/neutron",
  • "vendor": "Extreme Networks",
  • "name": "Neutron Plugin",
  • "wiki": "http://extrcdn.extremenetworks.com/wp-content/uploads/2014/02/SDN_OpenStack_Install_Guide_Final1.pdf",
  • "os_versions": [
  • ]
  • },
  • Records in config file should be sorted by key - (project_id, vendor, name). The configuration file automatically validated against the config file scheme.
  • A project DriverLog Core Engineer receives a request to review a commit.
  • An DriverLog Core Engineer makes a review. If everything is ok an DriverLog Core Engineer merges an update.
  • A driver is getting displayed in the Drivers list on the DriverLog Dashboard. ‘CI tested’ column will be empty.

External CI verification

  • In order to update to this level, a vendor must have deployed and external voting CI environment that runs automatic tests against a driver on every commit. Instructions for setting up external CI can be found here:
  • Once a vendor set up an external CI environment and tested a driver there he/she can change the driver’s verification level to ‘external_ci_verification’.
  • A verification level ‘external_ci_verification’ and a CI environment ID (ci_id) should be set up in the configuration file.

Note: ci_id is a required field, otherwise backend will not find voting marks in Gerrit.

    {
           "project_id": "openstack/neutron",
           "vendor": "Embrane",
           "name": "Neutron Plugin",
           "maintainer": {
               "name": "Ivar Lazzaro",
               "irc": "ivar-lazzaro"
           },
           "wiki": "https://wiki.openstack.org/wiki/Neutron/EmbraneNeutronPlugin",
           "os_versions": [
               {
                   "verification": "external_ci_verification",
                   "ci_id": "eci"
               }
           ]
       },
  • A vendor submits a patch.
  • A DriverLog Core Engineer makes a review. If everything is ok he/she merges an update.
  • The actual results of driver testing are stored in Gerrit. The backend runs as a scheduled background butch performing the following logic every 4 hours:
  • The DriverLog backend by using CI environment ID (ci_id) recognizes which Gerrit reviews are related to this driver.
  • The backend parses all merged patches from new to old.
  • For every review it checks ci_id and branch (version).
  • If pair ci_id+branch appears for the first time, then the backend stores the pair with test run result and link

Note: Only known ci_id’s from default_data.json are processed by the backend.

Release Notes

Release 0.1

  • Nova, Cinder, Neutron and Sahara projects included into DriverLog.
  • Information about supported drivers from projects’ wiki pages was manually converted into JSON config file:

Code

Source

https://github.com/stackforge/driverlog

Pending Code Reviews

https://review.openstack.org/#/q/status:open+driverlog,n,z

Project space

https://launchpad.net/driverlog

Blueprints

https://blueprints.launchpad.net/driverlog

Bugs

https://bugs.launchpad.net/driverlog

Web-site

http://staging.stackalytics.com/driverlog/