github.com/k8snetworkplumbingwg/sriov-network-operator@v1.2.1-0.20240408194816-2d2e5a45d453/test/util/k8sreporter/reporter.go (about) 1 package k8sreporter 2 3 import ( 4 "errors" 5 "os" 6 "strings" 7 8 kniK8sReporter "github.com/openshift-kni/k8sreporter" 9 "k8s.io/apimachinery/pkg/runtime" 10 11 sriovv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" 12 "github.com/k8snetworkplumbingwg/sriov-network-operator/test/util/namespaces" 13 ) 14 15 func New(reportPath string) (*kniK8sReporter.KubernetesReporter, error) { 16 addToScheme := func(s *runtime.Scheme) error { 17 err := sriovv1.AddToScheme(s) 18 if err != nil { 19 return err 20 } 21 return nil 22 } 23 24 operatorNamespace := os.Getenv("OPERATOR_NAMESPACE") 25 if operatorNamespace == "" { 26 operatorNamespace = "openshift-sriov-network-operator" 27 } 28 29 multusNamespace := os.Getenv("MULTUS_NAMESPACE") 30 31 dumpNamespace := func(ns string) bool { 32 switch { 33 case ns == namespaces.Test: 34 return true 35 case ns == operatorNamespace: 36 return true 37 case strings.HasPrefix(ns, "sriov-"): 38 return true 39 case multusNamespace != "" && ns == multusNamespace: 40 return true 41 } 42 return false 43 } 44 45 crds := []kniK8sReporter.CRData{ 46 {Cr: &sriovv1.SriovNetworkNodeStateList{}}, 47 {Cr: &sriovv1.SriovNetworkNodePolicyList{}}, 48 {Cr: &sriovv1.SriovNetworkList{}}, 49 {Cr: &sriovv1.SriovOperatorConfigList{}}, 50 } 51 52 err := os.Mkdir(reportPath, 0755) 53 if err != nil && !errors.Is(err, os.ErrExist) { 54 return nil, err 55 } 56 57 reporter, err := kniK8sReporter.New("", addToScheme, dumpNamespace, reportPath, crds...) 58 if err != nil { 59 return nil, err 60 } 61 return reporter, nil 62 }