@@ -690,7 +690,32 @@ func (d *DryRunner) readFromCluster(
690690 return nil , errors .New ("no object templates found in policy" )
691691 }
692692
693- return resolveObjectTemplates (ctx , cfgPolicy , realClusterRec , tmplResolver )
693+ // Copy relevant objects to inputResources
694+ inputResources , err := resolveObjectTemplates (ctx , cfgPolicy , realClusterRec , tmplResolver )
695+ if err != nil {
696+ return nil , err
697+ }
698+
699+ // Copy relevant namespaces to inputResources
700+ relevantNamespaces , err := realClusterRec .SelectorReconciler .Get (
701+ cfgPolicy .Namespace , cfgPolicy .Name , cfgPolicy .Spec .NamespaceSelector )
702+ if err != nil {
703+ return nil , err
704+ }
705+
706+ for _ , ns := range relevantNamespaces {
707+ inputResources = append (inputResources , & unstructured.Unstructured {
708+ Object : map [string ]interface {}{
709+ "apiVersion" : "v1" ,
710+ "kind" : "Namespace" ,
711+ "metadata" : map [string ]interface {}{
712+ "name" : ns ,
713+ },
714+ },
715+ })
716+ }
717+
718+ return inputResources , nil
694719}
695720
696721// FIXME some clients have write access to the cluster, but we want to restrict them to read-only?
@@ -777,7 +802,7 @@ func resolveObjectTemplatesRaw(
777802 }
778803
779804 if ! templates .HasTemplate (objRawBytes , "" , true ) {
780- err := json .Unmarshal (objRawBytes , & cfgPolicy .Spec .ObjectTemplates )
805+ err := k8syaml .Unmarshal (objRawBytes , & cfgPolicy .Spec .ObjectTemplates )
781806 if err != nil {
782807 return fmt .Errorf ("failed to parse object-templates-raw: %w" , err )
783808 }
0 commit comments