# that have been switched using labels for slaves
#--------------------------------
pod:
+# fuel CI PODs
- baremetal:
slave-label: fuel-baremetal
installer: fuel
slave-label: fuel-baremetal
installer: fuel
<<: *master
+
+# joid CI PODs
+ - baremetal:
+ slave-label: joid-baremetal
+ installer: joid
+ <<: *master
+ - virtual:
+ slave-label: joid-virtual
+ installer: joid
+ <<: *master
+ - baremetal:
+ slave-label: joid-baremetal
+ installer: joid
+ <<: *brahmaputra
+ - virtual:
+ slave-label: joid-virtual
+ installer: joid
+ <<: *brahmaputra
#--------------------------------
# Installers not using labels
# CI PODs
slave-label: '{pod}'
installer: compass
<<: *brahmaputra
- - intel-pod6:
- slave-label: '{pod}'
- installer: joid
- <<: *master
- - intel-pod5:
- slave-label: '{pod}'
- installer: joid
- <<: *brahmaputra
#--------------------------------
# None-CI PODs
#--------------------------------
slave-label: '{pod}'
installer: compass
<<: *master
- - virtual:
- slave-label: '{pod}'
- installer: joid
- <<: *master
- huawei-pod2:
slave-label: '{pod}'
installer: compass
slave-label: '{pod}'
installer: compass
<<: *brahmaputra
- - virtual:
- slave-label: '{pod}'
- installer: joid
- <<: *brahmaputra
#--------------------------------
testsuite:
#--------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
#--------------------------------
-# brahmaputra
+# CI PODs
#--------------------------------
pod:
- - intel-pod5:
- <<: *brahmaputra
- - orange-pod2:
+ - baremetal:
+ slave-label: joid-baremetal
+ <<: *master
+ - virtual:
+ slave-label: joid-virtual
+ <<: *master
+ - baremetal:
+ slave-label: joid-baremetal
<<: *brahmaputra
- virtual:
+ slave-label: joid-virtual
<<: *brahmaputra
#--------------------------------
-# master
+# None-CI PODs
#--------------------------------
- - intel-pod6:
- <<: *master
- orange-pod2:
+ slave-label: orange-pod2
+ <<: *brahmaputra
+ - orange-pod2:
+ slave-label: orange-pod2
<<: *master
- juniper-pod1:
- <<: *master
- - virtual:
+ slave-label: juniper-pod1
<<: *master
#--------------------------------
# new scenario descriptions
scenario:
- 'os-nosdn-nofeature-noha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'daily-trigger-disabled'
- 'os-nosdn-nofeature-ha':
auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-ha':
- 'os-onos-nofeature-ha':
auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-noha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'daily-trigger-disabled'
- 'os-onos-nofeature-noha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'daily-trigger-disabled'
- 'os-ocl-nofeature-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'daily-trigger-disabled'
- 'os-ocl-nofeature-noha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'daily-trigger-disabled'
jobs:
- 'joid-{scenario}-{pod}-daily-{stream}'
properties:
- throttle:
enabled: true
- max-total: 1
+ max-total: 4
max-per-node: 1
- build-blocker:
use-build-blocker: true
- project-parameter:
project: '{project}'
- '{installer}-defaults'
- - '{pod}-defaults':
+ - '{slave-label}-defaults':
installer: '{installer}'
- string:
name: DEPLOY_SCENARIO
properties:
- throttle:
enabled: true
- max-total: 1
+ max-total: 4
max-per-node: 1
- build-blocker:
use-build-blocker: true
- project-parameter:
project: '{project}'
- '{installer}-defaults'
- - '{pod}-defaults':
+ - '{slave-label}-defaults':
installer: '{installer}'
- string:
name: DEPLOY_SCENARIO
########################
# os-nosdn-nofeature-ha trigger - branch: master
- trigger:
- name: 'joid-os-nosdn-nofeature-ha-intel-pod5-master-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-baremetal-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-nosdn-nofeature-ha-intel-pod6-master-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '#0 2 * * *'
+ - timed: ''
- trigger:
name: 'joid-os-nosdn-nofeature-ha-orange-pod2-master-trigger'
triggers:
name: 'joid-os-nosdn-nofeature-ha-juniper-pod1-master-trigger'
triggers:
- timed: ''
-- trigger:
- name: 'joid-os-nosdn-nofeature-ha-virtual-master-trigger'
- triggers:
- - timed: ''
+
# os-nosdn-nofeature-ha trigger - branch: stable/brahmaputra
- trigger:
- name: 'joid-os-nosdn-nofeature-ha-intel-pod5-brahmaputra-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-baremetal-brahmaputra-trigger'
triggers:
- timed: '0 2 * * *'
- trigger:
- name: 'joid-os-nosdn-nofeature-ha-intel-pod6-brahmaputra-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
name: 'joid-os-nosdn-nofeature-ha-juniper-pod1-brahmaputra-trigger'
triggers:
- timed: ''
-- trigger:
- name: 'joid-os-nosdn-nofeature-ha-virtual-brahmaputra-trigger'
- triggers:
- - timed: ''
-
# os-odl_l2-nofeature-ha trigger - branch: master
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-intel-pod5-master-trigger'
+ name: 'joid-os-odl_l2-nofeature-ha-baremetal-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-intel-pod6-master-trigger'
+ name: 'joid-os-odl_l2-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '#0 10 * * *'
+ - timed: ''
- trigger:
name: 'joid-os-odl_l2-nofeature-ha-orange-pod2-master-trigger'
triggers:
name: 'joid-os-odl_l2-nofeature-ha-juniper-pod1-master-trigger'
triggers:
- timed: ''
-- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-virtual-master-trigger'
- triggers:
- - timed: ''
# os-odl_l2-nofeature-ha trigger - branch: stable/brahmaputra
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-intel-pod5-brahmaputra-trigger'
+ name: 'joid-os-odl_l2-nofeature-ha-baremetal-brahmaputra-trigger'
triggers:
- timed: '0 10 * * *'
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-intel-pod6-brahmaputra-trigger'
+ name: 'joid-os-odl_l2-nofeature-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
name: 'joid-os-odl_l2-nofeature-ha-juniper-pod1-brahmaputra-trigger'
triggers:
- timed: ''
-- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-virtual-brahmaputra-trigger'
- triggers:
- - timed: ''
# os-onos-nofeature-ha trigger - branch: master
- trigger:
- name: 'joid-os-onos-nofeature-ha-intel-pod5-master-trigger'
+ name: 'joid-os-onos-nofeature-ha-baremetal-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-onos-nofeature-ha-intel-pod6-master-trigger'
+ name: 'joid-os-onos-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '#0 18 * * *'
+ - timed: ''
- trigger:
name: 'joid-os-onos-nofeature-ha-orange-pod2-master-trigger'
triggers:
name: 'joid-os-onos-nofeature-ha-juniper-pod1-master-trigger'
triggers:
- timed: ''
-- trigger:
- name: 'joid-os-onos-nofeature-ha-virtual-master-trigger'
- triggers:
- - timed: ''
# os-onos-nofeature-ha trigger - branch: stable/brahmaputra
- trigger:
- name: 'joid-os-onos-nofeature-ha-intel-pod5-brahmaputra-trigger'
+ name: 'joid-os-onos-nofeature-ha-baremetal-brahmaputra-trigger'
triggers:
- timed: '0 18 * * *'
- trigger:
- name: 'joid-os-onos-nofeature-ha-intel-pod6-brahmaputra-trigger'
+ name: 'joid-os-onos-nofeature-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
name: 'joid-os-onos-nofeature-ha-juniper-pod1-brahmaputra-trigger'
triggers:
- timed: ''
-- trigger:
- name: 'joid-os-onos-nofeature-ha-virtual-brahmaputra-trigger'
- triggers:
- - timed: ''
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+ name: 'joid-baremetal-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'joid-baremetal'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: CEPH_DISKS
+ default: /srv
+ description: "Disks to use by ceph (comma separated list)"
+ - string:
+ name: EXTERNAL_NETWORK
+ default: ext-net;flat;10.5.15.5;10.5.15.250;10.5.15.254;10.5.15.0/24
+ description: "External network to create for pod5 (name;type;first ip;last ip; gateway;network)"
+- parameter:
+ name: 'joid-virtual-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'joid-virtual'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
- parameter:
name: 'lf-pod1-defaults'
parameters:
builders:
- shell: |
- echo "Nothing to verify!"
+ #/bin/bash
+ set -o errexit
+ set -o pipefail
+ set -o xtrace
+ export PATH=$PATH:/usr/local/bin/
+
+ # pep8 check parser/tosca2heat/tosca-parser
+ echo "Running tox -e pep8 on tosca2heat ..."
+ cd $WORKSPACE/parser/tosca2heat/tosca-parser
+ tox -e pep8
+ cd $WORKSPACE/parser/tosca2heat/heat-translator
+ tox -e pep8
# that have been switched using labels for slaves
#--------------------------------
pod:
+# fuel CI PODs
- baremetal:
slave-label: fuel-baremetal
installer: fuel
installer: fuel
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
<<: *master
+
+# joid CI PODs
+ - baremetal:
+ slave-label: joid-baremetal
+ installer: joid
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *master
+ - virtual:
+ slave-label: joid-virtual
+ installer: joid
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *master
+ - baremetal:
+ slave-label: joid-baremetal
+ installer: joid
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *brahmaputra
+ - virtual:
+ slave-label: joid-virtual
+ installer: joid
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *brahmaputra
#--------------------------------
# Installers not using labels
# CI PODs
installer: compass
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
<<: *brahmaputra
- - intel-pod6:
- slave-label: '{pod}'
- installer: joid
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- <<: *master
- - intel-pod5:
- slave-label: '{pod}'
- installer: joid
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- <<: *brahmaputra
#--------------------------------
# None-CI PODs
#--------------------------------
installer: compass
auto-trigger-name: 'yardstick-daily-huawei-pod4-trigger'
<<: *master
- - virtual:
- slave-label: '{pod}'
- installer: joid
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- <<: *master
- huawei-virtual:
slave-label: '{pod}'
installer: compass
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
<<: *brahmaputra
- - virtual:
- slave-label: '{pod}'
- installer: joid
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- <<: *brahmaputra
#--------------------------------
testsuite:
- 'daily'
# parameter macros
########################
- parameter:
- name: 'yardstick-params-intel-pod5'
+ name: 'yardstick-params-fuel-baremetal'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
-
- parameter:
- name: 'yardstick-params-intel-pod6'
+ name: 'yardstick-params-fuel-virtual'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-i 104.197.68.199:8086'
+ default: ''
description: 'Arguments to use in order to choose the backend DB'
-
- parameter:
- name: 'yardstick-params-intel-pod8'
+ name: 'yardstick-params-joid-baremetal'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: ''
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
- name: 'yardstick-params-lf-pod1'
+ name: 'yardstick-params-joid-virtual'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-i 104.197.68.199:8086'
+ default: ''
description: 'Arguments to use in order to choose the backend DB'
-
- parameter:
- name: 'yardstick-params-lf-pod2'
+ name: 'yardstick-params-intel-pod8'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-i 104.197.68.199:8086'
+ default: ''
description: 'Arguments to use in order to choose the backend DB'
- parameter:
- name: 'yardstick-params-fuel-baremetal'
+ name: 'yardstick-params-lf-pod1'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
description: 'Arguments to use in order to choose the backend DB'
- parameter:
- name: 'yardstick-params-fuel-virtual'
+ name: 'yardstick-params-lf-pod2'
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: ''
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
return CreateResponse(href=href).format()
-class VersionHandler(RequestHandler):
+class VersionHandler(GenericApiHandler):
""" Display a message for the API version """
def get(self):
- self.write("Collection of test result API, v1")
+ self.finish_request([{'v1': 'basics'}])
class PodHandler(GenericApiHandler):
return tornado.web.Application(
[
# GET /version => GET API version
- (r"/version", VersionHandler),
+ (r"/versions", VersionHandler),
# few examples:
# GET /pods => Get all pods
# GET /pods/1 => Get details on POD 1
- (r"/pods", PodHandler),
- (r"/pods/([^/]+)", PodHandler),
+ (r"/api/v1/pods", PodHandler),
+ (r"/api/v1/pods/([^/]+)", PodHandler),
# few examples:
# GET /projects
# GET /projects/yardstick
- (r"/projects", ProjectHandler),
- (r"/projects/([^/]+)", ProjectHandler),
+ (r"/api/v1/projects", ProjectHandler),
+ (r"/api/v1/projects/([^/]+)", ProjectHandler),
# few examples
# GET /projects/qtip/cases => Get cases for qtip
#
- (r"/projects/([^/]+)/cases", TestcaseHandler),
- (r"/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
+ (r"/api/v1/projects/([^/]+)/cases", TestcaseHandler),
+ (r"/api/v1/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
# (r"/test_cases/([^/]+)", TestCasesHandler),
# new path to avoid a long depth
# POST /results =>
# Push results with mandatory request payload parameters
# (project, case, and pod)
- (r"/results", TestResultsHandler),
- (r"/results([^/]*)", TestResultsHandler),
- (r"/results/([^/]*)", TestResultsHandler),
+ (r"/api/v1/results", TestResultsHandler),
+ (r"/api/v1/results([^/]*)", TestResultsHandler),
+ (r"/api/v1/results/([^/]*)", TestResultsHandler),
# Method to manage Dashboard ready results
# GET /dashboard?project=functest&case=vPing&pod=opnfv-jump2
# => get results in dasboard ready format
# get /dashboard
# => get the list of project with dashboard ready results
- (r"/dashboard", DashboardHandler),
- (r"/dashboard([^/]*)", DashboardHandler),
- (r"/dashboard/([^/]*)", DashboardHandler),
+ (r"/dashboard/v1/results", DashboardHandler),
+ (r"/dashboard/v1/results([^/]*)", DashboardHandler),
],
db=db,
debug=CONF.api_debug_on,
def get_app(self):
return Application(
[
- (r"/version", VersionHandler),
- (r"/pods", PodHandler),
- (r"/pods/([^/]+)", PodHandler),
- (r"/projects", ProjectHandler),
- (r"/projects/([^/]+)", ProjectHandler),
- (r"/projects/([^/]+)/cases", TestcaseHandler),
- (r"/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
- (r"/results", TestResultsHandler),
- (r"/results([^/]*)", TestResultsHandler),
- (r"/results/([^/]*)", TestResultsHandler),
- (r"/dashboard", DashboardHandler),
- (r"/dashboard([^/]*)", DashboardHandler),
- (r"/dashboard/([^/]*)", DashboardHandler),
+ (r"/versions", VersionHandler),
+ (r"/api/v1/pods", PodHandler),
+ (r"/api/v1/pods/([^/]+)", PodHandler),
+ (r"/api/v1/projects", ProjectHandler),
+ (r"/api/v1/projects/([^/]+)", ProjectHandler),
+ (r"/api/v1/projects/([^/]+)/cases", TestcaseHandler),
+ (r"/api/v1/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
+ (r"/api/v1/results", TestResultsHandler),
+ (r"/api/v1/results([^/]*)", TestResultsHandler),
+ (r"/api/v1/results/([^/]*)", TestResultsHandler),
+ (r"/dashboard/v1/results", DashboardHandler),
+ (r"/dashboard/v1/results([^/]*)", DashboardHandler),
],
db=fake_pymongo,
debug=True,
class TestDashboardBase(TestResultBase):
def setUp(self):
super(TestDashboardBase, self).setUp()
- self.basePath = '/dashboard'
- self.create_help('/results', self.req_d)
- self.create_help('/results', self.req_d)
+ self.basePath = '/dashboard/v1/results'
+ self.create_help('/api/v1/results', self.req_d)
+ self.create_help('/api/v1/results', self.req_d)
self.list_res = None
self.req_e = PodCreateRequest('zte-2', 'metal', 'zte pod 2')
self.get_res = Pod
self.list_res = Pods
- self.basePath = '/pods'
+ self.basePath = '/api/v1/pods'
def assert_get_body(self, pod, req=None):
if not req:
self.assertEqual(code, HTTP_FORBIDDEN)
self.assertIn('already exists', body)
- def _assertMeta(self, meta, success):
- self.assertEqual(meta.success, success)
- if success:
- self.assertEqual(meta.uri, '/pods/{}'.format(self.req_d.name))
-
class TestPodGet(TestPodBase):
def test_notExist(self):
self.get_res = Project
self.list_res = Projects
self.update_res = Project
- self.basePath = '/projects'
+ self.basePath = '/api/v1/projects'
def assert_body(self, project, req=None):
if not req:
trust_indicator=self.trust_indicator)
self.get_res = TestResult
self.list_res = TestResults
- self.basePath = '/results'
+ self.basePath = '/api/v1/results'
self.req_pod = PodCreateRequest(self.pod, 'metal', 'zte pod 1')
self.req_project = ProjectCreateRequest(self.project, 'vping test')
self.req_testcase = TestcaseCreateRequest('/cases/vping',
self.case,
'vping-ssh test')
- self.create_help('/pods', self.req_pod)
- self.create_help('/projects', self.req_project)
- self.create_help('/projects/%s/cases', self.req_testcase, self.project)
+ self.create_help('/api/v1/pods', self.req_pod)
+ self.create_help('/api/v1/projects', self.req_project)
+ self.create_help('/api/v1/projects/%s/cases',
+ self.req_testcase,
+ self.project)
def assert_res(self, code, result):
self.assertEqual(code, HTTP_OK)
self.get_res = Testcase
self.list_res = Testcases
self.update_res = Testcase
- self.basePath = '/projects/%s/cases'
+ self.basePath = '/api/v1/projects/%s/cases'
self.create_project()
def assert_body(self, case, req=None):
def create_project(self):
req_p = ProjectCreateRequest('functest', 'vping-ssh test')
- self.create_help('/projects', req_p)
+ self.create_help('/api/v1/projects', req_p)
self.project = req_p.name
def create_d(self):
+import json
import unittest
from test_base import TestBase
__author__ = 'serena'
-class TestVersion(TestBase):
- def test_get_version(self):
- response = self.fetch('/version')
- self.assertEqual(response.code, 200)
+class TestVersionbBase(TestBase):
+ def setUp(self):
+ super(TestVersionbBase, self).setUp()
+ self.list_res = None
+ self.basePath = '/versions'
+
+
+class TestVersion(TestVersionbBase):
+ def test_success(self):
+ code, body = self.get()
+ self.assertEqual(200, code)
+ json_body = json.loads(body)
+ self.assertEqual(len(json_body), 1)
+ self.assertEqual('basics', json_body[0].get('v1'))
if __name__ == '__main__':
unittest.main()