Skip to content

Commit

Permalink
- set tag optional in generaterequest; - fix generate controller erro…
Browse files Browse the repository at this point in the history
…r log
  • Loading branch information
realshuting committed Nov 14, 2020
1 parent 943935e commit 2ff9d03
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 17 deletions.
6 changes: 2 additions & 4 deletions definitions/crds/kyverno.io_generaterequests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,13 @@ spec:
send the request
items:
type: string
nullable: true
type: array
roles:
description: Roles is a list of possible role send the request
items:
type: string
nullable: true
type: array
userInfo:
description: UserInfo is the userInfo carried in the admission
Expand Down Expand Up @@ -84,10 +86,6 @@ spec:
among all active users.
type: string
type: object
required:
- clusterRoles
- roles
- userInfo
type: object
type: object
policy:
Expand Down
8 changes: 8 additions & 0 deletions pkg/api/kyverno/v1/generaterequest_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,24 @@ type GenerateRequestSpec struct {

//GenerateRequestContext stores the context to be shared
type GenerateRequestContext struct {
// +optional
UserRequestInfo RequestInfo `json:"userInfo,omitempty" yaml:"userInfo,omitempty"`
}

// RequestInfo contains permission info carried in an admission request
type RequestInfo struct {
// Roles is a list of possible role send the request
// +nullable
// +optional
Roles []string `json:"roles" yaml:"roles"`

// ClusterRoles is a list of possible clusterRoles send the request
// +nullable
// +optional
ClusterRoles []string `json:"clusterRoles" yaml:"clusterRoles"`

// UserInfo is the userInfo carried in the admission request
// +optional
AdmissionUserInfo authenticationv1.UserInfo `json:"userInfo" yaml:"userInfo"`
}

Expand Down
8 changes: 7 additions & 1 deletion pkg/generate/cleanup/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,12 @@ func (c *Controller) handleErr(err error, key interface{}) {
return
}

if errors.IsNotFound(err) {
c.queue.Forget(key)
logger.V(4).Info("Dropping generate request from the queue", "key", key, "error", err)
return
}

if c.queue.NumRequeues(key) < maxRetries {
logger.Error(err, "failed to sync generate request", "key", key)
c.queue.AddRateLimited(key)
Expand All @@ -260,7 +266,7 @@ func (c *Controller) syncGenerateRequest(key string) error {
logger := c.log.WithValues("key", key)
var err error
startTime := time.Now()
logger.Info("started syncing generate request", "startTime", startTime)
logger.V(4).Info("started syncing generate request", "startTime", startTime)
defer func() {
logger.V(4).Info("finished syncying generate request", "processingTIme", time.Since(startTime).String())
}()
Expand Down
15 changes: 13 additions & 2 deletions pkg/generate/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/kyverno/kyverno/pkg/event"
"github.com/kyverno/kyverno/pkg/policystatus"
"github.com/kyverno/kyverno/pkg/resourcecache"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
Expand Down Expand Up @@ -230,7 +231,7 @@ func (c *Controller) deleteGR(obj interface{}) {
}
}
}
logger.Info("deleting generate request", "name", gr.Name)
logger.V(3).Info("deleting generate request", "name", gr.Name)
// sync Handler will remove it from the queue
c.enqueueGR(gr)
}
Expand Down Expand Up @@ -280,6 +281,12 @@ func (c *Controller) handleErr(err error, key interface{}) {
return
}

if errors.IsNotFound(err) {
c.queue.Forget(key)
logger.V(4).Info("Dropping generate request from the queue", "key", key, "error", err)
return
}

