Skip to content

Commit 3fb1d95

Browse files
committed
Started on WFS mapserver tests
1 parent 99685e6 commit 3fb1d95

File tree

7 files changed

+122
-87
lines changed

7 files changed

+122
-87
lines changed

api/v2beta1/wfs_conversion.go

Lines changed: 79 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -39,82 +39,7 @@ func (src *WFS) ConvertTo(dstRaw conversion.Hub) error {
3939
dst := dstRaw.(*pdoknlv3.WFS)
4040
log.Printf("ConvertTo: Converting WFS from Spoke version v2beta1 to Hub version v3;"+
4141
"source: %s/%s, target: %s/%s", src.Namespace, src.Name, dst.Namespace, dst.Name)
42-
43-
dst.ObjectMeta = src.ObjectMeta
44-
45-
// Set LifeCycle if defined
46-
if src.Spec.Kubernetes.Lifecycle != nil && src.Spec.Kubernetes.Lifecycle.TTLInDays != nil {
47-
dst.Spec.Lifecycle = &sharedModel.Lifecycle{
48-
TTLInDays: Pointer(int32(*src.Spec.Kubernetes.Lifecycle.TTLInDays)),
49-
}
50-
}
51-
52-
if src.Spec.Kubernetes.Autoscaling != nil {
53-
dst.Spec.HorizontalPodAutoscalerPatch = ConvertAutoscaling(*src.Spec.Kubernetes.Autoscaling)
54-
}
55-
56-
// TODO converse src.Spec.Kubernetes.HealthCheck when we know what the implementation in v3 will be
57-
if src.Spec.Kubernetes.Resources != nil {
58-
dst.Spec.PodSpecPatch = ConvertResources(*src.Spec.Kubernetes.Resources)
59-
}
60-
61-
dst.Spec.Options = *ConvertOptionsV2ToV3(src.Spec.Options)
62-
63-
service := pdoknlv3.WFSService{
64-
// TODO what is prefix, Geonovum subdomain?
65-
Prefix: "prefix",
66-
URL: CreateBaseURL("https://service.pdok.nl", "wfs", src.Spec.General),
67-
OwnerInfoRef: "pdok",
68-
Title: src.Spec.Service.Title,
69-
Abstract: src.Spec.Service.Abstract,
70-
Keywords: src.Spec.Service.Keywords,
71-
Fees: nil,
72-
AccessConstraints: src.Spec.Service.AccessConstraints,
73-
DefaultCrs: src.Spec.Service.DataEPSG,
74-
OtherCrs: []string{},
75-
CountDefault: src.Spec.Service.Maxfeatures,
76-
FeatureTypes: make([]pdoknlv3.FeatureType, 0),
77-
}
78-
79-
if src.Spec.Service.Mapfile != nil {
80-
service.Mapfile = &pdoknlv3.Mapfile{
81-
ConfigMapKeyRef: src.Spec.Service.Mapfile.ConfigMapKeyRef,
82-
}
83-
}
84-
85-
if src.Spec.Service.Extent != nil && *src.Spec.Service.Extent != "" {
86-
service.Bbox = &pdoknlv3.Bbox{
87-
DefaultCRS: sharedModel.ExtentToBBox(*src.Spec.Service.Extent),
88-
}
89-
} else {
90-
service.Bbox = &pdoknlv3.Bbox{
91-
DefaultCRS: sharedModel.BBox{
92-
MinX: "-25000",
93-
MaxX: "280000",
94-
MinY: "250000",
95-
MaxY: "860000",
96-
},
97-
}
98-
}
99-
100-
// TODO - where to place the MetadataIdentifier and FeatureTypes[0].SourceMetadataIdentifier if the service is not inspire?
101-
if src.Spec.Service.Inspire {
102-
service.Inspire = &pdoknlv3.Inspire{
103-
ServiceMetadataURL: pdoknlv3.MetadataURL{
104-
CSW: &pdoknlv3.Metadata{
105-
MetadataIdentifier: src.Spec.Service.MetadataIdentifier,
106-
},
107-
},
108-
SpatialDatasetIdentifier: src.Spec.Service.FeatureTypes[0].SourceMetadataIdentifier,
109-
Language: "dut",
110-
}
111-
}
112-
113-
for _, featureType := range src.Spec.Service.FeatureTypes {
114-
service.FeatureTypes = append(service.FeatureTypes, convertV2FeatureTypeToV3(featureType))
115-
}
116-
117-
dst.Spec.Service = service
42+
V3WFSHubFromV2(src, dst)
11843

11944
return nil
12045
}
@@ -219,3 +144,81 @@ func (dst *WFS) ConvertFrom(srcRaw conversion.Hub) error {
219144

220145
return nil
221146
}
147+
148+
func V3WFSHubFromV2(src *WFS, target *pdoknlv3.WFS) {
149+
target.ObjectMeta = src.ObjectMeta
150+
151+
// Set LifeCycle if defined
152+
if src.Spec.Kubernetes.Lifecycle != nil && src.Spec.Kubernetes.Lifecycle.TTLInDays != nil {
153+
target.Spec.Lifecycle = &sharedModel.Lifecycle{
154+
TTLInDays: Pointer(int32(*src.Spec.Kubernetes.Lifecycle.TTLInDays)),
155+
}
156+
}
157+
158+
if src.Spec.Kubernetes.Autoscaling != nil {
159+
target.Spec.HorizontalPodAutoscalerPatch = ConvertAutoscaling(*src.Spec.Kubernetes.Autoscaling)
160+
}
161+
162+
// TODO converse src.Spec.Kubernetes.HealthCheck when we know what the implementation in v3 will be
163+
if src.Spec.Kubernetes.Resources != nil {
164+
target.Spec.PodSpecPatch = ConvertResources(*src.Spec.Kubernetes.Resources)
165+
}
166+
167+
target.Spec.Options = *ConvertOptionsV2ToV3(src.Spec.Options)
168+
169+
service := pdoknlv3.WFSService{
170+
// TODO what is prefix, Geonovum subdomain?
171+
Prefix: "prefix",
172+
URL: CreateBaseURL("https://service.pdok.nl", "wfs", src.Spec.General),
173+
OwnerInfoRef: "pdok",
174+
Title: src.Spec.Service.Title,
175+
Abstract: src.Spec.Service.Abstract,
176+
Keywords: src.Spec.Service.Keywords,
177+
Fees: nil,
178+
AccessConstraints: src.Spec.Service.AccessConstraints,
179+
DefaultCrs: src.Spec.Service.DataEPSG,
180+
OtherCrs: []string{},
181+
CountDefault: src.Spec.Service.Maxfeatures,
182+
FeatureTypes: make([]pdoknlv3.FeatureType, 0),
183+
}
184+
185+
if src.Spec.Service.Mapfile != nil {
186+
service.Mapfile = &pdoknlv3.Mapfile{
187+
ConfigMapKeyRef: src.Spec.Service.Mapfile.ConfigMapKeyRef,
188+
}
189+
}
190+
191+
if src.Spec.Service.Extent != nil && *src.Spec.Service.Extent != "" {
192+
service.Bbox = &pdoknlv3.Bbox{
193+
DefaultCRS: sharedModel.ExtentToBBox(*src.Spec.Service.Extent),
194+
}
195+
} else {
196+
service.Bbox = &pdoknlv3.Bbox{
197+
DefaultCRS: sharedModel.BBox{
198+
MinX: "-25000",
199+
MaxX: "280000",
200+
MinY: "250000",
201+
MaxY: "860000",
202+
},
203+
}
204+
}
205+
206+
// TODO - where to place the MetadataIdentifier and FeatureTypes[0].SourceMetadataIdentifier if the service is not inspire?
207+
if src.Spec.Service.Inspire {
208+
service.Inspire = &pdoknlv3.Inspire{
209+
ServiceMetadataURL: pdoknlv3.MetadataURL{
210+
CSW: &pdoknlv3.Metadata{
211+
MetadataIdentifier: src.Spec.Service.MetadataIdentifier,
212+
},
213+
},
214+
SpatialDatasetIdentifier: src.Spec.Service.FeatureTypes[0].SourceMetadataIdentifier,
215+
Language: "dut",
216+
}
217+
}
218+
219+
for _, featureType := range src.Spec.Service.FeatureTypes {
220+
service.FeatureTypes = append(service.FeatureTypes, convertV2FeatureTypeToV3(featureType))
221+
}
222+
223+
target.Spec.Service = service
224+
}

