Skip to content

Commit 1e622e0

Browse files
authored
Merge pull request #111 from PDOK/PDOK-18416-wmfs-rewrites
Added rewrites for ingress route URLs
2 parents 5b342d9 + f0264f3 commit 1e622e0

File tree

7 files changed

+61
-17
lines changed

7 files changed

+61
-17
lines changed

internal/controller/configmaps.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controller
22

33
import (
4+
"fmt"
45
"strings"
56

67
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
@@ -116,14 +117,7 @@ func mutateConfigMap[R Reconciler, O pdoknlv3.WMSWFS](r R, obj O, configMap *cor
116117
configMap.Immutable = smoothoperatorutils.Pointer(true)
117118
configMap.Data = map[string]string{}
118119

119-
staticFileName, contents := static.GetStaticFiles()
120-
for _, name := range staticFileName {
121-
content := contents[name]
122-
if name == "include.conf" {
123-
content = []byte(strings.ReplaceAll(string(content), "/{{ service_path }}", obj.URL().Path))
124-
}
125-
configMap.Data[name] = string(content)
126-
}
120+
updateConfigMapWithStaticFiles(configMap, obj)
127121

128122
if err := smoothoperatorutils.EnsureSetGVK(reconcilerClient, configMap, configMap); err != nil {
129123
return err
@@ -133,3 +127,21 @@ func mutateConfigMap[R Reconciler, O pdoknlv3.WMSWFS](r R, obj O, configMap *cor
133127
}
134128
return smoothoperatorutils.AddHashSuffix(configMap)
135129
}
130+
131+
func updateConfigMapWithStaticFiles[O pdoknlv3.WMSWFS](configMap *corev1.ConfigMap, obj O) {
132+
staticFileName, contents := static.GetStaticFiles()
133+
for _, name := range staticFileName {
134+
content := contents[name]
135+
if name == "include.conf" {
136+
ingressRouteUrls := obj.IngressRouteURLs(true)
137+
rewriteRules := make([]string, 0)
138+
for _, ingressRouteURL := range ingressRouteUrls {
139+
rewriteRules = append(rewriteRules, fmt.Sprintf(" \"%s/legend(.*)\" => \"/legend$1\"", ingressRouteURL.URL.Path))
140+
rewriteRules = append(rewriteRules, fmt.Sprintf(" \"%s(.*)\" => \"/mapserver$1\"", ingressRouteURL.URL.Path))
141+
}
142+
143+
content = []byte(strings.ReplaceAll(string(content), "{{ rewrite_rules }}", strings.Join(rewriteRules, ",\n")))
144+
}
145+
configMap.Data[name] = string(content)
146+
}
147+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package controller
2+
3+
import (
4+
"os"
5+
"testing"
6+
7+
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
8+
"github.com/pdok/mapserver-operator/internal/controller/constants"
9+
"github.com/stretchr/testify/assert"
10+
v1 "k8s.io/api/core/v1"
11+
"sigs.k8s.io/yaml"
12+
)
13+
14+
func TestMapserverConfigMaps(t *testing.T) {
15+
wfsBytes, err := os.ReadFile("test_data/wfs/complete/input/wfs.yaml")
16+
assert.NoError(t, err)
17+
o := &pdoknlv3.WFS{}
18+
err = yaml.Unmarshal(wfsBytes, o)
19+
assert.NoError(t, err)
20+
generatedConfigMap := getBareConfigMap(o, constants.MapserverName)
21+
generatedConfigMap.Data = make(map[string]string)
22+
updateConfigMapWithStaticFiles(generatedConfigMap, o)
23+
24+
expectedConfigMap := v1.ConfigMap{}
25+
expectedBytes, err := os.ReadFile("test_data/wfs/complete/expected/configmap-mapserver.yaml")
26+
assert.NoError(t, err)
27+
err = yaml.Unmarshal(expectedBytes, &expectedConfigMap)
28+
assert.NoError(t, err)
29+
30+
assert.Equal(t, expectedConfigMap.Data, generatedConfigMap.Data)
31+
}

internal/controller/static/files/include.conf

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ $HTTP["remoteip"] =~ "^(127\.0\.0\.1|172\.(1[6-9]|2[0-9]|3[01])\.|10\.|192\.168\
55
}
66

77
url.rewrite-once = (
8-
"/{{ service_path }}/legend(.*)" => "/legend$1",
9-
"/{{ service_path }}(.*)" => "/mapserver$1"
8+
{{ rewrite_rules }}
109
)
1110

1211
magnet.attract-raw-url-to += ( "/srv/mapserver/config/ogc.lua" )

internal/controller/test_data/wfs/complete/expected/configmap-mapserver.yaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ data:
99
MAP "/srv/data/config/mapfile/service.map"
1010
END
1111
END
12-
include.conf: |-
12+
include.conf: |
1313
server.modules += ( "mod_status" )
1414
1515
$HTTP["remoteip"] =~ "^(127\.0\.0\.1|172\.(1[6-9]|2[0-9]|3[01])\.|10\.|192\.168\.)" {
@@ -18,7 +18,9 @@ data:
1818
1919
url.rewrite-once = (
2020
"/datasetOwner/dataset/theme/wfs/v1_0/legend(.*)" => "/legend$1",
21-
"/datasetOwner/dataset/theme/wfs/v1_0(.*)" => "/mapserver$1"
21+
"/datasetOwner/dataset/theme/wfs/v1_0(.*)" => "/mapserver$1",
22+
"/other/path/legend(.*)" => "/legend$1",
23+
"/other/path(.*)" => "/mapserver$1"
2224
)
2325
2426
magnet.attract-raw-url-to += ( "/srv/mapserver/config/ogc.lua" )
@@ -110,7 +112,7 @@ data:
110112
end
111113
end
112114
end
113-
scraping-error.xml: |-
115+
scraping-error.xml: |
114116
<?xml version="1.0" encoding="UTF-8"?>
115117
<ows:ExceptionReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/1.1" version="2.0.0" xml:lang="en-US" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd">
116118
<ows:Exception exceptionCode="InvalidParameterValue" locator="typename">
@@ -130,7 +132,7 @@ metadata:
130132
service-type: wfs
131133
service-version: v1_0
132134
theme: theme
133-
name: complete-wfs-mapserver-4dm5625f45
135+
name: complete-wfs-mapserver-bfcm4d47kh
134136
namespace: default
135137
ownerReferences:
136138
- apiVersion: pdok.nl/v3

internal/controller/test_data/wfs/complete/expected/deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ spec:
253253
- emptyDir: {}
254254
name: data
255255
- configMap:
256-
name: complete-wfs-mapserver-4dm5625f45
256+
name: complete-wfs-mapserver-bfcm4d47kh
257257
defaultMode: 420
258258
name: mapserver
259259
- configMap:

internal/controller/test_data/wms/complete/expected/configmap-mapserver.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ metadata:
136136
service-type: wms
137137
service-version: v1_0
138138
theme: "2016"
139-
name: complete-wms-mapserver-84kmc4cbf6
139+
name: complete-wms-mapserver-88ckd472mk
140140
namespace: default
141141
ownerReferences:
142142
- apiVersion: pdok.nl/v3

internal/controller/test_data/wms/complete/expected/deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ spec:
366366
- emptyDir: {}
367367
name: data
368368
- configMap:
369-
name: complete-wms-mapserver-84kmc4cbf6
369+
name: complete-wms-mapserver-88ckd472mk
370370
defaultMode: 420
371371
name: mapserver
372372
- configMap:

0 commit comments

Comments
 (0)