| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| |
| package framework |
| |
| import ( |
| "cmp" |
| _ "embed" |
| "os" |
| "text/template" |
| |
| "github.com/Masterminds/sprig/v3" |
| ) |
| |
| var ( |
| ProviderType = cmp.Or(os.Getenv("PROVIDER_TYPE"), "apisix") |
| ) |
| |
| const ( |
| ProviderTypeAPISIX = "apisix" |
| ProviderTypeAPISIXStandalone = "apisix-standalone" |
| ) |
| |
| var ( |
| //go:embed manifests/apisix.yaml |
| apisixStandaloneTemplate string |
| APISIXStandaloneTpl *template.Template |
| |
| //go:embed manifests/etcd.yaml |
| EtcdSpec string |
| |
| //go:embed manifests/webhook.yaml |
| validatingWebhookTemplate string |
| ValidatingWebhookTpl *template.Template |
| ) |
| |
| var ( |
| //go:embed manifests/cert.pem |
| TestServerCert string |
| //go:embed manifests/key.pem |
| TestServerKey string |
| ) |
| |
| const ( |
| TestCert = `-----BEGIN CERTIFICATE----- |
| MIIC1TCCAb2gAwIBAgIJANm/NDY0xwZUMA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNV |
| BAMTD3d3dy5leGFtcGxlLmNvbTAeFw0yMTEyMjcwNzI0MTNaFw0zMTEyMjUwNzI0 |
| MTNaMBoxGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEB |
| BQADggEPADCCAQoCggEBAPOeWroWLvnbzmRtvYsyRkFVePoMY3LvZqNaxCQpZHD6 |
| ra/fRDTem01YvJjm5qUwrn9YXKBUgcoTfA3vHGYFHE4lifdfCbxlb0otMCbEdEsX |
| P8kOMszB5SlxIPiCLVhc1LOKmHDzzw7axrRStbgN/RJUQ9Fp1QXVAnvEMWcLNopD |
| E7I148dkpHrxmjW8vuB7apWhcVW+QiOYn4rGyqoilhrL4nRCOJiCVqESMgPcu5dO |
| Dxf6KcAVd/IMMFTQ/X4+e2dUJpYyhCe8ApnCqrumjfXKqIEfyyTCavKeQEfvPgK4 |
| PhP2BFpWrxRWkn4VVTxIxS0/EVJaAaC/4gmVMeYg+wUCAwEAAaMeMBwwGgYDVR0R |
| BBMwEYIPd3d3LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQAKiJaa1FNC |
| p9NwoJvGyhK5UO2Tci3H63xZs2tFj5UZGxAIqJSxVo80ExhUXuDAM3evryM193uz |
| uNxbB/oIWEMNLBnacXQi8Evob14gkIwRmQ/iACSIGTupazBLwiZM6infPE2/OoYR |
| YihMgeWtW9U4XOkRhm013GgueeWP8v1jtyB2p3hoLK5UcLOAhkAOaJZXLDW0rznx |
| jkNC6NcjYvMHkm3bZYqGsRmZfNGvm5rM8s9c3n4MPgWlllt6RuMSimzIRQSKu2E4 |
| oGKUqgeOOf5BXunHEgkyOTYittlg6MRwBET6ymHjYvwz87Loot7ji2IomyP08jdS |
| tYKdaDOJg+su |
| -----END CERTIFICATE-----` |
| |
| TestKey = `-----BEGIN RSA PRIVATE KEY----- |
| MIIEowIBAAKCAQEA855auhYu+dvOZG29izJGQVV4+gxjcu9mo1rEJClkcPqtr99E |
| NN6bTVi8mObmpTCuf1hcoFSByhN8De8cZgUcTiWJ918JvGVvSi0wJsR0Sxc/yQ4y |
| zMHlKXEg+IItWFzUs4qYcPPPDtrGtFK1uA39ElRD0WnVBdUCe8QxZws2ikMTsjXj |
| x2SkevGaNby+4HtqlaFxVb5CI5ifisbKqiKWGsvidEI4mIJWoRIyA9y7l04PF/op |
| wBV38gwwVND9fj57Z1QmljKEJ7wCmcKqu6aN9cqogR/LJMJq8p5AR+8+Arg+E/YE |
| WlavFFaSfhVVPEjFLT8RUloBoL/iCZUx5iD7BQIDAQABAoIBAGVBMQZdCANTh5IY |
| RoqfR7IJ+3E6Su9Pb4J/zDwXdCa9GgmaK3gp+bSJKEII3l5UQIKvUDhXR2ac+Je2 |
| BUCl6SDV22UUfDBwnHPhGj1Ss98t95XyL80I3d1+pqyDNqOeWc2R0lBIFYxgA+yY |
| 3+xy6/d9TH6ylRaKdTDJ15qzf2SxMtR/SiXyILWU7xWiYxINoHh2IVDte/KlNa0q |
| iCbIiyX1xdYmcD0rCEVxrWlo1XNjmyO/MPTBhJf/DyZhQNHBDJa2fWzbPOr1I+Nb |
| vh0GiJVwhkENtucnjmt+jCLqTkTNAAv2mJ1DxbY/DcM+TgTxHmAlTpBM0bh3WsS9 |
| De8hefUCgYEA/b9LP0fVXTv1K/whKcgi0AW1GCcUrdWVrdN3/K+yPnEZBtl8VY5t |
| SvQkJPkQsVFJWdZUdRDpHhqYFa0I6zIiNF7DbIxF+Ag+N7uiZ6xzP0L9k1wmgKR8 |
| PT47fJVuHECxgxexz9FGQwXH7eroJjLPEoxD2Z56COVIJOlYO6e9sXMCgYEA9cgK |
| WxE2NsYIjrgOqs93GKYY+TmmoSHWiy1bl7p3sUolobPThSd31hdk6ZdMlPPbpr3+ |
| MYgZoFLud+3l+/6+tttGNNVkB6lkVXzd2WWG6xOrErRwYIz57yiWKGLeWg17jXXf |
| zqjFNTLpd8U9lM8Lf/XNyfs2tU5oxkUD6teCo6cCgYAtwdMl5CQ7ndZGSj8Is8hj |
| TsQrSNDX0A4fvGSEsoIn9GkY7RsYqohW3dOuvyMddpUNmDK+sX/4J7+JGRzknLPC |
| UdxXtKvhYEsn7bQJkfVuUPw9GH7w77hfqts7Sg8DFT9tblZoLUrIR0CYTKX0TXE9 |
| 3QFXOtayx/XMgi+hAkyYtQKBgQCtgKGO1/+levbfiR8RhZNVWyuWBBSU+wYxCbv2 |
| yDNmfClElWVkQhBemfUq0RvGqr8MXmLrJGCyxNiC4PXRhmurOe+9rEYJApNJpfQW |
| W416tU+2zJnoDp0BL22Q5PqCJ7JokiWEBa/xdhdJ7XsjaWV811CGnUhphQiBroat |
| aaVXUQKBgDXHbRmEBo/1fB4Gn7i2bjYOl1Z1e3klNvbdMT/ClNSFy8VsU3HP5XoL |
| jnzTc80ABlT1PQgrnQxhPpL3wbkSyv0lux5mcM0U89KxpR/SLlvVFAag6UWODt53 |
| hhdq+X/vrgK+uicSx8Q1zL2iCLdfsZ0fPryMdTZrN3ytEBEWMPeX |
| -----END RSA PRIVATE KEY-----` |
| ) |
| |
| const ( |
| TestCACert = `-----BEGIN CERTIFICATE----- |
| MIIDdzCCAl+gAwIBAgIUBB5PHXyymeboPDVdYeYihYnm5XIwDQYJKoZIhvcNAQEL |
| BQAwXTELMAkGA1UEBhMCQ04xDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5 |
| MRUwEwYDVQQKDAxPcmdhbml6YXRpb24xGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNv |
| bTAeFw0yNDA2MjYxNTQ5NTBaFw0zNDA2MjQxNTQ5NTBaMF0xCzAJBgNVBAYTAkNO |
| MQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEVMBMGA1UECgwMT3JnYW5p |
| emF0aW9uMRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEB |
| AQUAA4IBDwAwggEKAoIBAQCutPQZr71VAdVvLd65agMsj9xD46jdZxWzP1unfv34 |
| 6VFhCFPJp39TuBkwcXmSEmSzCcQXyCvWhRV+PErr+N4dadUpoci2E/CcKAlOisxz |
| OaPz52yS+h5kf8wpVS3Tk9JHONZp6P3HLY2yeUtRl/Bw3Fyo7nIJCtwx5jJ2cFgE |
| dvqfruiZYTSU5vxvS2QDXvX0gcOuR4uP+RRBcwlY+oD+G0pP4vsUcLpCQpD58p1c |
| RSLwoX6dPb3eohCXufCnskIwiIxC3jQcVrI1gOggJkZuGXNRh0aS5O7L0iu37l57 |
| UStFB4kjbnCWterNz/NRRhD2Ad8RTALnJMeGKb7uH9OzAgMBAAGjLzAtMAwGA1Ud |
| EwQFMAMBAf8wHQYDVR0OBBYEFH78Ns0zkjTuK1EhiLMNYnXUZatxMA0GCSqGSIb3 |
| DQEBCwUAA4IBAQCVhAzUb32Qyjn5oZHsDYKaQIHfXe+/W2oM41dDTSxjFlbvBjaq |
| JWxgAYBA5l28b+e9zUK2BTcSNzVbrfm5/qoykAQNaR4Vvhy3LxFyOd6G87as3+hv |
| jlerjSa/gh8XCPFzs2t6wyhZqEgcNZBK6oagnaxKstoS2jXjAL+7dx4PRBdw7MTq |
| joQ+TzLgsB9kFMnihmR+LpDFfQCqAfp5X0z9RLgnH0zVcBrRXKKb8AaOWBdkdK6g |
| BLIW7+4ZxW5BzYmi6ZuDDjP96wLpWT7boJPi3BqnCEQIzywNMBbqZO9LiWdGf0TH |
| EpkzMRsCTGGar43HkQgDZdjicRKiuWYFO47O |
| -----END CERTIFICATE-----` |
| |
| TestCAKey = `-----BEGIN PRIVATE KEY----- |
| MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCutPQZr71VAdVv |
| Ld65agMsj9xD46jdZxWzP1unfv346VFhCFPJp39TuBkwcXmSEmSzCcQXyCvWhRV+ |
| PErr+N4dadUpoci2E/CcKAlOisxzOaPz52yS+h5kf8wpVS3Tk9JHONZp6P3HLY2y |
| eUtRl/Bw3Fyo7nIJCtwx5jJ2cFgEdvqfruiZYTSU5vxvS2QDXvX0gcOuR4uP+RRB |
| cwlY+oD+G0pP4vsUcLpCQpD58p1cRSLwoX6dPb3eohCXufCnskIwiIxC3jQcVrI1 |
| gOggJkZuGXNRh0aS5O7L0iu37l57UStFB4kjbnCWterNz/NRRhD2Ad8RTALnJMeG |
| Kb7uH9OzAgMBAAECggEAQb6h73qlZrSCc8zQuHivChl3G+sz1GGjFmm83YraG03+ |
| DGRcV5IbRc+NVyAUzkXytDd0Hjj7WkaJwJAC58snFu2JRJn31KErVjBw1ChCaQgj |
| bTlFMAhE4LABDfrafHjv1FKMyZ1exxIa9TNVBzcEygv7KK1Wp5V5KKQGkHCVhtP5 |
| PDqKwyiUqFpsM7Codr8TmavHykSfVRhxPifDNXMDMXsSUT/2dFj0QXljA3tjzk6d |
| UHzx4z44cODbjWE74ZeQw2SFslKHgK0ZVYivE6+f3L/p7fSqq7hJ6T0BXpKolbHZ |
| yU7Xh6BBy0WKqACkUWALZ6tglcb+KoTqhZ/fTZW6mQKBgQDr6ivPmQI4deIbWGyi |
| EGfzrLfiVEuqCsz5gX88nvBRoGevKi7kCbIf/IoNGIm5SJ8gJDs6eSPKFwAEd29H |
| N2muFXmune8g7lVZjQ8GPGUu4IvJMS7OAcbLmpI4pUaVGtJsh2fmXnaTSR5D5y64 |
| XtPGdkluLr/B5vz/X0D0NG80GQKBgQC9lL04p1D6kJj+JwyNm7bZ1OhgpH5Pup82 |
| Ia+5GH8m7VLS4/PrpllOmhgccaCJK7M36EXLELHRHpmOoLzUiemgtnoQ0JMmeWfN |
| pVigWdIsCMSS1wJLNklr17eDDgvdcs0W3cujja4/2LlksNY8/zh7LJ/k/YUTnlkG |
| VsSeLfEfqwKBgQCNinmunAaRCWkXLv4+XcmAkWfiCuE6rDA+oktMe6+DydFrbsuj |
| VY3hUwsgwFAhMkkGZ7aBZpzqatI/28iP2dc18vyGn4sRHu1mRRN2klXCwkYb9741 |
| KyuyjJKeGcs3Olh1dOgJdzN9OqlF5DZLt9kngWCdEr9J/uRb8zJtUehGQQKBgEuD |
| yM+dThNQr7Bk64oooXApb5q3Sx0FEFAmoPFQwa1G0Tvx0wJl06MMnFgQJssc3hmB |
| 6vMVJk9PKgl3G2BpwubiaMLz4flsWJ3ApAnTXXVu1KZNALvm1t4fIhkQ6kb+aJUY |
| KfpvAB6sfESQb/YCD4R45QP4vB5xb7Kns0/yqt5bAoGAQ0kPRvAbdmBURLscsOpN |
| f4sdXsJLqxAppIqrYolUVqIQPAFYT7oWLpSMmIqzjFzRFBj3ZUf3fZCNCi2kkRvs |
| 60VyICYZobrnbcbkCx7qydIuhr2+8301lcginh8DIN58c0IZmoIRv/Z44SPfl1ku |
| zDGD28KCK1oiIZOe9sgcgf4= |
| -----END PRIVATE KEY-----` |
| |
| TESTCert1 = `-----BEGIN CERTIFICATE----- |
| MIIDxDCCAqygAwIBAgIUO1cgq5OMm6h5eb5U+r3DftaM7e0wDQYJKoZIhvcNAQEL |
| BQAwXTELMAkGA1UEBhMCQ04xDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5 |
| MRUwEwYDVQQKDAxPcmdhbml6YXRpb24xGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNv |
| bTAeFw0yNDA2MjYxNzA4MzFaFw0yODExMTIxNzA4MzFaMGAxCzAJBgNVBAYTAkNO |
| MQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEVMBMGA1UECgwMT3JnYW5p |
| emF0aW9uMRswGQYDVQQDDBJzZXJ2ZXIuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3 |
| DQEBAQUAA4IBDwAwggEKAoIBAQC+nRQiu87exjwtnTb1+dBFdMffucW84qPZ3TZY |
| e3beLJkIjM2eeptzEVf5eFAxo9lXpi9DKJQopI9aRc3SvyWRg9bj8wm88UdA/2LO |
| 8q1oRaDzKHlMfSVqjdZ8qTalbd4FzhUWw9TWKGQxhA5yypisuQjOrVDC6bvk3WMk |
| BoD+2zil+q05nRjUSCbGkKO0HecXt2M2jq1nyN68J5ymtmooUbSM7TAC+ymBggJc |
| JsgJ3DrquMNqQykjsSotVaz+y857DedzJoMoMgIvJy1cNexpY6e/PK2oO9OB+OTg |
| Rq/XtC/wQ5ZJ0/rY1q1yU8t5JmlVkrV6RPUT5SuoVeA8Fdu7AgMBAAGjeTB3MDUG |
| A1UdEQQuMCyCEnNlcnZlci5leGFtcGxlLmNvbYIWd3d3LnNlcnZlci5leGFtcGxl |
| LmNvbTAdBgNVHQ4EFgQUZ3hBoewum8wvVnSPLiaAI1S22cwwHwYDVR0jBBgwFoAU |
| fvw2zTOSNO4rUSGIsw1iddRlq3EwDQYJKoZIhvcNAQELBQADggEBAC2LQ/nLc1PP |
| ioPeqxKwF094yrifdhZGCmCSFpsnPbxhgxTRKSSMe7+XPadS4xd4VeRkbmuyDuUg |
| kYCAr3eTpSKfc3cTHP4S/+DDPefUn8u5lbPEE1Aq2JMNubXwCUMy+hNgX7dHWzBW |
| sqR+GErLzGGsfkTWhIxwH8Vx/hhKS/Kv5EEvZ42HrvL3570/04zq1tUYPlqPoQBc |
| t+6M2fJQx6lYdVjtYssm/6MnjNIM59NmmmwwrLZZyB96kDAW8xFndzcJQv4uojdb |
| UjWkMt/J7i6TWZY9DrSmAwCo2ZDCUZT5vQUkmILc9st/ie8v3755lJxoAOIyxEmi |
| Z+TO4JGixxQ= |
| -----END CERTIFICATE-----` |
| TestKey1 = `-----BEGIN PRIVATE KEY----- |
| MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC+nRQiu87exjwt |
| nTb1+dBFdMffucW84qPZ3TZYe3beLJkIjM2eeptzEVf5eFAxo9lXpi9DKJQopI9a |
| Rc3SvyWRg9bj8wm88UdA/2LO8q1oRaDzKHlMfSVqjdZ8qTalbd4FzhUWw9TWKGQx |
| hA5yypisuQjOrVDC6bvk3WMkBoD+2zil+q05nRjUSCbGkKO0HecXt2M2jq1nyN68 |
| J5ymtmooUbSM7TAC+ymBggJcJsgJ3DrquMNqQykjsSotVaz+y857DedzJoMoMgIv |
| Jy1cNexpY6e/PK2oO9OB+OTgRq/XtC/wQ5ZJ0/rY1q1yU8t5JmlVkrV6RPUT5Suo |
| VeA8Fdu7AgMBAAECggEASdlzxq06zebBw+5oL86UmYRQN+ayrKamUq848fkLqbJf |
| rAdZVrAr793lVrr9Xu4bM7EoGH3tQP3YqGHpB2CVPpZ0uCYePLzCHXWUo5c0BfUM |
| EYk5zZ+i0nCXi/7HNDqnzVn1o7dFi59kiiaermy90BV0Sxas9oc2C8qWMYvviE1d |
| GS0/Prmma+H0gZDTiQTrQsR++HmSQ3jvu9LYvVx4AkNveYNbPgF1o52PgEryTH2Y |
| 4tvHuyp7KpjSSNKoRuXw25OpVLsPXaxDFnSoe8YK6ltIA4kG6f7G7JbufKdaiCbY |
| c4d6co5xTJa77NMGzY3j55gTFU3mfhMC9QvrvcVycQKBgQDv7LvV2LNf6ixlBWXO |
| t3TAEOMM2x6awmDDPDU8i1uIhHHA7ZqsHREIC33Sily+1NwOm/iuLWTlHv0+4cww |
| y75Xvl8e2mDPtkoT8wNeHdKXTp4CLzrIvEHzG0qf063ob0hP24ymqy+PgO/WW8Pl |
| K/iWTpTzc9UKUuhiNPzp2XIMYwKBgQDLYotPuKkQHwGrhI8mZKKTcefzN9Ton2Kw |
| 7qJ3qDPrbDS0yjbU5+TKaNjKlZ+fsPQkHb5aWkGK+hYU6x7X8V/MZrc5MSwtNjPI |
| QfhTPKsxNSAPqRoTwP+QVXECQhCdjRZCpE6+4aaB/31VbIjTWdhxUyc6zrPLDimX |
| p0hhEcH2yQKBgAnBna3HfxvSYPXGr2oliajZxvHZ4ze12ct2ok+Q9yro/9sxjk2b |
| bPrfxMEQAU99RmmNrCIhFG5AwVmSQwRk9JuK0UFm7fLkXcTL6AImwk6G0uQR2Zka |
| FrB1FqbDK9o81DrzGZgZc/io7JfR6XhjPluWXHY96pbd4jdEIli8D+gzAoGAAn0o |
| O0eFOh9HA/RRVCTzIF7Ked17C4W3zXZ+Iny6de0TEAtRdHWKBTgXPxNpqqidtDtw |
| 8uYb2zmIP6VI8VeQ1o2DPH3vjnYVWCQGh+48IhQGWmq1WPyJpBiHk4F/do4dcZ9V |
| H1zfjsOzovH7EqsMzQY5eqzA4oE/3Q09A4MWHpECgYAU3uxxs5g7QwdK01BPXznk |
| H1y7bdn2LYS5otllOgAfZRX6BUQNFE8RtwA4HNe764SSEkk7EtTckx0d7ar8V1V2 |
| pfxfd8A0pNI54NtnFk8OS0BVkW5SGoBCWRh2nlV1r0B/7np0X61GgE95JDMslRn0 |
| 0AOPIR/qFJ1YYT0a7yKyjQ== |
| -----END PRIVATE KEY-----` |
| ) |
| |
| func init() { |
| tpl, err := template.New("apisix-standalone").Funcs(sprig.TxtFuncMap()).Parse(apisixStandaloneTemplate) |
| if err != nil { |
| panic(err) |
| } |
| APISIXStandaloneTpl = tpl |
| |
| webhookTpl, err := template.New("validating-webhook").Funcs(sprig.TxtFuncMap()).Parse(validatingWebhookTemplate) |
| if err != nil { |
| panic(err) |
| } |
| ValidatingWebhookTpl = webhookTpl |
| } |