api/v2beta1/wms_conversion.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ func (src *WMS) ConvertTo(dstRaw conversion.Hub) error {
4242
dst := dstRaw.(*pdoknlv3.WMS)
4343
log.Printf("ConvertTo: Converting WMS from Spoke version v2beta1 to Hub version v3;"+
4444
"source: %s/%s, target: %s/%s", src.Namespace, src.Name, dst.Namespace, dst.Name)
45-
V3HubFromV2(src, dst)
45+
V3WMSHubFromV2(src, dst)
4646

4747
return nil
4848
}
4949

50-
func V3HubFromV2(src *WMS, target *pdoknlv3.WMS) {
50+
func V3WMSHubFromV2(src *WMS, target *pdoknlv3.WMS) {
5151
dst := target
5252

5353
dst.ObjectMeta = src.ObjectMeta

api/v2beta1/wms_conversion_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func TestV2ToV3(t *testing.T) {
1414
err := yaml.Unmarshal([]byte(input), &v2wms)
1515
assert.NoError(t, err)
1616
var target pdoknlv3.WMS
17-
V3HubFromV2(&v2wms, &target)
17+
V3WMSHubFromV2(&v2wms, &target)
1818
assert.Equal(t, "NWB - Wegen WMS", target.Spec.Service.Title)
1919
a := 0
2020
_ = a

internal/controller/capabilitiesgenerator/capabilities_generator_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ func TestInputForWMS(t *testing.T) {
675675
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
676676
assert.NoError(t, err)
677677
var wms pdoknlv3.WMS
678-
v2beta1.V3HubFromV2(&v2wms, &wms)
678+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
679679
pdoknlv3.SetHost("http://localhost")
680680

681681
contactPersonPrimary := smoothoperatorv1.ContactPersonPrimary{

internal/controller/legendgenerator/legend_generator_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestGetConfigMapDataNoLegendFix(t *testing.T) {
1515
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
1616
assert.NoError(t, err)
1717
var wms pdoknlv3.WMS
18-
v2beta1.V3HubFromV2(&v2wms, &wms)
18+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
1919

2020
configMapData := GetConfigMapData(&wms)
2121

@@ -34,7 +34,7 @@ func TestGetConfigMapDataLegendFix(t *testing.T) {
3434
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
3535
assert.NoError(t, err)
3636
var wms pdoknlv3.WMS
37-
v2beta1.V3HubFromV2(&v2wms, &wms)
37+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
3838

3939
configMapData := GetConfigMapData(&wms)
4040

internal/controller/mapfilegenerator/mapfile_generator_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ func TestGetConfigForWMSWithNoGroupLayers(t *testing.T) {
258258
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
259259
assert.NoError(t, err)
260260
var wms pdoknlv3.WMS
261-
v2beta1.V3HubFromV2(&v2wms, &wms)
261+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
262262

263263
pdoknlv3.SetHost("https://service.pdok.nl")
264264

@@ -284,7 +284,7 @@ func TestGetConfigForWMSWithGroupLayers(t *testing.T) {
284284
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
285285
assert.NoError(t, err)
286286
var wms pdoknlv3.WMS
287-
v2beta1.V3HubFromV2(&v2wms, &wms)
287+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
288288

289289
pdoknlv3.SetHost("https://service.pdok.nl")
290290

@@ -310,7 +310,7 @@ func TestGetConfigForWMSWithGroupLayersAndTopGroupLayer(t *testing.T) {
310310
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
311311
assert.NoError(t, err)
312312
var wms pdoknlv3.WMS
313-
v2beta1.V3HubFromV2(&v2wms, &wms)
313+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
314314

315315
pdoknlv3.SetHost("https://service.pdok.nl")
316316

@@ -335,7 +335,7 @@ func TestGetConfigForTifWMS(t *testing.T) {
335335
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
336336
assert.NoError(t, err)
337337
var wms pdoknlv3.WMS
338-
v2beta1.V3HubFromV2(&v2wms, &wms)
338+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
339339

340340
pdoknlv3.SetHost("https://service.pdok.nl")
341341

@@ -360,7 +360,7 @@ func TestGetConfigForPostgisWMS(t *testing.T) {
360360
err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms)
361361
assert.NoError(t, err)
362362
var wms pdoknlv3.WMS
363-
v2beta1.V3HubFromV2(&v2wms, &wms)
363+
v2beta1.V3WMSHubFromV2(&v2wms, &wms)
364364

365365
pdoknlv3.SetHost("https://service.pdok.nl")
366366

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package mapserver
2+
3+
import (
4+
"encoding/json"
5+
"github.com/pdok/mapserver-operator/api/v2beta1"
6+
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
7+
"github.com/stretchr/testify/assert"
8+
v1 "k8s.io/api/core/v1"
9+
"sigs.k8s.io/yaml"
10+
"testing"
11+
)
12+
13+
const (
14+
v2WfsString = "apiVersion: pdok.nl/v2beta1\nkind: WFS\nmetadata:\n name: rvo-nwbwegen-v1-0\n labels:\n dataset-owner: rvo\n dataset: nwbwegen\n service-version: v1_0\n service-type: wfs\n annotations:\n lifecycle-phase: prod\n service-bundle-id: 053b9c7e-85dc-535a-8a8c-f0d44c31511d\nspec:\n general:\n datasetOwner: rvo\n dataset: nwbwegen\n serviceVersion: v1_0\n kubernetes:\n healthCheck:\n mimetype: text/xml\n querystring: SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities\n resources:\n limits:\n ephemeralStorage: 25Mi\n requests:\n ephemeralStorage: 25Mi\n service:\n metadataIdentifier: 7c77bdc8-5011-4139-8957-d244fb9d3489\n title: NWB - Vaarwegen WFS\n abstract: Deze webfeatureservice bevat alleen de vaarwegvakken en kilometermarkeringen\n van het NWB - Vaarwegen (Nationaal Wegen Bestand).\n authority:\n name: rws\n url: https://www.rijkswaterstaat.nl\n dataEPSG: EPSG:28992\n extent: -59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961\n inspire: true\n keywords:\n - Vervoersnetwerken\n - Vaarwegen\n - Schepen\n - Scheepvaart\n - Vaarwegvakken\n - Kilometermarkering\n - HVD\n - Mobiliteit\n featureTypes:\n - abstract: Deze webfeatureservice bevat alleen de kilometermarkeringen van het\n NWB - Vaarwegen (Nationaal Wegen Bestand).\n data:\n gpkg:\n blobKey: geopackages/rvo/nwbwegen/fe2b0b0e-3c88-4f74-b31c-f5915cefe530/1/nwb_vaarwegen.gpkg\n columns:\n - fid\n - objectid\n - vwk_id\n - vwk_begdtm\n - pos_tov_as\n - gtlwaarde\n - ltrwaarde\n - afstand\n - mst_code\n geometryType: MultiPoint\n table: kmmarkeringen\n datasetMetadataIdentifier: 00d8c7c8-98ff-4b06-8f53-b44216e6e75c\n keywords:\n - Vervoersnetwerken\n - Vaarwegen\n - Schepen\n - Scheepvaart\n - Kilometermarkering\n name: kmmarkeringen\n sourceMetadataIdentifier: a757e146-09fe-4585-a236-aae0dcd6f266\n title: Kmmarkeringen\n - abstract: Deze webfeatureservice bevat vaarwegvakken van het NWB - Vaarwegen\n (Nationaal Wegen Bestand).\n data:\n gpkg:\n blobKey: geopackages/rvo/nwbwegen/fe2b0b0e-3c88-4f74-b31c-f5915cefe530/1/nwb_vaarwegen.gpkg\n columns:\n - fid\n - objectid\n - vwk_id\n - vwk_begdtm\n - vwj_id_beg\n - vwj_id_end\n - vaktype\n - vrt_code\n - vrt_naam\n - vwg_nr\n - vwg_naam\n - begkm\n - endkm\n - st_lengthshape\n geometryType: MultiLineString\n table: vaarwegvakken\n datasetMetadataIdentifier: 00d8c7c8-98ff-4b06-8f53-b44216e6e75c\n keywords:\n - Vervoersnetwerken\n - Vaarwegen\n - Schepen\n - Scheepvaart\n - Vaarwegvakken\n name: vaarwegvakken\n sourceMetadataIdentifier: a757e146-09fe-4585-a236-aae0dcd6f266\n title: Vaarwegvakken\n"
15+
expectedVolumeMountsString = "[{\"name\":\"base\",\"mountPath\":\"/srv/data\"},{\"name\":\"data\",\"mountPath\":\"/var/www\"},{\"name\":\"mapserver\",\"mountPath\":\"/srv/mapserver/config/default_mapserver.conf\",\"subPath\":\"default_mapserver.conf\"},{\"name\":\"mapserver\",\"mountPath\":\"/srv/mapserver/config/include.conf\",\"subPath\":\"include.conf\"},{\"name\":\"mapserver\",\"mountPath\":\"/srv/mapserver/config/ogc.lua\",\"subPath\":\"ogc.lua\"},{\"name\":\"mapserver\",\"mountPath\":\"/srv/mapserver/config/scraping-error.xml\",\"subPath\":\"scraping-error.xml\"}]"
16+
)
17+
18+
func TestGetVolumeMountsForDeployment(t *testing.T) {
19+
var v2wfs v2beta1.WFS
20+
err := yaml.Unmarshal([]byte(v2WfsString), &v2wfs)
21+
assert.NoError(t, err)
22+
var wfs pdoknlv3.WFS
23+
v2beta1.V3WFSHubFromV2(&v2wfs, &wfs)
24+
25+
pdoknlv3.SetHost("https://service.pdok.nl")
26+
result := GetVolumeMountsForDeployment(&wfs, "/srv")
27+
28+
var expectedVolumeMounts []v1.VolumeMount
29+
err = json.Unmarshal([]byte(expectedVolumeMountsString), &expectedVolumeMounts)
30+
assert.NoError(t, err)
31+
assert.Equal(t, expectedVolumeMounts, result)
32+
}

0 commit comments

Comments
 (0)