@@ -59,11 +59,14 @@ const (
5959)
6060
6161var (
62- AppLabelKey = "app"
63- MapserverName = "mapserver"
64- LegendGeneratorName = "legend-generator"
65- FeatureInfoGeneratorName = "featureinfo-generator"
66- OgcWebserviceProxyName = "ogc-webservice-proxy"
62+ AppLabelKey = "app"
63+ MapserverName = "mapserver"
64+ LegendGeneratorName = "legend-generator"
65+ FeatureInfoGeneratorName = "featureinfo-generator"
66+ OgcWebserviceProxyName = "ogc-webservice-proxy"
67+ MapfileGeneratorName = "mapfile-generator"
68+ CapabilitiesGeneratorName = "capabilities-generator"
69+ InitScriptsName = "init-scripts"
6770
6871 // Service ports
6972 mapserverPortName = "mapserver"
@@ -1020,106 +1023,12 @@ func updateStatus[R Reconciler](ctx context.Context, r R, obj client.Object, con
10201023 }
10211024}
10221025
1023- // TODO fix linting (cyclop,funlen)
1024- //
1025- //nolint:cyclop,funlen
10261026func createOrUpdateAllForWMSWFS [R Reconciler , O pdoknlv3.WMSWFS ](ctx context.Context , r R , obj O , ownerInfo * smoothoperatorv1.OwnerInfo ) (operationResults map [string ]controllerutil.OperationResult , err error ) {
1027- operationResults = make (map [string ]controllerutil.OperationResult )
10281027 reconcilerClient := getReconcilerClient (r )
10291028
1030- hashedConfigMapNames := types.HashedConfigMapNames {}
1031-
1032- // region ConfigMap
1033- {
1034- configMap := getBareConfigMap (obj , MapserverName )
1035- if err = mutateConfigMap (r , obj , configMap ); err != nil {
1036- return operationResults , err
1037- }
1038- operationResults [smoothoperatorutils .GetObjectFullName (reconcilerClient , configMap )], err = controllerutil .CreateOrUpdate (ctx , reconcilerClient , configMap , func () error {
1039- return mutateConfigMap (r , obj , configMap )
1040- })
1041- if err != nil {
1042- return operationResults , fmt .Errorf ("unable to create/update resource %s: %w" , smoothoperatorutils .GetObjectFullName (reconcilerClient , configMap ), err )
1043- }
1044- hashedConfigMapNames .ConfigMap = configMap .Name
1045- }
1046- // end region ConfigMap
1047-
1048- // region ConfigMap-MapfileGenerator
1049- if obj .Mapfile () == nil {
1050- configMapMfg := getBareConfigMapMapfileGenerator (obj )
1051- if err = mutateConfigMapMapfileGenerator (r , obj , configMapMfg , ownerInfo ); err != nil {
1052- return operationResults , err
1053- }
1054- operationResults [smoothoperatorutils .GetObjectFullName (reconcilerClient , configMapMfg )], err = controllerutil .CreateOrUpdate (ctx , reconcilerClient , configMapMfg , func () error {
1055- return mutateConfigMapMapfileGenerator (r , obj , configMapMfg , ownerInfo )
1056- })
1057- if err != nil {
1058- return operationResults , fmt .Errorf ("unable to create/update resource %s: %w" , smoothoperatorutils .GetObjectFullName (reconcilerClient , configMapMfg ), err )
1059- }
1060- hashedConfigMapNames .MapfileGenerator = configMapMfg .Name
1061- }
1062- // end region ConfigMap-MapfileGenerator
1063-
1064- // region ConfigMap-CapabilitiesGenerator
1065- {
1066- configMapCg := getBareConfigMapCapabilitiesGenerator (obj )
1067- if err = mutateConfigMapCapabilitiesGenerator (r , obj , configMapCg , ownerInfo ); err != nil {
1068- return operationResults , err
1069- }
1070- operationResults [smoothoperatorutils .GetObjectFullName (reconcilerClient , configMapCg )], err = controllerutil .CreateOrUpdate (ctx , reconcilerClient , configMapCg , func () error {
1071- return mutateConfigMapCapabilitiesGenerator (r , obj , configMapCg , ownerInfo )
1072- })
1073- if err != nil {
1074- return operationResults , fmt .Errorf ("unable to create/update resource %s: %w" , smoothoperatorutils .GetObjectFullName (reconcilerClient , configMapCg ), err )
1075- }
1076- hashedConfigMapNames .CapabilitiesGenerator = configMapCg .Name
1077- }
1078- // end region ConfigMap-CapabilitiesGenerator
1079-
1080- // region ConfigMap-BlobDownload
1081- if obj .Options ().PrefetchData {
1082- configMapBd := getBareConfigMapBlobDownload (obj )
1083- if err = mutateConfigMapBlobDownload (r , obj , configMapBd ); err != nil {
1084- return operationResults , err
1085- }
1086- operationResults [smoothoperatorutils .GetObjectFullName (reconcilerClient , configMapBd )], err = controllerutil .CreateOrUpdate (ctx , reconcilerClient , configMapBd , func () error {
1087- return mutateConfigMapBlobDownload (r , obj , configMapBd )
1088- })
1089- if err != nil {
1090- return operationResults , fmt .Errorf ("unable to create/update resource %s: %w" , smoothoperatorutils .GetObjectFullName (reconcilerClient , configMapBd ), err )
1091- }
1092- hashedConfigMapNames .BlobDownload = configMapBd .Name
1093- }
1094- // end region ConfigMap-BlobDownload
1095-
1096- if obj .Type () == pdoknlv3 .ServiceTypeWMS {
1097- wms , _ := any (obj ).(* pdoknlv3.WMS )
1098- wmsReconciler := (* WMSReconciler )(r )
1099-
1100- configMaps := make (map [string ]func (* WMSReconciler , * pdoknlv3.WMS , * corev1.ConfigMap ) error )
1101- configMaps [LegendGeneratorName ] = mutateConfigMapLegendGenerator
1102- configMaps [FeatureInfoGeneratorName ] = mutateConfigMapFeatureinfoGenerator
1103- configMaps [OgcWebserviceProxyName ] = mutateConfigMapOgcWebserviceProxy
1104- for cmName , mutate := range configMaps {
1105- cm , or , err := getConfigMap (ctx , wms , wmsReconciler , cmName , func (r * WMSReconciler , w * pdoknlv3.WMS , cm * corev1.ConfigMap ) error {
1106- return mutate (r , w , cm )
1107- })
1108- if or != nil {
1109- operationResults [smoothoperatorutils .GetObjectFullName (reconcilerClient , cm )] = * or
1110- }
1111- if err != nil {
1112- return operationResults , err
1113- }
1114- switch cmName {
1115- case LegendGeneratorName :
1116- hashedConfigMapNames .LegendGenerator = cm .Name
1117- case FeatureInfoGeneratorName :
1118- hashedConfigMapNames .FeatureInfoGenerator = cm .Name
1119- case OgcWebserviceProxyName :
1120- hashedConfigMapNames .OgcWebserviceProxy = cm .Name
1121- }
1122- }
1029+ hashedConfigMapNames , operationResults , err := createOrUpdateConfigMaps (ctx , r , obj , ownerInfo )
1030+ if err != nil {
1031+ return operationResults , err
11231032 }
11241033
11251034 // region Deployment
@@ -1128,12 +1037,6 @@ func createOrUpdateAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Con
11281037 operationResults [smoothoperatorutils .GetObjectFullName (reconcilerClient , deployment )], err = controllerutil .CreateOrUpdate (ctx , reconcilerClient , deployment , func () error {
11291038 return mutateDeployment (r , obj , deployment , hashedConfigMapNames )
11301039 })
1131- // if operationResults[smoothoperatorutils.GetObjectFullName(reconcilerClient, deployment)] == controllerutil.OperationResultUpdated {
1132- // deployment = getBareDeployment(obj)
1133- // smoothoperatork8s.ShowDiff(ctx, reconcilerClient, deployment, func() error {
1134- // return mutateDeployment(r, obj, deployment, hashedConfigMapNames)
1135- // })
1136- // }
11371040 if err != nil {
11381041 return operationResults , fmt .Errorf ("unable to create/update resource %s: %w" , smoothoperatorutils .GetObjectFullName (reconcilerClient , deployment ), err )
11391042 }
@@ -1203,7 +1106,66 @@ func createOrUpdateAllForWMSWFS[R Reconciler, O pdoknlv3.WMSWFS](ctx context.Con
12031106 return operationResults , nil
12041107}
12051108
1206- func getConfigMap [O pdoknlv3.WMSWFS , R Reconciler ](ctx context.Context , obj O , reconciler R , name string , mutate func (R , O , * corev1.ConfigMap ) error ) (* corev1.ConfigMap , * controllerutil.OperationResult , error ) {
1109+ func createOrUpdateConfigMaps [R Reconciler , O pdoknlv3.WMSWFS ](ctx context.Context , r R , obj O , ownerInfo * smoothoperatorv1.OwnerInfo ) (hashedConfigMapNames types.HashedConfigMapNames , operationResults map [string ]controllerutil.OperationResult , err error ) {
1110+ operationResults , configMaps := make (map [string ]controllerutil.OperationResult ), make (map [string ]func (R , O , * corev1.ConfigMap ) error )
1111+ configMaps [MapserverName ] = mutateConfigMap
1112+ if obj .Mapfile () == nil {
1113+ configMaps [MapfileGeneratorName ] = func (r R , o O , cm * corev1.ConfigMap ) error {
1114+ return mutateConfigMapMapfileGenerator (r , o , cm , ownerInfo )
1115+ }
1116+ }
1117+ configMaps [CapabilitiesGeneratorName ] = func (r R , o O , cm * corev1.ConfigMap ) error {
1118+ return mutateConfigMapCapabilitiesGenerator (r , o , cm , ownerInfo )
1119+ }
1120+ if obj .Options ().PrefetchData {
1121+ configMaps [InitScriptsName ] = mutateConfigMapBlobDownload
1122+ }
1123+ if obj .Type () == pdoknlv3 .ServiceTypeWMS {
1124+ wms , _ := any (obj ).(* pdoknlv3.WMS )
1125+ wmsReconciler := (* WMSReconciler )(r )
1126+
1127+ configMaps [LegendGeneratorName ] = func (_ R , _ O , cm * corev1.ConfigMap ) error {
1128+ return mutateConfigMapLegendGenerator (wmsReconciler , wms , cm )
1129+ }
1130+ configMaps [FeatureInfoGeneratorName ] = func (_ R , _ O , cm * corev1.ConfigMap ) error {
1131+ return mutateConfigMapFeatureinfoGenerator (wmsReconciler , wms , cm )
1132+ }
1133+ configMaps [OgcWebserviceProxyName ] = func (_ R , _ O , cm * corev1.ConfigMap ) error {
1134+ return mutateConfigMapOgcWebserviceProxy (wmsReconciler , wms , cm )
1135+ }
1136+ }
1137+ for cmName , mutate := range configMaps {
1138+ cm , or , err := createOrUpdateConfigMap (ctx , obj , r , cmName , func (r R , o O , cm * corev1.ConfigMap ) error {
1139+ return mutate (r , o , cm )
1140+ })
1141+ if or != nil {
1142+ operationResults [smoothoperatorutils .GetObjectFullName (getReconcilerClient (r ), cm )] = * or
1143+ }
1144+ if err != nil {
1145+ return hashedConfigMapNames , operationResults , err
1146+ }
1147+ switch cmName {
1148+ case MapserverName :
1149+ hashedConfigMapNames .ConfigMap = cm .Name
1150+ case MapfileGeneratorName :
1151+ hashedConfigMapNames .MapfileGenerator = cm .Name
1152+ case CapabilitiesGeneratorName :
1153+ hashedConfigMapNames .CapabilitiesGenerator = cm .Name
1154+ case InitScriptsName :
1155+ hashedConfigMapNames .BlobDownload = cm .Name
1156+ case LegendGeneratorName :
1157+ hashedConfigMapNames .LegendGenerator = cm .Name
1158+ case FeatureInfoGeneratorName :
1159+ hashedConfigMapNames .FeatureInfoGenerator = cm .Name
1160+ case OgcWebserviceProxyName :
1161+ hashedConfigMapNames .OgcWebserviceProxy = cm .Name
1162+ }
1163+ }
1164+
1165+ return hashedConfigMapNames , operationResults , err
1166+ }
1167+
1168+ func createOrUpdateConfigMap [O pdoknlv3.WMSWFS , R Reconciler ](ctx context.Context , obj O , reconciler R , name string , mutate func (R , O , * corev1.ConfigMap ) error ) (* corev1.ConfigMap , * controllerutil.OperationResult , error ) {
12071169 reconcilerClient := getReconcilerClient (reconciler )
12081170 cm := getBareConfigMap (obj , name )
12091171 if err := mutate (reconciler , obj , cm ); err != nil {
0 commit comments