@@ -185,10 +185,45 @@ func deployContent(ctx context.Context, deployingToMgmtCluster bool, destConfig
185185 Name : referencedObject .GetName (),
186186 }
187187
188+ err = validateUnstructred (ctx , deployingToMgmtCluster , destConfig , destClient , referencedUnstructured , ref ,
189+ configv1alpha1 .FeatureResources , clusterSummary , logger )
190+ if err != nil {
191+ return nil , err
192+ }
193+
188194 return deployUnstructured (ctx , deployingToMgmtCluster , destConfig , destClient , referencedUnstructured , ref ,
189195 configv1alpha1 .FeatureResources , clusterSummary , logger )
190196}
191197
198+ func validateUnstructred (ctx context.Context , deployingToMgmtCluster bool , destConfig * rest.Config ,
199+ destClient client.Client , referencedUnstructured []* unstructured.Unstructured , referencedObject * corev1.ObjectReference ,
200+ featureID configv1alpha1.FeatureID , clusterSummary * configv1alpha1.ClusterSummary , logger logr.Logger ,
201+ ) error {
202+
203+ for i := range referencedUnstructured {
204+ policy := referencedUnstructured [i ]
205+
206+ logger .V (logs .LogDebug ).Info (fmt .Sprintf ("validating resource %s %s/%s" ,
207+ policy .GetKind (), policy .GetNamespace (), policy .GetName ()))
208+
209+ // OpenAPI validations are enforced when posting to managed clusters
210+ if ! deployingToMgmtCluster {
211+ var openAPIValidations map [string ][]byte
212+ openAPIValidations , err := getOpenAPIValidations (clusterSummary .Spec .ClusterNamespace , clusterSummary .Spec .ClusterName ,
213+ & clusterSummary .Spec .ClusterType , logger )
214+ if err != nil {
215+ return err
216+ }
217+ err = runOpenAPIValidations (ctx , openAPIValidations , policy , logger )
218+ if err != nil {
219+ return err
220+ }
221+ }
222+ }
223+
224+ return nil
225+ }
226+
192227// deployUnstructured deploys referencedUnstructured objects.
193228// Returns an error if one occurred. Otherwise it returns a slice containing the name of
194229// the policies deployed in the form of kind.group:namespace:name for namespaced policies
@@ -212,20 +247,6 @@ func deployUnstructured(ctx context.Context, deployingToMgmtCluster bool, destCo
212247
213248 resource , policyHash := getResource (policy , referencedObject , featureID , logger )
214249
215- // OpenAPI validations are enforced when posting to managed clusters
216- if ! deployingToMgmtCluster {
217- var openAPIValidations map [string ][]byte
218- openAPIValidations , err = getOpenAPIValidations (clusterSummary .Spec .ClusterNamespace , clusterSummary .Spec .ClusterName ,
219- & clusterSummary .Spec .ClusterType , logger )
220- if err != nil {
221- return nil , err
222- }
223- err = runOpenAPIValidations (ctx , openAPIValidations , policy , logger )
224- if err != nil {
225- return nil , err
226- }
227- }
228-
229250 // If policy is namespaced, create namespace if not already existing
230251 err = createNamespace (ctx , destClient , clusterSummary , policy .GetNamespace ())
231252 if err != nil {
0 commit comments