---
# list of parameters for the VOLTHA Jobs,
# used as anchor so that can be shared across multiple jobs
# to use in a job: `parameters: *voltha-build-job-parameters`
- voltha-build-job-parameters: &voltha-build-job-parameters
    name: voltha-build-job-parameters
    parameters:
      - string:
          name: buildNode
          default: '{build-node}'
          description: 'Name of the Jenkins executor node to run the job on'

      - string:
          name: TestNodeName
          default: '{build-node}'
          description: 'DEPRECATED - use buildNode instead'

      - string:
          name: cordRepoUrl
          default: '{gerrit-server-url}'
          description: 'The URL of the CORD Project repository'

      - string:
          name: configBaseDir
          default: 'pod-configs'
          description: 'The directory inside the POD configs repository'

      - string:
          name: configDeploymentDir
          default: 'deployment-configs'
          description: 'The deployment configs folder'

      - string:
          name: configKubernetesDir
          default: 'kubernetes-configs'
          description: 'The kubernetes config folder'

      - string:
          name: configToscaDir
          default: 'tosca-configs'
          description: 'The tosca config folder'

      - string:
          name: configFileName
          default: '{config-pod}'
          description: 'The config file'

      - string:
          name: profile
          default: '{profile}'
          description: 'Technology Profile pushed to the ETCD'

      - string:
          name: helmRepoUrl
          default: 'https://charts.opencord.org'
          description: 'URL where helm-charts are published'

      - string:
          name: branch
          default: '{branch}'

      - string:
          name: notificationEmail
          default: 'you@opennetworking.org, suchitra@opennetworking.org'
          description: ''

      - string:
          name: workFlow
          default: '{work-flow}'
          description: 'Installs and uses the specified work flow on the POD'

      - string:
          name: NumOfOpenOnu
          default: '{num-of-openonu}'
          description: 'Installs the specified Number of OpenOnu Adapters'

      - string:
          name: NumOfOnos
          default: '{num-of-onos}'
          description: 'Installs the specified Number of ONOS instances'

      - string:
          name: NumOfAtomix
          default: '{num-of-atomix}'
          description: 'Installs the specified Number of Atomix Instances'

      - bool:
          name: configurePod
          default: true
          description: "Configure POD via TOSCA post build"

      - bool:
          name: reinstallOlt
          default: '{reinstall-olt}'
          description: "Re-install olt software bringing up CORD"

      - bool:
          name: withKind
          default: '{with-kind}'
          description: "The pods uses kind and a physical fabric thus port forward to the management is needed"

      - string:
          name: VolthaEtcdPort
          default: '{VolthaEtcdPort}'
          description: 'Localhost port that is forwarded to VOLTHA etcd'

      - bool:
          name: inBandManagement
          default: '{in-band-management}'
          description: 'Indicates whether POD is configured for in band management'

      - string:
          name: volthaSystemTestsChange
          default: '{volthaSystemTestsChange}'
          description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'

      - string:
          name: kindVolthaChange
          default: '{kindVolthaChange}'
          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'

      - string:
          name: cordTesterChange
          default: '{cordTesterChange}'
          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'

# defualt properties for the VOLTHA scale jobs
- voltha-pipe-job-boiler-plate: &voltha-pipe-job-boiler-plate
    name: voltha-pipe-job-boiler-plate

    project-type: pipeline

    sandbox: true

    properties:
      - cord-infra-properties:
          build-days-to-keep: 30
          artifact-num-to-keep: 15

# VOLTHA Build Jobs
- job-template:
    name: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
    id: build_voltha_pod_release_timer
    disabled: '{disable-job}'
    description: |
                  Manual Build on POD {config-pod}, using {Jenkinsfile} in {gerrit-server-url}/voltha-system-tests' <br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by QA (Suchitra Vemuri - suchitra@opennetworking.org ) <br />
                  Copyright (c) 2018 Open Networking Foundation (ONF)

    <<: *voltha-pipe-job-boiler-plate
    VolthaEtcdPort: '2379'

    <<: *voltha-build-job-parameters

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/voltha-system-tests'
            branches:
              - '{branch}'

    triggers:
      - timed: |
                 TZ=America/Los_Angeles
                 H {time} * * *

- job-template:
    name: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
    id: build_voltha_pod_release_dependent
    disabled: '{disable-job}'
    description: |
                  Automatic Build on POD {config-pod}, using {Jenkinsfile} in {gerrit-server-url}/voltha-system-tests' <br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by QA (Suchitra Vemuri - suchitra@opennetworking.org ) <br />
                  This job is triggered upon completion of a dependent _test job <br />
                  Copyright (c) 2020 Open Networking Foundation (ONF)

    <<: *voltha-pipe-job-boiler-plate
    VolthaEtcdPort: '2379'

    <<: *voltha-build-job-parameters

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/voltha-system-tests'
            branches:
              - '{branch}'
    triggers:
      - reverse:
          jobs: '{trigger-after}'
          result: 'success'

