@@ -3,6 +3,7 @@ package advisor
33import (
44 "encoding/json"
55 "fmt"
6+ "github.com/open-policy-agent/opa/ast"
67 "os"
78
89 "github.com/sysdiglabs/kube-psp-advisor/advisor/types"
@@ -18,6 +19,7 @@ import (
1819
1920type Advisor struct {
2021 podSecurityPolicy * v1beta1.PodSecurityPolicy
22+ OPAModulePolicy * ast.Module
2123 k8sClient * kubernetes.Clientset
2224 processor * processor.Processor
2325 report * report.Report
@@ -41,7 +43,7 @@ func NewAdvisor(kubeconfig string) (*Advisor, error) {
4143 }, nil
4244}
4345
44- func (advisor * Advisor ) Process (namespace string , excludeNamespaces []string ) error {
46+ func (advisor * Advisor ) Process (namespace string , excludeNamespaces []string , OPAformat bool , OPAdefaultRule bool ) error {
4547 advisor .processor .SetNamespace (namespace )
4648 advisor .processor .SetExcludeNamespaces (excludeNamespaces )
4749
@@ -51,7 +53,11 @@ func (advisor *Advisor) Process(namespace string, excludeNamespaces []string) er
5153 return err
5254 }
5355
54- advisor .podSecurityPolicy = advisor .processor .GeneratePSP (cssList , pssList )
56+ if OPAformat {
57+ advisor .OPAModulePolicy = advisor .processor .GenerateOPA (cssList , pssList , OPAdefaultRule )
58+ } else {
59+ advisor .podSecurityPolicy = advisor .processor .GeneratePSP (cssList , pssList )
60+ }
5561
5662 advisor .report = advisor .processor .GenerateReport (cssList , pssList )
5763
@@ -77,6 +83,15 @@ func (advisor *Advisor) PrintPodSecurityPolicy() error {
7783 return err
7884}
7985
86+ func (advisor * Advisor ) PrintOPAPolicy () string {
87+ if advisor .OPAModulePolicy != nil {
88+ err := advisor .OPAModulePolicy .String ()
89+ fmt .Printf (err )
90+ return err
91+ } else {
92+ return ""
93+ }
94+ }
8095func (advisor * Advisor ) GetPodSecurityPolicy () * v1beta1.PodSecurityPolicy {
8196 return advisor .podSecurityPolicy
8297}
0 commit comments