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

    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: logLevel
          default: '{logLevel}'
          description: 'Log level for all the components'

      - 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: cluster
          default: '{cluster}'
          description: 'Name of the cluster'

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

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

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

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

      - string:
          name: extraHelmFlags
          default: '{extraHelmFlags}'
          description: 'Helm flags (passed to each deployment)'

      # openonu-go only supports a single replica, remove after 2.8
      - 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: enableMultiUni
          default: '{enableMultiUni}'
          description: "Enables the Multi UNI feature"

      - bool:
          name: withFttb
          default: '{withFttb}'
          description: "Deploy with FTTB"

      - string:
          name: uniPortMask
          default: '{uniPortMask}'
          description: 'Open ONU adapter uni_port_mask, used when enableMultiUni is set to True, values: 0x0001-0x00FF'

      - string:
          name: bbsimReplicas
          default: '{bbsimReplicas}'
          description: 'Installs the specified Number of BBSim Instances'

      - 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: NumOfAtomix
          default: '{num-of-atomix}'
          description: 'Installs the specified Number of Atomix Instances'

      - string:
          name: NumOfKafka
          default: '{num-of-kafka}'
          description: 'Installs the specified Number of Kafka Instances'

      - string:
          name: NumOfEtcd
          default: '{num-of-etcd}'
          description: 'Installs the specified Number of Etcd 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: inBandManagement
          default: '{in-band-management}'
          description: 'Indicates whether POD is configured for in band management'

      - string:
          name: volthaSystemTestsChange
          default: '{volthaSystemTestsChange}'
          description: 'Download delta from gerrit:voltha-system-tests, example value: "refs/changes/79/18779/13"'

      - string:
          name: volthaHelmChartsChange
          default: '{volthaHelmChartsChange}'
          description: 'Download delta from gerrit:voltha-helm-charts, example value: "refs/changes/32/19132/1"'

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

      # this is used in the Adtran DT job
      - string:
          name: openoltAdapterChart
          default: '{openoltAdapterChart}'
          description: 'Olt adapter chart name (or location on file system)'

      # this is used in the Adtran DT job
      - 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'

      - bool:
          name: DebugMode
          default: false
          description: "Enable script debugging (unused)"

# -----------------------------------------------------------------------
# default 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:
      - onf-infra-volthadevs-permissions
      - cord-infra-properties:
          build-days-to-keep: '{big-build-days-to-keep}'
          artifact-num-to-keep: '{big-artifact-num-to-keep}'

# -----------------------------------------------------------------------
# VOLTHA Build Job (manual)
# -----------------------------------------------------------------------
- job-template:
    name: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}_manual'
    id: build_voltha_pod_manual
    disabled: '{disable-job}'
    description: |
                  Manual Build on POD {config-pod}, using pipeline/{pipeline-script} in {gerrit-server-url}/ci-management' <br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by QA (Suchitra Vemuri) <br />
                  Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *voltha-pipe-job-boiler-plate
    # default values
    pipeline-script: 'voltha/physical-build.groovy'
    num-of-openonu: 1
    num-of-onos: 1
    num-of-atomix: 0
    num-of-kafka: 1
    num-of-etcd: 1
    test-repo: 'voltha-system-tests'
    release: 'master'
    name-extension: ''
    branch: 'master'
    pipeline-branch: 'master'
    configurePod: true
    volthaHelmChartsChange: ''
    profile: 'Default'
    logLevel: 'DEBUG'
    enableMultiUni: false
    withFttb: false
    uniPortMask: '0x0001'
    bbsimReplicas: 0
    num-of-onus: 0
    num-of-ponports: 0
    extraHelmFlags: ''

    <<: *voltha-build-job-parameters

    concurrent: true
    project-type: pipeline
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/pipeline/{pipeline-script}

# -----------------------------------------------------------------------
# VOLTHA Build Jobs (periodic)
# -----------------------------------------------------------------------
- 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 pipeline/{pipeline-script} in {gerrit-server-url}/ci-management' <br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by QA (Suchitra Vemuri) <br />
                  Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *voltha-pipe-job-boiler-plate
    # default values
    pipeline-script: 'voltha/physical-build.groovy'
    num-of-openonu: 1
    num-of-onos: 3
    num-of-atomix: 3
    num-of-kafka: 3
    num-of-etcd: 3
    test-repo: 'voltha-system-tests'
    release: 'master'
    name-extension: ''
    branch: 'master'
    pipeline-branch: 'master'
    configurePod: true
    volthaHelmChartsChange: ''
    profile: 'Default'
    logLevel: 'DEBUG'
    enableMultiUni: false
    withFttb: false
    uniPortMask: '0x0001'
    bbsimReplicas: 0
    num-of-onus: 0
    num-of-ponports: 0
    extraHelmFlags: ''

    <<: *voltha-build-job-parameters

    concurrent: true
    project-type: pipeline
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/pipeline/{pipeline-script}

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

