Add model for contrail4.0

Change-Id: I94b65dd06ce8eb376dd8e9bcf96d786621d32233
diff --git a/tcp_tests/tests/system/test_install_opencontrail.py b/tcp_tests/tests/system/test_install_opencontrail.py
new file mode 100644
index 0000000..74b5d2b
--- /dev/null
+++ b/tcp_tests/tests/system/test_install_opencontrail.py
@@ -0,0 +1,122 @@
+#    Copyright 2016 Mirantis, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+import pytest
+
+from tcp_tests import logger
+from tcp_tests import settings
+
+LOG = logger.logger
+
+
+@pytest.mark.deploy
+class TestOpenContrail(object):
+    """Test class for testing OpenContrail on a TCP lab"""
+
+    @pytest.mark.fail_snapshot
+    @pytest.mark.with_rally(rally_node="ctl01.")
+    def test_opencontrail_simple(self, config, underlay, salt_deployed,
+                                 openstack_deployed, sl_deployed, show_step):
+        """Runner for Juniper contrail-tests
+
+        Scenario:
+            1. Prepare salt on hosts
+            2. Setup controller nodes
+            3. Setup compute nodes
+            4. Run tempest
+            5. Run SL test
+        """
+        openstack_deployed._salt.local(
+            tgt='*', fun='cmd.run',
+            args='service ntp stop; ntpd -gq; service ntp start')
+
+        if settings.RUN_TEMPEST:
+            tempest_conf_name = '/var/lib/contrail_fixed_mcp.conf'
+            openstack_deployed.run_tempest(target='ctl01',
+                                           pattern=settings.PATTERN,
+                                           conf_name=tempest_conf_name)
+            openstack_deployed.download_tempest_report(stored_node='ctl01')
+        # Run SL component tetsts
+        if settings.RUN_SL_TESTS:
+            show_step(5)
+            sl_deployed.run_sl_functional_tests(
+                'ctl01',
+                '/root/stacklight-pytest/stacklight_tests/',
+                'tests/prometheus',
+                'test_alerts.py')
+            show_step(8)
+            # Download report
+            sl_deployed.download_sl_test_report(
+                'ctl01',
+                '/root/stacklight-pytest/stacklight_tests/report.xml')
+        LOG.info("*************** DONE **************")
+
+    @pytest.mark.fail_snapshot
+    @pytest.mark.with_rally(rally_node="ctl01.")
+    def test_opencontrail3_maas(self, config, underlay, salt_actions,
+                                openstack_deployed, show_step, sl_deployed):
+        """Runner for Juniper contrail-tests
+
+        Scenario:
+            1. Prepare salt on hosts
+            2. Setup controller nodes
+            3. Setup compute nodes
+            4. Run tempest
+            5. Exporting results
+            6. Check docker services
+            7. Run SL tests
+            8. Download sl tests report
+        """
+        openstack_deployed._salt.local(
+            tgt='*', fun='cmd.run',
+            args='service ntp stop; ntpd -gq; service ntp start')
+
+        if settings.RUN_TEMPEST:
+            show_step(4)
+            openstack_deployed.run_tempest(target='ctl01',
+                                           pattern=settings.PATTERN)
+            openstack_deployed.download_tempest_report(stored_node='ctl01')
+
+        expected_service_list = ['monitoring_server',
+                                 'monitoring_remote_agent',
+                                 'dashboard_grafana',
+                                 'monitoring_alertmanager',
+                                 'monitoring_remote_collector',
+                                 'monitoring_pushgateway']
+        mon_nodes = sl_deployed.get_monitoring_nodes()
+        LOG.debug('Mon nodes list {0}'.format(mon_nodes))
+
+        prometheus_relay_enabled = salt_actions.get_pillar(
+            tgt=mon_nodes[0],
+            pillar="prometheus:relay:enabled")[0]
+        if not prometheus_relay_enabled:
+            # InfluxDB is used if prometheus relay service is not installed
+            expected_service_list.append('monitoring_remote_storage_adapter')
+        show_step(6)
+        sl_deployed.check_docker_services(mon_nodes, expected_service_list)
+        # Run SL component tetsts
+        if settings.RUN_SL_TESTS:
+            show_step(7)
+            sl_deployed.run_sl_functional_tests(
+                'ctl01',
+                '/root/stacklight-pytest/stacklight_tests/',
+                'tests/prometheus',
+                'test_alerts.py')
+            show_step(8)
+            # Download report
+            sl_deployed.download_sl_test_report(
+                'ctl01',
+                '/root/stacklight-pytest/stacklight_tests/report.xml')
+
+        LOG.info("*************** DONE **************")