X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Ffunctest%2Ffunctest-daily-jobs.yml;h=b6e4c2e19a3412c49d0f547ba924013117077d47;hb=bf1d5638f5017be140e21cf9ad69cf4962bd7ec1;hp=23c6e490a34945bc2004b90172da2d0d68a44279;hpb=63fbd31ac218846da13f84ee17ef7a61e159055f;p=releng.git diff --git a/jjb/functest/functest-daily-jobs.yml b/jjb/functest/functest-daily-jobs.yml index 23c6e490a..b6e4c2e19 100644 --- a/jjb/functest/functest-daily-jobs.yml +++ b/jjb/functest/functest-daily-jobs.yml @@ -1,3 +1,4 @@ +--- ################################### # job configuration for functest ################################### @@ -6,289 +7,434 @@ project: functest -#-------------------------------- -# BRANCH ANCHORS -#-------------------------------- + # ------------------------------- + # BRANCH ANCHORS + # ------------------------------- master: &master - stream: master - branch: '{stream}' - gs-pathname: '' - docker-tag: 'latest' - danube: &danube - stream: danube - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - docker-tag: 'stable' -#-------------------------------- -# POD, INSTALLER, AND BRANCH MAPPING -#-------------------------------- -# Installers using labels -# CI PODs -# This section should only contain the installers -# that have been switched using labels for slaves -#-------------------------------- + stream: master + branch: '{stream}' + gs-pathname: '' + euphrates: &euphrates + stream: euphrates + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + # ------------------------------- + # POD, INSTALLER, AND BRANCH MAPPING + # ------------------------------- + # Installers using labels + # CI PODs + # This section should only contain the installers + # that have been switched using labels for slaves + # ------------------------------- pod: -# fuel CI PODs - - baremetal: - slave-label: fuel-baremetal - installer: fuel - <<: *master - - virtual: - slave-label: fuel-virtual - installer: fuel - <<: *master - - baremetal: - slave-label: fuel-baremetal - installer: fuel - <<: *danube - - virtual: - slave-label: fuel-virtual - installer: fuel - <<: *danube -# 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 - <<: *danube - - virtual: - slave-label: joid-virtual - installer: joid - <<: *danube -# compass CI PODs - - baremetal: - slave-label: compass-baremetal - installer: compass - <<: *master - - virtual: - slave-label: compass-virtual - installer: compass - <<: *master - - baremetal: - slave-label: compass-baremetal - installer: compass - <<: *danube - - virtual: - slave-label: compass-virtual - installer: compass - <<: *danube -# apex CI PODs - - virtual: - slave-label: apex-virtual-master - installer: apex - <<: *master - - baremetal: - slave-label: apex-baremetal-master - installer: apex - <<: *master - - virtual: - slave-label: apex-virtual-danube - installer: apex - <<: *danube - - baremetal: - slave-label: apex-baremetal-danube - installer: apex - <<: *danube -# armband CI PODs - - armband-baremetal: - slave-label: armband-baremetal - installer: fuel - <<: *master - - armband-virtual: - slave-label: armband-virtual - installer: fuel - <<: *master - - armband-baremetal: - slave-label: armband-baremetal - installer: fuel - <<: *danube - - armband-virtual: - slave-label: armband-virtual - installer: fuel - <<: *danube -# daisy CI PODs - - baremetal: - slave-label: daisy-baremetal - installer: daisy - <<: *master - - virtual: - slave-label: daisy-virtual - installer: daisy - <<: *master -# netvirt 3rd party ci - - virtual: - slave-label: odl-netvirt-virtual - installer: netvirt - <<: *master -#-------------------------------- -# None-CI PODs -#-------------------------------- - - orange-pod1: - slave-label: '{pod}' - installer: joid - <<: *master - - orange-pod5: - slave-label: '{pod}' - installer: fuel - <<: *master - - orange-pod2: - slave-label: '{pod}' - installer: joid - <<: *master - - baremetal-centos: - slave-label: 'intel-pod8' - installer: compass - <<: *master - - nokia-pod1: - slave-label: '{pod}' - installer: apex - <<: *master - - zte-pod1: - slave-label: '{pod}' - installer: fuel - <<: *master - - zte-pod1: - slave-label: '{pod}' - installer: fuel - <<: *danube - - zte-pod2: - slave-label: '{pod}' - installer: fuel - <<: *master - - zte-pod3: - slave-label: '{pod}' - installer: fuel - <<: *master - - zte-pod3: - slave-label: '{pod}' - installer: fuel - <<: *danube -# PODs for verify jobs triggered by each patch upload -# - ool-virtual1: -# slave-label: '{pod}' -# installer: apex -# <<: *master -#-------------------------------- - - alpine-pod: - - ericsson-virtual-pod1bl01: - slave-label: '{alpine-pod}' - installer: fuel - <<: *master - - huawei-virtual5: - slave-label: '{alpine-pod}' - installer: compass - <<: *master - - testsuite: - - 'suite': - job-timeout: 60 - - 'daily': - job-timeout: 240 - - 'arm-daily': - job-timeout: 240 + # fuel CI PODs + - baremetal: + slave-label: fuel-baremetal + installer: fuel + <<: *master + - virtual: + slave-label: fuel-virtual + installer: fuel + <<: *master + - baremetal: + slave-label: fuel-baremetal + installer: fuel + <<: *euphrates + - virtual: + slave-label: fuel-virtual + installer: fuel + <<: *euphrates + # 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 + <<: *euphrates + - virtual: + slave-label: joid-virtual + installer: joid + <<: *euphrates + # compass CI PODs + - baremetal: + slave-label: compass-baremetal + installer: compass + <<: *master + - virtual: + slave-label: compass-virtual + installer: compass + <<: *master + - baremetal: + slave-label: compass-baremetal + installer: compass + <<: *euphrates + - virtual: + slave-label: compass-virtual + installer: compass + <<: *euphrates + # apex CI PODs + - virtual: + slave-label: apex-virtual-master + installer: apex + <<: *master + - baremetal: + slave-label: apex-baremetal-master + installer: apex + <<: *master + - virtual: + slave-label: apex-virtual-euphrates + installer: apex + <<: *euphrates + - baremetal: + slave-label: apex-baremetal-euphrates + installer: apex + <<: *euphrates + # armband CI PODs + - armband-baremetal: + slave-label: armband-baremetal + installer: fuel + <<: *master + - armband-virtual: + slave-label: armband-virtual + installer: fuel + <<: *master + - armband-baremetal: + slave-label: armband-baremetal + installer: fuel + <<: *euphrates + - armband-virtual: + slave-label: armband-virtual + installer: fuel + <<: *euphrates + # daisy CI PODs + - baremetal: + slave-label: daisy-baremetal + installer: daisy + <<: *master + - virtual: + slave-label: daisy-virtual + installer: daisy + <<: *master + - baremetal: + slave-label: daisy-baremetal + installer: daisy + <<: *euphrates + - virtual: + slave-label: daisy-virtual + installer: daisy + <<: *euphrates + # netvirt 3rd party ci + - virtual: + slave-label: odl-netvirt-virtual + installer: netvirt + <<: *master + # ------------------------------- + # None-CI PODs + # ------------------------------- + - orange-pod1: + slave-label: '{pod}' + installer: joid + <<: *master + - orange-pod5: + slave-label: '{pod}' + installer: fuel + <<: *master + - orange-pod2: + slave-label: '{pod}' + installer: joid + <<: *master + - baremetal-centos: + slave-label: 'intel-pod8' + installer: compass + <<: *master + - nokia-pod1: + slave-label: '{pod}' + installer: apex + <<: *master + - zte-pod1: + slave-label: '{pod}' + installer: fuel + <<: *master + - zte-pod1: + slave-label: '{pod}' + installer: fuel + <<: *euphrates + - zte-pod2: + slave-label: '{pod}' + installer: daisy + <<: *master + - zte-pod2: + slave-label: '{pod}' + installer: daisy + <<: *euphrates + - zte-pod3: + slave-label: '{pod}' + installer: daisy + <<: *master + - zte-pod3: + slave-label: '{pod}' + installer: daisy + <<: *euphrates + - zte-pod9: + slave-label: '{pod}' + installer: daisy + <<: *master + # ------------------------------- + # PODs for verify jobs triggered by each patch upload + # - ool-virtual1: + # slave-label: '{pod}' + # installer: apex + # <<: *master + # ------------------------------- - jobs: - - 'functest-{installer}-{pod}-{testsuite}-{stream}' - - 'functest-alpine-{installer}-{alpine-pod}-{testsuite}-{stream}' + functest-tier: + - 'healthcheck': + job-timeout: 20 + - 'smoke': + job-timeout: 180 + - 'components': + job-timeout: 240 + - 'patrole': + job-timeout: 20 + - 'vnf': + job-timeout: 240 + - 'parser': + job-timeout: 20 + + features-suite: + - 'doctor-notification' + - 'promise' + - 'bgpvpn' + - 'functest-odl-sfc' + - 'domino-multinode' + - 'fds' + - 'barometercollectd' + + exclude: + - features-suite: 'promise' + stream: 'master' + - features-suite: 'domino-multinode' + stream: 'master' + - features-suite: 'fds' + stream: 'euphrates' + + build-job-settings: &build-job-settings + current-parameter: false + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-jobs: false + predefined-parameters: | + FUNCTEST_MODE=$FUNCTEST_MODE + FUNCTEST_TIER=$FUNCTEST_TIER + features-job-settings: &features-job-settings + current-parameter: false + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-jobs: false + predefined-parameters: | + FUNCTEST_MODE=$FUNCTEST_MODE + FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME + + jobs: + - 'functest-{installer}-{pod}-suite-{stream}' + - 'functest-{installer}-{pod}-daily-{stream}' + - 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}' + - 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}' ################################ # job template ################################ - job-template: - name: 'functest-{installer}-{pod}-{testsuite}-{stream}' + + name: 'functest-{installer}-{pod}-daily-{stream}' + + project-type: multijob + + disabled: '{obj:disabled}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{installer}-defaults' + - '{slave-label}-defaults' + - functest-parameter: + gs-pathname: '{gs-pathname}' + + builders: + - multijob: + name: 'Run functest tests' + execution-type: SEQUENTIAL + projects: + - name: 'functest-{installer}-{pod}-daily-healthcheck-{stream}' + <<: *build-job-settings + - name: 'functest-{installer}-{pod}-daily-smoke-{stream}' + <<: *build-job-settings + - name: 'functest-{installer}-{pod}-daily-patrole-{stream}' + <<: *build-job-settings + - name: 'functest-{installer}-{pod}-daily-vnf-{stream}' + <<: *build-job-settings + - name: 'functest-{installer}-{pod}-daily-features-doctor-notification-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-features-bgpvpn-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-features-functest-odl-sfc-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-features-barometercollectd-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-features-fds-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-features-promise-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-features-domino-multinode-{stream}' + <<: *features-job-settings + - name: 'functest-{installer}-{pod}-daily-parser-{stream}' + <<: *build-job-settings + +- job-template: &functest-installer-tier-job + + name: 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}' concurrent: true properties: - - logrotate-default - - throttle: - enabled: true - max-per-node: 1 - option: 'project' + - logrotate-default + - throttle: + enabled: true + max-per-node: 1 + option: 'project' wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: '{job-timeout}' - abort: true + - build-name: + name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO' + - timeout: + timeout: '{job-timeout}' + abort: true parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - 'functest-{testsuite}-parameter' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - string: - name: DOCKER_TAG - default: '{docker-tag}' - description: 'Tag to pull docker image' - - string: - name: CLEAN_DOCKER_IMAGES - default: 'false' - description: 'Remove downloaded docker images (opnfv/functest*:*)' - - functest-parameter: - gs-pathname: '{gs-pathname}' + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{installer}-defaults' + - '{slave-label}-defaults' + - string: + name: FUNCTEST_MODE + default: 'tier' + - string: + name: FUNCTEST_TIER + default: '{functest-tier}' + - string: + name: DEPLOY_SCENARIO + default: 'os-nosdn-nofeature-noha' + - string: + name: CLEAN_DOCKER_IMAGES + default: 'false' + description: 'Remove downloaded docker images (opnfv/functest*:*)' + - functest-parameter: + gs-pathname: '{gs-pathname}' scm: - - git-scm + - git-scm builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'functest-{testsuite}-builder' + - description-setter: + description: "Built on $NODE_NAME" + - 'functest-daily-builder' + + publishers: + - 'functest-recipients' + - 'fuel-recipients' - job-template: - name: 'functest-alpine-{installer}-{alpine-pod}-{testsuite}-{stream}' - concurrent: true + name: 'functest-{installer}-{pod}-suite-{stream}' + <<: *functest-installer-tier-job - properties: - - logrotate-default - - throttle: - enabled: true - max-per-node: 1 - option: 'project' + wrappers: + - build-name: + name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO' + - timeout: + timeout: '60' + abort: true + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{installer}-defaults' + - '{slave-label}-defaults' + - 'functest-suite-parameter' + - string: + name: DEPLOY_SCENARIO + default: 'os-nosdn-nofeature-noha' + - string: + name: CLEAN_DOCKER_IMAGES + default: 'false' + description: 'Remove downloaded docker images (opnfv/functest*:*)' + - functest-parameter: + gs-pathname: '{gs-pathname}' + builders: + - description-setter: + description: "Built on $NODE_NAME" + - 'functest-suite-builder' + +- job-template: + + name: 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}' + concurrent: true + properties: + - logrotate-default + - throttle: + enabled: true + max-per-node: 1 + option: 'project' wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: '{job-timeout}' - abort: true + - build-name: + name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO' parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - 'functest-{testsuite}-parameter' - - string: - name: DEPLOY_SCENARIO - default: 'os-nosdn-nofeature-noha' - - functest-parameter: - gs-pathname: '{gs-pathname}' + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{installer}-defaults' + - '{slave-label}-defaults' + - string: + name: FUNCTEST_MODE + default: 'testcase' + - string: + name: FUNCTEST_SUITE_NAME + default: '{features-suite}' + - string: + name: DEPLOY_SCENARIO + default: 'os-nosdn-nofeature-noha' + - string: + name: CLEAN_DOCKER_IMAGES + default: 'false' + description: 'Remove downloaded docker images (opnfv/functest*:*)' + - functest-parameter: + gs-pathname: '{gs-pathname}' scm: - - git-scm + - git-scm builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'functest-alpine-daily-builder' + - description-setter: + description: "Built on $NODE_NAME" + - 'functest-daily-builder' + + publishers: + - 'functest-features-recipients' + - 'functest-recipients' + - 'fuel-recipients' + ######################## # parameter macros @@ -296,169 +442,180 @@ - parameter: name: functest-daily-parameter parameters: - - string: - name: FUNCTEST_SUITE_NAME - default: 'daily' - description: "Daily suite name to run" -- parameter: - name: functest-arm-daily-parameter - parameters: - - string: - name: FUNCTEST_SUITE_NAME - default: 'arm-daily' - description: "Daily suite name (Aarch64) to run" + - string: + name: FUNCTEST_MODE + default: 'daily' + description: "Daily suite name to run" + - parameter: name: functest-suite-parameter parameters: - - choice: - name: FUNCTEST_SUITE_NAME - choices: - - 'connection_check' - - 'api_check' - - 'snaps_health_check' - - 'vping_userdata' - - 'vping_ssh' - - 'tempest_smoke_serial' - - 'rally_sanity' - - 'odl' - - 'odl_netvirt' - - 'onos' - - 'snaps_smoke' - - 'refstack_defcore' - - 'promise' - - 'doctor' - - 'bgpvpn' - - 'parser' - - 'security_scan' - - 'tempest_full_parallel' - - 'rally_full' - - 'cloudify_ims' - - 'cloudify_vrouter' - - 'orchestra_openims' - - 'orchestra_clearwaterims' - - string: - name: TESTCASE_OPTIONS - default: '' - description: 'Additional parameters specific to test case(s)' + - choice: + name: FUNCTEST_MODE + choices: + - 'tier' + - 'testcase' + default: 'tier' + description: "Test case or Tier to be run" + - choice: + name: FUNCTEST_SUITE_NAME + choices: + - 'connection_check' + - 'api_check' + - 'snaps_health_check' + - 'vping_userdata' + - 'vping_ssh' + - 'tempest_smoke_serial' + - 'rally_sanity' + - 'odl' + - 'odl_netvirt' + - 'snaps_smoke' + - 'refstack_defcore' + - 'patrole' + - 'promise' + - 'doctor' + - 'bgpvpn' + - 'parser' + - 'security_scan' + - 'tempest_full_parallel' + - 'rally_full' + - 'cloudify_ims' + - 'cloudify_vrouter' + - 'orchestra_openims' + - 'orchestra_clearwaterims' + default: 'connection_check' + - choice: + name: FUNCTEST_TIER + choices: + - 'healthcheck' + - 'smoke' + - 'patrole' + - 'features' + - 'components' + - 'vnf' + - 'parser' + default: 'healthcheck' + - string: + name: TESTCASE_OPTIONS + default: '' + description: 'Additional parameters specific to test case(s)' + - parameter: name: functest-parameter parameters: - - string: - name: GS_PATHNAME - default: '{gs-pathname}' - description: "Version directory where the opnfv documents will be stored in gs repository" - - string: - name: FUNCTEST_REPO_DIR - default: "/home/opnfv/repos/functest" - description: "Directory where the Functest repository is cloned" - - string: - name: PUSH_RESULTS_TO_DB - default: "true" - description: "Push the results of all the tests to the resultDB" - - string: - name: CI_DEBUG - default: 'false' - description: "Show debug output information" - - string: - name: RC_FILE_PATH - default: '' - description: "Path to the OS credentials file if given" + - string: + name: GS_PATHNAME + default: '{gs-pathname}' + description: "Version directory where the opnfv documents will be stored in gs repository" + - string: + name: FUNCTEST_REPO_DIR + default: "/home/opnfv/repos/functest" + description: "Directory where the Functest repository is cloned" + - string: + name: PUSH_RESULTS_TO_DB + default: "true" + description: "Push the results of all the tests to the resultDB" + - string: + name: CI_DEBUG + default: 'false' + description: "Show debug output information" + - string: + name: RC_FILE_PATH + default: '' + description: "Path to the OS credentials file if given" ######################## # trigger macros ######################## - trigger: name: 'functest-master' triggers: - - pollscm: - cron: "H 9 * * *" + - pollscm: + cron: "H 9 * * *" ######################## # builder macros ######################## - builder: name: functest-daily-builder builders: - - 'functest-cleanup' - - 'functest-daily' - - 'functest-store-results' - -- builder: - name: functest-arm-daily-builder - builders: - - 'functest-cleanup' - - 'set-functest-env' - - 'functest-arm-daily' - - 'functest-store-results' - - 'functest-exit' + - 'functest-cleanup' + - 'functest-daily' + - 'functest-store-results' + - 'functest-exit' - builder: name: functest-suite-builder builders: - - 'functest-cleanup' - - 'set-functest-env' - - 'functest-suite' - - 'functest-store-results' - - 'functest-exit' - -- builder: - name: functest-alpine-daily-builder - builders: - - 'functest-cleanup' - - 'set-functest-env-alpine' - - 'functest-daily' - - 'functest-store-results' + - 'functest-cleanup' + - 'functest-daily' + - 'functest-store-results' + - 'functest-exit' - builder: name: functest-daily builders: - - shell: - !include-raw: - - ./functest-env-presetup.sh - - ../../utils/fetch_os_creds.sh - - ./functest-alpine.sh + # yamllint disable rule:indentation + - conditional-step: + condition-kind: regex-match + regex: "os-.*" + label: '$DEPLOY_SCENARIO' + steps: + - shell: + !include-raw: + - ./functest-env-presetup.sh + - ../../utils/fetch_os_creds.sh + - ./functest-alpine.sh + - conditional-step: + condition-kind: regex-match + regex: "k8-.*" + label: '$DEPLOY_SCENARIO' + steps: + - shell: + !include-raw: + - ../../utils/fetch_k8_conf.sh + - ./functest-k8.sh +# yamllint enable rule:indentation - builder: - name: functest-arm-daily + name: functest-store-results builders: - - shell: - !include-raw: ./functest-loop.sh + - shell: + !include-raw: ../../utils/push-test-logs.sh - builder: - name: functest-suite + name: functest-cleanup builders: - - shell: - !include-raw: ./functest-suite.sh + - shell: + !include-raw: ./functest-cleanup.sh - builder: - name: set-functest-env + name: functest-exit builders: - - shell: - !include-raw: - - ./functest-env-presetup.sh - - ../../utils/fetch_os_creds.sh - - ./set-functest-env.sh + - shell: + !include-raw: ./functest-exit.sh -- builder: - name: set-functest-env-alpine - builders: - - shell: - !include-raw: - - ./functest-env-presetup.sh - - ../../utils/fetch_os_creds.sh -- builder: - name: functest-store-results - builders: - - shell: - !include-raw: ../../utils/push-test-logs.sh +- publisher: + name: 'functest-features-recipients' + publishers: + - email: + recipients: -- builder: - name: functest-cleanup - builders: - - shell: - !include-raw: ./functest-cleanup.sh +- publisher: + name: 'functest-recipients' + publishers: + - email: + recipients: > + jalausuch@suse.com morgan.richomme@orange.com + cedric.ollivier@orange.com feng.xiaowei@zte.com.cn + juha.kosonen@nokia.com wangwulin@huawei.com + delia.popescu@enea.com cristina.pauna@enea.com + valentin.boucher@kontron.com + - email-jenkins-admins-on-failure -- builder: - name: functest-exit - builders: - - shell: - !include-raw: ./functest-exit.sh +- publisher: + name: 'fuel-recipients' + publishers: + - email: + recipients: > + peter.barabas@ericsson.com mpolenchuck@mirantis.com + alexandru.avadanii@enea.com guillermo.herrero@enea.com