1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-31 03:45:17 +00:00

chore: fix golangcilint timeout (#4388)

* chore: fix golangcilint timeout

Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>

* fix commit sha

Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>

* add .gitattributes

Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>

Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>
This commit is contained in:
Charles-Edouard Brétéché 2022-08-24 15:08:24 +02:00 committed by GitHub
parent 0cc4d9b1f0
commit 144985ee5a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
46 changed files with 123 additions and 136 deletions

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
*.go text eol=lf

View file

@ -19,27 +19,21 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # pin@v2.4.0 uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # pin@v3
# see https://michaelheap.com/ensure-github-actions-pinned-sha/ # see https://michaelheap.com/ensure-github-actions-pinned-sha/
- name: Ensure SHA pinned actions - name: Ensure SHA pinned actions
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@6ca5574367befbc9efdb2fa25978084159c5902d # pin@v1.3.0 uses: zgosalvez/github-actions-ensure-sha-pinned-actions@6ca5574367befbc9efdb2fa25978084159c5902d # pin@v1.3.0
- name: Unshallow - name: Setup go
run: git fetch --prune --unshallow uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f # pin@v3
- name: Set up Go
uses: actions/setup-go@424fc82d43fa5a37540bae62709ddcc23d9520d4 # pin@v2.1.5
with: with:
go-version: 1.17 go-version: 1.17
- name: Cache Go modules - name: golangci-lint
uses: actions/cache@d9747005de0f7240e5d35a68dca96b3f41b8b340 # pin@v1.2.0 uses: golangci/golangci-lint-action@537aa1903e5d359d0b27dbc19ddd22c5087f3fbc # pin@v3
with: with:
path: ~/go/pkg/mod version: v1.48
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: gofmt check - name: gofmt check
run: | run: |
@ -61,11 +55,6 @@ jobs:
exit 1 exit 1
fi fi
- name: golangci-lint
uses: reviewdog/action-golangci-lint@02bcf8c1a9febe8620f1ca523b18dd64f82296db # pin@v1.25.0
with:
fail_on_error: true
- name: Checking unused pkgs using go mod tidy - name: Checking unused pkgs using go mod tidy
run: | run: |
make unused-package-check make unused-package-check

View file

@ -21,7 +21,6 @@ linters:
- gosimple - gosimple
- govet - govet
- grouper - grouper
- ifshort
- importas - importas
- ineffassign - ineffassign
- makezero - makezero
@ -43,7 +42,7 @@ linters:
- whitespace - whitespace
run: run:
timeout: 5m timeout: 10m
skip-files: skip-files:
- ".+_test.go" - ".+_test.go"
- ".+_test_.+.go" - ".+_test_.+.go"

View file

@ -15,8 +15,8 @@ limitations under the License.
*/ */
// Package v1beta1 contains API Schema definitions for the kyverno.io v1beta1 API group // Package v1beta1 contains API Schema definitions for the kyverno.io v1beta1 API group
//+kubebuilder:object:generate=true // +kubebuilder:object:generate=true
//+groupName=kyverno.io // +groupName=kyverno.io
package v1beta1 package v1beta1
import ( import (

View file

@ -557,8 +557,8 @@ func buildPolicyResults(engineResponses []*response.EngineResponse, testResults
if test.Resources != nil { if test.Resources != nil {
if test.Policy == policyName { if test.Policy == policyName {
// results[].namespace value implict set same as metadata.namespace until and unless // results[].namespace value implicit set same as metadata.namespace until and unless
// user provides explict values for results[].namespace in test yaml file. // user provides explicit values for results[].namespace in test yaml file.
if test.Namespace == "" { if test.Namespace == "" {
test.Namespace = resourceNamespace test.Namespace = resourceNamespace
testResults[i].Namespace = resourceNamespace testResults[i].Namespace = resourceNamespace
@ -903,7 +903,7 @@ func applyPoliciesFromPath(fs billy.Filesystem, policyBytes []byte, isGit bool,
} }
} }
var ruleToCloneSourceResource = map[string]string{} ruleToCloneSourceResource := map[string]string{}
for _, p := range filteredPolicies { for _, p := range filteredPolicies {
filteredRules := []kyvernov1.Rule{} filteredRules := []kyvernov1.Rule{}
@ -1036,7 +1036,7 @@ func printTestResult(resps map[string]policyreportv1alpha2.PolicyReportResult, t
boldYellow := color.New(color.FgYellow).Add(color.Bold) boldYellow := color.New(color.FgYellow).Add(color.Bold)
boldFgCyan := color.New(color.FgCyan).Add(color.Bold) boldFgCyan := color.New(color.FgCyan).Add(color.Bold)
countDeprecatedResource := 0 var countDeprecatedResource int
for i, v := range testResults { for i, v := range testResults {
res := new(Table) res := new(Table)
res.ID = i + 1 res.ID = i + 1
@ -1046,7 +1046,6 @@ func printTestResult(resps map[string]policyreportv1alpha2.PolicyReportResult, t
} else { } else {
res.Policy = v.Policy res.Policy = v.Policy
res.Rule = v.Rule res.Rule = v.Rule
} }
if v.Resources != nil { if v.Resources != nil {
@ -1055,7 +1054,6 @@ func printTestResult(resps map[string]policyreportv1alpha2.PolicyReportResult, t
res.Resource = boldFgCyan.Sprintf(v.Namespace) + "/" + boldFgCyan.Sprintf(v.Kind) + "/" + boldFgCyan.Sprintf(resource) res.Resource = boldFgCyan.Sprintf(v.Namespace) + "/" + boldFgCyan.Sprintf(v.Kind) + "/" + boldFgCyan.Sprintf(resource)
} else { } else {
res.Resource = v.Namespace + "/" + v.Kind + "/" + resource res.Resource = v.Namespace + "/" + v.Kind + "/" + resource
} }
var ruleNameInResultKey string var ruleNameInResultKey string
if v.AutoGeneratedRule != "" { if v.AutoGeneratedRule != "" {
@ -1078,7 +1076,6 @@ func printTestResult(resps map[string]policyreportv1alpha2.PolicyReportResult, t
} else { } else {
res.Policy = ns + "/" + v.Policy res.Policy = ns + "/" + v.Policy
res.Resource = v.Namespace + "/" + v.Kind + "/" + resource res.Resource = v.Namespace + "/" + v.Kind + "/" + resource
} }
} else if v.Namespace != "" { } else if v.Namespace != "" {
if !removeColor { if !removeColor {
@ -1173,7 +1170,6 @@ func printTestResult(resps map[string]policyreportv1alpha2.PolicyReportResult, t
res.Resource = boldFgCyan.Sprintf(v.Namespace) + "/" + boldFgCyan.Sprintf(v.Kind) + "/" + boldFgCyan.Sprintf(v.Resource) res.Resource = boldFgCyan.Sprintf(v.Namespace) + "/" + boldFgCyan.Sprintf(v.Kind) + "/" + boldFgCyan.Sprintf(v.Resource)
} else { } else {
res.Resource = v.Namespace + "/" + v.Kind + "/" + v.Resource res.Resource = v.Namespace + "/" + v.Kind + "/" + v.Resource
} }
resultKey = fmt.Sprintf("%s-%s-%s-%s-%s", v.Policy, ruleNameInResultKey, v.Namespace, v.Kind, v.Resource) resultKey = fmt.Sprintf("%s-%s-%s-%s-%s", v.Policy, ruleNameInResultKey, v.Namespace, v.Kind, v.Resource)
} }

View file

@ -297,7 +297,6 @@ func GetVariable(variablesString, valuesFile string, fs billy.Filesystem, isGit
values.GlobalValues = make(map[string]string) values.GlobalValues = make(map[string]string)
values.GlobalValues["request.operation"] = "CREATE" values.GlobalValues["request.operation"] = "CREATE"
log.Log.V(3).Info("Defaulting request.operation to CREATE") log.Log.V(3).Info("Defaulting request.operation to CREATE")
} else { } else {
if val, ok := values.GlobalValues["request.operation"]; ok { if val, ok := values.GlobalValues["request.operation"]; ok {
if val == "" { if val == "" {
@ -1003,7 +1002,7 @@ func GetKindsFromPolicy(policy kyvernov1.PolicyInterface) map[string]struct{} {
return kindOnwhichPolicyIsApplied return kindOnwhichPolicyIsApplied
} }
//GetResourceFromPath - get patchedResource and generatedResource from given path // GetResourceFromPath - get patchedResource and generatedResource from given path
func GetResourceFromPath(fs billy.Filesystem, path string, isGit bool, policyResourcePath string, resourceType string) (unstructured.Unstructured, error) { func GetResourceFromPath(fs billy.Filesystem, path string, isGit bool, policyResourcePath string, resourceType string) (unstructured.Unstructured, error) {
var resourceBytes []byte var resourceBytes []byte
var resource unstructured.Unstructured var resource unstructured.Unstructured
@ -1049,7 +1048,7 @@ func initializeMockController(objects []runtime.Object) (*generate.GenerateContr
// handleGeneratePolicy returns a new RuleResponse with the Kyverno generated resource configuration by applying the generate rule. // handleGeneratePolicy returns a new RuleResponse with the Kyverno generated resource configuration by applying the generate rule.
func handleGeneratePolicy(generateResponse *response.EngineResponse, policyContext engine.PolicyContext, ruleToCloneSourceResource map[string]string) ([]response.RuleResponse, error) { func handleGeneratePolicy(generateResponse *response.EngineResponse, policyContext engine.PolicyContext, ruleToCloneSourceResource map[string]string) ([]response.RuleResponse, error) {
objects := []runtime.Object{&policyContext.NewResource} objects := []runtime.Object{&policyContext.NewResource}
var resources = []*unstructured.Unstructured{} resources := []*unstructured.Unstructured{}
for _, rule := range generateResponse.PolicyResponse.Rules { for _, rule := range generateResponse.PolicyResponse.Rules {
if path, ok := ruleToCloneSourceResource[rule.Name]; ok { if path, ok := ruleToCloneSourceResource[rule.Name]; ok {
resourceBytes, err := getFileBytes(path) resourceBytes, err := getFileBytes(path)

View file

@ -15,6 +15,8 @@ import (
"github.com/kyverno/kyverno/pkg/dclient" "github.com/kyverno/kyverno/pkg/dclient"
engineutils "github.com/kyverno/kyverno/pkg/engine/utils" engineutils "github.com/kyverno/kyverno/pkg/engine/utils"
yamlutils "github.com/kyverno/kyverno/pkg/utils/yaml" yamlutils "github.com/kyverno/kyverno/pkg/utils/yaml"
"golang.org/x/text/cases"
"golang.org/x/text/language"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/kubernetes/scheme"
@ -293,9 +295,9 @@ func GetKindsFromRule(rule kyvernov1.Rule) map[string]bool {
for _, kind := range rule.MatchResources.Kinds { for _, kind := range rule.MatchResources.Kinds {
if strings.Contains(kind, "/") { if strings.Contains(kind, "/") {
lastElement := kind[strings.LastIndex(kind, "/")+1:] lastElement := kind[strings.LastIndex(kind, "/")+1:]
resourceTypesMap[strings.Title(lastElement)] = true resourceTypesMap[cases.Title(language.Und, cases.NoLower).String(lastElement)] = true
} }
resourceTypesMap[strings.Title(kind)] = true resourceTypesMap[cases.Title(language.Und, cases.NoLower).String(kind)] = true
} }
if rule.MatchResources.Any != nil { if rule.MatchResources.Any != nil {
@ -303,7 +305,7 @@ func GetKindsFromRule(rule kyvernov1.Rule) map[string]bool {
for _, kind := range resFilter.ResourceDescription.Kinds { for _, kind := range resFilter.ResourceDescription.Kinds {
if strings.Contains(kind, "/") { if strings.Contains(kind, "/") {
lastElement := kind[strings.LastIndex(kind, "/")+1:] lastElement := kind[strings.LastIndex(kind, "/")+1:]
resourceTypesMap[strings.Title(lastElement)] = true resourceTypesMap[cases.Title(language.Und, cases.NoLower).String(lastElement)] = true
} }
resourceTypesMap[kind] = true resourceTypesMap[kind] = true
} }
@ -315,9 +317,9 @@ func GetKindsFromRule(rule kyvernov1.Rule) map[string]bool {
for _, kind := range resFilter.ResourceDescription.Kinds { for _, kind := range resFilter.ResourceDescription.Kinds {
if strings.Contains(kind, "/") { if strings.Contains(kind, "/") {
lastElement := kind[strings.LastIndex(kind, "/")+1:] lastElement := kind[strings.LastIndex(kind, "/")+1:]
resourceTypesMap[strings.Title(lastElement)] = true resourceTypesMap[cases.Title(language.Und, cases.NoLower).String(lastElement)] = true
} }
resourceTypesMap[strings.Title(kind)] = true resourceTypesMap[cases.Title(language.Und, cases.NoLower).String(kind)] = true
} }
} }
} }

View file

@ -11,8 +11,6 @@ import (
"strings" "strings"
"time" "time"
_ "go.uber.org/automaxprocs" // #nosec
"github.com/kyverno/kyverno/pkg/background" "github.com/kyverno/kyverno/pkg/background"
generatecleanup "github.com/kyverno/kyverno/pkg/background/generate/cleanup" generatecleanup "github.com/kyverno/kyverno/pkg/background/generate/cleanup"
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned" kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
@ -43,6 +41,7 @@ import (
webhookspolicy "github.com/kyverno/kyverno/pkg/webhooks/policy" webhookspolicy "github.com/kyverno/kyverno/pkg/webhooks/policy"
webhooksresource "github.com/kyverno/kyverno/pkg/webhooks/resource" webhooksresource "github.com/kyverno/kyverno/pkg/webhooks/resource"
webhookgenerate "github.com/kyverno/kyverno/pkg/webhooks/updaterequest" webhookgenerate "github.com/kyverno/kyverno/pkg/webhooks/updaterequest"
_ "go.uber.org/automaxprocs" // #nosec
kubeinformers "k8s.io/client-go/informers" kubeinformers "k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
@ -307,7 +306,6 @@ func main() {
if err := http.ListenAndServe(metricsAddr, metricsServerMux); err != nil { if err := http.ListenAndServe(metricsAddr, metricsServerMux); err != nil {
setupLog.Error(err, "failed to enable metrics", "address", metricsAddr) setupLog.Error(err, "failed to enable metrics", "address", metricsAddr)
} }
}() }()
} }

View file

@ -66,6 +66,7 @@ func stripCronJob(controllers string) string {
// - mixed kinds (Pod + pod controller) is defined // - mixed kinds (Pod + pod controller) is defined
// - Pod and PodControllers are not defined // - Pod and PodControllers are not defined
// - mutate.Patches/mutate.PatchesJSON6902/validate.deny/generate rule is defined // - mutate.Patches/mutate.PatchesJSON6902/validate.deny/generate rule is defined
//
// - otherwise it returns all pod controllers // - otherwise it returns all pod controllers
func CanAutoGen(spec *kyvernov1.Spec) (applyAutoGen bool, controllers string) { func CanAutoGen(spec *kyvernov1.Spec) (applyAutoGen bool, controllers string) {
needed := false needed := false

View file

@ -660,6 +660,7 @@ func (c *GenerateController) GetUnstrResource(genResourceSpec kyvernov1.Resource
} }
return resource, nil return resource, nil
} }
func deleteGeneratedResources(log logr.Logger, client dclient.Interface, ur kyvernov1beta1.UpdateRequest) error { func deleteGeneratedResources(log logr.Logger, client dclient.Interface, ur kyvernov1beta1.UpdateRequest) error {
for _, genResource := range ur.Status.GeneratedResources { for _, genResource := range ur.Status.GeneratedResources {
err := client.DeleteResource("", genResource.Kind, genResource.Namespace, genResource.Name, false) err := client.DeleteResource("", genResource.Kind, genResource.Namespace, genResource.Name, false)

View file

@ -2,5 +2,7 @@ package config
import "sigs.k8s.io/controller-runtime/pkg/log" import "sigs.k8s.io/controller-runtime/pkg/log"
var controllerName = "config-controller" var (
var logger = log.Log.WithName(controllerName) controllerName = "config-controller"
logger = log.Log.WithName(controllerName)
)

View file

@ -53,8 +53,7 @@ type Response struct {
Statements []map[string]interface{} Statements []map[string]interface{}
} }
type CosignError struct { type CosignError struct{}
}
func Verify(opts Options) (*Response, error) { func Verify(opts Options) (*Response, error) {
if opts.FetchAttestations { if opts.FetchAttestations {
@ -159,7 +158,7 @@ func buildCosignOptions(opts Options) (*cosign.CheckOpts, error) {
// load cert and optionally a cert chain as a verifier // load cert and optionally a cert chain as a verifier
cert, err := loadCert([]byte(opts.Cert)) cert, err := loadCert([]byte(opts.Cert))
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "failed to load certificate from %s", string(opts.Cert)) return nil, errors.Wrapf(err, "failed to load certificate from %s", opts.Cert)
} }
if opts.CertChain == "" { if opts.CertChain == "" {

View file

@ -62,7 +62,6 @@ func (c serverPreferredResources) Poll(resync time.Duration, stopCh <-chan struc
// OpenAPISchema returns the API server OpenAPI schema document // OpenAPISchema returns the API server OpenAPI schema document
func (c serverPreferredResources) OpenAPISchema() (*openapiv2.Document, error) { func (c serverPreferredResources) OpenAPISchema() (*openapiv2.Document, error) {
return c.cachedClient.OpenAPISchema() return c.cachedClient.OpenAPISchema()
} }
// GetGVRFromKind get the Group Version Resource from kind // GetGVRFromKind get the Group Version Resource from kind

View file

@ -92,6 +92,7 @@ func (c *fakeDiscoveryClient) OpenAPISchema() (*openapiv2.Document, error) {
func (c *fakeDiscoveryClient) DiscoveryCache() discovery.CachedDiscoveryInterface { func (c *fakeDiscoveryClient) DiscoveryCache() discovery.CachedDiscoveryInterface {
return nil return nil
} }
func (c *fakeDiscoveryClient) DiscoveryInterface() discovery.DiscoveryInterface { func (c *fakeDiscoveryClient) DiscoveryInterface() discovery.DiscoveryInterface {
return nil return nil
} }

View file

@ -14,6 +14,7 @@ import (
// ApplyBackgroundChecks checks for validity of generate and mutateExisting rules on the resource // ApplyBackgroundChecks checks for validity of generate and mutateExisting rules on the resource
// 1. validate variables to be substitute in the general ruleInfo (match,exclude,condition) // 1. validate variables to be substitute in the general ruleInfo (match,exclude,condition)
// - the caller has to check the ruleResponse to determine whether the path exist // - the caller has to check the ruleResponse to determine whether the path exist
//
// 2. returns the list of rules that are applicable on this policy and resource, if 1 succeed // 2. returns the list of rules that are applicable on this policy and resource, if 1 succeed
func ApplyBackgroundChecks(policyContext *PolicyContext) (resp *response.EngineResponse) { func ApplyBackgroundChecks(policyContext *PolicyContext) (resp *response.EngineResponse) {
policyStartTime := time.Now() policyStartTime := time.Now()

View file

@ -197,7 +197,6 @@ func (iv *imageVerifier) verify(imageVerify kyvernov1.ImageVerification, images
ruleResp.Patches = append(ruleResp.Patches, patch) ruleResp.Patches = append(ruleResp.Patches, patch)
imageInfo.Digest = retrievedDigest imageInfo.Digest = retrievedDigest
image = imageInfo.String() image = imageInfo.String()
digest = retrievedDigest
} }
} }
@ -307,8 +306,8 @@ func (iv *imageVerifier) verifyImage(imageVerify kyvernov1.ImageVerification, im
} }
func (iv *imageVerifier) verifyAttestorSet(attestorSet kyvernov1.AttestorSet, imageVerify kyvernov1.ImageVerification, func (iv *imageVerifier) verifyAttestorSet(attestorSet kyvernov1.AttestorSet, imageVerify kyvernov1.ImageVerification,
imageInfo apiutils.ImageInfo, path string) (*cosign.Response, error) { imageInfo apiutils.ImageInfo, path string,
) (*cosign.Response, error) {
var errorList []error var errorList []error
verifiedCount := 0 verifiedCount := 0
attestorSet = expandStaticKeys(attestorSet) attestorSet = expandStaticKeys(attestorSet)
@ -530,8 +529,8 @@ func evaluateConditions(
conditions []kyvernov1.AnyAllConditions, conditions []kyvernov1.AnyAllConditions,
ctx context.Interface, ctx context.Interface,
s map[string]interface{}, s map[string]interface{},
log logr.Logger) (bool, error) { log logr.Logger,
) (bool, error) {
predicate, ok := s["predicate"].(map[string]interface{}) predicate, ok := s["predicate"].(map[string]interface{})
if !ok { if !ok {
return false, fmt.Errorf("failed to extract predicate from statement: %v", s) return false, fmt.Errorf("failed to extract predicate from statement: %v", s)

View file

@ -296,7 +296,7 @@ func hasAnchor(key string) bool {
} }
func hasAnchors(pattern *yaml.RNode, isAnchor func(key string) bool) bool { func hasAnchors(pattern *yaml.RNode, isAnchor func(key string) bool) bool {
ynode := pattern.YNode() // nolint:ifshort ynode := pattern.YNode() //nolint:ifshort
if ynode.Kind == yaml.MappingNode { if ynode.Kind == yaml.MappingNode {
fields, err := pattern.Fields() fields, err := pattern.Fields()
if err != nil { if err != nil {

View file

@ -125,14 +125,18 @@ func checkSelector(labelSelector *metav1.LabelSelector, resourceLabels map[strin
// doesResourceMatchConditionBlock filters the resource with defined conditions // doesResourceMatchConditionBlock filters the resource with defined conditions
// for a match / exclude block, it has the following attributes: // for a match / exclude block, it has the following attributes:
// ResourceDescription: // ResourceDescription:
//
// Kinds []string // Kinds []string
// Name string // Name string
// Namespaces []string // Namespaces []string
// Selector // Selector
//
// UserInfo: // UserInfo:
//
// Roles []string // Roles []string
// ClusterRoles []string // ClusterRoles []string
// Subjects []rbacv1.Subject // Subjects []rbacv1.Subject
//
// To filter out the targeted resources with ResourceDescription, the check // To filter out the targeted resources with ResourceDescription, the check
// should be: AND across attributes but an OR inside attributes that of type list // should be: AND across attributes but an OR inside attributes that of type list
// To filter out the targeted resources with UserInfo, the check // To filter out the targeted resources with UserInfo, the check

View file

@ -7,7 +7,7 @@ import (
"github.com/kyverno/kyverno/pkg/engine/context" "github.com/kyverno/kyverno/pkg/engine/context"
) )
//NewNotInHandler returns handler to manage NotIn operations // NewNotInHandler returns handler to manage NotIn operations
// //
// Deprecated: Use `NewAllNotInHandler` or `NewAnyNotInHandler` instead // Deprecated: Use `NewAllNotInHandler` or `NewAnyNotInHandler` instead
func NewNotInHandler(log logr.Logger, ctx context.EvalInterface) OperatorHandler { func NewNotInHandler(log logr.Logger, ctx context.EvalInterface) OperatorHandler {

View file

@ -46,7 +46,7 @@ type Interface interface {
Add(infoList ...Info) Add(infoList ...Info)
} }
//NewEventGenerator to generate a new event controller // NewEventGenerator to generate a new event controller
func NewEventGenerator(client dclient.Interface, cpInformer kyvernov1informers.ClusterPolicyInformer, pInformer kyvernov1informers.PolicyInformer, maxQueuedEvents int, log logr.Logger) *Generator { func NewEventGenerator(client dclient.Interface, cpInformer kyvernov1informers.ClusterPolicyInformer, pInformer kyvernov1informers.PolicyInformer, maxQueuedEvents int, log logr.Logger) *Generator {
gen := Generator{ gen := Generator{
client: client, client: client,

View file

@ -4,9 +4,7 @@ func NewFake() Interface {
return &fakeEventGenerator{} return &fakeEventGenerator{}
} }
type fakeEventGenerator struct { type fakeEventGenerator struct{}
}
func (f *fakeEventGenerator) Add(infoList ...Info) { func (f *fakeEventGenerator) Add(infoList ...Info) {
} }

View file

@ -17,8 +17,8 @@ func InitMetrics(
metricsConfigData *config.MetricsConfigData, metricsConfigData *config.MetricsConfigData,
transportCreds string, transportCreds string,
kubeClient kubernetes.Interface, kubeClient kubernetes.Interface,
log logr.Logger) (*MetricsConfig, *http.ServeMux, *controller.Controller, error) { log logr.Logger,
) (*MetricsConfig, *http.ServeMux, *controller.Controller, error) {
var metricsConfig *MetricsConfig var metricsConfig *MetricsConfig
var err error var err error
var metricsServerMux *http.ServeMux var metricsServerMux *http.ServeMux

View file

@ -222,7 +222,8 @@ func NewPrometheusConfig(metricsConfigData *kconfig.MetricsConfigData,
func (m *MetricsConfig) RecordPolicyResults(policyValidationMode PolicyValidationMode, policyType PolicyType, policyBackgroundMode PolicyBackgroundMode, policyNamespace string, policyName string, func (m *MetricsConfig) RecordPolicyResults(policyValidationMode PolicyValidationMode, policyType PolicyType, policyBackgroundMode PolicyBackgroundMode, policyNamespace string, policyName string,
resourceKind string, resourceNamespace string, resourceRequestOperation ResourceRequestOperation, ruleName string, ruleResult RuleResult, ruleType RuleType, resourceKind string, resourceNamespace string, resourceRequestOperation ResourceRequestOperation, ruleName string, ruleResult RuleResult, ruleType RuleType,
ruleExecutionCause RuleExecutionCause) { ruleExecutionCause RuleExecutionCause,
) {
ctx := context.Background() ctx := context.Background()
commonLabels := []attribute.KeyValue{ commonLabels := []attribute.KeyValue{
@ -259,7 +260,8 @@ func (m *MetricsConfig) RecordPolicyChanges(policyValidationMode PolicyValidatio
} }
func (m *MetricsConfig) RecordPolicyRuleInfo(policyValidationMode PolicyValidationMode, policyType PolicyType, policyBackgroundMode PolicyBackgroundMode, policyNamespace string, policyName string, func (m *MetricsConfig) RecordPolicyRuleInfo(policyValidationMode PolicyValidationMode, policyType PolicyType, policyBackgroundMode PolicyBackgroundMode, policyNamespace string, policyName string,
ruleName string, ruleType RuleType, status string, metricValue float64) { ruleName string, ruleType RuleType, status string, metricValue float64,
) {
ctx := context.Background() ctx := context.Background()
commonLabels := []attribute.KeyValue{ commonLabels := []attribute.KeyValue{
attribute.String("policy_validation_mode", string(policyValidationMode)), attribute.String("policy_validation_mode", string(policyValidationMode)),
@ -289,7 +291,8 @@ func (m MetricsConfig) RecordAdmissionRequests(resourceKind string, resourceName
func (m *MetricsConfig) RecordPolicyExecutionDuration(policyValidationMode PolicyValidationMode, policyType PolicyType, policyBackgroundMode PolicyBackgroundMode, policyNamespace string, policyName string, func (m *MetricsConfig) RecordPolicyExecutionDuration(policyValidationMode PolicyValidationMode, policyType PolicyType, policyBackgroundMode PolicyBackgroundMode, policyNamespace string, policyName string,
resourceKind string, resourceNamespace string, resourceRequestOperation ResourceRequestOperation, ruleName string, ruleResult RuleResult, ruleType RuleType, resourceKind string, resourceNamespace string, resourceRequestOperation ResourceRequestOperation, ruleName string, ruleResult RuleResult, ruleType RuleType,
ruleExecutionCause RuleExecutionCause, generalRuleLatencyType string, ruleExecutionLatency float64) { ruleExecutionCause RuleExecutionCause, generalRuleLatencyType string, ruleExecutionLatency float64,
) {
ctx := context.Background() ctx := context.Background()
commonLabels := []attribute.KeyValue{ commonLabels := []attribute.KeyValue{

View file

@ -45,8 +45,8 @@ func registerPolicyExecutionDurationMetric(
return nil return nil
} }
//policy - policy related data // policy - policy related data
//engineResponse - resource and rule related data // engineResponse - resource and rule related data
func ProcessEngineResponse(m *metrics.MetricsConfig, policy kyvernov1.PolicyInterface, engineResponse response.EngineResponse, executionCause metrics.RuleExecutionCause, generateRuleLatencyType string, resourceRequestOperation metrics.ResourceRequestOperation) error { func ProcessEngineResponse(m *metrics.MetricsConfig, policy kyvernov1.PolicyInterface, engineResponse response.EngineResponse, executionCause metrics.RuleExecutionCause, generateRuleLatencyType string, resourceRequestOperation metrics.ResourceRequestOperation) error {
name, namespace, policyType, backgroundMode, validationMode, err := metrics.GetPolicyInfos(policy) name, namespace, policyType, backgroundMode, validationMode, err := metrics.GetPolicyInfos(policy)
if err != nil { if err != nil {

View file

@ -40,8 +40,8 @@ func registerPolicyResultsMetric(
return nil return nil
} }
//policy - policy related data // policy - policy related data
//engineResponse - resource and rule related data // engineResponse - resource and rule related data
func ProcessEngineResponse(m *metrics.MetricsConfig, policy kyvernov1.PolicyInterface, engineResponse response.EngineResponse, executionCause metrics.RuleExecutionCause, resourceRequestOperation metrics.ResourceRequestOperation) error { func ProcessEngineResponse(m *metrics.MetricsConfig, policy kyvernov1.PolicyInterface, engineResponse response.EngineResponse, executionCause metrics.RuleExecutionCause, resourceRequestOperation metrics.ResourceRequestOperation) error {
name, namespace, policyType, backgroundMode, validationMode, err := metrics.GetPolicyInfos(policy) name, namespace, policyType, backgroundMode, validationMode, err := metrics.GetPolicyInfos(policy)
if err != nil { if err != nil {

View file

@ -6,8 +6,7 @@ func NewFake() ValidateInterface {
return &fakeValidation{} return &fakeValidation{}
} }
type fakeValidation struct { type fakeValidation struct{}
}
func (f *fakeValidation) ValidateResource(resource unstructured.Unstructured, apiVersion, kind string) error { func (f *fakeValidation) ValidateResource(resource unstructured.Unstructured, apiVersion, kind string) error {
return nil return nil

View file

@ -564,7 +564,6 @@ func validateMatchKindHelper(rule kyvernov1.Rule) error {
// isLabelAndAnnotationsString :- Validate if labels and annotations contains only string values // isLabelAndAnnotationsString :- Validate if labels and annotations contains only string values
func isLabelAndAnnotationsString(rule kyvernov1.Rule) bool { func isLabelAndAnnotationsString(rule kyvernov1.Rule) bool {
checkLabelAnnotation := func(metaKey map[string]interface{}) bool { checkLabelAnnotation := func(metaKey map[string]interface{}) bool {
for mk := range metaKey { for mk := range metaKey {
if mk == "labels" { if mk == "labels" {

View file

@ -124,7 +124,7 @@ func (c *changeRequestCreator) run(stopChan <-chan struct{}) {
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
requests := []*unstructured.Unstructured{} var requests []*unstructured.Unstructured
var size int var size int
if c.splitPolicyReport { if c.splitPolicyReport {
requests, size = c.mergeRequestsPerPolicy() requests, size = c.mergeRequestsPerPolicy()

View file

@ -4,21 +4,16 @@ func NewFake() GeneratorInterface {
return &fakeReporter{} return &fakeReporter{}
} }
type fakeReporter struct { type fakeReporter struct{}
}
func (f *fakeReporter) Add(infos ...Info) { func (f *fakeReporter) Add(infos ...Info) {
} }
func (f *fakeReporter) MapperReset(string) { func (f *fakeReporter) MapperReset(string) {
} }
func (f *fakeReporter) MapperInactive(string) { func (f *fakeReporter) MapperInactive(string) {
} }
func (f *fakeReporter) MapperInvalidate() { func (f *fakeReporter) MapperInvalidate() {
} }

View file

@ -524,7 +524,6 @@ func (g *ReportGenerator) removeFromClusterPolicyReport(policyName, ruleName str
} }
func (g *ReportGenerator) removeFromPolicyReport(policyName, ruleName string) error { func (g *ReportGenerator) removeFromPolicyReport(policyName, ruleName string) error {
namespaces, err := g.client.ListResource("", "Namespace", "", nil) namespaces, err := g.client.ListResource("", "Namespace", "", nil)
if err != nil { if err != nil {
return fmt.Errorf("unable to list namespace %v", err) return fmt.Errorf("unable to list namespace %v", err)
@ -589,7 +588,7 @@ func (g *ReportGenerator) aggregateReports(namespace, policyName string) (
g.log.Error(err, "failed to get Kyverno namespace, policy reports will not be garbage collected upon termination") g.log.Error(err, "failed to get Kyverno namespace, policy reports will not be garbage collected upon termination")
} }
selector := labels.NewSelector() var selector labels.Selector
if namespace == "" { if namespace == "" {
if toggle.SplitPolicyReport() { if toggle.SplitPolicyReport() {
selector = labels.SelectorFromSet(labels.Set(map[string]string{appVersion: version.BuildVersion, policyLabel: TrimmedName(policyName)})) selector = labels.SelectorFromSet(labels.Set(map[string]string{appVersion: version.BuildVersion, policyLabel: TrimmedName(policyName)}))

View file

@ -95,7 +95,7 @@ func WithKeychainPullSecrets(kubClient kubernetes.Interface, namespace, serviceA
// WithKeychainPullSecrets provides initialize registry client option that allows to use insecure registries. // WithKeychainPullSecrets provides initialize registry client option that allows to use insecure registries.
func WithAllowInsecureRegistry() Option { func WithAllowInsecureRegistry() Option {
return func(c *client) error { return func(c *client) error {
c.transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} c.transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} //nolint:gosec
return nil return nil
} }
} }

View file

@ -71,7 +71,7 @@ type Generation struct {
// It assumes that the project directory is 2 levels up. This means if this function is moved // It assumes that the project directory is 2 levels up. This means if this function is moved
// it may not work as expected. // it may not work as expected.
func RootDir() string { func RootDir() string {
_, b, _, _ := runtime.Caller(0) // nolint:dogsled _, b, _, _ := runtime.Caller(0) //nolint:dogsled
d := ospath.Join(ospath.Dir(b)) d := ospath.Join(ospath.Dir(b))
d = filepath.Dir(d) d = filepath.Dir(d)
return filepath.Dir(d) return filepath.Dir(d)

View file

@ -7,15 +7,16 @@ import (
"github.com/kyverno/kyverno/pkg/config" "github.com/kyverno/kyverno/pkg/config"
"google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
) )
func FetchCert( func FetchCert(
ctx context.Context, ctx context.Context,
certs string, certs string,
kubeClient kubernetes.Interface) (credentials.TransportCredentials, error) { kubeClient kubernetes.Interface,
secret, err := kubeClient.CoreV1().Secrets(config.KyvernoNamespace()).Get(ctx, certs, v1.GetOptions{}) ) (credentials.TransportCredentials, error) {
secret, err := kubeClient.CoreV1().Secrets(config.KyvernoNamespace()).Get(ctx, certs, metav1.GetOptions{})
if err != nil { if err != nil {
return nil, fmt.Errorf("error fetching certificate from secret") return nil, fmt.Errorf("error fetching certificate from secret")
} }

View file

@ -346,7 +346,6 @@ func OverrideRuntimeErrorHandler() {
runtime.ErrorHandlers[0] = func(err error) { runtime.ErrorHandlers[0] = func(err error) {
logger.V(6).Info("runtime error: %s", err) logger.V(6).Info("runtime error: %s", err)
} }
} else { } else {
runtime.ErrorHandlers = []func(err error){ runtime.ErrorHandlers = []func(err error){
func(err error) { func(err error) {

View file

@ -36,11 +36,9 @@ const (
// latestTimestamp is longer than idleCheckInterval, the monitor triggers an // latestTimestamp is longer than idleCheckInterval, the monitor triggers an
// annotation update; otherwise lastSeenRequestTime is updated to latestTimestamp. // annotation update; otherwise lastSeenRequestTime is updated to latestTimestamp.
// //
//
// Webhook configurations are checked every tickerInterval across all instances. // Webhook configurations are checked every tickerInterval across all instances.
// Currently the check only queries for the expected resource name, and does // Currently the check only queries for the expected resource name, and does
// not compare other details like the webhook settings. // not compare other details like the webhook settings.
//
type Monitor struct { type Monitor struct {
// leaseClient is used to manage Kyverno lease // leaseClient is used to manage Kyverno lease
leaseClient coordinationv1.LeaseInterface leaseClient coordinationv1.LeaseInterface

View file

@ -184,7 +184,8 @@ func (wrc *Register) ResetPolicyStatus(kyvernoInTermination bool, wg *sync.WaitG
logger := wrc.log.WithName("ResetPolicyStatus") logger := wrc.log.WithName("ResetPolicyStatus")
cpols, err := wrc.kyvernoClient.KyvernoV1().ClusterPolicies().List(context.TODO(), metav1.ListOptions{}) cpols, err := wrc.kyvernoClient.KyvernoV1().ClusterPolicies().List(context.TODO(), metav1.ListOptions{})
if err == nil { if err == nil {
for _, cpol := range cpols.Items { for _, item := range cpols.Items {
cpol := item
cpol.Status.SetReady(false) cpol.Status.SetReady(false)
if _, err := wrc.kyvernoClient.KyvernoV1().ClusterPolicies().UpdateStatus(context.TODO(), &cpol, metav1.UpdateOptions{}); err != nil { if _, err := wrc.kyvernoClient.KyvernoV1().ClusterPolicies().UpdateStatus(context.TODO(), &cpol, metav1.UpdateOptions{}); err != nil {
logger.Error(err, "failed to set ClusterPolicy status READY=false", "name", cpol.GetName()) logger.Error(err, "failed to set ClusterPolicy status READY=false", "name", cpol.GetName())
@ -196,7 +197,8 @@ func (wrc *Register) ResetPolicyStatus(kyvernoInTermination bool, wg *sync.WaitG
pols, err := wrc.kyvernoClient.KyvernoV1().Policies(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{}) pols, err := wrc.kyvernoClient.KyvernoV1().Policies(metav1.NamespaceAll).List(context.TODO(), metav1.ListOptions{})
if err == nil { if err == nil {
for _, pol := range pols.Items { for _, item := range pols.Items {
pol := item
pol.Status.SetReady(false) pol.Status.SetReady(false)
if _, err := wrc.kyvernoClient.KyvernoV1().Policies(pol.GetNamespace()).UpdateStatus(context.TODO(), &pol, metav1.UpdateOptions{}); err != nil { if _, err := wrc.kyvernoClient.KyvernoV1().Policies(pol.GetNamespace()).UpdateStatus(context.TODO(), &pol, metav1.UpdateOptions{}); err != nil {
logger.Error(err, "failed to set Policy status READY=false", "namespace", pol.GetNamespace(), "name", pol.GetName()) logger.Error(err, "failed to set Policy status READY=false", "namespace", pol.GetNamespace(), "name", pol.GetName())

View file

@ -20,7 +20,6 @@ import (
) )
func NewFakeHandlers(ctx context.Context, policyCache policycache.Cache) webhooks.Handlers { func NewFakeHandlers(ctx context.Context, policyCache policycache.Cache) webhooks.Handlers {
client := fake.NewSimpleClientset() client := fake.NewSimpleClientset()
metricsConfig := metrics.NewFakeMetricsConfig(client) metricsConfig := metrics.NewFakeMetricsConfig(client)
@ -53,13 +52,10 @@ func newFakeAuditHandler() AuditHandler {
return &fakeAuditHandler{} return &fakeAuditHandler{}
} }
type fakeAuditHandler struct { type fakeAuditHandler struct{}
}
func (f *fakeAuditHandler) Add(request *admissionv1.AdmissionRequest) { func (f *fakeAuditHandler) Add(request *admissionv1.AdmissionRequest) {
} }
func (f *fakeAuditHandler) Run(workers int, stopCh <-chan struct{}) { func (f *fakeAuditHandler) Run(workers int, stopCh <-chan struct{}) {
} }

View file

@ -78,6 +78,7 @@ func NewServer(
Handler: mux, Handler: mux,
ReadTimeout: 30 * time.Second, ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second,
ReadHeaderTimeout: 30 * time.Second,
}, },
webhookRegister: register, webhookRegister: register,
cleanUp: cleanUp, cleanUp: cleanUp,

View file

@ -9,8 +9,7 @@ func NewFake() Generator {
return &fakeGenerator{} return &fakeGenerator{}
} }
type fakeGenerator struct { type fakeGenerator struct{}
}
func (f *fakeGenerator) Apply(gr kyvernov1beta1.UpdateRequestSpec, action admissionv1.Operation) error { func (f *fakeGenerator) Apply(gr kyvernov1beta1.UpdateRequestSpec, action admissionv1.Operation) error {
return nil return nil

View file

@ -27,6 +27,7 @@ type client struct {
} }
func New(t *testing.T) Client { func New(t *testing.T) Client {
t.Helper()
c, err := e2e.NewE2EClient() c, err := e2e.NewE2EClient()
gomega.Expect(err).NotTo(gomega.HaveOccurred()) gomega.Expect(err).NotTo(gomega.HaveOccurred())
return &client{t, c} return &client{t, c}

View file

@ -11,6 +11,7 @@ import (
) )
func Setup(t *testing.T) { func Setup(t *testing.T) {
t.Helper()
gomega.RegisterTestingT(t) gomega.RegisterTestingT(t)
if os.Getenv("E2E") == "" { if os.Getenv("E2E") == "" {
t.Skip("Skipping E2E Test") t.Skip("Skipping E2E Test")
@ -18,6 +19,7 @@ func Setup(t *testing.T) {
} }
func RunTest(t *testing.T, steps ...step.Step) { func RunTest(t *testing.T, steps ...step.Step) {
t.Helper()
ginkgo.By("Creating client ...") ginkgo.By("Creating client ...")
client := client.New(t) client := client.New(t)
for _, step := range steps { for _, step := range steps {
@ -27,6 +29,7 @@ func RunTest(t *testing.T, steps ...step.Step) {
} }
func RunSubTest(t *testing.T, name string, steps ...step.Step) { func RunSubTest(t *testing.T, name string, steps ...step.Step) {
t.Helper()
t.Run(name, func(t *testing.T) { t.Run(name, func(t *testing.T) {
RunTest(t, steps...) RunTest(t, steps...)
}) })

View file

@ -4,10 +4,9 @@ import (
"time" "time"
"github.com/kyverno/kyverno/test/e2e" "github.com/kyverno/kyverno/test/e2e"
. "github.com/onsi/gomega"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
. "github.com/onsi/gomega"
) )
var ( var (

View file

@ -7,13 +7,12 @@ import (
"time" "time"
"github.com/kyverno/kyverno/test/e2e" "github.com/kyverno/kyverno/test/e2e"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
) )
type resource struct { type resource struct {
@ -72,6 +71,7 @@ func expectation(id _id, expectations ...resourceExpectation) expectedResource {
} }
func setup(t *testing.T) { func setup(t *testing.T) {
t.Helper()
RegisterTestingT(t) RegisterTestingT(t)
if os.Getenv("E2E") == "" { if os.Getenv("E2E") == "" {
t.Skip("Skipping E2E Test") t.Skip("Skipping E2E Test")
@ -86,7 +86,7 @@ func createClient() *e2e.E2EClient {
func deleteClusteredResource(client *e2e.E2EClient, resource expectedResource) { func deleteClusteredResource(client *e2e.E2EClient, resource expectedResource) {
By(fmt.Sprintf("Deleting %s : %s", resource.gvr.String(), resource.name)) By(fmt.Sprintf("Deleting %s : %s", resource.gvr.String(), resource.name))
client.DeleteClusteredResource(resource.gvr, resource.name) _ = client.DeleteClusteredResource(resource.gvr, resource.name)
err := e2e.GetWithRetry(1*time.Second, 15, func() error { err := e2e.GetWithRetry(1*time.Second, 15, func() error {
_, err := client.GetClusteredResource(resource.gvr, resource.name) _, err := client.GetClusteredResource(resource.gvr, resource.name)
if err == nil { if err == nil {
@ -102,7 +102,7 @@ func deleteClusteredResource(client *e2e.E2EClient, resource expectedResource) {
func deleteNamespacedResource(client *e2e.E2EClient, resource expectedResource) { func deleteNamespacedResource(client *e2e.E2EClient, resource expectedResource) {
By(fmt.Sprintf("Deleting %s : %s/%s", resource.gvr.String(), resource.ns, resource.name)) By(fmt.Sprintf("Deleting %s : %s/%s", resource.gvr.String(), resource.ns, resource.name))
client.DeleteNamespacedResource(resource.gvr, resource.ns, resource.name) _ = client.DeleteNamespacedResource(resource.gvr, resource.ns, resource.name)
err := e2e.GetWithRetry(1*time.Second, 15, func() error { err := e2e.GetWithRetry(1*time.Second, 15, func() error {
_, err := client.GetNamespacedResource(resource.gvr, resource.ns, resource.name) _, err := client.GetNamespacedResource(resource.gvr, resource.ns, resource.name)
if err == nil { if err == nil {
@ -131,6 +131,7 @@ func deleteResources(client *e2e.E2EClient, resources ...expectedResource) {
} }
func createClusteredResource(t *testing.T, client *e2e.E2EClient, resource resource) *unstructured.Unstructured { func createClusteredResource(t *testing.T, client *e2e.E2EClient, resource resource) *unstructured.Unstructured {
t.Helper()
var u unstructured.Unstructured var u unstructured.Unstructured
Expect(yaml.Unmarshal(resource.raw, &u)).To(Succeed()) Expect(yaml.Unmarshal(resource.raw, &u)).To(Succeed())
By(fmt.Sprintf("Creating %s : %s", resource.gvr.String(), u.GetName())) By(fmt.Sprintf("Creating %s : %s", resource.gvr.String(), u.GetName()))
@ -143,6 +144,7 @@ func createClusteredResource(t *testing.T, client *e2e.E2EClient, resource resou
} }
func createNamespacedResource(t *testing.T, client *e2e.E2EClient, resource resource) *unstructured.Unstructured { func createNamespacedResource(t *testing.T, client *e2e.E2EClient, resource resource) *unstructured.Unstructured {
t.Helper()
var u unstructured.Unstructured var u unstructured.Unstructured
Expect(yaml.Unmarshal(resource.raw, &u)).To(Succeed()) Expect(yaml.Unmarshal(resource.raw, &u)).To(Succeed())
By(fmt.Sprintf("Creating %s : %s/%s", resource.gvr.String(), resource.ns, u.GetName())) By(fmt.Sprintf("Creating %s : %s/%s", resource.gvr.String(), resource.ns, u.GetName()))
@ -155,6 +157,7 @@ func createNamespacedResource(t *testing.T, client *e2e.E2EClient, resource reso
} }
func createResource(t *testing.T, client *e2e.E2EClient, resource resource) *unstructured.Unstructured { func createResource(t *testing.T, client *e2e.E2EClient, resource resource) *unstructured.Unstructured {
t.Helper()
if resource.ns != "" { if resource.ns != "" {
return createNamespacedResource(t, client, resource) return createNamespacedResource(t, client, resource)
} else { } else {
@ -163,6 +166,7 @@ func createResource(t *testing.T, client *e2e.E2EClient, resource resource) *uns
} }
func createResources(t *testing.T, client *e2e.E2EClient, resources ...resource) { func createResources(t *testing.T, client *e2e.E2EClient, resources ...resource) {
t.Helper()
for _, resource := range resources { for _, resource := range resources {
createResource(t, client, resource) createResource(t, client, resource)
} }
@ -182,13 +186,13 @@ func getNamespacedResource(client *e2e.E2EClient, gvr schema.GroupVersionResourc
return r return r
} }
func getResource(client *e2e.E2EClient, gvr schema.GroupVersionResource, ns, name string) *unstructured.Unstructured { // func getResource(client *e2e.E2EClient, gvr schema.GroupVersionResource, ns, name string) *unstructured.Unstructured {
if ns != "" { // if ns != "" {
return getNamespacedResource(client, gvr, ns, name) // return getNamespacedResource(client, gvr, ns, name)
} else { // } else {
return getClusteredResource(client, gvr, name) // return getClusteredResource(client, gvr, name)
} // }
} // }
func updateClusteredResource(client *e2e.E2EClient, gvr schema.GroupVersionResource, name string, m func(*unstructured.Unstructured) error) { func updateClusteredResource(client *e2e.E2EClient, gvr schema.GroupVersionResource, name string, m func(*unstructured.Unstructured) error) {
r := getClusteredResource(client, gvr, name) r := getClusteredResource(client, gvr, name)
@ -297,11 +301,11 @@ func expectResourceNotExists(client *e2e.E2EClient, resource expectedResource) {
} }
} }
func expectResourcesNotExist(client *e2e.E2EClient, resources ...expectedResource) { // func expectResourcesNotExist(client *e2e.E2EClient, resources ...expectedResource) {
for _, resource := range resources { // for _, resource := range resources {
expectResourceNotExists(client, resource) // expectResourceNotExists(client, resource)
} // }
} // }
func expectClusteredResourceNotFound(client *e2e.E2EClient, resource expectedResource) { func expectClusteredResourceNotFound(client *e2e.E2EClient, resource expectedResource) {
By(fmt.Sprintf("Expecting not found %s : %s", resource.gvr.String(), resource.name)) By(fmt.Sprintf("Expecting not found %s : %s", resource.gvr.String(), resource.name))