.. This work is licensed under a
   Creative Commons Attribution 4.0 International License.
.. integration-labs:

.. integration_main-doc:

Integration Labs
================

.. important::
   The Integration team deals with several community labs:

   - The Azure staging lab
   - The DT lab
   - The University New Hempshire lab

Additionally integration contributors may deal with their own lab pushing results
in the integration portal (See DT http://testresults.opnfv.org/onap-integration/dt/dt.html)

Azure staging lab
-----------------

An additional Azure staging lab has been created for Guilin. It is installed as
any daily/weekly/gating labs (see CI/CD sections).
Contact the Integration team to get an access.

DT lab
------

The DT lab reported Master daily results in addition of Istanbul daily results.
Results are shared with the community in
`<https://logs.onap.org/onap-integration/daily/onap-master-daily-dell/>`_

University New Hempshire lab
----------------------------

Lab for community use. See `ONAP UNH lab <https://wiki.onap.org/display/DW/ONAP+UNH-IOL+Lab>`_
for more information.