if c.queue.NumRequeues(key) < maxRetries {
logger.Error(err, "failed to sync generate request", "key", key)
c.queue.AddRateLimited(key)
Expand All @@ -294,7 +301,7 @@ func (c *Controller) syncGenerateRequest(key string) error {
logger := c.log
var err error
startTime := time.Now()
logger.Info("started sync", "key", key, "startTime", startTime)
logger.V(4).Info("started sync", "key", key, "startTime", startTime)
defer func() {
logger.V(4).Info("finished sync", "key", key, "processingTime", time.Since(startTime).String())
}()
Expand All @@ -305,6 +312,10 @@ func (c *Controller) syncGenerateRequest(key string) error {

gr, err := c.grLister.Get(grName)
if err != nil {
if errors.IsNotFound(err) {
return nil
}

logger.Error(err, "failed to list generate requests")
return err
}
Expand Down
7 changes: 3 additions & 4 deletions pkg/generate/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,6 @@ func (c *Controller) applyGeneratePolicy(log logr.Logger, policyContext engine.P
}

genResource, err := applyRule(log, c.client, rule, resource, ctx, policy.Name, gr, processExisting)

if err != nil {
return nil, err
}
Expand Down Expand Up @@ -346,7 +345,7 @@ func applyRule(log logr.Logger, client *dclient.Client, rule kyverno.Rule, resou
// Failed to create resource
return noGenResource, err
}
logger.V(4).Info("created new resource")
logger.V(2).Info("created generated resource")

} else if mode == Update {
var isUpdate bool
Expand Down Expand Up @@ -374,7 +373,7 @@ func applyRule(log logr.Logger, client *dclient.Client, rule kyverno.Rule, resou
logger.Error(err, "updating existing resource")
return noGenResource, err
}
logger.V(4).Info("updated new resource")
logger.V(4).Info("updated generated resource")
} else {
resource := &unstructured.Unstructured{}
resource.SetUnstructuredContent(rdata)
Expand All @@ -384,7 +383,7 @@ func applyRule(log logr.Logger, client *dclient.Client, rule kyverno.Rule, resou
logger.Error(err, "updating existing resource")
return noGenResource, err
}
logger.V(4).Info("updated new resource")
logger.V(4).Info("updated geneated resource")
}

logger.V(4).Info("Synchronize resource is disabled")
Expand Down
9 changes: 5 additions & 4 deletions pkg/generate/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
kyverno "github.com/kyverno/kyverno/pkg/api/kyverno/v1"
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
"github.com/kyverno/kyverno/pkg/config"
"k8s.io/apimachinery/pkg/api/errors"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/log"
)
Expand All @@ -28,11 +29,11 @@ func (sc StatusControl) Failed(gr kyverno.GenerateRequest, message string, genRe
// Update Generated Resources
gr.Status.GeneratedResources = genResources
_, err := sc.client.KyvernoV1().GenerateRequests(config.KubePolicyNamespace).UpdateStatus(context.TODO(), &gr, v1.UpdateOptions{})
if err != nil {
if err != nil && !errors.IsNotFound(err) {
log.Log.Error(err, "failed to update generate request status", "name", gr.Name)
return err
}
log.Log.Info("updated generate request status", "name", gr.Name, "status", string(kyverno.Failed))
log.Log.V(3).Info("updated generate request status", "name", gr.Name, "status", string(kyverno.Failed))
return nil
}

Expand All @@ -44,10 +45,10 @@ func (sc StatusControl) Success(gr kyverno.GenerateRequest, genResources []kyver
gr.Status.GeneratedResources = genResources

_, err := sc.client.KyvernoV1().GenerateRequests(config.KubePolicyNamespace).UpdateStatus(context.TODO(), &gr, v1.UpdateOptions{})
if err != nil {
if err != nil && !errors.IsNotFound(err) {
log.Log.Error(err, "failed to update generate request status", "name", gr.Name)
return err
}
log.Log.Info("updated generate request status", "name", gr.Name, "status", string(kyverno.Completed))
log.Log.V(3).Info("updated generate request status", "name", gr.Name, "status", string(kyverno.Completed))
return nil
}
1 change: 0 additions & 1 deletion pkg/kyverno/apply/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,6 @@ func createFileOrFolder(mutateLogPath string, mutateLogPathIsDir bool) error {
if len(s) > 1 {
folderPath = mutateLogPath[:len(mutateLogPath)-len(s[len(s)-1])-1]
_, err := os.Stat(folderPath)
fmt.Println(err)
if os.IsNotExist(err) {
errDir := os.MkdirAll(folderPath, 0755)
if errDir != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/policy/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ func (pc *PolicyController) syncPolicy(key string) error {
for _, v := range grList {
if key == v.Spec.Policy {
err := pc.kyvernoClient.KyvernoV1().GenerateRequests(config.KubePolicyNamespace).Delete(context.TODO(), v.GetName(), metav1.DeleteOptions{})
if err != nil {
if err != nil && !errors.IsNotFound(err) {
logger.Error(err, "failed to delete gr")
}
}
Expand Down

0 comments on commit 2ff9d03

Please sign in to comment.