# -----------------------------------------------------------------------
# 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) <br />
                  UUID: 1a23dd34-4058-11ee-b6af-3b2e60c5d971 <br />
                  Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors

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

    oltAdapterAppLabel: 'adapter-open-olt'
    enableMultiUni: false
    withFttb: false
    timeout: 300

    parameters:
      - string:
          name: timeout
          default: '{timeout}'
          description: 'Job pipeline timeout value [minutes]'

      - 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: enableMultiUni
          default: '{enableMultiUni}'
          description: "Enables the Multi UNI feature"

      - bool:
          name: withFttb
          default: '{withFttb}'
          description: "Test with FTTB enabled"

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

      - bool:
          name: powerCycleOlt
          default: '{power-cycle-olt}'
          description: "Indicate whether to reboot OLT through power switch"

      - string:
          name: oltAdapterAppLabel
          default: '{oltAdapterAppLabel}'
          description: 'OLT adapter pod name'

      - 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
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/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-playground'
    id: build_voltha_pod_test_playground
    disabled: '{disable-job}'
    description: |
                  Post Tests on {config-pod} triggered by build_{config-pod}_{branch}, using {pipeline-script} <br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  UUID: 65587ad0-4058-11ee-9e99-e3ca477d4427 <br />
                  Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors

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

    oltAdapterAppLabel: 'adapter-open-olt'
    enableMultiUni: false
    withFttb: false
    timeout: 300

    parameters:
      - string:
          name: timeout
          default: '{timeout}'
          description: 'Job pipeline timeout value [minutes]'

      - 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: enableMultiUni
          default: '{enableMultiUni}'
          description: "Enables the Multi UNI feature"

      - bool:
          name: withFttb
          default: '{withFttb}'
          description: "Test with FTTB enabled"

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

      - bool:
          name: powerCycleOlt
          default: '{power-cycle-olt}'
          description: "Indicate whether to reboot OLT through power switch"

      - string:
          name: oltAdapterAppLabel
          default: '{oltAdapterAppLabel}'
          description: 'OLT adapter pod name'

      - 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
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/pipeline/{pipeline-script}

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

# -----------------------------------------------------------------------
# VOLTHA Soak Test Job
# This job is triggered by a timer defined in the job
# -----------------------------------------------------------------------
- job-template:
    name: 'build_{config-pod}_{profile}_voltha{name-extension}_{release}_test'
    id: build_voltha_pod_soak_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) <br />
                  UUID: 798f0064-4058-11ee-b70f-2fee4c7dfce6 <br />
                  Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors

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

    oltAdapterAppLabel: 'adapter-open-olt'
    timeout: 240

    parameters:
      - string:
          name: timeout
          default: '{timeout}'
          description: 'Job pipeline timeout value [minutes]'

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

      - bool:
          name: powerCycleOlt
          default: '{power-cycle-olt}'
          description: "Indicate whether to reboot OLT through power switch"

      - string:
          name: oltAdapterAppLabel
          default: '{oltAdapterAppLabel}'
          description: 'OLT adapter pod name'

      - 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
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/pipeline/{pipeline-script}

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

# -----------------------------------------------------------------------
# VOLTHA Manual Test Job
# This job is triggered manually
# -----------------------------------------------------------------------
- job-template:
    name: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}_manual_test'
    id: build_voltha_pod_manual_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) <br />
                  UUID: 873eb92a-4058-11ee-8298-33472e0ccae4 <br />
                  Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors

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

    oltAdapterAppLabel: 'adapter-open-olt'
    enableMultiUni: false
    timeout: 240

    parameters:
      - string:
          name: timeout
          default: '{timeout}'
          description: 'Job pipeline timeout value [minutes]'

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

      - bool:
          name: powerCycleOlt
          default: '{power-cycle-olt}'
          description: "Indicate whether to reboot OLT through power switch"

      - bool:
          name: enableMultiUni
          default: '{enableMultiUni}'
          description: "Enables the Multi UNI feature"

      - string:
          name: oltAdapterAppLabel
          default: '{oltAdapterAppLabel}'
          description: 'OLT adapter pod name'

      - 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
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/pipeline/{pipeline-script}

