From ab25e77f2c84c491785931946585c4710d87b4d1 Mon Sep 17 00:00:00 2001 From: Luwei Ge Date: Wed, 3 Mar 2021 18:56:51 +0000 Subject: [PATCH 1/2] removed runtime_version dependency --- .../apiproxy/policies/Products-Callout.xml | 2 +- .../remote-service-gcp/apiproxy/proxies/default.xml | 8 ++------ .../apiproxy/resources/py/get-runtime-version.py | 3 ++- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml b/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml index 5780d7c..9866dac 100644 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml +++ b/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml @@ -1,5 +1,5 @@ - + Products Callout apigee-remote-service-targets diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml b/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml index 74acde7..29b2cf8 100644 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml +++ b/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml @@ -88,16 +88,12 @@ lookupcache.Lookup-Products.cachehit = false - Get-Runtime-Version + Products-Callout lookupcache.Lookup-Products.cachehit = false Products-Callout-Legacy - (lookupcache.Lookup-Products.cachehit = false) and (runtime_version LesserThan "1.4.0") - - - Products-Callout - (lookupcache.Lookup-Products.cachehit = false) and (runtime_version GreaterThanOrEquals "1.4.0") + javacallout.Products-Callout.failed = true Set-Product-Cache diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/resources/py/get-runtime-version.py b/cmd/provision/proxies/remote-service-gcp/apiproxy/resources/py/get-runtime-version.py index c3b6491..7f5094c 100644 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/resources/py/get-runtime-version.py +++ b/cmd/provision/proxies/remote-service-gcp/apiproxy/resources/py/get-runtime-version.py @@ -17,6 +17,7 @@ version = os.environ.get("APIGEE_DPCOLOR", "") if len(version) > 0: - flow.setVariable("runtime_version", ".".join(version[1:4])) + dig = [c for c in version if c.isdigit()] + flow.setVariable("runtime_version", ".".join(dig[0:3])) else: flow.setVariable("runtime_version", "unknown") From 0f2108bab5522b4aa04465274a266ac10f8fe93f Mon Sep 17 00:00:00 2001 From: Luwei Ge Date: Fri, 5 Mar 2021 00:41:21 +0000 Subject: [PATCH 2/2] removed legacy products callout --- .../policies/Products-Callout-Legacy.xml | 10 ---------- .../apiproxy/policies/Products-Callout.xml | 2 +- .../apiproxy/proxies/default.xml | 4 ---- .../apiproxy/remote-service.xml | 1 - .../resources/java/envoy-javacallout-legacy.jar | Bin 11776 -> 0 bytes 5 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout-Legacy.xml delete mode 100644 cmd/provision/proxies/remote-service-gcp/apiproxy/resources/java/envoy-javacallout-legacy.jar diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout-Legacy.xml b/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout-Legacy.xml deleted file mode 100644 index 3ed18f8..0000000 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout-Legacy.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - Products Callout Legacy - - apigee-remote-service-targets - false - - io.apigee.microgateway.javacallout.Callout - java://envoy-javacallout-legacy.jar - \ No newline at end of file diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml b/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml index 9866dac..5780d7c 100644 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml +++ b/cmd/provision/proxies/remote-service-gcp/apiproxy/policies/Products-Callout.xml @@ -1,5 +1,5 @@ - + Products Callout apigee-remote-service-targets diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml b/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml index 29b2cf8..10e69da 100644 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml +++ b/cmd/provision/proxies/remote-service-gcp/apiproxy/proxies/default.xml @@ -91,10 +91,6 @@ Products-Callout lookupcache.Lookup-Products.cachehit = false - - Products-Callout-Legacy - javacallout.Products-Callout.failed = true - Set-Product-Cache lookupcache.Lookup-Products.cachehit = false diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/remote-service.xml b/cmd/provision/proxies/remote-service-gcp/apiproxy/remote-service.xml index 1197dbb..083b4c1 100644 --- a/cmd/provision/proxies/remote-service-gcp/apiproxy/remote-service.xml +++ b/cmd/provision/proxies/remote-service-gcp/apiproxy/remote-service.xml @@ -18,7 +18,6 @@ Lookup-Products Parse-Product-Cache Populate-Product-List - Products-Callout-Legacy Products-Callout Products-to-JSON Raise-Fault-Invalid-API-Key diff --git a/cmd/provision/proxies/remote-service-gcp/apiproxy/resources/java/envoy-javacallout-legacy.jar b/cmd/provision/proxies/remote-service-gcp/apiproxy/resources/java/envoy-javacallout-legacy.jar deleted file mode 100644 index 7cd2130eefc0e85a512493dbfb824ebf266ab8fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 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