---
# POD Nightly Build Pipeline Jobs

- test-pipe-job-boiler-plate: &test-pipe-job-boiler-plate
    name: test-pipe-job-boiler-plate

    project-type: pipeline

    sandbox: true

    properties:
      - cord-infra-properties:
          build-days-to-keep: '{big-build-days-to-keep}'
          artifact-num-to-keep: '{big-artifact-num-to-keep}'


- job-template:
    name: 'build_{profile}{name-extension}_{config-pod}_{branch}_manual'
    id: build_pod_manual
    description: |
                  Manual Build on POD {config-pod} using {Jenkinsfile}<br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by QA (Suchitra Vemuri - suchitra@opennetworking.org ) <br />
                  Copyright 2018-2023 Open Networking Foundation (ONF) and the ONF Contributors

    openoltAdapterChart: onf/voltha-adapter-openolt

    oltAdapterReleaseName: open-olt

    waitTimerForOltUp: 360

    <<: *test-pipe-job-boiler-plate

    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: branch
          default: '{branch}'

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

      - string:
          name: profile
          default: '{profile}'
          description: 'Profile in which this job installs'

      - bool:
          name: installMonitoringAndLogging
          default: false
          description: "Wether to install prometheus and Elk-stack"

      - 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: installBBSim
          default: false
          description: "Install the BBSim container"

      - string:
          name: onuNumber
          default: '{num-of-onus}'
          description: "Onus per PonPort"

      - string:
          name: ponNumber
          default: '{num-of-ponports}'
          description: "Number of PON Ports"

      - 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'

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

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

      - string:
          name: openoltAdapterChart
          default: '{openoltAdapterChart}'
          description: 'Olt adapter chart name (or location on file system)'

      - string:
          name: oltAdapterReleaseName
          default: '{oltAdapterReleaseName}'
          description: 'Olt adapter release name'

      - string:
          name: waitTimerForOltUp
          default: '{waitTimerForOltUp}'
          description: 'Wait timer for the OLT to come up after reboot'

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/{test-repo}'
            branches:
              - '{branch}'

- job-template:
    name: 'build_{profile}_{config-pod}_{branch}'
    id: build_pod_timer
    description: |
                  Nightly Kubernetes tests on {config-pod} using {Jenkinsfile}<br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml<br />
                  Created by Suchitra Vemuri, suchitra@opennetworking.org <br />                  Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
    disabled: '{disable-job}'

    <<: *test-pipe-job-boiler-plate

    openoltAdapterChart: onf/voltha-adapter-openolt

    oltAdapterReleaseName: open-olt

    waitTimerForOltUp: 360

    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: oltDebVersion
          default: '{oltDebVersion}'
          description: 'OLT Software version to install'

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

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

      - string:
          name: profile
          default: '{profile}'
          description: 'Profile in which this job installs'

      - 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: installBBSim
          default: false
          description: "Install the BBSim container"

      - string:
          name: onuNumber
          default: '16'
          description: "Onus per PonPort"

      - string:
          name: openoltAdapterChart
          default: '{openoltAdapterChart}'
          description: 'Olt adapter chart name (or location on file system)'

      - string:
          name: oltAdapterReleaseName
          default: '{oltAdapterReleaseName}'
          description: 'Olt adapter release name'

      - string:
          name: waitTimerForOltUp
          default: '{waitTimerForOltUp}'
          description: 'Wait timer for the OLT to come up after reboot'

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/{test-repo}'
            branches:
              - '{branch}'

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

- job-template:
    name: 'build_{profile}_{config-pod}_{branch}_test'
    id: build_pod_test

    disabled: '{disable-job}'
    description: |
                  Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {Jenkinsfile}<br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by Kailash Khalasi - kailash@opennetworking.org <br />                  Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *test-pipe-job-boiler-plate

    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: branch
          default: '{branch}'

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/{test-repo}'
            branches:
              - '{branch}'

    triggers:
      - reverse:
          jobs: 'build_{profile}_{config-pod}_{branch}'
          result: 'success'

- job-template:
    name: 'build_{config-pod}_seba_release_{release}'
    id: build_pod_manual_release
    description: |
                  Manual Build on POD {config-pod}, using {Jenkinsfile}<br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by QA (Suchitra Vemuri - suchitra@opennetworking.org ) <br />
                  Copyright 2018-2023 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *test-pipe-job-boiler-plate

    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: oltDebVersion
          default: '{oltDebVersion}'
          description: 'OLT Software version to install'

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

      - 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: installBBSim
          default: false
          description: "Install the BBSim container"

      - string:
          name: onuNumber
          default: '16'
          description: "Onus per PonPort"

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/cord-tester'
            branches:
              - '{branch}'

- job-template:
    name: 'build_{config-pod}_seba_release_{release}'
    id: build_pod_release
    description: |
                  Manual Build on POD {config-pod}, using {Jenkinsfile}<br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by QA (Suchitra Vemuri - suchitra@opennetworking.org ) <br />
                  Copyright 2018-2023 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *test-pipe-job-boiler-plate

    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: oltDebVersion
          default: '{oltDebVersion}'
          description: 'OLT Software version to install'

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

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

      - 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: installBBSim
          default: false
          description: "Install the BBSim container"

      - string:
          name: onuNumber
          default: '16'
          description: "Onus per PonPort"

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/cord-tester'
            branches:
              - '{branch}'

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

- job-template:
    name: 'build_{config-pod}_seba_release_{release}_test'
    id: build_pod_release_test
    description: |
                  Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {Jenkinsfile} <br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by Kailash Khalasi - kailash@opennetworking.org <br />
                  Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *test-pipe-job-boiler-plate

    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: branch
          default: '{branch}'

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/cord-tester'
            branches:
              - '{branch}'

    triggers:
      - reverse:
          jobs: 'build_{config-pod}_seba_release_{release}'
          result: 'success'


- job-template:
    name: 'build_{config-pod}_seba_release_{release}_microcharts_test'
    id: build_pod_release_test_microcharts
    description: |
                  Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {Jenkinsfile}<br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by Kailash Khalasi - kailash@opennetworking.org <br />
                  Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *test-pipe-job-boiler-plate

    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: branch
          default: '{branch}'

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/cord-tester'
            branches:
              - '{branch}'

    triggers:
      - reverse:
          jobs: 'build_{config-pod}_seba_release_{release}_microcharts'
          result: 'success'


- job-template:
    name: 'build_{config-pod}'
    id: build_mcord_pod_manual
    description: |
                  Manual Build on POD {config-pod}, using {Jenkinsfile} <br /><br />
                  Created from job-template {id} from ci-management/jjb/cord-test/nightly-build-pipeline.yaml <br />
                  Created by QA (Kailash Khalasi - kailash@opennetworking.org ) <br />
                  Copyright 2019-2023 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *test-pipe-job-boiler-plate

    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: branch
          default: '{branch}'

      - string:
          name: profile
          default: '{profile}'
          description: 'Profile in which this job installs'

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

      - bool:
          name: installEpcControlPlane
          default: true
          description: "Install the EPC control plane"

    concurrent: true

    pipeline-scm:
      script-path: '{Jenkinsfile}'
      scm:
        - git:
            url: '{gerrit-server-url}/cord-tester'
            branches:
              - '{branch}'