# -----------------------------------------------------------------------
# VOLTHA DMI Test Job
# This job is triggered by a timer defined in the job
# -----------------------------------------------------------------------
- job-template:
    name: 'verify_{config-pod}_{profile}{name-extension}_voltha_{release}_dmi'
    id: verify_voltha_pod_dmi_test
    disabled: '{disable-job}'
    description: |
                  Manual Build on POD {config-pod}, using pipeline/{pipeline-script} in {gerrit-server-url}/ci-management' <br /><br />
                  Created from job-template {id} from ci-management/jjb/voltha-test/voltha-nightly-jobs.yaml <br />
                  Created by QA (Suchitra Vemuri) <br />
                  Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors

    <<: *voltha-pipe-job-boiler-plate
    # default values
    pipeline-script: 'voltha/dmi-build-and-test.groovy'
    installVolthaInfra: true
    installVolthaStack: true
    num-of-openonu: 1
    num-of-onos: 3
    num-of-atomix: 3
    num-of-kafka: 3
    num-of-etcd: 3
    test-repo: 'voltha-system-tests'
    release: 'master'
    name-extension: ''
    branch: 'master'
    pipeline-branch: 'master'
    configurePod: true
    volthaHelmChartsChange: ''
    profile: 'Default'
    logLevel: 'DEBUG'
    enableMultiUni: false
    uniPortMask: '0x0001'
    bbsimReplicas: 0
    num-of-onus: 0
    num-of-ponports: 0
    extraHelmFlags: ''
    dmiChart: ''
    OltDevMgr: ''
    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: logLevel
          default: '{logLevel}'
          description: 'Log level for all the components'

      - 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.lfbroadband.org'
          description: 'URL where helm-charts are published'

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

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

      - bool:
          name: installVolthaInfra
          default: '{installVolthaInfra}'
          description: "Whether to install VOLTHA Infra"

      - bool:
          name: installVolthaStack
          default: '{installVolthaStack}'
          description: "Whether to install VOLTHA Stack"

      - string:
          name: extraHelmFlags
          default: '{extraHelmFlags}'
          description: 'Helm flags (passed to each deployment)'

      - string:
          name: dmiChart
          default: '{dmiChart}'
          description: 'Device Management Interface Helm Chart'

      - string:
          name: OltDevMgr
          default: '{OltDevMgr}'
          description: 'OLT Device Manager App Name'

      # openonu-go only supports a single replica, remove after 2.8
      - 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: enableMultiUni
          default: '{enableMultiUni}'
          description: "Enables the Multi UNI feature"

      - string:
          name: uniPortMask
          default: '{uniPortMask}'
          description: 'Open ONU adapter uni_port_mask, used when enableMultiUni is set to True, values: 0x0001-0x00FF'

      - string:
          name: bbsimReplicas
          default: '{bbsimReplicas}'
          description: 'Installs the specified Number of BBSim Instances'

      - 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: NumOfAtomix
          default: '{num-of-atomix}'
          description: 'Installs the specified Number of Atomix Instances'

      - string:
          name: NumOfKafka
          default: '{num-of-kafka}'
          description: 'Installs the specified Number of Kafka Instances'

      - string:
          name: NumOfEtcd
          default: '{num-of-etcd}'
          description: 'Installs the specified Number of Etcd 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: restartOlt
          default: '{restart-olt}'
          description: "Re-install olt software bringing up CORD"

      - 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: volthaHelmChartsChange
          default: '{volthaHelmChartsChange}'
          description: 'Download a change for gerrit in the voltha-helm-charts repo, example value: "refs/changes/32/19132/1"'

      # this is used in the Adtran DT job
      - string:
          name: openoltAdapterChart
          default: '{openoltAdapterChart}'
          description: 'Olt adapter chart name (or location on file system)'

      # this is used in the Adtran DT job
      - 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
    project-type: pipeline
    pipeline-scm:
      scm:
        - git:
            url: https://gerrit.lfbroadband.org/ci-management
            branches:
              - origin/{pipeline-branch}
      script-path: jjb/pipeline/{pipeline-script}

    triggers:
      - timed: |
                 TZ=America/Los_Angeles
                 H {time} * * *
# [EOF]

# [EOF]
