2022-04-13 18:15:04 +05:30
|
|
|
package common
|
2020-01-07 10:33:28 -08:00
|
|
|
|
|
|
|
import (
|
2022-05-17 13:12:43 +02:00
|
|
|
kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
|
|
|
|
kyvernov1beta1 "github.com/kyverno/kyverno/api/kyverno/v1beta1"
|
2022-09-07 06:01:43 +02:00
|
|
|
"github.com/kyverno/kyverno/pkg/client/clientset/versioned"
|
2022-05-19 18:06:56 +02:00
|
|
|
kyvernov1beta1listers "github.com/kyverno/kyverno/pkg/client/listers/kyverno/v1beta1"
|
2020-01-07 10:33:28 -08:00
|
|
|
)
|
|
|
|
|
2022-05-17 08:19:03 +02:00
|
|
|
// StatusControlInterface provides interface to update status subresource
|
2020-01-07 10:33:28 -08:00
|
|
|
type StatusControlInterface interface {
|
2022-05-19 18:06:56 +02:00
|
|
|
Failed(name string, message string, genResources []kyvernov1.ResourceSpec) (*kyvernov1beta1.UpdateRequest, error)
|
|
|
|
Success(name string, genResources []kyvernov1.ResourceSpec) (*kyvernov1beta1.UpdateRequest, error)
|
|
|
|
Skip(name string, genResources []kyvernov1.ResourceSpec) (*kyvernov1beta1.UpdateRequest, error)
|
2020-01-07 10:33:28 -08:00
|
|
|
}
|
|
|
|
|
2022-05-19 18:06:56 +02:00
|
|
|
// statusControl is default implementaation of GRStatusControlInterface
|
|
|
|
type statusControl struct {
|
2022-09-07 06:01:43 +02:00
|
|
|
client versioned.Interface
|
2022-05-19 18:06:56 +02:00
|
|
|
urLister kyvernov1beta1listers.UpdateRequestNamespaceLister
|
2020-01-07 10:33:28 -08:00
|
|
|
}
|
|
|
|
|
2022-09-07 06:01:43 +02:00
|
|
|
func NewStatusControl(client versioned.Interface, urLister kyvernov1beta1listers.UpdateRequestNamespaceLister) StatusControlInterface {
|
2022-05-19 18:06:56 +02:00
|
|
|
return &statusControl{
|
|
|
|
client: client,
|
|
|
|
urLister: urLister,
|
2022-04-25 20:20:40 +08:00
|
|
|
}
|
2022-05-19 18:06:56 +02:00
|
|
|
}
|
2022-04-25 20:20:40 +08:00
|
|
|
|
2022-05-19 18:06:56 +02:00
|
|
|
// Failed sets ur status.state to failed with message
|
|
|
|
func (sc *statusControl) Failed(name, message string, genResources []kyvernov1.ResourceSpec) (*kyvernov1beta1.UpdateRequest, error) {
|
|
|
|
return UpdateStatus(sc.client, sc.urLister, name, kyvernov1beta1.Failed, message, genResources)
|
2020-01-07 10:33:28 -08:00
|
|
|
}
|
|
|
|
|
2022-04-29 19:05:49 +08:00
|
|
|
// Success sets the ur status.state to completed and clears message
|
2022-05-19 18:06:56 +02:00
|
|
|
func (sc *statusControl) Success(name string, genResources []kyvernov1.ResourceSpec) (*kyvernov1beta1.UpdateRequest, error) {
|
|
|
|
return UpdateStatus(sc.client, sc.urLister, name, kyvernov1beta1.Completed, "", genResources)
|
2020-01-07 10:33:28 -08:00
|
|
|
}
|
2021-11-09 09:41:29 +05:30
|
|
|
|
2022-04-29 19:05:49 +08:00
|
|
|
// Success sets the ur status.state to completed and clears message
|
2022-05-19 18:06:56 +02:00
|
|
|
func (sc *statusControl) Skip(name string, genResources []kyvernov1.ResourceSpec) (*kyvernov1beta1.UpdateRequest, error) {
|
|
|
|
return UpdateStatus(sc.client, sc.urLister, name, kyvernov1beta1.Skip, "", genResources)
|
2021-11-09 09:41:29 +05:30
|
|
|
}
|