| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 1 | package com.mirantis.mk | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 2 |  | 
 | 3 | /** | 
 | 4 |  * | 
 | 5 |  * KaaS Component Testing Utilities | 
 | 6 |  * | 
 | 7 |  */ | 
 | 8 |  | 
| Владислав Наумов | e534581 | 2020-08-12 16:30:20 +0200 | [diff] [blame] | 9 | /** | 
 | 10 |  * Check KaaS Core CICD feature flags | 
 | 11 |  * such triggers can be used in case of switching between pipelines, | 
 | 12 |  * conditions inside pipelines to reduce dependency on jenkins job builder and jenkins job templates itself | 
 | 13 |  * | 
 | 14 |  * @return      (map)[ | 
 | 15 |  *                    ffNameEnabled: (bool) True/False | 
 | 16 |  *                   ] | 
 | 17 |  */ | 
 | 18 | def checkCoreCIFeatureFlags() { | 
 | 19 |     def common = new com.mirantis.mk.Common() | 
 | 20 |     def ff = [ | 
 | 21 |         build_artifacts_upgrade: false, | 
 | 22 |     ] | 
 | 23 |  | 
 | 24 |     def commitMsg = env.GERRIT_CHANGE_COMMIT_MESSAGE ? new String(env.GERRIT_CHANGE_COMMIT_MESSAGE.decodeBase64()) : '' | 
 | 25 |     if (commitMsg ==~ /(?s).*\[ci-build-artifacts-upgrade\].*/) { | 
 | 26 |         ff['build_artifacts_upgrade'] = true | 
 | 27 |     } | 
 | 28 |  | 
 | 29 |     common.infoMsg("Core ci feature flags status: ${ff}") | 
 | 30 |     return ff | 
 | 31 | } | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 32 |  | 
 | 33 | /** | 
| azvyagintsev | a12230a | 2020-06-05 13:24:06 +0300 | [diff] [blame] | 34 |  * Determine scope of test suite against per-commit KaaS deployment based on keywords | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 35 |  * Keyword list: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md | 
| azvyagintsev | a12230a | 2020-06-05 13:24:06 +0300 | [diff] [blame] | 36 |  * | 
 | 37 |  * Used for components team to combine test-suites and forward desired parameters to kaas/core deployment jobs | 
 | 38 |  * Example scheme: | 
| Владислав Наумов | e534581 | 2020-08-12 16:30:20 +0200 | [diff] [blame] | 39 |  * New CR pushed in kubernetes/lcm-ansible -> parsing it'cs commit body and combine test-suite -> trigger deployment jobs from kaas/core | 
| azvyagintsev | a12230a | 2020-06-05 13:24:06 +0300 | [diff] [blame] | 40 |  * manage test-suite through Jenkins Job Parameters | 
 | 41 |  * | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 42 |  * @return      (map)[ | 
 | 43 |  *                    deployChildEnabled: (bool) True if need to deploy child cluster during demo-run | 
 | 44 |  *                    runUie2eEnabled:    (bool) True if need to run ui-e2e cluster during demo-run | 
| azvyagintsev | a12230a | 2020-06-05 13:24:06 +0300 | [diff] [blame] | 45 |  *                   ] | 
 | 46 |  */ | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 47 | def checkDeploymentTestSuite() { | 
| vnaumov | bdb9022 | 2020-05-04 18:25:50 +0200 | [diff] [blame] | 48 |     def common = new com.mirantis.mk.Common() | 
 | 49 |  | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 50 |     // Available triggers and its sane defaults | 
| Владислав Наумов | 44c64b7 | 2020-12-04 20:22:53 +0100 | [diff] [blame] | 51 |     def seedMacOs = env.SEED_MACOS ? env.SEED_MACOS.toBoolean() : false | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 52 |     def deployChild = env.DEPLOY_CHILD_CLUSTER ? env.DEPLOY_CHILD_CLUSTER.toBoolean() : false | 
 | 53 |     def upgradeChild = env.UPGRADE_CHILD_CLUSTER ? env.UPGRADE_CHILD_CLUSTER.toBoolean() : false | 
| Mikhail Ivanov | 7450437 | 2021-05-21 17:01:06 +0400 | [diff] [blame] | 54 |     def customChildRelease = env.KAAS_CHILD_CLUSTER_RELEASE_NAME ? env.KAAS_CHILD_CLUSTER_RELEASE_NAME : '' | 
| Владислав Наумов | 0dc9925 | 2020-11-13 13:30:48 +0100 | [diff] [blame] | 55 |     def attachBYO = env.ATTACH_BYO ? env.ATTACH_BYO.toBoolean() : false | 
| Владислав Наумов | cdbd84e | 2020-12-01 16:51:09 +0100 | [diff] [blame] | 56 |     def upgradeBYO = env.UPGRADE_BYO ? env.UPGRADE_BYO.toBoolean() : false | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 57 |     def runBYOMatrix = env.RUN_BYO_MATRIX ? env.RUN_BYO_MATRIX.toBoolean() : false | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 58 |     def defaultBYOOs = env.DEFAULT_BYO_OS ? env.DEFAULT_BYO_OS.toString() : 'ubuntu' | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 59 |     def upgradeMgmt = env.UPGRADE_MGMT_CLUSTER ? env.UPGRADE_MGMT_CLUSTER.toBoolean() : false | 
| Victor Ryzhenkin | d2b7b66 | 2021-08-23 14:18:38 +0400 | [diff] [blame] | 60 |     def enableLMALogging = env.ENABLE_LMA_LOGGING ? env.ENABLE_LMA_LOGGING.toBoolean(): false | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 61 |     def runUie2e = env.RUN_UI_E2E ? env.RUN_UI_E2E.toBoolean() : false | 
 | 62 |     def runMgmtConformance = env.RUN_MGMT_CFM ? env.RUN_MGMT_CFM.toBoolean() : false | 
| Владислав Наумов | 9cec55d | 2021-08-03 15:00:59 +0200 | [diff] [blame] | 63 |     def runLMATest = env.RUN_LMA_TEST ? env.RUN_LMA_TEST.toBoolean() : false | 
| Vladyslav Drok | c4f9c1b | 2021-07-22 15:34:24 +0200 | [diff] [blame] | 64 |     def runMgmtUserControllerTest = env.RUN_MGMT_USER_CONTROLLER_TEST ? env.RUN_MGMT_USER_CONTROLLER_TEST.toBoolean() : false | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 65 |     def runChildConformance = env.RUN_CHILD_CFM ? env.RUN_CHILD_CFM.toBoolean() : false | 
 | 66 |     def fetchServiceBinaries = env.FETCH_BINARIES_FROM_UPSTREAM ? env.FETCH_BINARIES_FROM_UPSTREAM.toBoolean() : false | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 67 |     def equinixMetalV2ChildDiffMetro = env.EQUINIXMETALV2_CHILD_DIFF_METRO ? env.EQUINIXMETALV2_CHILD_DIFF_METRO.toBoolean() : false | 
| slalov | 13e579c | 2022-01-31 21:37:02 +0400 | [diff] [blame^] | 68 |     def runMaintenanceTest = env.RUN_MAINTENANCE_TEST ? env.RUN_MAINTENANCE_TEST.toBoolean() : false | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 69 |     // multiregion configuration from env variable: comma-separated string in form $mgmt_provider,$regional_provider | 
 | 70 |     def multiregionalMappings = env.MULTIREGION_SETUP ? multiregionWorkflowParser(env.MULTIREGION_SETUP) : [ | 
 | 71 |         enabled: false, | 
 | 72 |         managementLocation: '', | 
 | 73 |         regionLocation: '', | 
 | 74 |     ] | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 75 |  | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 76 |     // proxy customization | 
 | 77 |     def proxyConfig = [ | 
| Владислав Наумов | f8f23fa | 2021-04-01 16:57:52 +0200 | [diff] [blame] | 78 |         mgmtOffline: env.OFFLINE_MGMT_CLUSTER ? env.OFFLINE_MGMT_CLUSTER.toBoolean() : false, | 
 | 79 |         childOffline: env.OFFLINE_CHILD_CLUSTER ? env.OFFLINE_CHILD_CLUSTER.toBoolean() : false, | 
| Владислав Наумов | 257ea13 | 2021-04-14 14:44:13 +0200 | [diff] [blame] | 80 |         childProxy: env.PROXY_CHILD_CLUSTER ? env.PROXY_CHILD_CLUSTER.toBoolean() : false, | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 81 |     ] | 
 | 82 |  | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 83 |     // optional demo deployment customization | 
| Владислав Наумов | 905dd36 | 2020-06-08 16:37:01 +0200 | [diff] [blame] | 84 |     def awsOnDemandDemo = env.ALLOW_AWS_ON_DEMAND ? env.ALLOW_AWS_ON_DEMAND.toBoolean() : false | 
| Владислав Наумов | e021b02 | 2021-05-06 11:26:38 +0200 | [diff] [blame] | 85 |     def equinixOnDemandDemo = env.ALLOW_EQUINIX_ON_DEMAND ? env.ALLOW_EQUINIX_ON_DEMAND.toBoolean() : false | 
| Владислав Наумов | 82305e9 | 2021-10-14 20:45:20 +0200 | [diff] [blame] | 86 |     def equinixMetalV2OnDemandDemo = env.ALLOW_EQUINIXMETALV2_ON_DEMAND ? env.ALLOW_EQUINIXMETALV2_ON_DEMAND.toBoolean() : false | 
| Владислав Наумов | f371580 | 2021-05-03 18:06:45 +0200 | [diff] [blame] | 87 |     def equinixOnAwsDemo = env.EQUINIX_ON_AWS_DEMO ? env.EQUINIX_ON_AWS_DEMO.toBoolean() : false | 
| Владислав Наумов | 2d3db33 | 2021-06-15 15:19:19 +0200 | [diff] [blame] | 88 |     def azureOnAwsDemo = env.AZURE_ON_AWS_DEMO ? env.AZURE_ON_AWS_DEMO.toBoolean() : false | 
| Владислав Наумов | c52dd9d | 2021-06-28 16:27:29 +0200 | [diff] [blame] | 89 |     def azureOnDemandDemo = env.ALLOW_AZURE_ON_DEMAND ? env.ALLOW_AZURE_ON_DEMAND.toBoolean() : false | 
| Ivan Berezovskiy | f9bcfd6 | 2021-03-18 18:41:38 +0400 | [diff] [blame] | 90 |     def enableVsphereDemo = true | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 91 |     def enableOSDemo = true | 
| azvyagintsev | 1761bdc | 2020-09-04 17:24:12 +0300 | [diff] [blame] | 92 |     def enableBMDemo = true | 
| Mikhail Ivanov | b6283f7 | 2021-11-24 18:34:57 +0400 | [diff] [blame] | 93 |     def openstackIMC = env.OPENSTACK_CLOUD_LOCATION ? env.OPENSTACK_CLOUD_LOCATION : 'us' | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 94 |  | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 95 |     def commitMsg = env.GERRIT_CHANGE_COMMIT_MESSAGE ? new String(env.GERRIT_CHANGE_COMMIT_MESSAGE.decodeBase64()) : '' | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 96 |     if (commitMsg ==~ /(?s).*\[mgmt-proxy\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*mgmt-proxy.*/) { | 
 | 97 |         proxyConfig['mgmtOffline'] = true | 
| Владислав Наумов | 70c0242 | 2021-04-19 14:29:41 +0200 | [diff] [blame] | 98 |         common.warningMsg('Forced running offline mgmt deployment, some provider CDN regions for mgmt deployment may be set to *public-ci* to verify proxy configuration') | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 99 |     } | 
| Владислав Наумов | 44c64b7 | 2020-12-04 20:22:53 +0100 | [diff] [blame] | 100 |     if (commitMsg ==~ /(?s).*\[seed-macos\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*seed-macos.*/) { | 
 | 101 |         seedMacOs = true | 
 | 102 |     } | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 103 |     if (commitMsg ==~ /(?s).*\[child-deploy\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*child-deploy.*/ || upgradeChild || runChildConformance) { | 
 | 104 |         deployChild = true | 
 | 105 |     } | 
 | 106 |     if (commitMsg ==~ /(?s).*\[child-upgrade\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*child-upgrade.*/) { | 
 | 107 |         deployChild = true | 
 | 108 |         upgradeChild = true | 
 | 109 |     } | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 110 |     def childDeployMatches = (commitMsg =~ /(\[child-deploy\s*(\w|\-)+?\])/) | 
 | 111 |     if (childDeployMatches.size() > 0) { | 
| Mikhail Ivanov | 7450437 | 2021-05-21 17:01:06 +0400 | [diff] [blame] | 112 |         // override child version when it set explicitly | 
 | 113 |         deployChild = true | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 114 |         customChildRelease = childDeployMatches[0][0].split('child-deploy')[1].replaceAll('[\\[\\]]', '').trim() | 
| Mikhail Ivanov | 7450437 | 2021-05-21 17:01:06 +0400 | [diff] [blame] | 115 |         common.warningMsg("Forced child deployment using custom release version ${customChildRelease}") | 
 | 116 |     } | 
| Владислав Наумов | 0dc9925 | 2020-11-13 13:30:48 +0100 | [diff] [blame] | 117 |     if (commitMsg ==~ /(?s).*\[byo-attach\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*byo-attach.*/) { | 
 | 118 |         attachBYO = true | 
 | 119 |     } | 
| Владислав Наумов | cdbd84e | 2020-12-01 16:51:09 +0100 | [diff] [blame] | 120 |     if (commitMsg ==~ /(?s).*\[byo-upgrade\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*byo-upgrade.*/) { | 
 | 121 |         attachBYO = true | 
 | 122 |         upgradeBYO = true | 
 | 123 |     } | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 124 |  | 
 | 125 |     def byoDeployMatches = (commitMsg =~ /(\[run-byo-matrix\s*(ubuntu|centos)\])/) | 
 | 126 |     if (commitMsg ==~ /(?s).*\[run-byo-matrix\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*run-byo-matrix\.*/ || byoDeployMatches.size() > 0) { | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 127 |         runBYOMatrix = true | 
 | 128 |  | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 129 |         if (byoDeployMatches.size() > 0) { | 
 | 130 |             defaultBYOOs = byoDeployMatches[0][2] | 
 | 131 |             common.warningMsg("Custom BYO OS detected, using ${defaultBYOOs}") | 
 | 132 |         } | 
 | 133 |  | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 134 |         common.warningMsg('Forced byo matrix test via run-byo-matrix, all other byo triggers will be skipped') | 
 | 135 |         attachBYO = false | 
 | 136 |         upgradeBYO = false | 
 | 137 |     } | 
| Владислав Наумов | 7f8c987 | 2021-03-08 17:33:08 +0400 | [diff] [blame] | 138 |     if (commitMsg ==~ /(?s).*\[mgmt-upgrade\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*mgmt-upgrade.*/) { | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 139 |         upgradeMgmt = true | 
 | 140 |     } | 
| Victor Ryzhenkin | d2b7b66 | 2021-08-23 14:18:38 +0400 | [diff] [blame] | 141 |     if (commitMsg ==~ /(?s).*\[lma-logging\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*lma-logging.*/) { | 
 | 142 |         enableLMALogging = true | 
 | 143 |     } | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 144 |     if (commitMsg ==~ /(?s).*\[ui-e2e\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*ui-e2e.*/) { | 
 | 145 |         runUie2e = true | 
 | 146 |     } | 
 | 147 |     if (commitMsg ==~ /(?s).*\[mgmt-cfm\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*mgmt-cfm.*/) { | 
 | 148 |         runMgmtConformance = true | 
 | 149 |     } | 
| Vladyslav Drok | c4f9c1b | 2021-07-22 15:34:24 +0200 | [diff] [blame] | 150 |     if (commitMsg ==~ /(?s).*\[test-user-controller\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*test-user-controller.*/) { | 
 | 151 |         runMgmtUserControllerTest = true | 
 | 152 |     } | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 153 |     if (commitMsg ==~ /(?s).*\[child-cfm\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*child-cfm.*/) { | 
 | 154 |         runChildConformance = true | 
 | 155 |         deployChild = true | 
 | 156 |     } | 
| Владислав Наумов | 9cec55d | 2021-08-03 15:00:59 +0200 | [diff] [blame] | 157 |     if (commitMsg ==~ /(?s).*\[lma-test\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*lma-test.*/) { | 
 | 158 |         runLMATest = true | 
| Victor Ryzhenkin | d2b7b66 | 2021-08-23 14:18:38 +0400 | [diff] [blame] | 159 |         enableLMALogging = true | 
 | 160 |         common.infoMsg('LMA logging will be enabled since LMA test suite will be executed') | 
| Victor Ryzhenkin | 1520659 | 2021-06-21 17:38:23 +0400 | [diff] [blame] | 161 |     } | 
| slalov | 13e579c | 2022-01-31 21:37:02 +0400 | [diff] [blame^] | 162 |     if (commitMsg ==~ /(?s).*\[maintenance-test\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*maintenance-test.*/) { | 
 | 163 |         runMaintenanceTest = true | 
 | 164 |     } | 
| Владислав Наумов | f8f23fa | 2021-04-01 16:57:52 +0200 | [diff] [blame] | 165 |     if (commitMsg ==~ /(?s).*\[child-offline\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*child-offline.*/) { | 
 | 166 |         proxyConfig['childOffline'] = true | 
 | 167 |         deployChild = true | 
 | 168 |     } | 
| Владислав Наумов | 257ea13 | 2021-04-14 14:44:13 +0200 | [diff] [blame] | 169 |     if (commitMsg ==~ /(?s).*\[child-proxy\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*child-proxy.*/) { | 
 | 170 |         proxyConfig['childOffline'] = true | 
 | 171 |         proxyConfig['childProxy'] = true | 
 | 172 |         deployChild = true | 
 | 173 |     } | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 174 |     if (commitMsg ==~ /(?s).*\[fetch.*binaries\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*fetch.*binaries.*/) { | 
 | 175 |         fetchServiceBinaries = true | 
 | 176 |     } | 
| Владислав Наумов | f1665b5 | 2021-05-13 10:51:17 +0200 | [diff] [blame] | 177 |     if (commitMsg ==~ /(?s).*\[equinix-on-aws\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*equinix-on-aws.*/) { | 
| eromanova | df247c3 | 2020-12-25 15:44:13 +0400 | [diff] [blame] | 178 |         equinixOnAwsDemo = true | 
| Владислав Наумов | f1665b5 | 2021-05-13 10:51:17 +0200 | [diff] [blame] | 179 |         common.warningMsg('Forced running child cluster deployment on EQUINIX METAL provider based on AWS management cluster, triggered on patchset using custom keyword: \'[equinix-on-aws]\' ') | 
| eromanova | df247c3 | 2020-12-25 15:44:13 +0400 | [diff] [blame] | 180 |     } | 
| Владислав Наумов | 2d3db33 | 2021-06-15 15:19:19 +0200 | [diff] [blame] | 181 |     if (commitMsg ==~ /(?s).*\[azure-on-aws\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*azure-on-aws.*/) { | 
 | 182 |         azureOnAwsDemo = true | 
 | 183 |         common.warningMsg('Forced running child cluster deployment on Azure provider based on AWS management cluster, triggered on patchset using custom keyword: \'[azure-on-aws]\' ') | 
 | 184 |     } | 
 | 185 |     if (commitMsg ==~ /(?s).*\[aws-demo\].*/                 || | 
 | 186 |         env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*aws-demo.*/ || | 
 | 187 |         attachBYO                                            || | 
 | 188 |         upgradeBYO                                           || | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 189 |         runBYOMatrix                                         || | 
| Владислав Наумов | 2d3db33 | 2021-06-15 15:19:19 +0200 | [diff] [blame] | 190 |         seedMacOs                                            || | 
 | 191 |         equinixOnAwsDemo                                     || | 
 | 192 |         azureOnAwsDemo) { | 
 | 193 |  | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 194 |         awsOnDemandDemo = true | 
| Владислав Наумов | 2d3db33 | 2021-06-15 15:19:19 +0200 | [diff] [blame] | 195 |         common.warningMsg('Running additional kaas deployment with AWS provider, may be forced due applied trigger cross dependencies, follow docs to clarify info') | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 196 |     } | 
| Владислав Наумов | f1665b5 | 2021-05-13 10:51:17 +0200 | [diff] [blame] | 197 |     if (commitMsg ==~ /(?s).*\[equinix-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*equinix-demo\.*/) { | 
| Владислав Наумов | e021b02 | 2021-05-06 11:26:38 +0200 | [diff] [blame] | 198 |         equinixOnDemandDemo = true | 
 | 199 |     } | 
| Владислав Наумов | 82305e9 | 2021-10-14 20:45:20 +0200 | [diff] [blame] | 200 |     if (commitMsg ==~ /(?s).*\[equinixmetalv2-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*equinixmetalv2-demo\.*/) { | 
| Владислав Наумов | 144956f | 2021-10-14 17:49:19 +0200 | [diff] [blame] | 201 |         equinixMetalV2OnDemandDemo = true | 
 | 202 |     } | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 203 |     if (commitMsg ==~ /(?s).*\[equinixmetalv2-child-diff-metro\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*equinixmetalv2-child-diff-metro\.*/) { | 
 | 204 |         equinixMetalV2OnDemandDemo = true | 
 | 205 |         equinixMetalV2ChildDiffMetro = true | 
 | 206 |     } | 
| Владислав Наумов | c52dd9d | 2021-06-28 16:27:29 +0200 | [diff] [blame] | 207 |     if (commitMsg ==~ /(?s).*\[azure-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*azure-demo\.*/) { | 
 | 208 |         azureOnDemandDemo = true | 
 | 209 |     } | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 210 |     if (commitMsg ==~ /(?s).*\[disable-os-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*disable-os-demo\.*/) { | 
 | 211 |         enableOSDemo = false | 
 | 212 |         common.errorMsg('Openstack demo deployment will be aborted, VF -1 will be set') | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 213 |     } | 
 | 214 |  | 
| azvyagintsev | 1761bdc | 2020-09-04 17:24:12 +0300 | [diff] [blame] | 215 |     if (commitMsg ==~ /(?s).*\[disable-bm-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*disable-bm-demo\.*/) { | 
 | 216 |         enableBMDemo = false | 
 | 217 |         common.errorMsg('BM demo deployment will be aborted, VF -1 will be set') | 
 | 218 |     } | 
 | 219 |  | 
| Ivan Berezovskiy | f9bcfd6 | 2021-03-18 18:41:38 +0400 | [diff] [blame] | 220 |     if (commitMsg ==~ /(?s).*\[disable-vsphere-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*disable-vsphere-demo\.*/) { | 
 | 221 |         enableVsphereDemo = false | 
 | 222 |         common.errorMsg('vSphere demo deployment will be aborted, VF -1 will be set') | 
 | 223 |     } | 
 | 224 |  | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 225 |     // TODO (vnaumov) remove below condition after moving all releases to UCP | 
 | 226 |     def ucpChildMatches = (commitMsg =~ /(\[child-ucp\s*ucp-.*?\])/) | 
 | 227 |     if (ucpChildMatches.size() > 0) { | 
 | 228 |         deployChild = true | 
 | 229 |         common.warningMsg('Forced UCP based child deployment triggered on patchset using custom keyword: \'[child-ucp ucp-5-1-0-3-3-0-example]\' ') | 
 | 230 |  | 
 | 231 |         // TODO(vnaumov) delete after ucp upgrades support | 
 | 232 |         common.errorMsg('Child upgrade test will be skipped, UCP upgrades temporally disabled') | 
 | 233 |         upgradeChild = false | 
 | 234 |     } | 
 | 235 |  | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 236 |     // multiregional tests | 
 | 237 |     def multiRegionalMatches = (commitMsg =~ /(\[multiregion\s*.*?\])/) | 
 | 238 |     if (multiRegionalMatches.size() > 0) { | 
 | 239 |         multiregionalMappings = multiregionWorkflowParser(multiRegionalMatches) | 
 | 240 |     } | 
 | 241 |     switch (multiregionalMappings['managementLocation']) { | 
 | 242 |         case 'aws': | 
| Владислав Наумов | 53b07e5 | 2021-01-07 15:08:27 +0100 | [diff] [blame] | 243 |             common.warningMsg('Forced running additional kaas deployment with AWS provider according multiregional demo request') | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 244 |             awsOnDemandDemo = true | 
| Владислав Наумов | 53b07e5 | 2021-01-07 15:08:27 +0100 | [diff] [blame] | 245 |  | 
 | 246 |             if (multiregionalMappings['regionLocation'] != 'aws' && seedMacOs) { // macstadium seed node has access only to *public* providers | 
 | 247 |                 error('incompatible triggers: [seed-macos] and multiregional deployment based on *private* regional provider cannot be applied simultaneously') | 
 | 248 |             } | 
| Владислав Наумов | 3e4b5a3 | 2020-09-11 17:05:34 +0200 | [diff] [blame] | 249 |             break | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 250 |         case 'os': | 
 | 251 |             if (enableOSDemo == false) { | 
 | 252 |                 error('incompatible triggers: [disable-os-demo] and multiregional deployment based on OSt management region cannot be applied simultaneously') | 
 | 253 |             } | 
| Владислав Наумов | 3e4b5a3 | 2020-09-11 17:05:34 +0200 | [diff] [blame] | 254 |             break | 
| Владислав Наумов | 865ba6c | 2021-05-13 13:05:45 +0200 | [diff] [blame] | 255 |         case 'vsphere': | 
 | 256 |             if (enableVsphereDemo == false) { | 
 | 257 |                 error('incompatible triggers: [disable-vsphere-demo] and multiregional deployment based on Vsphere management region cannot be applied simultaneously') | 
 | 258 |             } | 
 | 259 |             break | 
| Владислав Наумов | 5be0294 | 2021-05-13 12:34:37 +0200 | [diff] [blame] | 260 |         case 'equinix': | 
 | 261 |             common.warningMsg('Forced running additional kaas deployment with Equinix provider according multiregional demo request') | 
 | 262 |             equinixOnDemandDemo = true | 
| eromanova | 3535916 | 2021-12-30 14:13:13 +0400 | [diff] [blame] | 263 |             break | 
| eromanova | 8c702ae | 2021-12-24 17:43:12 +0400 | [diff] [blame] | 264 |         case 'equinixmetalv2': | 
 | 265 |             common.warningMsg('Forced running additional kaas deployment with Equinix Metal V2 provider according multiregional demo request') | 
 | 266 |             equinixMetalV2OnDemandDemo = true | 
| eromanova | 3535916 | 2021-12-30 14:13:13 +0400 | [diff] [blame] | 267 |             break | 
| slalov | fd0b7e6 | 2021-07-28 18:05:16 +0400 | [diff] [blame] | 268 |         case 'azure': | 
 | 269 |             common.warningMsg('Forced running additional kaas deployment with Azure provider according multiregional demo request') | 
 | 270 |             azureOnDemandDemo = true | 
 | 271 |             break | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 272 |     } | 
 | 273 |  | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 274 |     // CDN configuration | 
 | 275 |     def cdnConfig = [ | 
 | 276 |         mgmt: [ | 
 | 277 |             openstack:  (proxyConfig['mgmtOffline'] == true) ? 'public-ci' : 'internal-ci', | 
| Владислав Наумов | 70c0242 | 2021-04-19 14:29:41 +0200 | [diff] [blame] | 278 |             vsphere:  'internal-ci', | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 279 |             aws: 'public-ci', | 
| Владислав Наумов | e021b02 | 2021-05-06 11:26:38 +0200 | [diff] [blame] | 280 |             equinix: 'public-ci', | 
| Владислав Наумов | c52dd9d | 2021-06-28 16:27:29 +0200 | [diff] [blame] | 281 |             azure: 'public-ci', | 
| Владислав Наумов | f8f23fa | 2021-04-01 16:57:52 +0200 | [diff] [blame] | 282 |         ], | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 283 |     ] | 
 | 284 |  | 
| Mikhail Ivanov | b6283f7 | 2021-11-24 18:34:57 +0400 | [diff] [blame] | 285 |     if (commitMsg ==~ /(?s).*\[eu-demo\].*/ || env.GERRIT_EVENT_COMMENT_TEXT ==~ /(?s).*eu-demo.*/) { | 
 | 286 |         openstackIMC = 'eu' | 
 | 287 |         // use internal-eu because on internal-ci with eu cloud image pull takes much time | 
 | 288 |         def cdnRegion = (proxyConfig['mgmtOffline'] == true) ? 'public-ci' : 'internal-eu' | 
 | 289 |         common.infoMsg("eu-demo was triggered, force switching CDN region to ${cdnRegion}") | 
 | 290 |         cdnConfig['mgmt']['openstack'] = cdnRegion | 
 | 291 |     } | 
 | 292 |  | 
| Владислав Наумов | 74e2d6e | 2020-12-30 17:05:40 +0100 | [diff] [blame] | 293 |     // calculate weight of current demo run to manage lockable resources | 
 | 294 |     def demoWeight = (deployChild) ? 2 : 1 // management = 1, child = 1 | 
 | 295 |  | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 296 |     common.infoMsg(""" | 
| Mikhail Ivanov | b6283f7 | 2021-11-24 18:34:57 +0400 | [diff] [blame] | 297 |         OpenStack Cloud location: ${openstackIMC} | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 298 |         CDN deployment configuration: ${cdnConfig} | 
 | 299 |         MCC offline deployment configuration: ${proxyConfig} | 
| Владислав Наумов | 44c64b7 | 2020-12-04 20:22:53 +0100 | [diff] [blame] | 300 |         Use MacOS node as seed: ${seedMacOs} | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 301 |         Child cluster deployment scheduled: ${deployChild} | 
| Mikhail Ivanov | 7450437 | 2021-05-21 17:01:06 +0400 | [diff] [blame] | 302 |         Custom child cluster release: ${customChildRelease} | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 303 |         Child cluster release upgrade scheduled: ${upgradeChild} | 
 | 304 |         Child conformance testing scheduled: ${runChildConformance} | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 305 |         Single BYO cluster attachment scheduled: ${attachBYO} | 
 | 306 |         Single Attached BYO cluster upgrade test scheduled: ${upgradeBYO} | 
 | 307 |         BYO test matrix whole suite scheduled: ${runBYOMatrix} | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 308 |         Default BYO OS: ${defaultBYOOs} | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 309 |         Mgmt cluster release upgrade scheduled: ${upgradeMgmt} | 
| Victor Ryzhenkin | d2b7b66 | 2021-08-23 14:18:38 +0400 | [diff] [blame] | 310 |         Mgmt LMA logging enabled: ${enableLMALogging} | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 311 |         Mgmt conformance testing scheduled: ${runMgmtConformance} | 
| Владислав Наумов | 9cec55d | 2021-08-03 15:00:59 +0200 | [diff] [blame] | 312 |         LMA testing scheduled: ${runLMATest} | 
| Vladyslav Drok | c4f9c1b | 2021-07-22 15:34:24 +0200 | [diff] [blame] | 313 |         Mgmt user controller testing scheduled: ${runMgmtUserControllerTest} | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 314 |         Mgmt UI e2e testing scheduled: ${runUie2e} | 
| slalov | 13e579c | 2022-01-31 21:37:02 +0400 | [diff] [blame^] | 315 |         Maintenance test: ${runMaintenanceTest} | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 316 |         AWS provider deployment scheduled: ${awsOnDemandDemo} | 
| Владислав Наумов | e021b02 | 2021-05-06 11:26:38 +0200 | [diff] [blame] | 317 |         Equinix provider deployment scheduled: ${equinixOnDemandDemo} | 
| Владислав Наумов | 144956f | 2021-10-14 17:49:19 +0200 | [diff] [blame] | 318 |         EquinixmetalV2 provider deployment scheduled: ${equinixMetalV2OnDemandDemo} | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 319 |         EquinixmetalV2 child deploy in a separate metro scheduled: ${equinixMetalV2ChildDiffMetro} | 
| Владислав Наумов | f1665b5 | 2021-05-13 10:51:17 +0200 | [diff] [blame] | 320 |         Equinix@AWS child cluster deployment scheduled: ${equinixOnAwsDemo} | 
| Владислав Наумов | c52dd9d | 2021-06-28 16:27:29 +0200 | [diff] [blame] | 321 |         Azure provider deployment scheduled: ${azureOnDemandDemo} | 
| Владислав Наумов | 2d3db33 | 2021-06-15 15:19:19 +0200 | [diff] [blame] | 322 |         Azure@AWS child cluster deployment scheduled: ${azureOnAwsDemo} | 
| Ivan Berezovskiy | f9bcfd6 | 2021-03-18 18:41:38 +0400 | [diff] [blame] | 323 |         VSPHERE provider deployment scheduled: ${enableVsphereDemo} | 
| Владислав Наумов | 4eb1da3 | 2020-08-31 14:45:16 +0200 | [diff] [blame] | 324 |         OS provider deployment scheduled: ${enableOSDemo} | 
| azvyagintsev | 1761bdc | 2020-09-04 17:24:12 +0300 | [diff] [blame] | 325 |         BM provider deployment scheduled: ${enableBMDemo} | 
| Владислав Наумов | f793fe3 | 2020-09-11 15:19:19 +0200 | [diff] [blame] | 326 |         Multiregional configuration: ${multiregionalMappings} | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 327 |         Service binaries fetching scheduled: ${fetchServiceBinaries} | 
| Владислав Наумов | 74e2d6e | 2020-12-30 17:05:40 +0100 | [diff] [blame] | 328 |         Current weight of the demo run: ${demoWeight} (Used to manage lockable resources) | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 329 |         Triggers: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md""") | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 330 |     return [ | 
| Mikhail Ivanov | b6283f7 | 2021-11-24 18:34:57 +0400 | [diff] [blame] | 331 |         osCloudLocation                      : openstackIMC, | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 332 |         cdnConfig                            : cdnConfig, | 
 | 333 |         proxyConfig                          : proxyConfig, | 
 | 334 |         useMacOsSeedNode                     : seedMacOs, | 
 | 335 |         deployChildEnabled                   : deployChild, | 
 | 336 |         childDeployCustomRelease             : customChildRelease, | 
 | 337 |         upgradeChildEnabled                  : upgradeChild, | 
 | 338 |         runChildConformanceEnabled           : runChildConformance, | 
 | 339 |         attachBYOEnabled                     : attachBYO, | 
 | 340 |         upgradeBYOEnabled                    : upgradeBYO, | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 341 |         runBYOMatrixEnabled                  : runBYOMatrix, | 
| Mikhail Ivanov | eabc9d9 | 2021-12-30 16:40:14 +0400 | [diff] [blame] | 342 |         defaultBYOOs                         : defaultBYOOs, | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 343 |         upgradeMgmtEnabled                   : upgradeMgmt, | 
 | 344 |         enableLMALoggingEnabled              : enableLMALogging, | 
 | 345 |         runUie2eEnabled                      : runUie2e, | 
 | 346 |         runMgmtConformanceEnabled            : runMgmtConformance, | 
| slalov | 13e579c | 2022-01-31 21:37:02 +0400 | [diff] [blame^] | 347 |         runMaintenanceTestEnable             : runMaintenanceTest, | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 348 |         runLMATestEnabled                    : runLMATest, | 
 | 349 |         runMgmtUserControllerTestEnabled     : runMgmtUserControllerTest, | 
 | 350 |         fetchServiceBinariesEnabled          : fetchServiceBinaries, | 
 | 351 |         awsOnDemandDemoEnabled               : awsOnDemandDemo, | 
 | 352 |         equinixOnDemandDemoEnabled           : equinixOnDemandDemo, | 
 | 353 |         equinixMetalV2OnDemandDemoEnabled    : equinixMetalV2OnDemandDemo, | 
 | 354 |         equinixMetalV2ChildDiffMetroEnabled  : equinixMetalV2ChildDiffMetro, | 
 | 355 |         equinixOnAwsDemoEnabled              : equinixOnAwsDemo, | 
 | 356 |         azureOnDemandDemoEnabled             : azureOnDemandDemo, | 
 | 357 |         azureOnAwsDemoEnabled                : azureOnAwsDemo, | 
 | 358 |         vsphereDemoEnabled                   : enableVsphereDemo, | 
 | 359 |         vsphereOnDemandDemoEnabled           : enableVsphereDemo, // TODO: remove after MCC 2.7 is out | 
 | 360 |         bmDemoEnabled                        : enableBMDemo, | 
 | 361 |         osDemoEnabled                        : enableOSDemo, | 
 | 362 |         multiregionalConfiguration           : multiregionalMappings, | 
 | 363 |         demoWeight                           : demoWeight] | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 364 | } | 
 | 365 |  | 
 | 366 | /** | 
 | 367 |  * Determine management and regional setup for demo workflow scenario | 
 | 368 |  * | 
 | 369 |  * | 
 | 370 |  * @param:        keyword (string) string , represents keyworkd trigger, specified in gerrit commit body, like `[multiregion aws,os]` | 
 | 371 |                                    or Jenkins environment string variable in form like 'aws,os' | 
 | 372 |  * @return        (map)[ | 
 | 373 |                           enabled: (bool), | 
 | 374 |  *                        managementLocation: (string), //aws,os | 
 | 375 |  *                        regionLocation: (string), //aws,os | 
 | 376 |  *                     ] | 
 | 377 |  */ | 
 | 378 | def multiregionWorkflowParser(keyword) { | 
| Владислав Наумов | 8c0c39d | 2020-09-11 14:46:48 +0200 | [diff] [blame] | 379 |     def common = new com.mirantis.mk.Common() | 
| eromanova | 8c702ae | 2021-12-24 17:43:12 +0400 | [diff] [blame] | 380 |     def supportedManagementProviders = ['os', 'aws', 'vsphere', 'equinix', 'equinixmetalv2', 'azure'] | 
 | 381 |     def supportedRegionalProviders = ['os', 'vsphere', 'equinix', 'equinixmetalv2', 'bm', 'azure', 'aws'] | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 382 |  | 
 | 383 |     def clusterTypes = '' | 
| Владислав Наумов | 38ed7bf | 2020-09-11 14:43:39 +0200 | [diff] [blame] | 384 |     if (keyword.toString().contains('multiregion')) { | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 385 |         common.infoMsg('Multiregion definition configured via gerrit keyword trigger') | 
 | 386 |         clusterTypes = keyword[0][0].split('multiregion')[1].replaceAll('[\\[\\]]', '').trim().split(',') | 
 | 387 |     } else { | 
 | 388 |         common.infoMsg('Multiregion definition configured via environment variable') | 
 | 389 |         clusterTypes = keyword.trim().split(',') | 
 | 390 |     } | 
 | 391 |  | 
 | 392 |     if (clusterTypes.size() != 2) { | 
| Владислав Наумов | 482fb50 | 2020-10-30 17:59:27 +0100 | [diff] [blame] | 393 |         error("Incorrect regions definiton, valid scheme: [multiregion ${management}, ${region}], got: ${clusterTypes}") | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 394 |     } | 
 | 395 |  | 
| Владислав Наумов | f793fe3 | 2020-09-11 15:19:19 +0200 | [diff] [blame] | 396 |     def desiredManagementProvider = clusterTypes[0].trim() | 
 | 397 |     def desiredRegionalProvider = clusterTypes[1].trim() | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 398 |     if (! supportedManagementProviders.contains(desiredManagementProvider) || ! supportedRegionalProviders.contains(desiredRegionalProvider)) { | 
 | 399 |         error("""unsupported management <-> regional bundle, available options: | 
| Владислав Наумов | f793fe3 | 2020-09-11 15:19:19 +0200 | [diff] [blame] | 400 |               management providers list - ${supportedManagementProviders} | 
 | 401 |               regional providers list - ${supportedRegionalProviders}""") | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 402 |     } | 
 | 403 |  | 
 | 404 |     return [ | 
 | 405 |         enabled: true, | 
 | 406 |         managementLocation: desiredManagementProvider, | 
 | 407 |         regionLocation: desiredRegionalProvider, | 
 | 408 |     ] | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 409 | } | 
 | 410 |  | 
 | 411 | /** | 
 | 412 |  * Determine if custom si tests/pipelines refspec forwarded from gerrit change request | 
 | 413 |  | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 414 |  * Keyword list: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 415 |  * Used for components team to test component changes w/ custom SI refspecs using kaas/core deployment jobs | 
 | 416 |  * Example scheme: | 
 | 417 |  * New CR pushed in kubernetes/lcm-ansible -> parsing it's commit body and get custom test refspecs -> trigger deployment jobs from kaas/core | 
 | 418 |  * manage refspecs through Jenkins Job Parameters | 
 | 419 |  * | 
| azvyagintsev | a12230a | 2020-06-05 13:24:06 +0300 | [diff] [blame] | 420 |  * @return (map)[*                    siTests: (string) final refspec for si-tests | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 421 |  *                    siPipelines: (string) final refspec for si-pipelines | 
 | 422 |  *                   ] | 
 | 423 |  */ | 
 | 424 | def checkCustomSIRefspec() { | 
| vnaumov | bdb9022 | 2020-05-04 18:25:50 +0200 | [diff] [blame] | 425 |     def common = new com.mirantis.mk.Common() | 
 | 426 |  | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 427 |     // Available triggers and its sane defaults | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 428 |     def siTestsRefspec = env.SI_TESTS_REFSPEC ?: 'master' | 
 | 429 |     def siPipelinesRefspec = env.SI_PIPELINES_REFSPEC ?: 'master' | 
| Владислав Наумов | 2db15e2 | 2020-07-14 12:29:22 +0200 | [diff] [blame] | 430 |     def siTestsDockerImage = env.SI_TESTS_DOCKER_IMAGE ?: 'docker-dev-kaas-local.docker.mirantis.net/mirantis/kaas/si-test' | 
 | 431 |     def siTestsDockerImageTag = env.SI_TESTS_DOCKER_IMAGE_TAG ?: 'master' | 
| Владислав Наумов | 6c2afff | 2020-06-05 12:54:53 +0200 | [diff] [blame] | 432 |     def commitMsg = env.GERRIT_CHANGE_COMMIT_MESSAGE ? new String(env.GERRIT_CHANGE_COMMIT_MESSAGE.decodeBase64()) : '' | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 433 |  | 
 | 434 |     def siTestMatches = (commitMsg =~ /(\[si-tests-ref\s*refs\/changes\/.*?\])/) | 
 | 435 |     def siPipelinesMatches = (commitMsg =~ /(\[si-pipelines-ref\s*refs\/changes\/.*?\])/) | 
 | 436 |  | 
 | 437 |     if (siTestMatches.size() > 0) { | 
 | 438 |         siTestsRefspec = siTestMatches[0][0].split('si-tests-ref')[1].replaceAll('[\\[\\]]', '').trim() | 
| Владислав Наумов | 7f6c088 | 2021-03-23 19:10:57 +0400 | [diff] [blame] | 439 |         siTestsDockerImage = "docker-review-local.docker.mirantis.net/review/kaas-si-test-${siTestsRefspec.split('/')[-2]}" | 
| Владислав Наумов | 2db15e2 | 2020-07-14 12:29:22 +0200 | [diff] [blame] | 440 |         siTestsDockerImageTag = siTestsRefspec.split('/')[-1] | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 441 |     } | 
 | 442 |     if (siPipelinesMatches.size() > 0) { | 
 | 443 |         siPipelinesRefspec = siPipelinesMatches[0][0].split('si-pipelines-ref')[1].replaceAll('[\\[\\]]', '').trim() | 
 | 444 |     } | 
 | 445 |  | 
 | 446 |     common.infoMsg(""" | 
 | 447 |         kaas/si-pipelines will be fetched from: ${siPipelinesRefspec} | 
 | 448 |         kaas/si-tests will be fetched from: ${siTestsRefspec} | 
| Владислав Наумов | 2db15e2 | 2020-07-14 12:29:22 +0200 | [diff] [blame] | 449 |         kaas/si-tests as dockerImage will be fetched from: ${siTestsDockerImage}:${siTestsDockerImageTag} | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 450 |         Keywords: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md""") | 
| Владислав Наумов | 2db15e2 | 2020-07-14 12:29:22 +0200 | [diff] [blame] | 451 |     return [siTests: siTestsRefspec, siPipelines: siPipelinesRefspec, siTestsDockerImage: siTestsDockerImage, siTestsDockerImageTag: siTestsDockerImageTag] | 
| vnaumov | 33747e1 | 2020-05-04 17:35:20 +0200 | [diff] [blame] | 452 | } | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 453 |  | 
| Владислав Наумов | 9080f37 | 2020-06-08 13:57:16 +0200 | [diff] [blame] | 454 | /** | 
| Владислав Наумов | 418042b | 2020-07-09 18:31:10 +0200 | [diff] [blame] | 455 |  * Parse additional configuration for kaas component CICD repo | 
| Владислав Наумов | 30a516c | 2020-07-09 13:15:41 +0200 | [diff] [blame] | 456 |  * @param configurationFile    (str) path to configuration file in yaml format | 
 | 457 |  * | 
 | 458 |  * @return                     (map)[     siTestsFeatureFlags (string) dedicated feature flags that will be used in SI tests, | 
 | 459 |  *                                  ] | 
 | 460 |  */ | 
 | 461 | def parseKaaSComponentCIParameters(configurationFile){ | 
 | 462 |    def common = new com.mirantis.mk.Common() | 
 | 463 |    def ciConfig = readYaml file: configurationFile | 
 | 464 |    def ciSpec = [ | 
 | 465 |    siTestsFeatureFlags: env.SI_TESTS_FEATURE_FLAGS ?: '', | 
 | 466 |    ] | 
 | 467 |  | 
 | 468 |    if (ciConfig.containsKey('si-tests-feature-flags')) { | 
 | 469 |        common.infoMsg("""SI tests feature flags customization detected, | 
 | 470 |            results will be merged with existing flags: [${ciSpec['siTestsFeatureFlags']}] identification...""") | 
 | 471 |  | 
 | 472 |        def ffMeta = ciSpec['siTestsFeatureFlags'].tokenize(',').collect { it.trim() } | 
 | 473 |        ffMeta.addAll(ciConfig['si-tests-feature-flags']) | 
| Владислав Наумов | 30a516c | 2020-07-09 13:15:41 +0200 | [diff] [blame] | 474 |  | 
| Владислав Наумов | cb5ffca | 2020-07-14 15:28:36 +0200 | [diff] [blame] | 475 |        ciSpec['siTestsFeatureFlags'] = ffMeta.unique().join(',') | 
| Владислав Наумов | 30a516c | 2020-07-09 13:15:41 +0200 | [diff] [blame] | 476 |        common.infoMsg("SI tests custom feature flags: ${ciSpec['siTestsFeatureFlags']}") | 
 | 477 |    } | 
 | 478 |  | 
 | 479 |    common.infoMsg("""Additional ci configuration parsed successfully: | 
 | 480 |        siTestsFeatureFlags: ${ciSpec['siTestsFeatureFlags']}""") | 
 | 481 |    return ciSpec | 
 | 482 | } | 
 | 483 |  | 
 | 484 | /** | 
 | 485 |  * Determine if custom kaas core/pipelines refspec forwarded from gerrit change request | 
| Владислав Наумов | 9080f37 | 2020-06-08 13:57:16 +0200 | [diff] [blame] | 486 |  | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 487 |  * Keyword list: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md | 
| Владислав Наумов | 9080f37 | 2020-06-08 13:57:16 +0200 | [diff] [blame] | 488 |  * Used for components team to test component changes w/ custom Core refspecs using kaas/core deployment jobs | 
 | 489 |  * Example scheme: | 
 | 490 |  * New CR pushed in kubernetes/lcm-ansible -> parsing it's commit body and get custom test refspecs -> trigger deployment jobs from kaas/core | 
 | 491 |  * manage refspecs through Jenkins Job Parameters | 
 | 492 |  * | 
 | 493 |  * @return          (map)[     core: (string) final refspec for kaas/core | 
 | 494 |  *                             corePipelines: (string) final refspec for pipelines in kaas/core | 
 | 495 |  *                       ] | 
 | 496 |  */ | 
 | 497 | def checkCustomCoreRefspec() { | 
 | 498 |     def common = new com.mirantis.mk.Common() | 
 | 499 |  | 
 | 500 |     // Available triggers and its sane defaults | 
 | 501 |     def coreRefspec = env.KAAS_CORE_REFSPEC ?: 'master' | 
 | 502 |     // by default using value of GERRIT_REFSPEC parameter in *kaas/core jobs* | 
 | 503 |     def corePipelinesRefspec = env.KAAS_PIPELINE_REFSPEC ?: '\$GERRIT_REFSPEC' | 
 | 504 |     def commitMsg = env.GERRIT_CHANGE_COMMIT_MESSAGE ? new String(env.GERRIT_CHANGE_COMMIT_MESSAGE.decodeBase64()) : '' | 
 | 505 |  | 
 | 506 |     def coreMatches = (commitMsg =~ /(\[core-ref\s*refs\/changes\/.*?\])/) | 
 | 507 |     def corePipelinesMatches = (commitMsg =~ /(\[core-pipelines-ref\s*refs\/changes\/.*?\])/) | 
 | 508 |  | 
 | 509 |     if (coreMatches.size() > 0) { | 
 | 510 |         coreRefspec = coreMatches[0][0].split('core-ref')[1].replaceAll('[\\[\\]]', '').trim() | 
 | 511 |     } | 
 | 512 |     if (corePipelinesMatches.size() > 0) { | 
 | 513 |         corePipelinesRefspec = corePipelinesMatches[0][0].split('core-pipelines-ref')[1].replaceAll('[\\[\\]]', '').trim() | 
 | 514 |     } | 
 | 515 |  | 
 | 516 |     common.infoMsg(""" | 
 | 517 |         kaas/core will be fetched from: ${coreRefspec} | 
 | 518 |         kaas/core pipelines will be fetched from: ${corePipelinesRefspec} | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 519 |         Keywords: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md""") | 
| Владислав Наумов | 9080f37 | 2020-06-08 13:57:16 +0200 | [diff] [blame] | 520 |     return [core: coreRefspec, corePipelines: corePipelinesRefspec] | 
 | 521 | } | 
 | 522 |  | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 523 |  | 
 | 524 | /** | 
| Владислав Наумов | 92288d9 | 2020-07-13 18:36:21 +0200 | [diff] [blame] | 525 |  * generate Jenkins Parameter objects from from text parameter with additonal kaas core context | 
 | 526 |  * needed to forward inside kaas core set of jobs | 
 | 527 |  * | 
 | 528 |  * @param           context (string) Representation of the string enviroment variables needed for kaas core jobs in yaml format | 
 | 529 |  * @return          (list)[    string(name: '', value: ''), | 
 | 530 |  *                       ] | 
 | 531 |  */ | 
 | 532 | def generateKaaSVarsFromContext(context) { | 
 | 533 |     def common = new com.mirantis.mk.Common() | 
 | 534 |     def parameters = [] | 
 | 535 |     def config = readYaml text: context | 
 | 536 |  | 
 | 537 |     config.each { k,v -> | 
 | 538 |         common.infoMsg("Custom KaaS Core context parameter: ${k}=${v}") | 
 | 539 |         parameters.add(string(name: k, value: v)) | 
 | 540 |     } | 
 | 541 |  | 
 | 542 |     return parameters | 
 | 543 | } | 
 | 544 |  | 
 | 545 | /** | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 546 |  * Trigger KaaS demo jobs based on AWS/OS providers with customized test suite, parsed from external sources (gerrit commit/jj vars) | 
| Владислав Наумов | 8177747 | 2021-03-09 15:14:27 +0400 | [diff] [blame] | 547 |  * Keyword list: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/hack/ci-gerrit-keywords.md | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 548 |  * Used for components team to test component changes w/ customized SI tests/refspecs using kaas/core deployment jobs | 
 | 549 |  * | 
| Владислав Наумов | 418042b | 2020-07-09 18:31:10 +0200 | [diff] [blame] | 550 |  * @param:        component (string) component name [iam, lcm, stacklight] | 
 | 551 |  * @param:        patchSpec (string) Patch for kaas/cluster releases in json format | 
 | 552 |  * @param:        configurationFile (string) Additional file for component repo CI config in yaml format | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 553 |  */ | 
| Владислав Наумов | 92288d9 | 2020-07-13 18:36:21 +0200 | [diff] [blame] | 554 | def triggerPatchedComponentDemo(component, patchSpec = '', configurationFile = '.ci-parameters.yaml', coreContext = '') { | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 555 |     def common = new com.mirantis.mk.Common() | 
 | 556 |     // Determine if custom trigger keywords forwarded from gerrit | 
 | 557 |     def triggers = checkDeploymentTestSuite() | 
 | 558 |     // Determine SI refspecs | 
 | 559 |     def siRefspec = checkCustomSIRefspec() | 
| Владислав Наумов | 9080f37 | 2020-06-08 13:57:16 +0200 | [diff] [blame] | 560 |     // Determine Core refspecs | 
 | 561 |     def coreRefspec = checkCustomCoreRefspec() | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 562 |  | 
| Владислав Наумов | 418042b | 2020-07-09 18:31:10 +0200 | [diff] [blame] | 563 |     // Determine component repo ci configuration | 
 | 564 |     def ciSpec = [:] | 
 | 565 |     def componentFeatureFlags = env.SI_TESTS_FEATURE_FLAGS ?: '' | 
 | 566 |     if (fileExists(configurationFile)) { | 
 | 567 |         common.infoMsg('Component CI configuration file detected, parsing...') | 
 | 568 |         ciSpec = parseKaaSComponentCIParameters(configurationFile) | 
 | 569 |         componentFeatureFlags = ciSpec['siTestsFeatureFlags'] | 
 | 570 |     } else { | 
 | 571 |         common.warningMsg('''Component CI configuration file is not exists, | 
| Владислав Наумов | c17dd55 | 2020-07-29 17:07:38 +0200 | [diff] [blame] | 572 |             several code-management features may be unavailable, | 
| Владислав Наумов | 92288d9 | 2020-07-13 18:36:21 +0200 | [diff] [blame] | 573 |             follow https://mirantis.jira.com/wiki/spaces/QA/pages/2310832276/SI-tests+feature+flags#%5BUpdated%5D-Using-a-feature-flag | 
 | 574 |             to create the configuration file''') | 
| Владислав Наумов | 418042b | 2020-07-09 18:31:10 +0200 | [diff] [blame] | 575 |     } | 
| Ivan Berezovskiy | 91ede50 | 2021-05-13 21:05:36 +0400 | [diff] [blame] | 576 |  | 
 | 577 |     def platforms = [] | 
 | 578 |     if (component == 'ipam' && triggers.vsphereDemoEnabled) { | 
 | 579 |         // Currently only vsphere demo is required for IPAM component | 
 | 580 |         platforms.add('vsphere') | 
 | 581 |     } else { | 
 | 582 |         if (triggers.osDemoEnabled) { | 
 | 583 |             platforms.add('openstack') | 
 | 584 |         } | 
 | 585 |         if (triggers.awsOnDemandDemoEnabled) { | 
 | 586 |             platforms.add('aws') | 
 | 587 |         } | 
 | 588 |         if (triggers.equinixOnDemandDemoEnabled) { | 
 | 589 |             platforms.add('equinix') | 
 | 590 |         } | 
| Владислав Наумов | 144956f | 2021-10-14 17:49:19 +0200 | [diff] [blame] | 591 |         if (triggers.equinixMetalV2OnDemandDemoEnabled) { | 
 | 592 |             platforms.add('equinixmetalv2') | 
 | 593 |         } | 
| Владислав Наумов | c52dd9d | 2021-06-28 16:27:29 +0200 | [diff] [blame] | 594 |         if (triggers.azureOnDemandDemoEnabled) { | 
 | 595 |             platforms.add('azure') | 
 | 596 |         } | 
| Ivan Berezovskiy | b0229d0 | 2021-05-17 16:55:18 +0400 | [diff] [blame] | 597 |         if (triggers.vsphereDemoEnabled) { | 
 | 598 |             platforms.add('vsphere') | 
 | 599 |         } | 
| Ivan Berezovskiy | 91ede50 | 2021-05-13 21:05:36 +0400 | [diff] [blame] | 600 |     } | 
 | 601 |  | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 602 |     def jobs = [:] | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 603 |     def parameters = [ | 
| Владислав Наумов | 9080f37 | 2020-06-08 13:57:16 +0200 | [diff] [blame] | 604 |         string(name: 'GERRIT_REFSPEC', value: coreRefspec.core), | 
 | 605 |         string(name: 'KAAS_PIPELINE_REFSPEC', value: coreRefspec.corePipelines), | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 606 |         string(name: 'SI_TESTS_REFSPEC', value: siRefspec.siTests), | 
| Владислав Наумов | 418042b | 2020-07-09 18:31:10 +0200 | [diff] [blame] | 607 |         string(name: 'SI_TESTS_FEATURE_FLAGS', value: componentFeatureFlags), | 
| Владислав Наумов | 2db15e2 | 2020-07-14 12:29:22 +0200 | [diff] [blame] | 608 |         string(name: 'SI_TESTS_DOCKER_IMAGE', value: siRefspec.siTestsDockerImage), | 
 | 609 |         string(name: 'SI_TESTS_DOCKER_IMAGE_TAG', value: siRefspec.siTestsDockerImageTag), | 
| Владислав Наумов | 4a5c324 | 2020-06-08 14:36:11 +0200 | [diff] [blame] | 610 |         string(name: 'SI_PIPELINES_REFSPEC', value: siRefspec.siPipelines), | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 611 |         string(name: 'CUSTOM_RELEASE_PATCH_SPEC', value: patchSpec), | 
| Mikhail Ivanov | 7450437 | 2021-05-21 17:01:06 +0400 | [diff] [blame] | 612 |         string(name: 'KAAS_CHILD_CLUSTER_RELEASE_NAME', value: triggers.childDeployCustomRelease), | 
| Mikhail Ivanov | b6283f7 | 2021-11-24 18:34:57 +0400 | [diff] [blame] | 613 |         string(name: 'OPENSTACK_CLOUD_LOCATION', value: triggers.osCloudLocation), | 
| Владислав Наумов | b8305e2 | 2021-02-10 17:23:12 +0100 | [diff] [blame] | 614 |         booleanParam(name: 'OFFLINE_MGMT_CLUSTER', value: triggers.proxyConfig['mgmtOffline']), | 
| Владислав Наумов | f8f23fa | 2021-04-01 16:57:52 +0200 | [diff] [blame] | 615 |         booleanParam(name: 'OFFLINE_CHILD_CLUSTER', value: triggers.proxyConfig['childOffline']), | 
| Владислав Наумов | 257ea13 | 2021-04-14 14:44:13 +0200 | [diff] [blame] | 616 |         booleanParam(name: 'PROXY_CHILD_CLUSTER', value: triggers.proxyConfig['childProxy']), | 
| Владислав Наумов | 44c64b7 | 2020-12-04 20:22:53 +0100 | [diff] [blame] | 617 |         booleanParam(name: 'SEED_MACOS', value: triggers.useMacOsSeedNode), | 
| Владислав Наумов | 080d941 | 2020-07-29 13:05:14 +0200 | [diff] [blame] | 618 |         booleanParam(name: 'UPGRADE_MGMT_CLUSTER', value: triggers.upgradeMgmtEnabled), | 
| Victor Ryzhenkin | d2b7b66 | 2021-08-23 14:18:38 +0400 | [diff] [blame] | 619 |         booleanParam(name: 'ENABLE_LMA_LOGGING', value: triggers.enableLMALoggingEnabled), | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 620 |         booleanParam(name: 'RUN_UI_E2E', value: triggers.runUie2eEnabled), | 
| Владислав Наумов | 080d941 | 2020-07-29 13:05:14 +0200 | [diff] [blame] | 621 |         booleanParam(name: 'RUN_MGMT_CFM', value: triggers.runMgmtConformanceEnabled), | 
| slalov | 13e579c | 2022-01-31 21:37:02 +0400 | [diff] [blame^] | 622 |         booleanParam(name: 'RUN_MAINTENANCE_TEST', value: triggers.runMaintenanceTestEnable), | 
| Владислав Наумов | 9cec55d | 2021-08-03 15:00:59 +0200 | [diff] [blame] | 623 |         booleanParam(name: 'RUN_LMA_TEST', value: triggers.runLMATestEnabled), | 
| Vladyslav Drok | c4f9c1b | 2021-07-22 15:34:24 +0200 | [diff] [blame] | 624 |         booleanParam(name: 'RUN_MGMT_USER_CONTROLLER_TEST', value: triggers.runMgmtUserControllerTestEnabled), | 
| Владислав Наумов | 080d941 | 2020-07-29 13:05:14 +0200 | [diff] [blame] | 625 |         booleanParam(name: 'DEPLOY_CHILD_CLUSTER', value: triggers.deployChildEnabled), | 
 | 626 |         booleanParam(name: 'UPGRADE_CHILD_CLUSTER', value: triggers.upgradeChildEnabled), | 
| Владислав Наумов | 0dc9925 | 2020-11-13 13:30:48 +0100 | [diff] [blame] | 627 |         booleanParam(name: 'ATTACH_BYO', value: triggers.attachBYOEnabled), | 
| Владислав Наумов | cdbd84e | 2020-12-01 16:51:09 +0100 | [diff] [blame] | 628 |         booleanParam(name: 'UPGRADE_BYO', value: triggers.upgradeBYOEnabled), | 
| Vladislav Naumov | 7930ab2 | 2021-11-22 18:24:24 +0100 | [diff] [blame] | 629 |         booleanParam(name: 'RUN_BYO_MATRIX', value: triggers.runBYOMatrixEnabled), | 
| Владислав Наумов | 080d941 | 2020-07-29 13:05:14 +0200 | [diff] [blame] | 630 |         booleanParam(name: 'RUN_CHILD_CFM', value: triggers.runChildConformanceEnabled), | 
| Ivan Berezovskiy | cbf9eeb | 2021-03-22 15:57:32 +0400 | [diff] [blame] | 631 |         booleanParam(name: 'ALLOW_AWS_ON_DEMAND', value: triggers.awsOnDemandDemoEnabled), | 
| Владислав Наумов | e021b02 | 2021-05-06 11:26:38 +0200 | [diff] [blame] | 632 |         booleanParam(name: 'ALLOW_EQUINIX_ON_DEMAND', value: triggers.equinixOnDemandDemoEnabled), | 
| Владислав Наумов | 82305e9 | 2021-10-14 20:45:20 +0200 | [diff] [blame] | 633 |         booleanParam(name: 'ALLOW_EQUINIXMETALV2_ON_DEMAND', value: triggers.equinixMetalV2OnDemandDemoEnabled), | 
| Vladislav Naumov | 42b71dc | 2021-11-22 13:09:42 +0100 | [diff] [blame] | 634 |         booleanParam(name: 'EQUINIXMETALV2_CHILD_DIFF_METRO', value: triggers.equinixMetalV2ChildDiffMetroEnabled), | 
| eromanova | d339751 | 2021-04-01 20:19:19 +0400 | [diff] [blame] | 635 |         booleanParam(name: 'EQUINIX_ON_AWS_DEMO', value: triggers.equinixOnAwsDemoEnabled), | 
| Владислав Наумов | c52dd9d | 2021-06-28 16:27:29 +0200 | [diff] [blame] | 636 |         booleanParam(name: 'ALLOW_AZURE_ON_DEMAND', value: triggers.azureOnDemandDemoEnabled), | 
| Владислав Наумов | 2d3db33 | 2021-06-15 15:19:19 +0200 | [diff] [blame] | 637 |         booleanParam(name: 'AZURE_ON_AWS_DEMO', value: triggers.azureOnAwsDemoEnabled), | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 638 |     ] | 
| Владислав Наумов | 92288d9 | 2020-07-13 18:36:21 +0200 | [diff] [blame] | 639 |  | 
| Владислав Наумов | 765f3bd | 2020-09-07 18:09:24 +0200 | [diff] [blame] | 640 |     // customize multiregional demo | 
 | 641 |     if (triggers.multiregionalConfiguration.enabled) { | 
 | 642 |         parameters.add(string(name: 'MULTIREGION_SETUP', | 
 | 643 |                               value: "${triggers.multiregionalConfiguration.managementLocation},${triggers.multiregionalConfiguration.regionLocation}" | 
 | 644 |                               )) | 
 | 645 |     } | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 646 |  | 
| Владислав Наумов | 92288d9 | 2020-07-13 18:36:21 +0200 | [diff] [blame] | 647 |     // Determine component team custom context | 
 | 648 |     if (coreContext != '') { | 
 | 649 |         common.infoMsg('Additional KaaS Core context detected, will be forwarded into kaas core cicd...') | 
 | 650 |         def additionalParameters = generateKaaSVarsFromContext(coreContext) | 
| Владислав Наумов | bef51a9 | 2020-10-01 17:36:51 +0200 | [diff] [blame] | 651 |         parameters.addAll(additionalParameters) | 
| Владислав Наумов | 92288d9 | 2020-07-13 18:36:21 +0200 | [diff] [blame] | 652 |     } | 
 | 653 |  | 
| Владислав Наумов | aa43061 | 2020-06-08 17:18:31 +0200 | [diff] [blame] | 654 |     def jobResults = [] | 
| Ivan Berezovskiy | 91ede50 | 2021-05-13 21:05:36 +0400 | [diff] [blame] | 655 |  | 
 | 656 |     platforms.each { platform -> | 
 | 657 |         jobs["kaas-core-${platform}-patched-${component}"] = { | 
| Vladislav Naumov | 5313a20 | 2021-04-07 17:13:39 +0000 | [diff] [blame] | 658 |             try { | 
| Ivan Berezovskiy | 91ede50 | 2021-05-13 21:05:36 +0400 | [diff] [blame] | 659 |                 common.infoMsg("Deploy: patched KaaS demo with ${platform} provider") | 
 | 660 |                 def job_info = build job: "kaas-testing-core-${platform}-workflow-${component}", parameters: parameters, wait: true | 
 | 661 |                 def build_description = job_info.getDescription() | 
 | 662 |                 def build_result = job_info.getResult() | 
| Vladislav Naumov | 5313a20 | 2021-04-07 17:13:39 +0000 | [diff] [blame] | 663 |                 jobResults.add(build_result) | 
| Владислав Наумов | d044e84 | 2020-06-17 15:33:43 +0200 | [diff] [blame] | 664 |  | 
| Vladislav Naumov | 5313a20 | 2021-04-07 17:13:39 +0000 | [diff] [blame] | 665 |                 if (build_description) { | 
 | 666 |                     currentBuild.description += build_description | 
 | 667 |                 } | 
 | 668 |             } finally { | 
| Ivan Berezovskiy | 91ede50 | 2021-05-13 21:05:36 +0400 | [diff] [blame] | 669 |                 common.infoMsg("Patched KaaS demo with ${platform} provider finished") | 
| Vladislav Naumov | 5313a20 | 2021-04-07 17:13:39 +0000 | [diff] [blame] | 670 |             } | 
 | 671 |         } | 
 | 672 |     } | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 673 |  | 
 | 674 |     common.infoMsg('Trigger KaaS demo deployments according to defined provider set') | 
| Владислав Наумов | 37f7f84 | 2021-03-09 16:08:39 +0400 | [diff] [blame] | 675 |     if (jobs.size() == 0) { | 
 | 676 |         error('No demo jobs matched with keywords, execution will be aborted, at least 1 provider should be enabled') | 
 | 677 |     } | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 678 |     // Limit build concurency workaround examples: https://issues.jenkins-ci.org/browse/JENKINS-44085 | 
 | 679 |     parallel jobs | 
| Владислав Наумов | aa43061 | 2020-06-08 17:18:31 +0200 | [diff] [blame] | 680 |  | 
 | 681 |     if (jobResults.contains('FAILURE')) { | 
| Владислав Наумов | f86b111 | 2020-06-09 14:04:48 +0200 | [diff] [blame] | 682 |         common.infoMsg('One of parallel downstream jobs is failed, mark executor job as failed') | 
| Владислав Наумов | aa43061 | 2020-06-08 17:18:31 +0200 | [diff] [blame] | 683 |         currentBuild.result = 'FAILURE' | 
 | 684 |     } | 
| Владислав Наумов | 2a982ff | 2020-06-02 19:06:46 +0200 | [diff] [blame] | 685 | } | 
| Владислав Наумов | 30a516c | 2020-07-09 13:15:41 +0200 | [diff] [blame] | 686 |  | 
 | 687 |  | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 688 | /** | 
 | 689 |  * Function currently supported to be called from aws or vsphere demos. It gets particular demo context | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 690 |  * and generate proper lockResources data and netMap data for vsphere,equinix related clusters. | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 691 |  * | 
 | 692 |  * @param:        callBackDemo (string) Demo which requested to generate lockResources [aws or vsphere] | 
 | 693 |  * @param:        triggers (map) Custom trigger keywords forwarded from gerrit | 
 | 694 |  * @param:        multiregionalConfiguration (map) Multiregional configuration | 
 | 695 |  * @return        (map) Return aggregated map with lockResources and netMap | 
 | 696 |  */ | 
 | 697 |  | 
 | 698 |  | 
 | 699 | def generateLockResources(callBackDemo, triggers) { | 
 | 700 |     def common = new com.mirantis.mk.Common() | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 701 |     def netMap = [ | 
 | 702 |         vsphere: [:], | 
 | 703 |         equinix: [:], | 
 | 704 |     ] | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 705 |     // Define vsphere locklabels with initial quantity | 
 | 706 |     def lockLabels = [ | 
 | 707 |         vsphere_networking_core_ci: 0, | 
 | 708 |         vsphere_offline_networking_core_ci: 0, | 
 | 709 |     ] | 
 | 710 |     def deployChild = triggers.deployChildEnabled | 
 | 711 |     def multiregionConfig = triggers.multiregionalConfiguration | 
 | 712 |     def runMultiregion = multiregionConfig.enabled | 
 | 713 |  | 
 | 714 |     // Generate vsphere netMap and lockLabels based on demo context | 
 | 715 |     switch (callBackDemo) { | 
 | 716 |         case 'aws': | 
 | 717 |             // Add aws specific lock label with quantity calculated based on single mgmt deploy or mgmt + child | 
 | 718 |             lockLabels['aws_core_ci_queue'] = triggers.demoWeight | 
 | 719 |  | 
 | 720 |             // Define netMap for Vsphere region | 
| Владислав Наумов | f60480d | 2021-10-15 14:04:01 +0200 | [diff] [blame] | 721 |             if (runMultiregion && multiregionConfig.managementLocation == 'aws' && | 
 | 722 |                 multiregionConfig.regionLocation == 'vsphere') { | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 723 |                 if (deployChild) { | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 724 |                     addToProviderNetMap(netMap, 'vsphere', 'regional-child') | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 725 |                 } | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 726 |                 addToProviderNetMap(netMap, 'vsphere', 'region') | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 727 |             } | 
 | 728 |             break | 
 | 729 |         case 'vsphere': | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 730 |             addToProviderNetMap(netMap, 'vsphere', 'mgmt') | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 731 |             if (deployChild) { | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 732 |                 addToProviderNetMap(netMap, 'vsphere', 'child') | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 733 |             } | 
 | 734 |             if (runMultiregion && multiregionConfig.managementLocation == 'vsphere' && | 
 | 735 |                 multiregionConfig.regionLocation == 'vsphere') { | 
 | 736 |                 if (deployChild) { | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 737 |                     addToProviderNetMap(netMap, 'vsphere', 'regional-child') | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 738 |                 } | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 739 |                 addToProviderNetMap(netMap, 'vsphere', 'region') | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 740 |             } | 
 | 741 |             break | 
 | 742 |         default: | 
 | 743 |             error('Supposed to be called from aws or vsphere demos only') | 
 | 744 |     } | 
 | 745 |  | 
 | 746 |     // Checking gerrit triggers and manage lock label quantity and network types in case of Offline deployment | 
 | 747 |     // Vsphere labels only | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 748 |     netMap['vsphere'].each { clusterType, netConfig -> | 
 | 749 |         if (triggers.proxyConfig["${clusterType}Offline"] == true                             || | 
 | 750 |             (clusterType == 'regional-child' && triggers.proxyConfig['childOffline'] == true) || | 
 | 751 |             (clusterType == 'region' && triggers.proxyConfig['mgmtOffline'])) { | 
 | 752 |  | 
 | 753 |             netMap['vsphere'][clusterType]['netName'] = 'offline' | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 754 |             lockLabels['vsphere_offline_networking_core_ci']++ | 
 | 755 |         } else { | 
 | 756 |             lockLabels['vsphere_networking_core_ci']++ | 
 | 757 |         } | 
 | 758 |     } | 
 | 759 |  | 
 | 760 |     // generate lock metadata | 
 | 761 |     def lockResources = [] | 
 | 762 |     lockLabels.each { label, quantity -> | 
 | 763 |         if (quantity > 0) { | 
 | 764 |             def res = [ | 
 | 765 |                 label: label, | 
 | 766 |                 quantity: quantity, | 
 | 767 |             ] | 
 | 768 |             lockResources.add(res) | 
 | 769 |         } | 
 | 770 |     } | 
 | 771 |  | 
 | 772 |     common.infoMsg("""Generated vsphere netMap: ${netMap} | 
 | 773 |                     Generated lockResources: ${lockResources}""") | 
 | 774 |  | 
 | 775 |     return [ | 
 | 776 |         netMap: netMap, | 
 | 777 |         lockResources: lockResources, | 
 | 778 |     ] | 
 | 779 | } | 
 | 780 |  | 
 | 781 | /** | 
 | 782 |  * Function gets vsphere netMap or empty map and adds new vsphere clusterType with default netName | 
 | 783 |  * and empty rangeConfig to the this map. | 
 | 784 |  * | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 785 |  * @param:        netMap      (string) vsphere, equinix netMap or empty map | 
 | 786 |  * @param:        provider    (string) provider type | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 787 |  * @param:        clusterType (string) Vsphere cluster type | 
 | 788 |  */ | 
 | 789 |  | 
| Владислав Наумов | 33e1e81 | 2021-08-17 17:09:25 +0200 | [diff] [blame] | 790 | def addToProviderNetMap (netMap, provider, clusterType) { | 
 | 791 |     switch (provider) { | 
 | 792 |         case 'equinix': | 
 | 793 |             netMap[provider][clusterType] = [ | 
 | 794 |                 vlanConfig: '', | 
 | 795 |               ] | 
 | 796 |             break | 
 | 797 |         case 'vsphere': | 
 | 798 |             netMap[provider][clusterType] = [ | 
 | 799 |                 netName: 'default', | 
 | 800 |                 rangeConfig: '', | 
 | 801 |               ] | 
 | 802 |             break | 
 | 803 |         default: | 
 | 804 |             error('Net map locks supported for Equinix/Vsphere providers only') | 
 | 805 |     } | 
| Stanislav Riazanov | 78fa7df | 2021-05-28 20:28:59 +0400 | [diff] [blame] | 806 | } |