@bluedynamics/cdk8s-plone 0.1.29 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +127 -51
- package/API.md +69 -0
- package/documentation/sources/how-to/deploy-with-vinyl-cache.md +22 -0
- package/lib/httpcache.js +1 -1
- package/lib/imports/vinyl.bluedynamics.eu.d.ts +154 -2
- package/lib/imports/vinyl.bluedynamics.eu.js +104 -2
- package/lib/plone.js +1 -1
- package/lib/vinylcache.d.ts +30 -0
- package/lib/vinylcache.js +25 -3
- package/package.json +30 -30
package/.jsii
CHANGED
|
@@ -1770,7 +1770,7 @@
|
|
|
1770
1770
|
},
|
|
1771
1771
|
"locationInModule": {
|
|
1772
1772
|
"filename": "src/vinylcache.ts",
|
|
1773
|
-
"line":
|
|
1773
|
+
"line": 350
|
|
1774
1774
|
},
|
|
1775
1775
|
"parameters": [
|
|
1776
1776
|
{
|
|
@@ -1796,7 +1796,7 @@
|
|
|
1796
1796
|
"kind": "class",
|
|
1797
1797
|
"locationInModule": {
|
|
1798
1798
|
"filename": "src/vinylcache.ts",
|
|
1799
|
-
"line":
|
|
1799
|
+
"line": 343
|
|
1800
1800
|
},
|
|
1801
1801
|
"name": "PloneVinylCache",
|
|
1802
1802
|
"properties": [
|
|
@@ -1809,7 +1809,7 @@
|
|
|
1809
1809
|
"immutable": true,
|
|
1810
1810
|
"locationInModule": {
|
|
1811
1811
|
"filename": "src/vinylcache.ts",
|
|
1812
|
-
"line":
|
|
1812
|
+
"line": 348
|
|
1813
1813
|
},
|
|
1814
1814
|
"name": "vinylCacheServiceName",
|
|
1815
1815
|
"type": {
|
|
@@ -1831,7 +1831,7 @@
|
|
|
1831
1831
|
"kind": "interface",
|
|
1832
1832
|
"locationInModule": {
|
|
1833
1833
|
"filename": "src/vinylcache.ts",
|
|
1834
|
-
"line":
|
|
1834
|
+
"line": 124
|
|
1835
1835
|
},
|
|
1836
1836
|
"name": "PloneVinylCacheOptions",
|
|
1837
1837
|
"properties": [
|
|
@@ -1845,7 +1845,7 @@
|
|
|
1845
1845
|
"immutable": true,
|
|
1846
1846
|
"locationInModule": {
|
|
1847
1847
|
"filename": "src/vinylcache.ts",
|
|
1848
|
-
"line":
|
|
1848
|
+
"line": 129
|
|
1849
1849
|
},
|
|
1850
1850
|
"name": "plone",
|
|
1851
1851
|
"type": {
|
|
@@ -1862,7 +1862,7 @@
|
|
|
1862
1862
|
"immutable": true,
|
|
1863
1863
|
"locationInModule": {
|
|
1864
1864
|
"filename": "src/vinylcache.ts",
|
|
1865
|
-
"line":
|
|
1865
|
+
"line": 172
|
|
1866
1866
|
},
|
|
1867
1867
|
"name": "director",
|
|
1868
1868
|
"optional": true,
|
|
@@ -1881,7 +1881,7 @@
|
|
|
1881
1881
|
"immutable": true,
|
|
1882
1882
|
"locationInModule": {
|
|
1883
1883
|
"filename": "src/vinylcache.ts",
|
|
1884
|
-
"line":
|
|
1884
|
+
"line": 136
|
|
1885
1885
|
},
|
|
1886
1886
|
"name": "extraBackends",
|
|
1887
1887
|
"optional": true,
|
|
@@ -1904,7 +1904,7 @@
|
|
|
1904
1904
|
"immutable": true,
|
|
1905
1905
|
"locationInModule": {
|
|
1906
1906
|
"filename": "src/vinylcache.ts",
|
|
1907
|
-
"line":
|
|
1907
|
+
"line": 238
|
|
1908
1908
|
},
|
|
1909
1909
|
"name": "image",
|
|
1910
1910
|
"optional": true,
|
|
@@ -1922,7 +1922,7 @@
|
|
|
1922
1922
|
"immutable": true,
|
|
1923
1923
|
"locationInModule": {
|
|
1924
1924
|
"filename": "src/vinylcache.ts",
|
|
1925
|
-
"line":
|
|
1925
|
+
"line": 226
|
|
1926
1926
|
},
|
|
1927
1927
|
"name": "invalidation",
|
|
1928
1928
|
"optional": true,
|
|
@@ -1940,7 +1940,7 @@
|
|
|
1940
1940
|
"immutable": true,
|
|
1941
1941
|
"locationInModule": {
|
|
1942
1942
|
"filename": "src/vinylcache.ts",
|
|
1943
|
-
"line":
|
|
1943
|
+
"line": 160
|
|
1944
1944
|
},
|
|
1945
1945
|
"name": "limitCpu",
|
|
1946
1946
|
"optional": true,
|
|
@@ -1958,7 +1958,7 @@
|
|
|
1958
1958
|
"immutable": true,
|
|
1959
1959
|
"locationInModule": {
|
|
1960
1960
|
"filename": "src/vinylcache.ts",
|
|
1961
|
-
"line":
|
|
1961
|
+
"line": 166
|
|
1962
1962
|
},
|
|
1963
1963
|
"name": "limitMemory",
|
|
1964
1964
|
"optional": true,
|
|
@@ -1976,7 +1976,7 @@
|
|
|
1976
1976
|
"immutable": true,
|
|
1977
1977
|
"locationInModule": {
|
|
1978
1978
|
"filename": "src/vinylcache.ts",
|
|
1979
|
-
"line":
|
|
1979
|
+
"line": 232
|
|
1980
1980
|
},
|
|
1981
1981
|
"name": "monitoring",
|
|
1982
1982
|
"optional": true,
|
|
@@ -1995,7 +1995,7 @@
|
|
|
1995
1995
|
"immutable": true,
|
|
1996
1996
|
"locationInModule": {
|
|
1997
1997
|
"filename": "src/vinylcache.ts",
|
|
1998
|
-
"line":
|
|
1998
|
+
"line": 251
|
|
1999
1999
|
},
|
|
2000
2000
|
"name": "nodeSelector",
|
|
2001
2001
|
"optional": true,
|
|
@@ -2018,7 +2018,7 @@
|
|
|
2018
2018
|
"immutable": true,
|
|
2019
2019
|
"locationInModule": {
|
|
2020
2020
|
"filename": "src/vinylcache.ts",
|
|
2021
|
-
"line":
|
|
2021
|
+
"line": 142
|
|
2022
2022
|
},
|
|
2023
2023
|
"name": "replicas",
|
|
2024
2024
|
"optional": true,
|
|
@@ -2036,7 +2036,7 @@
|
|
|
2036
2036
|
"immutable": true,
|
|
2037
2037
|
"locationInModule": {
|
|
2038
2038
|
"filename": "src/vinylcache.ts",
|
|
2039
|
-
"line":
|
|
2039
|
+
"line": 148
|
|
2040
2040
|
},
|
|
2041
2041
|
"name": "requestCpu",
|
|
2042
2042
|
"optional": true,
|
|
@@ -2054,7 +2054,7 @@
|
|
|
2054
2054
|
"immutable": true,
|
|
2055
2055
|
"locationInModule": {
|
|
2056
2056
|
"filename": "src/vinylcache.ts",
|
|
2057
|
-
"line":
|
|
2057
|
+
"line": 154
|
|
2058
2058
|
},
|
|
2059
2059
|
"name": "requestMemory",
|
|
2060
2060
|
"optional": true,
|
|
@@ -2062,6 +2062,82 @@
|
|
|
2062
2062
|
"primitive": "string"
|
|
2063
2063
|
}
|
|
2064
2064
|
},
|
|
2065
|
+
{
|
|
2066
|
+
"abstract": true,
|
|
2067
|
+
"docs": {
|
|
2068
|
+
"default": "- operator default (\"HASH\")",
|
|
2069
|
+
"remarks": "\"HASH\" uses the Varnish hash (default); \"URL\" uses the request URL.\nOnly applied when director is \"shard\".\nRequires cloud-vinyl operator >= 0.4.2.",
|
|
2070
|
+
"stability": "stable",
|
|
2071
|
+
"summary": "Shard director: what value is hashed for shard selection."
|
|
2072
|
+
},
|
|
2073
|
+
"immutable": true,
|
|
2074
|
+
"locationInModule": {
|
|
2075
|
+
"filename": "src/vinylcache.ts",
|
|
2076
|
+
"line": 181
|
|
2077
|
+
},
|
|
2078
|
+
"name": "shardBy",
|
|
2079
|
+
"optional": true,
|
|
2080
|
+
"type": {
|
|
2081
|
+
"primitive": "string"
|
|
2082
|
+
}
|
|
2083
|
+
},
|
|
2084
|
+
{
|
|
2085
|
+
"abstract": true,
|
|
2086
|
+
"docs": {
|
|
2087
|
+
"default": "- operator default (\"CHOSEN\")",
|
|
2088
|
+
"remarks": "\"CHOSEN\" (default) only considers the chosen backend healthy; \"ALL\" requires all\nbackends to be healthy.\nOnly applied when director is \"shard\".\nRequires cloud-vinyl operator >= 0.4.2.",
|
|
2089
|
+
"stability": "stable",
|
|
2090
|
+
"summary": "Shard director: which backends the director considers when selecting a shard."
|
|
2091
|
+
},
|
|
2092
|
+
"immutable": true,
|
|
2093
|
+
"locationInModule": {
|
|
2094
|
+
"filename": "src/vinylcache.ts",
|
|
2095
|
+
"line": 191
|
|
2096
|
+
},
|
|
2097
|
+
"name": "shardHealthy",
|
|
2098
|
+
"optional": true,
|
|
2099
|
+
"type": {
|
|
2100
|
+
"primitive": "string"
|
|
2101
|
+
}
|
|
2102
|
+
},
|
|
2103
|
+
{
|
|
2104
|
+
"abstract": true,
|
|
2105
|
+
"docs": {
|
|
2106
|
+
"default": "- operator default (\"30s\")",
|
|
2107
|
+
"remarks": "Only applied when director is \"shard\".",
|
|
2108
|
+
"stability": "stable",
|
|
2109
|
+
"summary": "Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd."
|
|
2110
|
+
},
|
|
2111
|
+
"immutable": true,
|
|
2112
|
+
"locationInModule": {
|
|
2113
|
+
"filename": "src/vinylcache.ts",
|
|
2114
|
+
"line": 199
|
|
2115
|
+
},
|
|
2116
|
+
"name": "shardRampup",
|
|
2117
|
+
"optional": true,
|
|
2118
|
+
"type": {
|
|
2119
|
+
"primitive": "string"
|
|
2120
|
+
}
|
|
2121
|
+
},
|
|
2122
|
+
{
|
|
2123
|
+
"abstract": true,
|
|
2124
|
+
"docs": {
|
|
2125
|
+
"default": "- operator default (67)",
|
|
2126
|
+
"remarks": "Only applied when director is \"shard\".",
|
|
2127
|
+
"stability": "stable",
|
|
2128
|
+
"summary": "Shard director: number of Ketama replicas per backend in the hash ring."
|
|
2129
|
+
},
|
|
2130
|
+
"immutable": true,
|
|
2131
|
+
"locationInModule": {
|
|
2132
|
+
"filename": "src/vinylcache.ts",
|
|
2133
|
+
"line": 206
|
|
2134
|
+
},
|
|
2135
|
+
"name": "shardReplicas",
|
|
2136
|
+
"optional": true,
|
|
2137
|
+
"type": {
|
|
2138
|
+
"primitive": "number"
|
|
2139
|
+
}
|
|
2140
|
+
},
|
|
2065
2141
|
{
|
|
2066
2142
|
"abstract": true,
|
|
2067
2143
|
"docs": {
|
|
@@ -2072,7 +2148,7 @@
|
|
|
2072
2148
|
"immutable": true,
|
|
2073
2149
|
"locationInModule": {
|
|
2074
2150
|
"filename": "src/vinylcache.ts",
|
|
2075
|
-
"line":
|
|
2151
|
+
"line": 244
|
|
2076
2152
|
},
|
|
2077
2153
|
"name": "tolerations",
|
|
2078
2154
|
"optional": true,
|
|
@@ -2095,7 +2171,7 @@
|
|
|
2095
2171
|
"immutable": true,
|
|
2096
2172
|
"locationInModule": {
|
|
2097
2173
|
"filename": "src/vinylcache.ts",
|
|
2098
|
-
"line":
|
|
2174
|
+
"line": 323
|
|
2099
2175
|
},
|
|
2100
2176
|
"name": "vclBackendErrorSnippet",
|
|
2101
2177
|
"optional": true,
|
|
@@ -2113,7 +2189,7 @@
|
|
|
2113
2189
|
"immutable": true,
|
|
2114
2190
|
"locationInModule": {
|
|
2115
2191
|
"filename": "src/vinylcache.ts",
|
|
2116
|
-
"line":
|
|
2192
|
+
"line": 317
|
|
2117
2193
|
},
|
|
2118
2194
|
"name": "vclBackendFetchSnippet",
|
|
2119
2195
|
"optional": true,
|
|
@@ -2132,7 +2208,7 @@
|
|
|
2132
2208
|
"immutable": true,
|
|
2133
2209
|
"locationInModule": {
|
|
2134
2210
|
"filename": "src/vinylcache.ts",
|
|
2135
|
-
"line":
|
|
2211
|
+
"line": 220
|
|
2136
2212
|
},
|
|
2137
2213
|
"name": "vclBackendResponseSnippet",
|
|
2138
2214
|
"optional": true,
|
|
@@ -2150,7 +2226,7 @@
|
|
|
2150
2226
|
"immutable": true,
|
|
2151
2227
|
"locationInModule": {
|
|
2152
2228
|
"filename": "src/vinylcache.ts",
|
|
2153
|
-
"line":
|
|
2229
|
+
"line": 257
|
|
2154
2230
|
},
|
|
2155
2231
|
"name": "vclDeliverSnippet",
|
|
2156
2232
|
"optional": true,
|
|
@@ -2168,7 +2244,7 @@
|
|
|
2168
2244
|
"immutable": true,
|
|
2169
2245
|
"locationInModule": {
|
|
2170
2246
|
"filename": "src/vinylcache.ts",
|
|
2171
|
-
"line":
|
|
2247
|
+
"line": 311
|
|
2172
2248
|
},
|
|
2173
2249
|
"name": "vclFiniSnippet",
|
|
2174
2250
|
"optional": true,
|
|
@@ -2186,7 +2262,7 @@
|
|
|
2186
2262
|
"immutable": true,
|
|
2187
2263
|
"locationInModule": {
|
|
2188
2264
|
"filename": "src/vinylcache.ts",
|
|
2189
|
-
"line":
|
|
2265
|
+
"line": 299
|
|
2190
2266
|
},
|
|
2191
2267
|
"name": "vclHashSnippet",
|
|
2192
2268
|
"optional": true,
|
|
@@ -2204,7 +2280,7 @@
|
|
|
2204
2280
|
"immutable": true,
|
|
2205
2281
|
"locationInModule": {
|
|
2206
2282
|
"filename": "src/vinylcache.ts",
|
|
2207
|
-
"line":
|
|
2283
|
+
"line": 263
|
|
2208
2284
|
},
|
|
2209
2285
|
"name": "vclHitSnippet",
|
|
2210
2286
|
"optional": true,
|
|
@@ -2222,7 +2298,7 @@
|
|
|
2222
2298
|
"immutable": true,
|
|
2223
2299
|
"locationInModule": {
|
|
2224
2300
|
"filename": "src/vinylcache.ts",
|
|
2225
|
-
"line":
|
|
2301
|
+
"line": 305
|
|
2226
2302
|
},
|
|
2227
2303
|
"name": "vclInitSnippet",
|
|
2228
2304
|
"optional": true,
|
|
@@ -2240,7 +2316,7 @@
|
|
|
2240
2316
|
"immutable": true,
|
|
2241
2317
|
"locationInModule": {
|
|
2242
2318
|
"filename": "src/vinylcache.ts",
|
|
2243
|
-
"line":
|
|
2319
|
+
"line": 269
|
|
2244
2320
|
},
|
|
2245
2321
|
"name": "vclMissSnippet",
|
|
2246
2322
|
"optional": true,
|
|
@@ -2258,7 +2334,7 @@
|
|
|
2258
2334
|
"immutable": true,
|
|
2259
2335
|
"locationInModule": {
|
|
2260
2336
|
"filename": "src/vinylcache.ts",
|
|
2261
|
-
"line":
|
|
2337
|
+
"line": 275
|
|
2262
2338
|
},
|
|
2263
2339
|
"name": "vclPassSnippet",
|
|
2264
2340
|
"optional": true,
|
|
@@ -2276,7 +2352,7 @@
|
|
|
2276
2352
|
"immutable": true,
|
|
2277
2353
|
"locationInModule": {
|
|
2278
2354
|
"filename": "src/vinylcache.ts",
|
|
2279
|
-
"line":
|
|
2355
|
+
"line": 281
|
|
2280
2356
|
},
|
|
2281
2357
|
"name": "vclPipeSnippet",
|
|
2282
2358
|
"optional": true,
|
|
@@ -2294,7 +2370,7 @@
|
|
|
2294
2370
|
"immutable": true,
|
|
2295
2371
|
"locationInModule": {
|
|
2296
2372
|
"filename": "src/vinylcache.ts",
|
|
2297
|
-
"line":
|
|
2373
|
+
"line": 293
|
|
2298
2374
|
},
|
|
2299
2375
|
"name": "vclPurgeSnippet",
|
|
2300
2376
|
"optional": true,
|
|
@@ -2313,7 +2389,7 @@
|
|
|
2313
2389
|
"immutable": true,
|
|
2314
2390
|
"locationInModule": {
|
|
2315
2391
|
"filename": "src/vinylcache.ts",
|
|
2316
|
-
"line":
|
|
2392
|
+
"line": 213
|
|
2317
2393
|
},
|
|
2318
2394
|
"name": "vclRecvSnippet",
|
|
2319
2395
|
"optional": true,
|
|
@@ -2331,7 +2407,7 @@
|
|
|
2331
2407
|
"immutable": true,
|
|
2332
2408
|
"locationInModule": {
|
|
2333
2409
|
"filename": "src/vinylcache.ts",
|
|
2334
|
-
"line":
|
|
2410
|
+
"line": 287
|
|
2335
2411
|
},
|
|
2336
2412
|
"name": "vclSynthSnippet",
|
|
2337
2413
|
"optional": true,
|
|
@@ -2353,7 +2429,7 @@
|
|
|
2353
2429
|
"kind": "interface",
|
|
2354
2430
|
"locationInModule": {
|
|
2355
2431
|
"filename": "src/vinylcache.ts",
|
|
2356
|
-
"line":
|
|
2432
|
+
"line": 59
|
|
2357
2433
|
},
|
|
2358
2434
|
"name": "VinylCacheBackend",
|
|
2359
2435
|
"properties": [
|
|
@@ -2367,7 +2443,7 @@
|
|
|
2367
2443
|
"immutable": true,
|
|
2368
2444
|
"locationInModule": {
|
|
2369
2445
|
"filename": "src/vinylcache.ts",
|
|
2370
|
-
"line":
|
|
2446
|
+
"line": 63
|
|
2371
2447
|
},
|
|
2372
2448
|
"name": "name",
|
|
2373
2449
|
"type": {
|
|
@@ -2383,7 +2459,7 @@
|
|
|
2383
2459
|
"immutable": true,
|
|
2384
2460
|
"locationInModule": {
|
|
2385
2461
|
"filename": "src/vinylcache.ts",
|
|
2386
|
-
"line":
|
|
2462
|
+
"line": 73
|
|
2387
2463
|
},
|
|
2388
2464
|
"name": "port",
|
|
2389
2465
|
"type": {
|
|
@@ -2399,7 +2475,7 @@
|
|
|
2399
2475
|
"immutable": true,
|
|
2400
2476
|
"locationInModule": {
|
|
2401
2477
|
"filename": "src/vinylcache.ts",
|
|
2402
|
-
"line":
|
|
2478
|
+
"line": 68
|
|
2403
2479
|
},
|
|
2404
2480
|
"name": "serviceName",
|
|
2405
2481
|
"type": {
|
|
@@ -2416,7 +2492,7 @@
|
|
|
2416
2492
|
"immutable": true,
|
|
2417
2493
|
"locationInModule": {
|
|
2418
2494
|
"filename": "src/vinylcache.ts",
|
|
2419
|
-
"line":
|
|
2495
|
+
"line": 79
|
|
2420
2496
|
},
|
|
2421
2497
|
"name": "probe",
|
|
2422
2498
|
"optional": true,
|
|
@@ -2435,7 +2511,7 @@
|
|
|
2435
2511
|
"immutable": true,
|
|
2436
2512
|
"locationInModule": {
|
|
2437
2513
|
"filename": "src/vinylcache.ts",
|
|
2438
|
-
"line":
|
|
2514
|
+
"line": 85
|
|
2439
2515
|
},
|
|
2440
2516
|
"name": "weight",
|
|
2441
2517
|
"optional": true,
|
|
@@ -2457,7 +2533,7 @@
|
|
|
2457
2533
|
"kind": "interface",
|
|
2458
2534
|
"locationInModule": {
|
|
2459
2535
|
"filename": "src/vinylcache.ts",
|
|
2460
|
-
"line":
|
|
2536
|
+
"line": 18
|
|
2461
2537
|
},
|
|
2462
2538
|
"name": "VinylCacheBackendProbe",
|
|
2463
2539
|
"properties": [
|
|
@@ -2471,7 +2547,7 @@
|
|
|
2471
2547
|
"immutable": true,
|
|
2472
2548
|
"locationInModule": {
|
|
2473
2549
|
"filename": "src/vinylcache.ts",
|
|
2474
|
-
"line":
|
|
2550
|
+
"line": 53
|
|
2475
2551
|
},
|
|
2476
2552
|
"name": "expectedResponse",
|
|
2477
2553
|
"optional": true,
|
|
@@ -2489,7 +2565,7 @@
|
|
|
2489
2565
|
"immutable": true,
|
|
2490
2566
|
"locationInModule": {
|
|
2491
2567
|
"filename": "src/vinylcache.ts",
|
|
2492
|
-
"line":
|
|
2568
|
+
"line": 29
|
|
2493
2569
|
},
|
|
2494
2570
|
"name": "interval",
|
|
2495
2571
|
"optional": true,
|
|
@@ -2507,7 +2583,7 @@
|
|
|
2507
2583
|
"immutable": true,
|
|
2508
2584
|
"locationInModule": {
|
|
2509
2585
|
"filename": "src/vinylcache.ts",
|
|
2510
|
-
"line":
|
|
2586
|
+
"line": 47
|
|
2511
2587
|
},
|
|
2512
2588
|
"name": "threshold",
|
|
2513
2589
|
"optional": true,
|
|
@@ -2525,7 +2601,7 @@
|
|
|
2525
2601
|
"immutable": true,
|
|
2526
2602
|
"locationInModule": {
|
|
2527
2603
|
"filename": "src/vinylcache.ts",
|
|
2528
|
-
"line":
|
|
2604
|
+
"line": 35
|
|
2529
2605
|
},
|
|
2530
2606
|
"name": "timeout",
|
|
2531
2607
|
"optional": true,
|
|
@@ -2543,7 +2619,7 @@
|
|
|
2543
2619
|
"immutable": true,
|
|
2544
2620
|
"locationInModule": {
|
|
2545
2621
|
"filename": "src/vinylcache.ts",
|
|
2546
|
-
"line":
|
|
2622
|
+
"line": 23
|
|
2547
2623
|
},
|
|
2548
2624
|
"name": "url",
|
|
2549
2625
|
"optional": true,
|
|
@@ -2561,7 +2637,7 @@
|
|
|
2561
2637
|
"immutable": true,
|
|
2562
2638
|
"locationInModule": {
|
|
2563
2639
|
"filename": "src/vinylcache.ts",
|
|
2564
|
-
"line":
|
|
2640
|
+
"line": 41
|
|
2565
2641
|
},
|
|
2566
2642
|
"name": "window",
|
|
2567
2643
|
"optional": true,
|
|
@@ -2583,7 +2659,7 @@
|
|
|
2583
2659
|
"kind": "interface",
|
|
2584
2660
|
"locationInModule": {
|
|
2585
2661
|
"filename": "src/vinylcache.ts",
|
|
2586
|
-
"line":
|
|
2662
|
+
"line": 91
|
|
2587
2663
|
},
|
|
2588
2664
|
"name": "VinylCacheToleration",
|
|
2589
2665
|
"properties": [
|
|
@@ -2596,7 +2672,7 @@
|
|
|
2596
2672
|
"immutable": true,
|
|
2597
2673
|
"locationInModule": {
|
|
2598
2674
|
"filename": "src/vinylcache.ts",
|
|
2599
|
-
"line":
|
|
2675
|
+
"line": 95
|
|
2600
2676
|
},
|
|
2601
2677
|
"name": "key",
|
|
2602
2678
|
"type": {
|
|
@@ -2613,7 +2689,7 @@
|
|
|
2613
2689
|
"immutable": true,
|
|
2614
2690
|
"locationInModule": {
|
|
2615
2691
|
"filename": "src/vinylcache.ts",
|
|
2616
|
-
"line":
|
|
2692
|
+
"line": 113
|
|
2617
2693
|
},
|
|
2618
2694
|
"name": "effect",
|
|
2619
2695
|
"optional": true,
|
|
@@ -2631,7 +2707,7 @@
|
|
|
2631
2707
|
"immutable": true,
|
|
2632
2708
|
"locationInModule": {
|
|
2633
2709
|
"filename": "src/vinylcache.ts",
|
|
2634
|
-
"line":
|
|
2710
|
+
"line": 101
|
|
2635
2711
|
},
|
|
2636
2712
|
"name": "operator",
|
|
2637
2713
|
"optional": true,
|
|
@@ -2649,7 +2725,7 @@
|
|
|
2649
2725
|
"immutable": true,
|
|
2650
2726
|
"locationInModule": {
|
|
2651
2727
|
"filename": "src/vinylcache.ts",
|
|
2652
|
-
"line":
|
|
2728
|
+
"line": 107
|
|
2653
2729
|
},
|
|
2654
2730
|
"name": "value",
|
|
2655
2731
|
"optional": true,
|
|
@@ -2661,6 +2737,6 @@
|
|
|
2661
2737
|
"symbolId": "src/vinylcache:VinylCacheToleration"
|
|
2662
2738
|
}
|
|
2663
2739
|
},
|
|
2664
|
-
"version": "0.1.
|
|
2665
|
-
"fingerprint": "
|
|
2740
|
+
"version": "0.1.31",
|
|
2741
|
+
"fingerprint": "DfZRICJpeVu1djonNCdX/hOFxrPq8dB12aL/F8F4W1c="
|
|
2666
2742
|
}
|
package/API.md
CHANGED
|
@@ -1794,6 +1794,10 @@ const ploneVinylCacheOptions: PloneVinylCacheOptions = { ... }
|
|
|
1794
1794
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.replicas">replicas</a></code> | <code>number</code> | Number of Varnish pod replicas. |
|
|
1795
1795
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.requestCpu">requestCpu</a></code> | <code>string</code> | CPU request for Varnish pods. |
|
|
1796
1796
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.requestMemory">requestMemory</a></code> | <code>string</code> | Memory request for Varnish pods. |
|
|
1797
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardBy">shardBy</a></code> | <code>string</code> | Shard director: what value is hashed for shard selection. |
|
|
1798
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardHealthy">shardHealthy</a></code> | <code>string</code> | Shard director: which backends the director considers when selecting a shard. |
|
|
1799
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardRampup">shardRampup</a></code> | <code>string</code> | Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd. |
|
|
1800
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardReplicas">shardReplicas</a></code> | <code>number</code> | Shard director: number of Ketama replicas per backend in the hash ring. |
|
|
1797
1801
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.tolerations">tolerations</a></code> | <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheToleration">VinylCacheToleration</a>[]</code> | Tolerations for the Varnish pods. |
|
|
1798
1802
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.vclBackendErrorSnippet">vclBackendErrorSnippet</a></code> | <code>string</code> | Custom VCL snippet for vcl_backend_error subroutine. |
|
|
1799
1803
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.vclBackendFetchSnippet">vclBackendFetchSnippet</a></code> | <code>string</code> | Custom VCL snippet for vcl_backend_fetch subroutine. |
|
|
@@ -1973,6 +1977,71 @@ Memory request for Varnish pods.
|
|
|
1973
1977
|
|
|
1974
1978
|
---
|
|
1975
1979
|
|
|
1980
|
+
##### `shardBy`<sup>Optional</sup> <a name="shardBy" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardBy"></a>
|
|
1981
|
+
|
|
1982
|
+
```typescript
|
|
1983
|
+
public readonly shardBy: string;
|
|
1984
|
+
```
|
|
1985
|
+
|
|
1986
|
+
- *Type:* string
|
|
1987
|
+
- *Default:* operator default ("HASH")
|
|
1988
|
+
|
|
1989
|
+
Shard director: what value is hashed for shard selection.
|
|
1990
|
+
|
|
1991
|
+
"HASH" uses the Varnish hash (default); "URL" uses the request URL.
|
|
1992
|
+
Only applied when director is "shard".
|
|
1993
|
+
Requires cloud-vinyl operator >= 0.4.2.
|
|
1994
|
+
|
|
1995
|
+
---
|
|
1996
|
+
|
|
1997
|
+
##### `shardHealthy`<sup>Optional</sup> <a name="shardHealthy" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardHealthy"></a>
|
|
1998
|
+
|
|
1999
|
+
```typescript
|
|
2000
|
+
public readonly shardHealthy: string;
|
|
2001
|
+
```
|
|
2002
|
+
|
|
2003
|
+
- *Type:* string
|
|
2004
|
+
- *Default:* operator default ("CHOSEN")
|
|
2005
|
+
|
|
2006
|
+
Shard director: which backends the director considers when selecting a shard.
|
|
2007
|
+
|
|
2008
|
+
"CHOSEN" (default) only considers the chosen backend healthy; "ALL" requires all
|
|
2009
|
+
backends to be healthy.
|
|
2010
|
+
Only applied when director is "shard".
|
|
2011
|
+
Requires cloud-vinyl operator >= 0.4.2.
|
|
2012
|
+
|
|
2013
|
+
---
|
|
2014
|
+
|
|
2015
|
+
##### `shardRampup`<sup>Optional</sup> <a name="shardRampup" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardRampup"></a>
|
|
2016
|
+
|
|
2017
|
+
```typescript
|
|
2018
|
+
public readonly shardRampup: string;
|
|
2019
|
+
```
|
|
2020
|
+
|
|
2021
|
+
- *Type:* string
|
|
2022
|
+
- *Default:* operator default ("30s")
|
|
2023
|
+
|
|
2024
|
+
Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd.
|
|
2025
|
+
|
|
2026
|
+
Only applied when director is "shard".
|
|
2027
|
+
|
|
2028
|
+
---
|
|
2029
|
+
|
|
2030
|
+
##### `shardReplicas`<sup>Optional</sup> <a name="shardReplicas" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardReplicas"></a>
|
|
2031
|
+
|
|
2032
|
+
```typescript
|
|
2033
|
+
public readonly shardReplicas: number;
|
|
2034
|
+
```
|
|
2035
|
+
|
|
2036
|
+
- *Type:* number
|
|
2037
|
+
- *Default:* operator default (67)
|
|
2038
|
+
|
|
2039
|
+
Shard director: number of Ketama replicas per backend in the hash ring.
|
|
2040
|
+
|
|
2041
|
+
Only applied when director is "shard".
|
|
2042
|
+
|
|
2043
|
+
---
|
|
2044
|
+
|
|
1976
2045
|
##### `tolerations`<sup>Optional</sup> <a name="tolerations" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.tolerations"></a>
|
|
1977
2046
|
|
|
1978
2047
|
```typescript
|
|
@@ -82,6 +82,11 @@ new PloneVinylCache(chart, 'cache', {
|
|
|
82
82
|
|
|
83
83
|
Invalidation is enabled by default (PURGE, BAN, xkey). Configure `plone.cachepurging` to point to the VinylCache invalidation proxy endpoint.
|
|
84
84
|
|
|
85
|
+
:::{note}
|
|
86
|
+
BAN-based invalidation requires **cloud-vinyl operator ≥ 0.4.2**. Earlier versions accept the spec but do not emit the BAN ACL / handler.
|
|
87
|
+
Starting with 0.4.2 the operator's own pod IP is automatically added to the PURGE ACL, so purges from the operator itself work without additional configuration.
|
|
88
|
+
:::
|
|
89
|
+
|
|
85
90
|
To disable invalidation:
|
|
86
91
|
|
|
87
92
|
```typescript
|
|
@@ -91,6 +96,23 @@ new PloneVinylCache(chart, 'cache', {
|
|
|
91
96
|
});
|
|
92
97
|
```
|
|
93
98
|
|
|
99
|
+
### Shard Director Tuning
|
|
100
|
+
|
|
101
|
+
For shard-based load distribution (the default), you can fine-tune the consistent-hash behavior. These options require **cloud-vinyl ≥ 0.4.2** to be honored by the generated VCL.
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
new PloneVinylCache(chart, 'cache', {
|
|
105
|
+
plone: plone,
|
|
106
|
+
director: 'shard',
|
|
107
|
+
shardBy: 'URL', // hash the request URL instead of Varnish's hash
|
|
108
|
+
shardHealthy: 'ALL', // require all backends healthy (vs. only "CHOSEN")
|
|
109
|
+
shardRampup: '45s', // warm-up window for newly added backends
|
|
110
|
+
shardReplicas: 128, // Ketama replicas per backend
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Shard options are ignored for non-shard directors (`round_robin`, `random`, `hash`).
|
|
115
|
+
|
|
94
116
|
## Migrating from PloneHttpcache
|
|
95
117
|
|
|
96
118
|
Replace `PloneHttpcache` with `PloneVinylCache`:
|
package/lib/httpcache.js
CHANGED
|
@@ -118,5 +118,5 @@ class PloneHttpcache extends constructs_1.Construct {
|
|
|
118
118
|
}
|
|
119
119
|
exports.PloneHttpcache = PloneHttpcache;
|
|
120
120
|
_a = JSII_RTTI_SYMBOL_1;
|
|
121
|
-
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.
|
|
121
|
+
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.31" };
|
|
122
122
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQXdKdkM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFPM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxZQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM1Qyx1REFBdUQ7WUFDdkQsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWTtZQUM3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QUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQS9GSCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwYXNzIHRvIHRoZSBrdWJlLWh0dHBjYWNoZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlRW52VmFyIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBLdWJlcm5ldGVzIHRvbGVyYXRpb24gZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZUh0dHBjYWNoZSAoVmFybmlzaCBjYWNoaW5nIGxheWVyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUh0dHBjYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIEhUVFAgY2FjaGUgdG8uXG4gICAqIFRoZSBjYWNoZSB3aWxsIGF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgYmFja2VuZCBhbmQgZnJvbnRlbmQgc2VydmljZXMuXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqXG4gICAqIFZhcm5pc2ggVkNMIGNvbmZpZ3VyYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YXJuaXNoVmNsRmlsZS5cbiAgICogQGRlZmF1bHQgLSBsb2FkZWQgZnJvbSB2YXJuaXNoVmNsRmlsZSBvciBkZWZhdWx0IGNvbmZpZyBmaWxlXG4gICAqL1xuICByZWFkb25seSB2YXJuaXNoVmNsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgVkNMIGZpbGUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBkZWZhdWx0IGNvbmZpZy92YXJuaXNoLnRwbC52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2xGaWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGFuIGV4aXN0aW5nIEt1YmVybmV0ZXMgc2VjcmV0IGNvbnRhaW5pbmcgVmFybmlzaCBhZG1pbiBjcmVkZW50aWFscy5cbiAgICogVGhlIHNlY3JldCBzaG91bGQgYmUgY3JlYXRlZCBzZXBhcmF0ZWx5IGluIHRoZSBzYW1lIG5hbWVzcGFjZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGV4aXN0aW5nIHNlY3JldClcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwMG0nXG4gICAqL1xuICByZWFkb25seSBsaW1pdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IGxpbWl0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICc1MDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIFByb21ldGhldXMgZXhwb3J0ZXIgZm9yIFZhcm5pc2ggbWV0cmljcy5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZXhwb3J0ZXIgc2lkZWNhciBjb250YWluZXIgd2lsbCBiZSBkZXBsb3llZCBhbG9uZ3NpZGUgVmFybmlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3J0ZXJFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChsYXRlc3QpXG4gICAqL1xuICByZWFkb25seSBjaGFydFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGt1YmUtaHR0cGNhY2hlIENvbnRhaW5lciBJbWFnZSB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChjaGFydFZlcnNpb24gPSB3aXRoIGVhY2ggY2hhcnQgcmVsZWFzZSB0aGVyZSBpcyBhbiBpbWFnZSByZWxlYXNlIHRvbyApXG4gICAqL1xuICByZWFkb25seSBhcHBWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUga3ViZS1odHRwY2FjaGUgY29udGFpbmVyLlxuICAgKiBUaGVzZSBhcmUgYXBwZW5kZWQgdG8gdGhlIGJ1aWx0LWluIGVudiB2YXJzIChCQUNLRU5EX1NFUlZJQ0VfTkFNRSwgZXRjLilcbiAgICogYW5kIGNhbiBiZSByZWZlcmVuY2VkIGluIFZDTCB0ZW1wbGF0ZXMgdXNpbmcgR28gdGVtcGxhdGUgc3ludGF4OiB7eyAuRW52LlZBUl9OQU1FIH19XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnYgdmFyc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFFbnZWYXJzPzogSHR0cGNhY2hlRW52VmFyW107XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBVc2UgdGhpcyB0byBhbGxvdyBzY2hlZHVsaW5nIG9uIG5vZGVzIHdpdGggc3BlY2lmaWMgdGFpbnRzLFxuICAgKiBlLmcuIG5vZGVzIHRhaW50ZWQgd2l0aCBrdWJlcm5ldGVzLmlvL2FyY2g9YW1kNjQ6Tm9TY2hlZHVsZS5cbiAgICogQGRlZmF1bHQgLSBubyB0b2xlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9sZXJhdGlvbnM/OiBIdHRwY2FjaGVUb2xlcmF0aW9uW107XG59XG5cbi8qKlxuICogUGxvbmVIdHRwY2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBIVFRQIGNhY2hpbmcgbGF5ZXIuXG4gKlxuICogVXNlcyB0aGUgbWl0dHdhbGQva3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byBkZXBsb3kgVmFybmlzaCBhcyBhXG4gKiBjYWNoaW5nIHByb3h5IGluIGZyb250IG9mIFBsb25lIGJhY2tlbmQgYW5kL29yIGZyb250ZW5kIHNlcnZpY2VzLlxuICpcbiAqIFRoZSBjYWNoZSBhdXRvbWF0aWNhbGx5IGNvbm5lY3RzIHRvIHRoZSBQbG9uZSBzZXJ2aWNlcyBhbmQgcHJvdmlkZXNcbiAqIEhUVFAgY2FjaGUgaW52YWxpZGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVIdHRwY2FjaGUoY2hhcnQsICdjYWNoZScsIHtcbiAqICAgcGxvbmU6IHBsb25lLFxuICogICBleGlzdGluZ1NlY3JldDogJ3Zhcm5pc2gtc2VjcmV0JyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmVIdHRwY2FjaGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgVmFybmlzaCBzZXJ2aWNlIGNyZWF0ZWQgYnkgdGhlIEhlbG0gY2hhcnQuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgY2FjaGUgc2VydmljZSBmcm9tIGluZ3Jlc3Mgb3Igb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBodHRwY2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lSHR0cGNhY2hlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbGV0IHZhcm5pc2hWY2w6IHN0cmluZztcbiAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbCkge1xuICAgICAgbGV0IHZjbFBhdGg6IHN0cmluZztcbiAgICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsRmlsZSkge1xuICAgICAgICB2Y2xQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICd2YXJuaXNoLnRwbC52Y2wnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZjbFBhdGggPSBvcHRpb25zLnZhcm5pc2hWY2xGaWxlO1xuICAgICAgfVxuICAgICAgdmFybmlzaFZjbCA9IGZzLnJlYWRGaWxlU3luYyh2Y2xQYXRoLCAndXRmOCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJuaXNoVmNsID0gb3B0aW9ucy52YXJuaXNoVmNsO1xuICAgIH1cbiAgICBjb25zdCBpbWFnZVRhZyA9IG9wdGlvbnMuYXBwVmVyc2lvbiA/PyBvcHRpb25zLmNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCBodHRwY2FjaGUgPSBuZXcgSGVsbSh0aGlzLCAnaHR0cGNhY2hlJywge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taXR0d2FsZC9rdWJlLWh0dHBjYWNoZS9jaGFydFxuICAgICAgcmVwbzogJ2h0dHBzOi8vaGVsbS5taXR0d2FsZC5kZScsXG4gICAgICBjaGFydDogJ2t1YmUtaHR0cGNhY2hlJyxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMuY2hhcnRWZXJzaW9uLFxuICAgICAgdmFsdWVzOiB7XG4gICAgICAgIHJlcGxpY2FDb3VudDogb3B0aW9ucy5yZXBsaWNhcyA/PyAyLFxuICAgICAgICAuLi4oaW1hZ2VUYWcgJiYgeyBpbWFnZTogeyB0YWc6IGltYWdlVGFnIH0gfSksXG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgYmFja2VuZFNlcnZpY2U6IG9wdGlvbnMucGxvbmUuYmFja2VuZFNlcnZpY2VOYW1lLFxuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogdHJ1ZSxcbiAgICAgICAgICBleGlzdGluZ1NlY3JldDogb3B0aW9ucy5leGlzdGluZ1NlY3JldCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFdvcmthcm91bmQ6IHVwc3RyZWFtIGNoYXJ0IGFjY2VwdHMgYmFja2VuZFBvcnROYW1lIGJ1dCBuZXZlclxuICAgICAgICAvLyByZW5kZXJzIGl0IGFzIENMSSBhcmcuIFBhc3MgdmlhIGNhY2hlRXh0cmFBcmdzIGluc3RlYWQuXG4gICAgICAgIGNhY2hlRXh0cmFBcmdzOiAnLSAtYmFja2VuZC1wb3J0bmFtZT1iYWNrZW5kLWh0dHAnLFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NJVEVfSUQnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5zaXRlSWQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmV4dHJhRW52VmFycyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG9wdGlvbnMudG9sZXJhdGlvbnMgJiYgeyB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucyB9KSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiBvcHRpb25zLmV4cG9ydGVyRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5zZXJ2aWNlbW9uaXRvciB8fCBmYWxzZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
|