# VOLTHA Test Job
# This job is automatically triggered after a build job has successfully completed
- job-template:
    name: 'build_{config-pod}_{profile}_voltha{name-extension}_{release}_test'
    id: build_voltha_pod_test
    disabled: '{disable-job}'
    description: |
                  Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {pipeline-script}<br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by Suchitra Vemuri, suchitra@opennetworking.org <br />
                  Copyright (c) 2017 Open Networking Foundation (ONF)

    <<: *voltha-pipe-job-boiler-plate
    pipeline-script: 'voltha-physical-functional-tests.groovy'
    manifest-url: 'https://gerrit.opencord.org/voltha-test-manifest.git'
    manifest-branch: 'master'

    parameters:
      - string:
          name: buildNode
          default: '{build-node}'
          description: 'Name of the Jenkins executor node to run the job on'

      - string:
          name: TestNodeName
          default: '{build-node}'
          description: 'DEPRECATED - use buildNode instead'

      - string:
          name: cordRepoUrl
          default: '{gerrit-server-url}'
          description: 'The URL of the CORD Project repository'

      - string:
          name: configBaseDir
          default: 'pod-configs'
          description: 'The directory inside the POD configs repository'

      - string:
          name: configDeploymentDir
          default: 'deployment-configs'
          description: 'The deployment configs folder'

      - string:
          name: configKubernetesDir
          default: 'kubernetes-configs'
          description: 'The kubernetes config folder'

      - string:
          name: configToscaDir
          default: 'tosca-configs'
          description: 'The tosca config folder'

      - string:
          name: configFileName
          default: '{config-pod}'
          description: 'The config file'

      - string:
          name: profile
          default: '{profile}'
          description: 'Technology Profile pushed to the ETCD'

      - string:
          name: branch
          default: '{branch}'
          description: 'Branch of the test libraries to check out'

      - string:
          name: manifestUrl
          default: '{manifest-url}'
          description: 'Repo manifest URL for code checkout (so we can display changes in Jenkins)'

      - string:
          name: manifestBranch
          default: '{manifest-branch}'
          description: 'Repo manifest branch for code checkout (so we can display changes in Jenkins)'

      - string:
          name: workFlow
          default: '{work-flow}'
          description: 'Installs and uses the specified work flow on the POD'

      - bool:
          name: powerSwitch
          default: '{power-switch}'
          description: "Indicate whether POD has power switch to reboot ONUs/OLT remotely"

      - string:
          name: volthaSystemTestsChange
          default: '{volthaSystemTestsChange}'
          description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'

      - string:
          name: kindVolthaChange
          default: '{kindVolthaChange}'
          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'

      - string:
          name: cordTesterChange
          default: '{cordTesterChange}'
          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'

    concurrent: true

    project-type: pipeline
    dsl: !include-raw-escape: ../pipeline/{pipeline-script}

    triggers:
      - reverse:
          jobs: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
          result: 'success'


# VOLTHA Test Job
# This job is automatically triggered after a build job has successfully completed
- job-template:
    name: 'build_{config-pod}_{profile}_voltha{name-extension}_{release}_test'
    id: build_voltha_pod_soak_test
    description: |
                  Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {pipeline-script}<br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by Suchitra Vemuri, suchitra@opennetworking.org <br />
                  Copyright (c) 2017 Open Networking Foundation (ONF)

    <<: *voltha-pipe-job-boiler-plate
    pipeline-script: 'voltha-physical-functional-tests.groovy'
    manifest-url: 'https://gerrit.opencord.org/voltha-test-manifest.git'
    manifest-branch: 'master'

    parameters:
      - string:
          name: buildNode
          default: '{build-node}'
          description: 'Name of the Jenkins executor node to run the job on'

      - string:
          name: TestNodeName
          default: '{build-node}'
          description: 'DEPRECATED - use buildNode instead'

      - string:
          name: cordRepoUrl
          default: '{gerrit-server-url}'
          description: 'The URL of the CORD Project repository'

      - string:
          name: configBaseDir
          default: 'pod-configs'
          description: 'The directory inside the POD configs repository'

      - string:
          name: configDeploymentDir
          default: 'deployment-configs'
          description: 'The deployment configs folder'

      - string:
          name: configKubernetesDir
          default: 'kubernetes-configs'
          description: 'The kubernetes config folder'

      - string:
          name: configToscaDir
          default: 'tosca-configs'
          description: 'The tosca config folder'

      - string:
          name: configFileName
          default: '{config-pod}'
          description: 'The config file'

      - string:
          name: profile
          default: '{profile}'
          description: 'Technology Profile pushed to the ETCD'

      - string:
          name: branch
          default: '{branch}'
          description: 'Branch of the test libraries to check out'

      - string:
          name: manifestUrl
          default: '{manifest-url}'
          description: 'Repo manifest URL for code checkout (so we can display changes in Jenkins)'

      - string:
          name: manifestBranch
          default: '{manifest-branch}'
          description: 'Repo manifest branch for code checkout (so we can display changes in Jenkins)'

      - string:
          name: workFlow
          default: '{work-flow}'
          description: 'Installs and uses the specified work flow on the POD'

      - bool:
          name: powerSwitch
          default: '{power-switch}'
          description: "Indicate whether POD has power switch to reboot ONUs/OLT remotely"

      - string:
          name: testType
          default: '{test-type}'
          description: 'Passes the required test category to the groovy script'

      - string:
          name: volthaSystemTestsChange
          default: '{volthaSystemTestsChange}'
          description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'

      - string:
          name: kindVolthaChange
          default: '{kindVolthaChange}'
          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'

      - string:
          name: cordTesterChange
          default: '{cordTesterChange}'
          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'
    concurrent: true

    project-type: pipeline
    dsl: !include-raw-escape: ../pipeline/{pipeline-script}

    triggers:
      - timed: |
                 TZ=America/Los_Angeles
                 {time-trigger}
