Skip to content

Commit fd8dc74

Browse files
authored
Merge pull request #249 from gianlucam76/all
Add-on constraints: all or nothing
2 parents 0ad142c + 02db3a8 commit fd8dc74

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

controllers/handlers_utils.go

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {

controllers/openapi_validation.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@ func getOpenAPIValidations(clusterNamespace, clusterName string,
6363
func runOpenAPIValidations(ctx context.Context, specs map[string][]byte,
6464
resource *unstructured.Unstructured, logger logr.Logger) error {
6565

66-
logger.V(logs.LogDebug).Info("openAPIValidations")
66+
logger = logger.WithValues("resource", fmt.Sprintf("%s:%s/%s", resource.GroupVersionKind().Kind,
67+
resource.GetNamespace(), resource.GetName()))
68+
69+
logger.V(logs.LogVerbose).Info("openAPIValidations")
6770

6871
for key := range specs {
6972
if err := openAPIValidation(ctx, specs[key], resource, logger); err != nil {

controllers/template_instantiation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func instantiateTemplateValues(ctx context.Context, config *rest.Config, c clien
185185
}
186186
instantiatedValues := buffer.String()
187187

188-
logger.V(logs.LogVerbose).Info("Values %q", instantiatedValues)
188+
logger.V(logs.LogDebug).Info(fmt.Sprintf("Values %q", instantiatedValues))
189189
return instantiatedValues, nil
190190
}
191191

0 commit comments

Comments
 (0)