From 7f2e56484577ef014d150f5352f469762aae17ac Mon Sep 17 00:00:00 2001 From: npetchapan Date: Sun, 17 Dec 2023 20:08:11 +0700 Subject: [PATCH 01/20] fix: remove psp and update ingress --- .../samsahai/templates/clusterrole-rbac.yaml | 10 ----- config/chart/samsahai/templates/ingress.yaml | 2 +- .../samsahai/templates/podsecuritypolicy.yaml | 38 ------------------- config/chart/samsahai/values.yaml | 7 +--- 4 files changed, 2 insertions(+), 55 deletions(-) delete mode 100644 config/chart/samsahai/templates/podsecuritypolicy.yaml diff --git a/config/chart/samsahai/templates/clusterrole-rbac.yaml b/config/chart/samsahai/templates/clusterrole-rbac.yaml index 2ce74423..a1b9fb11 100644 --- a/config/chart/samsahai/templates/clusterrole-rbac.yaml +++ b/config/chart/samsahai/templates/clusterrole-rbac.yaml @@ -108,16 +108,6 @@ rules: - get - list - watch -{{- if .Values.rbac.pspEnabled }} - - apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - {{ include "samsahai.fullname" . }} -{{- end }} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding diff --git a/config/chart/samsahai/templates/ingress.yaml b/config/chart/samsahai/templates/ingress.yaml index fa41a2f6..25fb5070 100644 --- a/config/chart/samsahai/templates/ingress.yaml +++ b/config/chart/samsahai/templates/ingress.yaml @@ -1,6 +1,6 @@ {{- if .Values.ingress.enabled -}} {{- $fullName := include "samsahai.fullname" . -}} -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ $fullName }} diff --git a/config/chart/samsahai/templates/podsecuritypolicy.yaml b/config/chart/samsahai/templates/podsecuritypolicy.yaml deleted file mode 100644 index 2fbdc239..00000000 --- a/config/chart/samsahai/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "samsahai.fullname" . }} - labels: - {{ include "samsahai.labels" . | indent 4 | trim }} - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'runtime/default' - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default' - {{- if .Values.rbac.pspUseAppArmor }} - apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' - apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - {{- end }} -spec: - privileged: false - allowPrivilegeEscalation: false - requiredDropCapabilities: - - ALL - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'secret' - - 'downwardAPI' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'RunAsAny' - fsGroup: - rule: 'RunAsAny' - readOnlyRootFilesystem: false -{{- end }} \ No newline at end of file diff --git a/config/chart/samsahai/values.yaml b/config/chart/samsahai/values.yaml index dc22706e..7cd29d35 100644 --- a/config/chart/samsahai/values.yaml +++ b/config/chart/samsahai/values.yaml @@ -129,9 +129,4 @@ nodeSelector: {} tolerations: [] -affinity: {} - -## Enable RBAC as per https://github.com/kubernetes/ingress/tree/master/examples/rbac/nginx and https://github.com/kubernetes/ingress/issues/266 -rbac: - pspEnabled: false - pspUseAppArmor: false \ No newline at end of file +affinity: {} \ No newline at end of file From f1764788fae0d586dc0486598271b9619e58ef78 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Sun, 17 Dec 2023 20:09:28 +0700 Subject: [PATCH 02/20] fix: update batch from v1beta1 to v1 --- internal/config/controller.go | 29 ++++++++++++++--------------- internal/config/controller_test.go | 27 +++++++++++++-------------- test/e2e/samsahai/ctrl.go | 6 +++--- 3 files changed, 30 insertions(+), 32 deletions(-) diff --git a/internal/config/controller.go b/internal/config/controller.go index 0522b9b5..0b6d450f 100644 --- a/internal/config/controller.go +++ b/internal/config/controller.go @@ -9,7 +9,6 @@ import ( "github.com/ghodss/yaml" "github.com/imdario/mergo" batchv1 "k8s.io/api/batch/v1" - batchv1beta1 "k8s.io/api/batch/v1beta1" corev1 "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -381,14 +380,14 @@ func teamNameRendering(teamName, values string) []byte { )) } -func (c *controller) createCronJob(cronJob batchv1beta1.CronJob) error { +func (c *controller) createCronJob(cronJob batchv1.CronJob) error { if err := c.client.Create(context.TODO(), &cronJob); err != nil { return err } return nil } -func (c *controller) deleteCronJobAndMatchingJobs(cronJob batchv1beta1.CronJob) error { +func (c *controller) deleteCronJobAndMatchingJobs(cronJob batchv1.CronJob) error { ctx := context.TODO() jobList := &batchv1.JobList{} selectors := labels.SelectorFromSet(cronJob.Labels) @@ -411,10 +410,10 @@ func (c *controller) deleteCronJobAndMatchingJobs(cronJob batchv1beta1.CronJob) } func (c *controller) getCreatingCronJobs(namespace, teamName string, comp s2hv1.Component, - cronJobList *batchv1beta1.CronJobList) []batchv1beta1.CronJob { + cronJobList *batchv1.CronJobList) []batchv1.CronJob { - creatingCronJobs := make([]batchv1beta1.CronJob, 0) - uniqueCreatingCronJobs := map[string]batchv1beta1.CronJob{} + creatingCronJobs := make([]batchv1.CronJob, 0) + uniqueCreatingCronJobs := map[string]batchv1.CronJob{} cronJobCmd := c.getCronJobCmd(comp.Name, teamName, comp.Image.Repository) for _, schedule := range comp.Schedules { @@ -449,21 +448,21 @@ func (c *controller) getCreatingCronJobs(namespace, teamName string, comp s2hv1. return creatingCronJobs } -func (c *controller) generateCronJob(cronJobName, cronJobCmd, schedule, compName, namespace, teamName string) batchv1beta1.CronJob { +func (c *controller) generateCronJob(cronJobName, cronJobCmd, schedule, compName, namespace, teamName string) batchv1.CronJob { successfulJobsHistoryLimit := successfulJobsHistoryLimit cronJobLabels := c.getCronJobLabels(cronJobName, teamName, compName) cronJobDefaultArgs := []string{"/bin/sh", "-c", cronJobCmd} - cronJob := batchv1beta1.CronJob{ + cronJob := batchv1.CronJob{ ObjectMeta: metav1.ObjectMeta{ Name: cronJobName, Namespace: namespace, Labels: cronJobLabels, }, - Spec: batchv1beta1.CronJobSpec{ + Spec: batchv1.CronJobSpec{ SuccessfulJobsHistoryLimit: &successfulJobsHistoryLimit, Schedule: schedule, - ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, - JobTemplate: batchv1beta1.JobTemplateSpec{ + ConcurrencyPolicy: batchv1.ForbidConcurrent, + JobTemplate: batchv1.JobTemplateSpec{ Spec: batchv1.JobSpec{ Template: corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ @@ -490,9 +489,9 @@ func (c *controller) generateCronJob(cronJobName, cronJobCmd, schedule, compName } func (c *controller) getDeletingCronJobs(teamName string, comp s2hv1.Component, - cronJobList *batchv1beta1.CronJobList) []batchv1beta1.CronJob { + cronJobList *batchv1.CronJobList) []batchv1.CronJob { - deletingCronJobObjs := make([]batchv1beta1.CronJob, 0) + deletingCronJobObjs := make([]batchv1.CronJob, 0) cronJobCmd := c.getCronJobCmd(comp.Name, teamName, comp.Image.Repository) for _, cj := range cronJobList.Items { @@ -517,7 +516,7 @@ func (c *controller) getDeletingCronJobs(teamName string, comp s2hv1.Component, } func (c *controller) getUpdatedCronJobs(namespace, teamName string, comp *s2hv1.Component, - cronJobList *batchv1beta1.CronJobList) ([]batchv1beta1.CronJob, []batchv1beta1.CronJob) { + cronJobList *batchv1.CronJobList) ([]batchv1.CronJob, []batchv1.CronJob) { creatingCronJobObjs := c.getCreatingCronJobs(namespace, teamName, *comp, cronJobList) deletingCronJobObjs := c.getDeletingCronJobs(teamName, *comp, cronJobList) @@ -642,7 +641,7 @@ func (c *controller) EnsureConfigTemplateChanged(config *s2hv1.Config) error { func (c *controller) detectSchedulerChanged(comps map[string]*s2hv1.Component, teamName, namespace string) error { ctx := context.TODO() for _, comp := range comps { - cronJobList := &batchv1beta1.CronJobList{} + cronJobList := &batchv1.CronJobList{} componentLabel := labels.SelectorFromSet(map[string]string{"component": comp.Name}) listOption := &client.ListOptions{Namespace: namespace, LabelSelector: componentLabel} err := c.client.List(ctx, cronJobList, listOption) diff --git a/internal/config/controller_test.go b/internal/config/controller_test.go index 6decd47d..3bf61015 100644 --- a/internal/config/controller_test.go +++ b/internal/config/controller_test.go @@ -6,7 +6,6 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" batchv1 "k8s.io/api/batch/v1" - batchv1beta1 "k8s.io/api/batch/v1beta1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -186,25 +185,25 @@ wordpress: redisCronJobName := redisConfigComp.Name + "-checker-0x11xxx" redisCronJobLabels := mockController.getCronJobLabels(redisCronJobName, teamTest, redisCompName) - mockCronJobs := &batchv1beta1.CronJobList{ + mockCronJobs := &batchv1.CronJobList{ TypeMeta: metav1.TypeMeta{}, ListMeta: metav1.ListMeta{}, - Items: []batchv1beta1.CronJob{ + Items: []batchv1.CronJob{ { TypeMeta: metav1.TypeMeta{ Kind: "Cronjob", - APIVersion: "batch/v1beta1", + APIVersion: "batch/v1", }, ObjectMeta: metav1.ObjectMeta{ Name: redisCronJobName, Namespace: namespaceTest, Labels: redisCronJobLabels, }, - Spec: batchv1beta1.CronJobSpec{ + Spec: batchv1.CronJobSpec{ SuccessfulJobsHistoryLimit: &successfulJobsHistoryLimit, Schedule: "0 11 * * *", - ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, - JobTemplate: batchv1beta1.JobTemplateSpec{ + ConcurrencyPolicy: batchv1.ForbidConcurrent, + JobTemplate: batchv1.JobTemplateSpec{ Spec: batchv1.JobSpec{ Template: corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ @@ -238,18 +237,18 @@ wordpress: cronJobLabels05 := mockController.getCronJobLabels(cronJobName05, teamTest, redisConfigComp.Name) g.Expect(cronJobName04).To(Equal("redis-checker-0x4xxx")) g.Expect(cronJobName05).To(Equal("redis-checker-e5x2n3xxx")) - expectedCronjob := []batchv1beta1.CronJob{ + expectedCronjob := []batchv1.CronJob{ { ObjectMeta: metav1.ObjectMeta{ Name: cronJobName04, Namespace: namespaceTest, Labels: cronJobLabels04, }, - Spec: batchv1beta1.CronJobSpec{ + Spec: batchv1.CronJobSpec{ SuccessfulJobsHistoryLimit: &successfulJobsHistoryLimit, Schedule: "0 4 * * *", - ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, - JobTemplate: batchv1beta1.JobTemplateSpec{ + ConcurrencyPolicy: batchv1.ForbidConcurrent, + JobTemplate: batchv1.JobTemplateSpec{ Spec: batchv1.JobSpec{ Template: corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ @@ -277,11 +276,11 @@ wordpress: Namespace: namespaceTest, Labels: cronJobLabels05, }, - Spec: batchv1beta1.CronJobSpec{ + Spec: batchv1.CronJobSpec{ SuccessfulJobsHistoryLimit: &successfulJobsHistoryLimit, Schedule: "*/5 2,3 * * *", - ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, - JobTemplate: batchv1beta1.JobTemplateSpec{ + ConcurrencyPolicy: batchv1.ForbidConcurrent, + JobTemplate: batchv1.JobTemplateSpec{ Spec: batchv1.JobSpec{ Template: corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ diff --git a/test/e2e/samsahai/ctrl.go b/test/e2e/samsahai/ctrl.go index 3142ae6e..94bc0555 100644 --- a/test/e2e/samsahai/ctrl.go +++ b/test/e2e/samsahai/ctrl.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + batchv1 "k8s.io/api/batch/v1" "net/http" "net/http/httptest" "os" @@ -13,7 +14,6 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/tidwall/gjson" - batchv1beta1 "k8s.io/api/batch/v1beta1" corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/errors" @@ -1715,7 +1715,7 @@ var _ = Describe("[e2e] Main controller", func() { By("Verifying CronJob have been created") err = wait.PollImmediate(verifyTime1s, verifyTime10s, func() (ok bool, err error) { - cronjobList := &batchv1beta1.CronJobList{} + cronjobList := &batchv1.CronJobList{} cronjobLabel := labels.SelectorFromSet(map[string]string{"component": configRedis.Spec.Components[0].Name}) listOption := &rclient.ListOptions{Namespace: stgNamespace, LabelSelector: cronjobLabel} if err := client.List(ctx, cronjobList, listOption); err != nil { @@ -1737,7 +1737,7 @@ var _ = Describe("[e2e] Main controller", func() { By("Verifying CronJob should be deleted") err = wait.PollImmediate(verifyTime1s, verifyTime10s, func() (ok bool, err error) { - cronjobList := &batchv1beta1.CronJobList{} + cronjobList := &batchv1.CronJobList{} cronjobLabel := labels.SelectorFromSet(map[string]string{"component": configRedis.Spec.Components[0].Name}) listOption := &rclient.ListOptions{Namespace: stgNamespace, LabelSelector: cronjobLabel} if err := client.List(ctx, cronjobList, listOption); err != nil { From 57f53ce8a0df0b30af4b24ee23e4891fc000da8c Mon Sep 17 00:00:00 2001 From: npetchapan Date: Sun, 17 Dec 2023 20:09:52 +0700 Subject: [PATCH 03/20] fix: update apiextension from v1beta1 to v1 --- test/data/crds/env.samsahai.io_activepromotionhistories.yaml | 2 +- test/data/crds/env.samsahai.io_activepromotions.yaml | 2 +- test/data/crds/env.samsahai.io_configs.yaml | 2 +- test/data/crds/env.samsahai.io_desiredcomponents.yaml | 2 +- test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml | 2 +- test/data/crds/env.samsahai.io_pullrequestqueues.yaml | 2 +- test/data/crds/env.samsahai.io_pullrequesttriggers.yaml | 2 +- test/data/crds/env.samsahai.io_queuehistories.yaml | 2 +- test/data/crds/env.samsahai.io_queues.yaml | 2 +- test/data/crds/env.samsahai.io_stablecomponents.yaml | 2 +- test/data/crds/env.samsahai.io_teams.yaml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/test/data/crds/env.samsahai.io_activepromotionhistories.yaml b/test/data/crds/env.samsahai.io_activepromotionhistories.yaml index c8d12036..c0b6034d 100644 --- a/test/data/crds/env.samsahai.io_activepromotionhistories.yaml +++ b/test/data/crds/env.samsahai.io_activepromotionhistories.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_activepromotions.yaml b/test/data/crds/env.samsahai.io_activepromotions.yaml index 8adf486b..091cc0e8 100644 --- a/test/data/crds/env.samsahai.io_activepromotions.yaml +++ b/test/data/crds/env.samsahai.io_activepromotions.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_configs.yaml b/test/data/crds/env.samsahai.io_configs.yaml index fa3871e6..1afe7abd 100644 --- a/test/data/crds/env.samsahai.io_configs.yaml +++ b/test/data/crds/env.samsahai.io_configs.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_desiredcomponents.yaml b/test/data/crds/env.samsahai.io_desiredcomponents.yaml index bcf1d275..5b7465cf 100644 --- a/test/data/crds/env.samsahai.io_desiredcomponents.yaml +++ b/test/data/crds/env.samsahai.io_desiredcomponents.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml b/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml index 2344f979..eeae16df 100644 --- a/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml +++ b/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_pullrequestqueues.yaml b/test/data/crds/env.samsahai.io_pullrequestqueues.yaml index 97526020..f029e0ed 100644 --- a/test/data/crds/env.samsahai.io_pullrequestqueues.yaml +++ b/test/data/crds/env.samsahai.io_pullrequestqueues.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml b/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml index 87ebef9f..9285666b 100644 --- a/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml +++ b/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_queuehistories.yaml b/test/data/crds/env.samsahai.io_queuehistories.yaml index 32724082..c8c93cf3 100644 --- a/test/data/crds/env.samsahai.io_queuehistories.yaml +++ b/test/data/crds/env.samsahai.io_queuehistories.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_queues.yaml b/test/data/crds/env.samsahai.io_queues.yaml index d729a939..ae6be643 100644 --- a/test/data/crds/env.samsahai.io_queues.yaml +++ b/test/data/crds/env.samsahai.io_queues.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_stablecomponents.yaml b/test/data/crds/env.samsahai.io_stablecomponents.yaml index 51124367..f01688d2 100644 --- a/test/data/crds/env.samsahai.io_stablecomponents.yaml +++ b/test/data/crds/env.samsahai.io_stablecomponents.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: diff --git a/test/data/crds/env.samsahai.io_teams.yaml b/test/data/crds/env.samsahai.io_teams.yaml index e2894d56..2364e682 100644 --- a/test/data/crds/env.samsahai.io_teams.yaml +++ b/test/data/crds/env.samsahai.io_teams.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: From a7a893109be049b6e93ee8f4965561b4662c219b Mon Sep 17 00:00:00 2001 From: npetchapan Date: Sun, 17 Dec 2023 20:10:06 +0700 Subject: [PATCH 04/20] fix: remove psp --- internal/samsahai/k8sobject/object.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/internal/samsahai/k8sobject/object.go b/internal/samsahai/k8sobject/object.go index 23dd3a19..c599752c 100644 --- a/internal/samsahai/k8sobject/object.go +++ b/internal/samsahai/k8sobject/object.go @@ -456,15 +456,6 @@ func GetClusterRole(teamComp *s2hv1.Team, namespace string) client.Object { }, Verbs: []string{"*"}, }, - { - APIGroups: []string{ - "policy", - }, - Resources: []string{ - "podsecuritypolicies", - }, - Verbs: []string{"get", "list", "watch", "create", "update", "patch", "delete"}, - }, }, } From 102b353d5ba10ac9a1b717e90da21fa4bc06829f Mon Sep 17 00:00:00 2001 From: npetchapan Date: Sun, 17 Dec 2023 20:10:46 +0700 Subject: [PATCH 05/20] fix: update ingress from extensionv1beta1 to networkv1 --- internal/samsahai/controller.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/samsahai/controller.go b/internal/samsahai/controller.go index d58b5b60..537af245 100644 --- a/internal/samsahai/controller.go +++ b/internal/samsahai/controller.go @@ -13,7 +13,7 @@ import ( "github.com/imdario/mergo" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - "k8s.io/api/extensions/v1beta1" + networkv1 "k8s.io/api/networking/v1" rbacv1 "k8s.io/api/rbac/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -993,7 +993,7 @@ func (c *controller) GetConnections(namespace string) (map[string][]internal.Con if err != nil { return nil, errors.Wrap(err, "cannot list services") } - ingresses := v1beta1.IngressList{} + ingresses := networkv1.IngressList{} err = c.client.List(ctx, &ingresses, &client.ListOptions{Namespace: namespace}) if err != nil { return nil, errors.Wrap(err, "cannot list ingresses") @@ -1040,7 +1040,7 @@ func (c *controller) GetConnections(namespace string) (map[string][]internal.Con var port *corev1.ServicePort // find match service for _, path := range rule.HTTP.Paths { - key := fmt.Sprintf("%s,%s", path.Backend.ServiceName, path.Backend.ServicePort.String()) + key := fmt.Sprintf("%s,%s", path.Backend.Service.Name, path.Backend.Service.Port.String()) if _, ok := servicesAndPorts[key]; ok { port = servicesAndPorts[key] break From 5d6e5c3e33b11d85a7b553501339dadb0f6efa3f Mon Sep 17 00:00:00 2001 From: npetchapan Date: Sun, 17 Dec 2023 20:12:59 +0700 Subject: [PATCH 06/20] fix: update crdversion from v1beta1 to v1 --- Makefile | 2 +- docs/docs.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 4e9d205f..fe7d26ad 100644 --- a/Makefile +++ b/Makefile @@ -487,7 +487,7 @@ CONTROLLER_GEN=$(GO) run $$GOPATH/pkg/mod/github.com/phantomnat/controller-tools manifests: controller-gen $(GO) get sigs.k8s.io/controller-tools $(CONTROLLER_GEN) $(CRD_OPTIONS) paths="./..." crd:crdVersions=v1 output:crd:artifacts:config=config/crds output:none - $(CONTROLLER_GEN) $(CRD_OPTIONS) paths="./..." crd:crdVersions=v1beta1 output:crd:artifacts:config=test/data/crds output:none + $(CONTROLLER_GEN) $(CRD_OPTIONS) paths="./..." crd:crdVersions=v1 output:crd:artifacts:config=test/data/crds output:none # Generate code generate: controller-gen diff --git a/docs/docs.go b/docs/docs.go index dacb64b5..c9307aec 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,6 +1,6 @@ // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT // This file was generated by swaggo/swag at -// 2022-10-27 17:25:07.465703 +0700 +07 m=+0.264431515 +// 2023-12-17 20:06:20.643472 +0700 +07 m=+0.985919626 package docs From c42b6cda106fb62bdabecc440d7939bedf22e2c6 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 21 Dec 2023 17:15:40 +0700 Subject: [PATCH 07/20] fix: upgrade dep version GOLANGCI_LINT_VERSION, K3S_DOCKER_IMAGE, K8S_VERSION --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index fe7d26ad..da289a8d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ GITHUB_API_URL ?= https://api.github.com GITHUB_TOKEN ?= GITHUB_REPO ?= agoda-com/samsahai GO_VERSION ?= 1.17.2 -GOLANGCI_LINT_VERSION ?= 1.41.1 +GOLANGCI_LINT_VERSION ?= 1.55.2 GO ?= go @@ -21,11 +21,11 @@ KUBEBUILDER_VERSION ?= 2.2.0 KUBEBULIDER_FILENAME = kubebuilder_$(KUBEBUILDER_VERSION)_$(OS)_$(ARCH) KUBEBUILDER_PATH ?= /usr/local/kubebuilder/ GORELEASER_VERSION ?= 0.124.1 -K3S_DOCKER_IMAGE ?= rancher/k3s:v1.20.11-k3s2 +K3S_DOCKER_IMAGE ?= rancher/k3s:v1.22.17+k3s1 KUBECONFIG = /tmp/s2h/k3s-kubeconfig K3S_DOCKER_NAME ?= s2h-k3s-server K3S_PORT ?= 6443 -K8S_VERSION ?= 1.21.0 +K8S_VERSION ?= 1.22.0 KUSTOMIZE_VERSION ?= 3.8.6 HELM_VERSION ?= 3.6.3 POD_NAMESPACE ?= default @@ -160,8 +160,8 @@ prepare-env-e2e: $(KUBECTL) -n kube-system wait pods -l k8s-app=kube-dns --for=condition=Ready --timeout=5m; \ until $(KUBECTL) -n kube-system get pods -l app=svclb-traefik 2>&1 | grep -iv "no resources found" >/dev/null; do sleep 1; done; \ $(KUBECTL) -n kube-system wait pods -l app=svclb-traefik --for=condition=Ready --timeout=5m; \ - until $(KUBECTL) -n kube-system get pods -l app=traefik 2>&1 | grep -iv "no resources found" >/dev/null; do sleep 1; done; \ - $(KUBECTL) -n kube-system wait pods -l app=traefik --for=condition=Ready --timeout=5m; \ + until $(KUBECTL) -n kube-system get pods -l app.kubernetes.io/name=traefik 2>&1 | grep -iv "no resources found" >/dev/null; do sleep 1; done; \ + $(KUBECTL) -n kube-system wait pods -l app.kubernetes.io/name=traefik --for=condition=Ready --timeout=5m; \ $(KUBECTL) create ns samsahai-system || echo 'namespace "samsahai-system" already exist'; \ \ \ From 291ba59efca5275cc04d51c10df8126bc1f7a54c Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 21 Dec 2023 17:18:50 +0700 Subject: [PATCH 08/20] fix: generate controller-gen --- api/v1/config_types.go | 2 +- ....samsahai.io_activepromotionhistories.yaml | 2 +- .../env.samsahai.io_activepromotions.yaml | 2 +- config/crds/env.samsahai.io_configs.yaml | 2 +- .../env.samsahai.io_desiredcomponents.yaml | 2 +- ...samsahai.io_pullrequestqueuehistories.yaml | 2 +- .../env.samsahai.io_pullrequestqueues.yaml | 2 +- .../env.samsahai.io_pullrequesttriggers.yaml | 2 +- .../crds/env.samsahai.io_queuehistories.yaml | 2 +- config/crds/env.samsahai.io_queues.yaml | 2 +- .../env.samsahai.io_stablecomponents.yaml | 2 +- config/crds/env.samsahai.io_teams.yaml | 2 +- docs/docs.go | 2 +- .../deployment/util/deploymentutil.go | 6 +- internal/util/stringutils/stringutils.go | 2 - pkg/samsahai/rpc/service.twirp.go | 52 +- pkg/staging/rpc/service.twirp.go | 20 +- ....samsahai.io_activepromotionhistories.yaml | 801 ++-- .../env.samsahai.io_activepromotions.yaml | 700 ++-- test/data/crds/env.samsahai.io_configs.yaml | 3274 +++++++++-------- .../env.samsahai.io_desiredcomponents.yaml | 89 +- ...samsahai.io_pullrequestqueuehistories.yaml | 1028 +++--- .../env.samsahai.io_pullrequestqueues.yaml | 936 ++--- .../env.samsahai.io_pullrequesttriggers.yaml | 324 +- .../crds/env.samsahai.io_queuehistories.yaml | 676 ++-- test/data/crds/env.samsahai.io_queues.yaml | 513 +-- .../env.samsahai.io_stablecomponents.yaml | 97 +- test/data/crds/env.samsahai.io_teams.yaml | 925 ++--- 28 files changed, 4754 insertions(+), 4715 deletions(-) diff --git a/api/v1/config_types.go b/api/v1/config_types.go index b41097df..fec8d1b7 100644 --- a/api/v1/config_types.go +++ b/api/v1/config_types.go @@ -784,7 +784,7 @@ func (cs *ConfigStatus) SetCondition(cond ConfigConditionType, status corev1.Con } // +k8s:deepcopy-gen=false -//ComponentValues represents values of a component chart +// ComponentValues represents values of a component chart type ComponentValues map[string]interface{} func (in *ComponentValues) DeepCopyInto(out *ComponentValues) { diff --git a/config/crds/env.samsahai.io_activepromotionhistories.yaml b/config/crds/env.samsahai.io_activepromotionhistories.yaml index 3047811c..309e3929 100644 --- a/config/crds/env.samsahai.io_activepromotionhistories.yaml +++ b/config/crds/env.samsahai.io_activepromotionhistories.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: activepromotionhistories.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_activepromotions.yaml b/config/crds/env.samsahai.io_activepromotions.yaml index 087ad875..244d6f72 100644 --- a/config/crds/env.samsahai.io_activepromotions.yaml +++ b/config/crds/env.samsahai.io_activepromotions.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: activepromotions.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_configs.yaml b/config/crds/env.samsahai.io_configs.yaml index 80c0754f..db630ccf 100644 --- a/config/crds/env.samsahai.io_configs.yaml +++ b/config/crds/env.samsahai.io_configs.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: configs.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_desiredcomponents.yaml b/config/crds/env.samsahai.io_desiredcomponents.yaml index cae3a22c..06e60990 100644 --- a/config/crds/env.samsahai.io_desiredcomponents.yaml +++ b/config/crds/env.samsahai.io_desiredcomponents.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: desiredcomponents.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_pullrequestqueuehistories.yaml b/config/crds/env.samsahai.io_pullrequestqueuehistories.yaml index 7f24ba03..36b2032e 100644 --- a/config/crds/env.samsahai.io_pullrequestqueuehistories.yaml +++ b/config/crds/env.samsahai.io_pullrequestqueuehistories.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: pullrequestqueuehistories.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_pullrequestqueues.yaml b/config/crds/env.samsahai.io_pullrequestqueues.yaml index 2e199024..9d099676 100644 --- a/config/crds/env.samsahai.io_pullrequestqueues.yaml +++ b/config/crds/env.samsahai.io_pullrequestqueues.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: pullrequestqueues.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_pullrequesttriggers.yaml b/config/crds/env.samsahai.io_pullrequesttriggers.yaml index 1fbf5d11..35b2136d 100644 --- a/config/crds/env.samsahai.io_pullrequesttriggers.yaml +++ b/config/crds/env.samsahai.io_pullrequesttriggers.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: pullrequesttriggers.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_queuehistories.yaml b/config/crds/env.samsahai.io_queuehistories.yaml index 7c7761ba..da54cba0 100644 --- a/config/crds/env.samsahai.io_queuehistories.yaml +++ b/config/crds/env.samsahai.io_queuehistories.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: queuehistories.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_queues.yaml b/config/crds/env.samsahai.io_queues.yaml index 5a564c22..2029d551 100644 --- a/config/crds/env.samsahai.io_queues.yaml +++ b/config/crds/env.samsahai.io_queues.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: queues.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_stablecomponents.yaml b/config/crds/env.samsahai.io_stablecomponents.yaml index 5a6a809e..32d7e4e7 100644 --- a/config/crds/env.samsahai.io_stablecomponents.yaml +++ b/config/crds/env.samsahai.io_stablecomponents.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: stablecomponents.env.samsahai.io spec: diff --git a/config/crds/env.samsahai.io_teams.yaml b/config/crds/env.samsahai.io_teams.yaml index 79b60418..deb447e9 100644 --- a/config/crds/env.samsahai.io_teams.yaml +++ b/config/crds/env.samsahai.io_teams.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: teams.env.samsahai.io spec: diff --git a/docs/docs.go b/docs/docs.go index c9307aec..69a835af 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,6 +1,6 @@ // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT // This file was generated by swaggo/swag at -// 2023-12-17 20:06:20.643472 +0700 +07 m=+0.985919626 +// 2023-12-21 17:16:46.483501 +0700 +07 m=+0.216299335 package docs diff --git a/internal/third_party/k8s.io/kubernetes/deployment/util/deploymentutil.go b/internal/third_party/k8s.io/kubernetes/deployment/util/deploymentutil.go index f8d821b3..bf90823d 100644 --- a/internal/third_party/k8s.io/kubernetes/deployment/util/deploymentutil.go +++ b/internal/third_party/k8s.io/kubernetes/deployment/util/deploymentutil.go @@ -92,9 +92,9 @@ func FindNewReplicaSet(deployment *apps.Deployment, rsList []*apps.ReplicaSet) * // EqualIgnoreHash returns true if two given podTemplateSpec are equal, ignoring the diff in value of Labels[pod-template-hash] // We ignore pod-template-hash because: -// 1. The hash result would be different upon podTemplateSpec API changes -// (e.g. the addition of a new field will cause the hash code to change) -// 2. The deployment template won't have hash labels +// 1. The hash result would be different upon podTemplateSpec API changes +// (e.g. the addition of a new field will cause the hash code to change) +// 2. The deployment template won't have hash labels func EqualIgnoreHash(template1, template2 *v1.PodTemplateSpec) bool { t1Copy := template1.DeepCopy() t2Copy := template2.DeepCopy() diff --git a/internal/util/stringutils/stringutils.go b/internal/util/stringutils/stringutils.go index c59ce156..ad79467e 100644 --- a/internal/util/stringutils/stringutils.go +++ b/internal/util/stringutils/stringutils.go @@ -2,9 +2,7 @@ package stringutils import "fmt" -// // Helper functions to check and remove string from a slice of strings. -// func ContainsString(slice []string, s string) bool { for _, item := range slice { if item == s { diff --git a/pkg/samsahai/rpc/service.twirp.go b/pkg/samsahai/rpc/service.twirp.go index 142634d8..73a8ecab 100644 --- a/pkg/samsahai/rpc/service.twirp.go +++ b/pkg/samsahai/rpc/service.twirp.go @@ -1,4 +1,4 @@ -// Code generated by protoc-gen-twirp v8.1.2, DO NOT EDIT. +// Code generated by protoc-gen-twirp v8.1.3, DO NOT EDIT. // source: pkg/samsahai/rpc/service.proto package rpc @@ -6,7 +6,7 @@ package rpc import context "context" import fmt "fmt" import http "net/http" -import ioutil "io/ioutil" +import io "io" import json "encoding/json" import strconv "strconv" import strings "strings" @@ -18,7 +18,6 @@ import ctxsetters "github.com/twitchtv/twirp/ctxsetters" import bytes "bytes" import errors "errors" -import io "io" import path "path" import url "net/url" @@ -1922,7 +1921,7 @@ func (s *rPCServer) serveGetTeamActiveNamespaceProtobuf(ctx context.Context, res return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -2102,7 +2101,7 @@ func (s *rPCServer) serveRunPostComponentUpgradeProtobuf(ctx context.Context, re return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -2282,7 +2281,7 @@ func (s *rPCServer) serveRunPostPullRequestQueueProtobuf(ctx context.Context, re return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -2462,7 +2461,7 @@ func (s *rPCServer) serveRunPostPullRequestTriggerProtobuf(ctx context.Context, return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -2642,7 +2641,7 @@ func (s *rPCServer) serveRunPostPullRequestQueueTestRunnerTriggerProtobuf(ctx co return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -2822,7 +2821,7 @@ func (s *rPCServer) serveGetMissingVersionsProtobuf(ctx context.Context, resp ht return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -3002,7 +3001,7 @@ func (s *rPCServer) serveSendUpdateStateQueueMetricProtobuf(ctx context.Context, return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -3182,7 +3181,7 @@ func (s *rPCServer) serveGetBundleNameProtobuf(ctx context.Context, resp http.Re return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -3362,7 +3361,7 @@ func (s *rPCServer) serveGetPriorityQueuesProtobuf(ctx context.Context, resp htt return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -3542,7 +3541,7 @@ func (s *rPCServer) serveGetPullRequestBundleDependenciesProtobuf(ctx context.Co return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -3722,7 +3721,7 @@ func (s *rPCServer) serveGetPullRequestConfigProtobuf(ctx context.Context, resp return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -3902,7 +3901,7 @@ func (s *rPCServer) serveGetPullRequestComponentSourcesProtobuf(ctx context.Cont return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -4082,7 +4081,7 @@ func (s *rPCServer) serveGetComponentVersionProtobuf(ctx context.Context, resp h return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -4262,7 +4261,7 @@ func (s *rPCServer) serveDeployActiveServicesIntoPullRequestEnvironmentProtobuf( return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -4442,7 +4441,7 @@ func (s *rPCServer) serveCreatePullRequestEnvironmentProtobuf(ctx context.Contex return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -4622,7 +4621,7 @@ func (s *rPCServer) serveDestroyPullRequestEnvironmentProtobuf(ctx context.Conte return } - buf, err := ioutil.ReadAll(req.Body) + buf, err := io.ReadAll(req.Body) if err != nil { s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return @@ -4697,7 +4696,7 @@ func (s *rPCServer) ServiceDescriptor() ([]byte, int) { } func (s *rPCServer) ProtocGenTwirpVersion() string { - return "v8.1.2" + return "v8.1.3" } // PathPrefix returns the base service path, in the form: "//./" @@ -4830,9 +4829,12 @@ func sanitizeBaseURL(baseURL string) string { // baseServicePath composes the path prefix for the service (without ). // e.g.: baseServicePath("/twirp", "my.pkg", "MyService") -// returns => "/twirp/my.pkg.MyService/" +// +// returns => "/twirp/my.pkg.MyService/" +// // e.g.: baseServicePath("", "", "MyService") -// returns => "/MyService/" +// +// returns => "/MyService/" func baseServicePath(prefix, pkg, service string) string { fullServiceName := service if pkg != "" { @@ -4887,7 +4889,7 @@ func newRequest(ctx context.Context, url string, reqBody io.Reader, contentType } req.Header.Set("Accept", contentType) req.Header.Set("Content-Type", contentType) - req.Header.Set("Twirp-Version", "v8.1.2") + req.Header.Set("Twirp-Version", "v8.1.3") return req, nil } @@ -4938,7 +4940,7 @@ func errorFromResponse(resp *http.Response) twirp.Error { return twirpErrorFromIntermediary(statusCode, msg, location) } - respBodyBytes, err := ioutil.ReadAll(resp.Body) + respBodyBytes, err := io.ReadAll(resp.Body) if err != nil { return wrapInternal(err, "failed to read server error response body") } @@ -5138,7 +5140,7 @@ func doProtobufRequest(ctx context.Context, client HTTPClient, hooks *twirp.Clie return ctx, errorFromResponse(resp) } - respBodyBytes, err := ioutil.ReadAll(resp.Body) + respBodyBytes, err := io.ReadAll(resp.Body) if err != nil { return ctx, wrapInternal(err, "failed to read response body") } diff --git a/pkg/staging/rpc/service.twirp.go b/pkg/staging/rpc/service.twirp.go index dd143bf7..2343dd6a 100644 --- a/pkg/staging/rpc/service.twirp.go +++ b/pkg/staging/rpc/service.twirp.go @@ -1,4 +1,4 @@ -// Code generated by protoc-gen-twirp v8.1.2, DO NOT EDIT. +// Code generated by protoc-gen-twirp v8.1.3, DO NOT EDIT. // source: pkg/staging/rpc/service.proto package rpc @@ -6,7 +6,7 @@ package rpc import context "context" import fmt "fmt" import http "net/http" -import ioutil "io/ioutil" +import io "io" import json "encoding/json" import strconv "strconv" import strings "strings" @@ -18,7 +18,6 @@ import ctxsetters "github.com/twitchtv/twirp/ctxsetters" import bytes "bytes" import errors "errors" -import io "io" import path "path" import url "net/url" @@ -226,7 +225,7 @@ func (s *rPCServer) ServiceDescriptor() ([]byte, int) { } func (s *rPCServer) ProtocGenTwirpVersion() string { - return "v8.1.2" + return "v8.1.3" } // PathPrefix returns the base service path, in the form: "//./" @@ -359,9 +358,12 @@ func sanitizeBaseURL(baseURL string) string { // baseServicePath composes the path prefix for the service (without ). // e.g.: baseServicePath("/twirp", "my.pkg", "MyService") -// returns => "/twirp/my.pkg.MyService/" +// +// returns => "/twirp/my.pkg.MyService/" +// // e.g.: baseServicePath("", "", "MyService") -// returns => "/MyService/" +// +// returns => "/MyService/" func baseServicePath(prefix, pkg, service string) string { fullServiceName := service if pkg != "" { @@ -416,7 +418,7 @@ func newRequest(ctx context.Context, url string, reqBody io.Reader, contentType } req.Header.Set("Accept", contentType) req.Header.Set("Content-Type", contentType) - req.Header.Set("Twirp-Version", "v8.1.2") + req.Header.Set("Twirp-Version", "v8.1.3") return req, nil } @@ -467,7 +469,7 @@ func errorFromResponse(resp *http.Response) twirp.Error { return twirpErrorFromIntermediary(statusCode, msg, location) } - respBodyBytes, err := ioutil.ReadAll(resp.Body) + respBodyBytes, err := io.ReadAll(resp.Body) if err != nil { return wrapInternal(err, "failed to read server error response body") } @@ -667,7 +669,7 @@ func doProtobufRequest(ctx context.Context, client HTTPClient, hooks *twirp.Clie return ctx, errorFromResponse(resp) } - respBodyBytes, err := ioutil.ReadAll(resp.Body) + respBodyBytes, err := io.ReadAll(resp.Body) if err != nil { return ctx, wrapInternal(err, "failed to read response body") } diff --git a/test/data/crds/env.samsahai.io_activepromotionhistories.yaml b/test/data/crds/env.samsahai.io_activepromotionhistories.yaml index c0b6034d..309e3929 100644 --- a/test/data/crds/env.samsahai.io_activepromotionhistories.yaml +++ b/test/data/crds/env.samsahai.io_activepromotionhistories.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: activepromotionhistories.env.samsahai.io spec: @@ -15,418 +15,423 @@ spec: plural: activepromotionhistories singular: activepromotionhistory scope: Cluster - validation: - openAPIV3Schema: - description: ActivePromotionHistory is the Schema for the activepromotionhistories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ActivePromotionHistorySpec defines the desired state of ActivePromotionHistory - properties: - activePromotion: - description: ActivePromotion is the Schema for the activepromotions - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the - latest internal value, and may reject unrecognized values. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ActivePromotionSpec defines the desired state of ActivePromotion - properties: - noDowntimeGuarantee: - description: NoDowntimeGuarantee represents a flag for switching - to the new namespace before demoting the active namespace - and guarantees the process will not have a downtime - type: boolean - noOfRetry: - description: NoOfRetry represents how many times this active - promotion process has been run - type: integer - promotedBy: - description: PromotedBy represents a person who promoted the - ActivePromotion - type: string - skipTestRunner: - description: SkipTestRunner represents a flag for skipping running - pre-active test - type: boolean - tearDownDuration: - description: TearDownDuration represents duration before tear - down the previous active namespace - type: string - type: object - status: - description: ActivePromotionStatus defines the observed state of - ActivePromotion - properties: - activeComponents: - additionalProperties: - description: StableComponent is the Schema for the stablecomponents - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema - of this representation of an object. Servers should - convert recognized schemas to the latest internal value, - and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the - REST resource this object represents. Servers may infer - this from the endpoint the client submits requests to. - Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: StableComponentSpec defines the desired state - of StableComponent - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - updatedBy: - description: UpdatedBy represents a person who updated - the StableComponent - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - status: - description: StableComponentStatus defines the observed - state of StableComponent - properties: - createdAt: - format: date-time - type: string - updatedAt: - format: date-time - type: string - type: object - type: object - description: ActiveComponents represents a list of promoted - active components - type: object - activePromotionHistoryName: - description: ActivePromotionHistoryName represents created ActivePromotionHistoryName - name - type: string - conditions: - description: Conditions contains observations of the resource's - state e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - demotionStatus: - description: DemotionStatus represents a status of the active - demotion - type: string - destroyedTime: - description: DestroyedTime represents time at which the previous - active namespace will be destroyed - format: date-time - type: string - hasOutdatedComponent: - description: HasOutdatedComponent defines whether current active - promotion has outdated component or not - type: boolean - isTimeout: - description: IsTimeout defines whether the active promotion - has been timeout or not - type: boolean - message: - description: Message defines details about why the active promotion - is in this condition - type: string - outdatedComponents: - additionalProperties: - description: OutdatedComponent defines properties of outdated - component - properties: - currentImage: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - desiredImage: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - outdatedDuration: - description: A Duration represents the elapsed time between - two instants as an int64 nanosecond count. The representation - limits the largest representable duration to approximately - 290 years. - format: int64 - type: integer - required: - - currentImage - - desiredImage - - outdatedDuration - type: object - description: OutdatedComponents represents map of outdated components - type: object - preActiveQueue: - description: PreActiveQueue represents a pre-active queue status - properties: - conditions: - description: Conditions contains observations of the resource's - state e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when the component - has been added to queue - format: date-time - type: string - deployEngine: - description: DeployEngine represents engine using during - installation - type: string - deploymentIssues: - description: DeploymentIssues defines a list of deployment - issue types - items: - properties: - failureComponents: - description: FailureComponents defines a list of failure - components - items: - properties: - componentName: - description: ComponentName defines a name of - component - type: string - firstFailureContainerName: - description: FirstFailureContainerName defines - a first found failure container name - type: string - nodeName: - description: NodeName defines the node name - of pod - type: string - restartCount: - description: RestartCount defines the number - of times the container has been restarted - format: int32 - type: integer - required: - - componentName - - firstFailureContainerName - - nodeName - - restartCount - type: object - type: array - issueType: - description: IssueType defines a deployment issue - type - type: string - required: - - failureComponents - - issueType - type: object - type: array - imageMissingList: - description: ImageMissingList defines image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - kubeZipLog: - description: KubeZipLog defines log of k8s resources during - deployment in base64 zip format - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process - this queue - format: date-time - type: string - noOfProcessed: - description: NoOfProcessed represents how many time that - this queue had been processed - type: integer - queueHistoryName: - description: QueueHistoryName defines name of history of - this queue - type: string - startDeployTime: - description: StartDeployTime represents the time when this - queue start deploying - format: date-time - type: string - startTestingTime: - description: StartTestingTime represents the time when this - queue start testing - format: date-time - type: string - state: - description: State represents current status of this queue - type: string - testRunners: - description: TestRunner defines the test runner + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ActivePromotionHistory is the Schema for the activepromotionhistories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ActivePromotionHistorySpec defines the desired state of ActivePromotionHistory + properties: + activePromotion: + description: ActivePromotion is the Schema for the activepromotions + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ActivePromotionSpec defines the desired state of + ActivePromotion + properties: + noDowntimeGuarantee: + description: NoDowntimeGuarantee represents a flag for switching + to the new namespace before demoting the active namespace + and guarantees the process will not have a downtime + type: boolean + noOfRetry: + description: NoOfRetry represents how many times this active + promotion process has been run + type: integer + promotedBy: + description: PromotedBy represents a person who promoted the + ActivePromotion + type: string + skipTestRunner: + description: SkipTestRunner represents a flag for skipping + running pre-active test + type: boolean + tearDownDuration: + description: TearDownDuration represents duration before tear + down the previous active namespace + type: string + type: object + status: + description: ActivePromotionStatus defines the observed state + of ActivePromotion + properties: + activeComponents: + additionalProperties: + description: StableComponent is the Schema for the stablecomponents + API properties: - gitlab: + apiVersion: + description: 'APIVersion defines the versioned schema + of this representation of an object. Servers should + convert recognized schemas to the latest internal + value, and may reject unrecognized values. More info: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the + REST resource this object represents. Servers may + infer this from the endpoint the client submits requests + to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: StableComponentSpec defines the desired + state of StableComponent properties: - branch: + name: + description: Name represents Component name type: string - pipelineID: + repository: + description: Repository represents Docker image + repository type: string - pipelineNumber: + updatedBy: + description: UpdatedBy represents a person who updated + the StableComponent type: string - pipelineURL: + version: + description: Version represents Docker image tag + version type: string + required: + - name + - repository + - version type: object - teamcity: + status: + description: StableComponentStatus defines the observed + state of StableComponent properties: - branch: + createdAt: + format: date-time + type: string + updatedAt: + format: date-time type: string - buildID: + type: object + type: object + description: ActiveComponents represents a list of promoted + active components + type: object + activePromotionHistoryName: + description: ActivePromotionHistoryName represents created + ActivePromotionHistoryName name + type: string + conditions: + description: Conditions contains observations of the resource's + state e.g., Queue deployed, being tested + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + demotionStatus: + description: DemotionStatus represents a status of the active + demotion + type: string + destroyedTime: + description: DestroyedTime represents time at which the previous + active namespace will be destroyed + format: date-time + type: string + hasOutdatedComponent: + description: HasOutdatedComponent defines whether current + active promotion has outdated component or not + type: boolean + isTimeout: + description: IsTimeout defines whether the active promotion + has been timeout or not + type: boolean + message: + description: Message defines details about why the active + promotion is in this condition + type: string + outdatedComponents: + additionalProperties: + description: OutdatedComponent defines properties of outdated + component + properties: + currentImage: + properties: + repository: type: string - buildNumber: + tag: type: string - buildTypeID: + required: + - repository + - tag + type: object + desiredImage: + properties: + repository: type: string - buildURL: + tag: type: string + required: + - repository + - tag type: object + outdatedDuration: + description: A Duration represents the elapsed time + between two instants as an int64 nanosecond count. + The representation limits the largest representable + duration to approximately 290 years. + format: int64 + type: integer + required: + - currentImage + - desiredImage + - outdatedDuration type: object - updatedAt: - description: UpdatedAt represents time when the component - was processed - format: date-time - type: string - required: - - kubeZipLog - - queueHistoryName - - state - type: object - previousActiveNamespace: - description: PreviousActiveNamespace represents an active namespace - before promoting - type: string - result: - description: Result represents a result of the active promotion - type: string - rollbackStatus: - description: RollbackStatus represents a status of the rollback - process - type: string - startedAt: - description: StartedAt represents time at which the active promotion - started - format: date-time - type: string - state: - description: ActivePromotionState represents a current state - of the active promotion - type: string - targetNamespace: - description: TargetNamespace represents a pre-active namespace - type: string - updatedAt: - description: UpdatedAt represents time at which the active promotion - finished - format: date-time - type: string - type: object - type: object - createdAt: - description: 'TODO: store values file of all components' - format: date-time - type: string - isSuccess: - type: boolean - teamName: - type: string - type: object - status: - description: ActivePromotionHistoryStatus defines the observed state of - ActivePromotionHistory - type: object - type: object - version: v1 - versions: - - name: v1 + description: OutdatedComponents represents map of outdated + components + type: object + preActiveQueue: + description: PreActiveQueue represents a pre-active queue + status + properties: + conditions: + description: Conditions contains observations of the resource's + state e.g., Queue deployed, being tested + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + createdAt: + description: CreatedAt represents time when the component + has been added to queue + format: date-time + type: string + deployEngine: + description: DeployEngine represents engine using during + installation + type: string + deploymentIssues: + description: DeploymentIssues defines a list of deployment + issue types + items: + properties: + failureComponents: + description: FailureComponents defines a list of + failure components + items: + properties: + componentName: + description: ComponentName defines a name + of component + type: string + firstFailureContainerName: + description: FirstFailureContainerName defines + a first found failure container name + type: string + nodeName: + description: NodeName defines the node name + of pod + type: string + restartCount: + description: RestartCount defines the number + of times the container has been restarted + format: int32 + type: integer + required: + - componentName + - firstFailureContainerName + - nodeName + - restartCount + type: object + type: array + issueType: + description: IssueType defines a deployment issue + type + type: string + required: + - failureComponents + - issueType + type: object + type: array + imageMissingList: + description: ImageMissingList defines image missing lists + items: + properties: + repository: + type: string + tag: + type: string + required: + - repository + - tag + type: object + type: array + kubeZipLog: + description: KubeZipLog defines log of k8s resources during + deployment in base64 zip format + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for + process this queue + format: date-time + type: string + noOfProcessed: + description: NoOfProcessed represents how many time that + this queue had been processed + type: integer + queueHistoryName: + description: QueueHistoryName defines name of history + of this queue + type: string + startDeployTime: + description: StartDeployTime represents the time when + this queue start deploying + format: date-time + type: string + startTestingTime: + description: StartTestingTime represents the time when + this queue start testing + format: date-time + type: string + state: + description: State represents current status of this queue + type: string + testRunners: + description: TestRunner defines the test runner + properties: + gitlab: + properties: + branch: + type: string + pipelineID: + type: string + pipelineNumber: + type: string + pipelineURL: + type: string + type: object + teamcity: + properties: + branch: + type: string + buildID: + type: string + buildNumber: + type: string + buildTypeID: + type: string + buildURL: + type: string + type: object + type: object + updatedAt: + description: UpdatedAt represents time when the component + was processed + format: date-time + type: string + required: + - kubeZipLog + - queueHistoryName + - state + type: object + previousActiveNamespace: + description: PreviousActiveNamespace represents an active + namespace before promoting + type: string + result: + description: Result represents a result of the active promotion + type: string + rollbackStatus: + description: RollbackStatus represents a status of the rollback + process + type: string + startedAt: + description: StartedAt represents time at which the active + promotion started + format: date-time + type: string + state: + description: ActivePromotionState represents a current state + of the active promotion + type: string + targetNamespace: + description: TargetNamespace represents a pre-active namespace + type: string + updatedAt: + description: UpdatedAt represents time at which the active + promotion finished + format: date-time + type: string + type: object + type: object + createdAt: + description: 'TODO: store values file of all components' + format: date-time + type: string + isSuccess: + type: boolean + teamName: + type: string + type: object + status: + description: ActivePromotionHistoryStatus defines the observed state of + ActivePromotionHistory + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_activepromotions.yaml b/test/data/crds/env.samsahai.io_activepromotions.yaml index 091cc0e8..244d6f72 100644 --- a/test/data/crds/env.samsahai.io_activepromotions.yaml +++ b/test/data/crds/env.samsahai.io_activepromotions.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: activepromotions.env.samsahai.io spec: @@ -15,368 +15,372 @@ spec: plural: activepromotions singular: activepromotion scope: Cluster - validation: - openAPIV3Schema: - description: ActivePromotion is the Schema for the activepromotions API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ActivePromotionSpec defines the desired state of ActivePromotion - properties: - noDowntimeGuarantee: - description: NoDowntimeGuarantee represents a flag for switching to - the new namespace before demoting the active namespace and guarantees - the process will not have a downtime - type: boolean - noOfRetry: - description: NoOfRetry represents how many times this active promotion - process has been run - type: integer - promotedBy: - description: PromotedBy represents a person who promoted the ActivePromotion - type: string - skipTestRunner: - description: SkipTestRunner represents a flag for skipping running pre-active - test - type: boolean - tearDownDuration: - description: TearDownDuration represents duration before tear down the - previous active namespace - type: string - type: object - status: - description: ActivePromotionStatus defines the observed state of ActivePromotion - properties: - activeComponents: - additionalProperties: - description: StableComponent is the Schema for the stablecomponents - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: StableComponentSpec defines the desired state of - StableComponent - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - updatedBy: - description: UpdatedBy represents a person who updated the - StableComponent - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - status: - description: StableComponentStatus defines the observed state - of StableComponent - properties: - createdAt: - format: date-time - type: string - updatedAt: - format: date-time - type: string - type: object - type: object - description: ActiveComponents represents a list of promoted active components - type: object - activePromotionHistoryName: - description: ActivePromotionHistoryName represents created ActivePromotionHistoryName - name - type: string - conditions: - description: Conditions contains observations of the resource's state - e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - demotionStatus: - description: DemotionStatus represents a status of the active demotion - type: string - destroyedTime: - description: DestroyedTime represents time at which the previous active - namespace will be destroyed - format: date-time - type: string - hasOutdatedComponent: - description: HasOutdatedComponent defines whether current active promotion - has outdated component or not - type: boolean - isTimeout: - description: IsTimeout defines whether the active promotion has been - timeout or not - type: boolean - message: - description: Message defines details about why the active promotion - is in this condition - type: string - outdatedComponents: - additionalProperties: - description: OutdatedComponent defines properties of outdated component - properties: - currentImage: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - desiredImage: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - outdatedDuration: - description: A Duration represents the elapsed time between two - instants as an int64 nanosecond count. The representation limits - the largest representable duration to approximately 290 years. - format: int64 - type: integer - required: - - currentImage - - desiredImage - - outdatedDuration - type: object - description: OutdatedComponents represents map of outdated components - type: object - preActiveQueue: - description: PreActiveQueue represents a pre-active queue status - properties: - conditions: - description: Conditions contains observations of the resource's - state e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when the component has been - added to queue - format: date-time - type: string - deployEngine: - description: DeployEngine represents engine using during installation - type: string - deploymentIssues: - description: DeploymentIssues defines a list of deployment issue - types - items: - properties: - failureComponents: - description: FailureComponents defines a list of failure components - items: - properties: - componentName: - description: ComponentName defines a name of component - type: string - firstFailureContainerName: - description: FirstFailureContainerName defines a first - found failure container name - type: string - nodeName: - description: NodeName defines the node name of pod - type: string - restartCount: - description: RestartCount defines the number of times - the container has been restarted - format: int32 - type: integer - required: - - componentName - - firstFailureContainerName - - nodeName - - restartCount - type: object - type: array - issueType: - description: IssueType defines a deployment issue type - type: string - required: - - failureComponents - - issueType - type: object - type: array - imageMissingList: - description: ImageMissingList defines image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - kubeZipLog: - description: KubeZipLog defines log of k8s resources during deployment - in base64 zip format - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process this - queue - format: date-time - type: string - noOfProcessed: - description: NoOfProcessed represents how many time that this queue - had been processed - type: integer - queueHistoryName: - description: QueueHistoryName defines name of history of this queue - type: string - startDeployTime: - description: StartDeployTime represents the time when this queue - start deploying - format: date-time - type: string - startTestingTime: - description: StartTestingTime represents the time when this queue - start testing - format: date-time - type: string - state: - description: State represents current status of this queue - type: string - testRunners: - description: TestRunner defines the test runner + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ActivePromotion is the Schema for the activepromotions API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ActivePromotionSpec defines the desired state of ActivePromotion + properties: + noDowntimeGuarantee: + description: NoDowntimeGuarantee represents a flag for switching to + the new namespace before demoting the active namespace and guarantees + the process will not have a downtime + type: boolean + noOfRetry: + description: NoOfRetry represents how many times this active promotion + process has been run + type: integer + promotedBy: + description: PromotedBy represents a person who promoted the ActivePromotion + type: string + skipTestRunner: + description: SkipTestRunner represents a flag for skipping running + pre-active test + type: boolean + tearDownDuration: + description: TearDownDuration represents duration before tear down + the previous active namespace + type: string + type: object + status: + description: ActivePromotionStatus defines the observed state of ActivePromotion + properties: + activeComponents: + additionalProperties: + description: StableComponent is the Schema for the stablecomponents + API properties: - gitlab: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: StableComponentSpec defines the desired state of + StableComponent properties: - branch: + name: + description: Name represents Component name type: string - pipelineID: + repository: + description: Repository represents Docker image repository type: string - pipelineNumber: + updatedBy: + description: UpdatedBy represents a person who updated the + StableComponent type: string - pipelineURL: + version: + description: Version represents Docker image tag version type: string + required: + - name + - repository + - version type: object - teamcity: + status: + description: StableComponentStatus defines the observed state + of StableComponent properties: - branch: + createdAt: + format: date-time + type: string + updatedAt: + format: date-time type: string - buildID: + type: object + type: object + description: ActiveComponents represents a list of promoted active + components + type: object + activePromotionHistoryName: + description: ActivePromotionHistoryName represents created ActivePromotionHistoryName + name + type: string + conditions: + description: Conditions contains observations of the resource's state + e.g., Queue deployed, being tested + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + demotionStatus: + description: DemotionStatus represents a status of the active demotion + type: string + destroyedTime: + description: DestroyedTime represents time at which the previous active + namespace will be destroyed + format: date-time + type: string + hasOutdatedComponent: + description: HasOutdatedComponent defines whether current active promotion + has outdated component or not + type: boolean + isTimeout: + description: IsTimeout defines whether the active promotion has been + timeout or not + type: boolean + message: + description: Message defines details about why the active promotion + is in this condition + type: string + outdatedComponents: + additionalProperties: + description: OutdatedComponent defines properties of outdated component + properties: + currentImage: + properties: + repository: type: string - buildNumber: + tag: type: string - buildTypeID: + required: + - repository + - tag + type: object + desiredImage: + properties: + repository: type: string - buildURL: + tag: type: string + required: + - repository + - tag type: object + outdatedDuration: + description: A Duration represents the elapsed time between + two instants as an int64 nanosecond count. The representation + limits the largest representable duration to approximately + 290 years. + format: int64 + type: integer + required: + - currentImage + - desiredImage + - outdatedDuration type: object - updatedAt: - description: UpdatedAt represents time when the component was processed - format: date-time - type: string - required: - - kubeZipLog - - queueHistoryName - - state - type: object - previousActiveNamespace: - description: PreviousActiveNamespace represents an active namespace - before promoting - type: string - result: - description: Result represents a result of the active promotion - type: string - rollbackStatus: - description: RollbackStatus represents a status of the rollback process - type: string - startedAt: - description: StartedAt represents time at which the active promotion - started - format: date-time - type: string - state: - description: ActivePromotionState represents a current state of the - active promotion - type: string - targetNamespace: - description: TargetNamespace represents a pre-active namespace - type: string - updatedAt: - description: UpdatedAt represents time at which the active promotion - finished - format: date-time - type: string - type: object - type: object - version: v1 - versions: - - name: v1 + description: OutdatedComponents represents map of outdated components + type: object + preActiveQueue: + description: PreActiveQueue represents a pre-active queue status + properties: + conditions: + description: Conditions contains observations of the resource's + state e.g., Queue deployed, being tested + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + createdAt: + description: CreatedAt represents time when the component has + been added to queue + format: date-time + type: string + deployEngine: + description: DeployEngine represents engine using during installation + type: string + deploymentIssues: + description: DeploymentIssues defines a list of deployment issue + types + items: + properties: + failureComponents: + description: FailureComponents defines a list of failure + components + items: + properties: + componentName: + description: ComponentName defines a name of component + type: string + firstFailureContainerName: + description: FirstFailureContainerName defines a first + found failure container name + type: string + nodeName: + description: NodeName defines the node name of pod + type: string + restartCount: + description: RestartCount defines the number of times + the container has been restarted + format: int32 + type: integer + required: + - componentName + - firstFailureContainerName + - nodeName + - restartCount + type: object + type: array + issueType: + description: IssueType defines a deployment issue type + type: string + required: + - failureComponents + - issueType + type: object + type: array + imageMissingList: + description: ImageMissingList defines image missing lists + items: + properties: + repository: + type: string + tag: + type: string + required: + - repository + - tag + type: object + type: array + kubeZipLog: + description: KubeZipLog defines log of k8s resources during deployment + in base64 zip format + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process + this queue + format: date-time + type: string + noOfProcessed: + description: NoOfProcessed represents how many time that this + queue had been processed + type: integer + queueHistoryName: + description: QueueHistoryName defines name of history of this + queue + type: string + startDeployTime: + description: StartDeployTime represents the time when this queue + start deploying + format: date-time + type: string + startTestingTime: + description: StartTestingTime represents the time when this queue + start testing + format: date-time + type: string + state: + description: State represents current status of this queue + type: string + testRunners: + description: TestRunner defines the test runner + properties: + gitlab: + properties: + branch: + type: string + pipelineID: + type: string + pipelineNumber: + type: string + pipelineURL: + type: string + type: object + teamcity: + properties: + branch: + type: string + buildID: + type: string + buildNumber: + type: string + buildTypeID: + type: string + buildURL: + type: string + type: object + type: object + updatedAt: + description: UpdatedAt represents time when the component was + processed + format: date-time + type: string + required: + - kubeZipLog + - queueHistoryName + - state + type: object + previousActiveNamespace: + description: PreviousActiveNamespace represents an active namespace + before promoting + type: string + result: + description: Result represents a result of the active promotion + type: string + rollbackStatus: + description: RollbackStatus represents a status of the rollback process + type: string + startedAt: + description: StartedAt represents time at which the active promotion + started + format: date-time + type: string + state: + description: ActivePromotionState represents a current state of the + active promotion + type: string + targetNamespace: + description: TargetNamespace represents a pre-active namespace + type: string + updatedAt: + description: UpdatedAt represents time at which the active promotion + finished + format: date-time + type: string + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_configs.yaml b/test/data/crds/env.samsahai.io_configs.yaml index 1afe7abd..db630ccf 100644 --- a/test/data/crds/env.samsahai.io_configs.yaml +++ b/test/data/crds/env.samsahai.io_configs.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: configs.env.samsahai.io spec: @@ -15,336 +15,960 @@ spec: plural: configs singular: config scope: Cluster - validation: - openAPIV3Schema: - description: Config is the Schema for the configs API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ConfigSpec defines the desired state of Config - properties: - activePromotion: - description: ActivePromotion represents configuration about active promotion - properties: - demotionTimeout: - description: DemotionTimeout defines maximum duration for doing - active demotion - type: string - deployment: - description: Deployment represents configuration about deploy + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Config is the Schema for the configs API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConfigSpec defines the desired state of Config + properties: + activePromotion: + description: ActivePromotion represents configuration about active + promotion + properties: + demotionTimeout: + description: DemotionTimeout defines maximum duration for doing + active demotion + type: string + deployment: + description: Deployment represents configuration about deploy + properties: + componentCleanupTimeout: + description: ComponentCleanupTimeout defines timeout duration + of component cleaning up + type: string + engine: + description: "Engine defines method of deploying \n mock - + for test only, always return success \n helm3 - deploy chart + with helm3" + type: string + testRunner: + description: TestRunner represents configuration about test + properties: + gitlab: + description: ConfigGitlab defines a http rest configuration + of gitlab + properties: + branch: + type: string + inferBranch: + description: 'InferBranch is for Pull Request''s testRunner + on gitlab. If true, samsahai will try to infer the + testRunner branch name from the gitlab MR associated + with the PR flow if branch is empty [default: true].' + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + required: + - pipelineTriggerToken + - projectID + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcity defines a http rest configuration + of teamcity + properties: + branch: + type: string + buildTypeID: + type: string + required: + - branch + - buildTypeID + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + timeout: + description: Timeout defines maximum duration for deploying + environment + type: string + type: object + maxHistories: + description: MaxHistories defines maximum length of ActivePromotionHistory + stored per team + type: integer + maxRetry: + description: MaxRetry defines max retry counts of active promotion + process in case failure + type: integer + noDowntimeGuarantee: + description: NoDowntimeGuarantee defines a flag for switching + to the new namespace before demoting the active namespace and + guarantees the process will not have a downtime + type: boolean + outdatedNotification: + description: OutdatedNotification defines a configuration of outdated + notification + properties: + exceedDuration: + type: string + excludeWeekendCalculation: + type: boolean + type: object + rollbackTimeout: + description: RollbackTimeout defines maximum duration for rolling + back active promotion + type: string + tearDownDuration: + description: TearDownDuration defines duration before teardown + the previous active namespace + type: string + timeout: + description: Timeout defines maximum duration for doing active + promotion + type: string + type: object + bundles: + additionalProperties: + items: + type: string + type: array + description: Bundles represents a group of component for each bundle + type: object + components: + description: Components represents all components that are managed + items: + description: Component represents a chart of component and it's + dependencies properties: - componentCleanupTimeout: - description: ComponentCleanupTimeout defines timeout duration - of component cleaning up - type: string - engine: - description: "Engine defines method of deploying \n mock - for - test only, always return success \n helm3 - deploy chart with - helm3" - type: string - testRunner: - description: TestRunner represents configuration about test + chart: + description: ComponentChart represents a chart repository, name + and version properties: - gitlab: - description: ConfigGitlab defines a http rest configuration - of gitlab - properties: - branch: - type: string - inferBranch: - description: 'InferBranch is for Pull Request''s testRunner - on gitlab. If true, samsahai will try to infer the - testRunner branch name from the gitlab MR associated - with the PR flow if branch is empty [default: true].' - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - required: - - pipelineTriggerToken - - projectID - type: object - pollingTime: + name: type: string - teamcity: - description: ConfigTeamcity defines a http rest configuration - of teamcity - properties: - branch: - type: string - buildTypeID: + repository: + type: string + version: + type: string + required: + - name + - repository + type: object + dependencies: + items: + description: Dependency represents a chart of dependency + properties: + chart: + description: ComponentChart represents a chart repository, + name and version + properties: + name: + type: string + repository: + type: string + version: + type: string + required: + - name + - repository + type: object + image: + description: ComponentImage represents an image repository, + tag and pattern which is a regex of tag + properties: + pattern: + type: string + repository: + type: string + tag: + type: string + required: + - repository + type: object + name: + type: string + parent: + type: string + schedules: + items: type: string - required: - - branch - - buildTypeID - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: + type: array + source: + description: UpdatingSource represents source for checking + desired version of components + type: string + values: + description: ComponentValues represents values of a component + chart + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - name + type: object + type: array + image: + description: ComponentImage represents an image repository, + tag and pattern which is a regex of tag + properties: + pattern: + type: string + repository: type: string + tag: + type: string + required: + - repository type: object - timeout: - description: Timeout defines maximum duration for deploying - environment + name: + type: string + parent: + type: string + schedules: + items: + type: string + type: array + source: + description: UpdatingSource represents source for checking desired + version of components type: string + values: + description: ComponentValues represents values of a component + chart + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - chart + - name type: object - maxHistories: - description: MaxHistories defines maximum length of ActivePromotionHistory - stored per team - type: integer - maxRetry: - description: MaxRetry defines max retry counts of active promotion - process in case failure - type: integer - noDowntimeGuarantee: - description: NoDowntimeGuarantee defines a flag for switching to - the new namespace before demoting the active namespace and guarantees - the process will not have a downtime - type: boolean - outdatedNotification: - description: OutdatedNotification defines a configuration of outdated - notification - properties: - exceedDuration: + type: array + envs: + additionalProperties: + additionalProperties: + items: type: string - excludeWeekendCalculation: - type: boolean + type: array + description: ChartValuesURLs represents values file URL of each + chart type: object - rollbackTimeout: - description: RollbackTimeout defines maximum duration for rolling - back active promotion - type: string - tearDownDuration: - description: TearDownDuration defines duration before teardown the - previous active namespace - type: string - timeout: - description: Timeout defines maximum duration for doing active promotion - type: string - type: object - bundles: - additionalProperties: + description: Envs represents urls of values file per environments + ordering by less priority to high priority + type: object + priorityQueues: + description: PriorityQueues represents a list of bundles/components' + name which needs to be prioritized the first one has the highest + priority and the last one has the lowest priority items: type: string type: array - description: Bundles represents a group of component for each bundle - type: object - components: - description: Components represents all components that are managed - items: - description: Component represents a chart of component and it's dependencies + pullRequest: + description: PullRequest represents configuration about pull request properties: - chart: - description: ComponentChart represents a chart repository, name - and version - properties: - name: - type: string - repository: - type: string - version: - type: string - required: - - name - - repository - type: object - dependencies: + bundles: + description: Bundles represents a bundle of pull request components + configuration items: - description: Dependency represents a chart of dependency + description: PullRequestBundle represents a bundle of pull request + components configuration properties: - chart: - description: ComponentChart represents a chart repository, - name and version + components: + description: Components represents a list of pull request + components which are deployed together as a bundle + items: + description: PullRequestComponent represents a pull request + component configuration + properties: + image: + description: Image defines an image repository, tag + and pattern of pull request component which is a + regex of tag + properties: + pattern: + type: string + repository: + type: string + tag: + type: string + required: + - repository + type: object + maxRetry: + description: MaxRetry defines max retry counts of + pull request component upgrade + type: integer + name: + description: Name defines a main component name which + is deployed per pull request + type: string + resources: + additionalProperties: + type: string + description: Resources represents how many resources + of pull request namespace + type: object + source: + description: Source defines a source for image repository + type: string + tearDownDuration: + description: TearDownDuration defines duration before + teardown the pull request components + properties: + criteria: + description: Criteria tells how does the duration + apply, default is `failure`. + type: string + duration: + description: Duration tells how much the staging + controller will wait before destroying the pull + request namespace + type: string + required: + - duration + type: object + required: + - name + type: object + type: array + dependencies: + description: Dependencies defines a list of components which + are required to be deployed together with the main component + items: + type: string + type: array + deployment: + description: Deployment represents configuration about deploy properties: - name: + componentCleanupTimeout: + description: ComponentCleanupTimeout defines timeout + duration of component cleaning up type: string - repository: + engine: + description: "Engine defines method of deploying \n + mock - for test only, always return success \n helm3 + - deploy chart with helm3" type: string - version: + testRunner: + description: TestRunner represents configuration about + test + properties: + gitlab: + description: ConfigGitlab defines a http rest configuration + of gitlab + properties: + branch: + type: string + inferBranch: + description: 'InferBranch is for Pull Request''s + testRunner on gitlab. If true, samsahai will + try to infer the testRunner branch name from + the gitlab MR associated with the PR flow + if branch is empty [default: true].' + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + required: + - pipelineTriggerToken + - projectID + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcity defines a http rest + configuration of teamcity + properties: + branch: + type: string + buildTypeID: + type: string + required: + - branch + - buildTypeID + type: object + testMock: + description: ConfigTestMock defines a result of + testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + timeout: + description: Timeout defines maximum duration for deploying + environment type: string - required: - - name - - repository type: object - image: - description: ComponentImage represents an image repository, - tag and pattern which is a regex of tag + gitProjectID: + description: GitProjectID represents a git repository project + id used for publishing test runner status to Gitlab + type: string + gitRepository: + description: GitRepository represents a string of git repository + "/" e.g., agoda-com/samsahai used for + publishing commit status + type: string + maxRetry: + description: MaxRetry defines max retry counts of pull request + component upgrade + type: integer + name: + description: Name defines a bundle component name, can be + any name + type: string + resources: + additionalProperties: + type: string + description: Resources represents how many resources of + pull request namespace + type: object + tearDownDuration: + description: TearDownDuration defines duration before teardown + the pull request components properties: - pattern: - type: string - repository: + criteria: + description: Criteria tells how does the duration apply, + default is `failure`. type: string - tag: + duration: + description: Duration tells how much the staging controller + will wait before destroying the pull request namespace type: string required: - - repository - type: object - name: - type: string - parent: - type: string - schedules: - items: - type: string - type: array - source: - description: UpdatingSource represents source for checking - desired version of components - type: string - values: - description: ComponentValues represents values of a component - chart + - duration type: object - x-kubernetes-preserve-unknown-fields: true required: + - components - name type: object type: array - image: - description: ComponentImage represents an image repository, tag - and pattern which is a regex of tag + concurrences: + description: Concurrences defines a parallel number of pull request + queue + type: integer + maxHistoryDays: + description: MaxHistoryDays defines maximum days of PullRequestQueueHistory + stored + type: integer + maxRetry: + description: MaxRetry defines max retry counts of pull request + component upgrade + type: integer + resources: + additionalProperties: + type: string + description: Resources represents how many resources of pull request + namespace + type: object + tearDownDuration: + description: TearDownDuration defines duration before teardown + the pull request components properties: - pattern: + criteria: + description: Criteria tells how does the duration apply, default + is `failure`. type: string - repository: - type: string - tag: + duration: + description: Duration tells how much the staging controller + will wait before destroying the pull request namespace type: string required: - - repository + - duration type: object - name: - type: string - parent: - type: string - schedules: - items: - type: string - type: array - source: - description: UpdatingSource represents source for checking desired - version of components - type: string - values: - description: ComponentValues represents values of a component - chart + trigger: + description: Trigger represents a pull request trigger configuration + properties: + maxRetry: + description: MaxRetry defines max retry counts of pull request + trigger if cannot find image in the registry + type: integer + pollingTime: + description: PollingTime defines a waiting duration time to + re-check the pull request image in the registry + type: string type: object - x-kubernetes-preserve-unknown-fields: true - required: - - chart - - name type: object - type: array - envs: - additionalProperties: - additionalProperties: - items: - type: string - type: array - description: ChartValuesURLs represents values file URL of each chart - type: object - description: Envs represents urls of values file per environments ordering - by less priority to high priority - type: object - priorityQueues: - description: PriorityQueues represents a list of bundles/components' - name which needs to be prioritized the first one has the highest priority - and the last one has the lowest priority - items: - type: string - type: array - pullRequest: - description: PullRequest represents configuration about pull request - properties: - bundles: - description: Bundles represents a bundle of pull request components - configuration - items: - description: PullRequestBundle represents a bundle of pull request - components configuration + report: + description: Reporter represents configuration about reporter + properties: + cmd: + description: ReporterShell defines a configuration of shell command properties: - components: - description: Components represents a list of pull request - components which are deployed together as a bundle - items: - description: PullRequestComponent represents a pull request - component configuration - properties: - image: - description: Image defines an image repository, tag - and pattern of pull request component which is a regex - of tag - properties: - pattern: - type: string - repository: - type: string - tag: - type: string - required: - - repository - type: object - maxRetry: - description: MaxRetry defines max retry counts of pull - request component upgrade - type: integer - name: - description: Name defines a main component name which - is deployed per pull request + activeEnvironmentDeleted: + description: CommandAndArgs defines commands and args + properties: + args: + items: type: string - resources: - additionalProperties: - type: string - description: Resources represents how many resources - of pull request namespace - type: object - source: - description: Source defines a source for image repository + type: array + command: + items: + type: string + type: array + required: + - command + type: object + activePromotion: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command + type: object + componentUpgrade: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command + type: object + imageMissing: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command + type: object + pullRequestQueue: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command + type: object + pullRequestTrigger: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command + type: object + type: object + github: + description: ReporterGithub defines a configuration of github + reporter supports pull request queue reporter type only + properties: + baseURL: + description: BaseURL represents a github base url e.g., https://github.com + type: string + enabled: + description: Enabled represents an enabled flag + type: boolean + type: object + gitlab: + description: ReporterGitlab defines a configuration of gitlab + reporter supports pull request queue reporter type only + properties: + baseURL: + description: BaseURL represents a gitlab base url e.g., https://gitlab.com + type: string + enabled: + description: Enabled represents an enabled flag + type: boolean + type: object + msTeams: + description: ReporterMSTeams defines a configuration of Microsoft + Teams + properties: + componentUpgrade: + description: ConfigComponentUpgradeReport defines a configuration + of component upgrade report + properties: + criteria: + description: ReporterCriteria represents a criteria of + sending component upgrade notification + type: string + extraMessage: + type: string + interval: + description: ReporterInterval represents how often of + sending component upgrade notification within a retry + cycle + type: string + type: object + groups: + items: + description: MSTeamsGroup defines group name/id and channel + name/id of Microsoft Teams + properties: + channelNameOrIDs: + items: + type: string + type: array + groupNameOrID: type: string - tearDownDuration: - description: TearDownDuration defines duration before - teardown the pull request components - properties: - criteria: - description: Criteria tells how does the duration - apply, default is `failure`. - type: string - duration: - description: Duration tells how much the staging - controller will wait before destroying the pull - request namespace - type: string - required: - - duration - type: object required: - - name + - channelNameOrIDs + - groupNameOrID type: object type: array - dependencies: - description: Dependencies defines a list of components which - are required to be deployed together with the main component + pullRequestQueue: + description: ConfigPullRequestQueueReport defines a configuration + of pull request queues report + properties: + criteria: + description: ReporterCriteria represents a criteria of + sending component upgrade notification + type: string + extraMessage: + type: string + interval: + description: ReporterInterval represents how often of + sending component upgrade notification within a retry + cycle + type: string + type: object + pullRequestTrigger: + description: ConfigPullRequestTrigger defines a configuration + of pull request trigger report + properties: + criteria: + description: ReporterCriteria represents a criteria of + sending component upgrade notification + type: string + extraMessage: + type: string + type: object + required: + - groups + type: object + optionals: + items: + description: ReportOption defines an optional configuration + of slack + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + type: array + reportMock: + type: boolean + rest: + description: ReporterRest defines a configuration of http rest + properties: + activePromotion: + properties: + endpoints: + items: + description: Endpoint defines a configuration of rest + endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + componentUpgrade: + properties: + endpoints: + items: + description: Endpoint defines a configuration of rest + endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + imageMissing: + properties: + endpoints: + items: + description: Endpoint defines a configuration of rest + endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + pullRequestQueue: + properties: + endpoints: + items: + description: Endpoint defines a configuration of rest + endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + pullRequestTrigger: + properties: + endpoints: + items: + description: Endpoint defines a configuration of rest + endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + type: object + slack: + description: ReporterSlack defines a configuration of slack + properties: + activePromotion: + description: ConfigActivePromotionReport defines a configuration + of active promotion report + properties: + extraMessage: + type: string + type: object + channels: items: type: string type: array + componentUpgrade: + description: ConfigComponentUpgradeReport defines a configuration + of component upgrade report + properties: + criteria: + description: ReporterCriteria represents a criteria of + sending component upgrade notification + type: string + extraMessage: + type: string + interval: + description: ReporterInterval represents how often of + sending component upgrade notification within a retry + cycle + type: string + type: object + extraMessage: + type: string + pullRequestQueue: + description: ConfigPullRequestQueueReport defines a configuration + of pull request queues report + properties: + criteria: + description: ReporterCriteria represents a criteria of + sending component upgrade notification + type: string + extraMessage: + type: string + interval: + description: ReporterInterval represents how often of + sending component upgrade notification within a retry + cycle + type: string + type: object + pullRequestTrigger: + description: ConfigPullRequestTrigger defines a configuration + of pull request trigger report + properties: + criteria: + description: ReporterCriteria represents a criteria of + sending component upgrade notification + type: string + extraMessage: + type: string + type: object + required: + - channels + type: object + type: object + staging: + description: Staging represents configuration about staging + properties: + deployment: + description: Deployment represents configuration about deploy + properties: + componentCleanupTimeout: + description: ComponentCleanupTimeout defines timeout duration + of component cleaning up + type: string + engine: + description: "Engine defines method of deploying \n mock - + for test only, always return success \n helm3 - deploy chart + with helm3" + type: string + testRunner: + description: TestRunner represents configuration about test + properties: + gitlab: + description: ConfigGitlab defines a http rest configuration + of gitlab + properties: + branch: + type: string + inferBranch: + description: 'InferBranch is for Pull Request''s testRunner + on gitlab. If true, samsahai will try to infer the + testRunner branch name from the gitlab MR associated + with the PR flow if branch is empty [default: true].' + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + required: + - pipelineTriggerToken + - projectID + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcity defines a http rest configuration + of teamcity + properties: + branch: + type: string + buildTypeID: + type: string + required: + - branch + - buildTypeID + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + timeout: + description: Timeout defines maximum duration for deploying + environment + type: string + type: object + maxHistoryDays: + description: MaxHistoryDays defines maximum days of QueueHistory + stored + type: integer + maxRetry: + description: MaxRetry defines max retry counts of component upgrade + type: integer + type: object + template: + description: Template represents configuration's template + type: string + type: object + status: + description: ConfigStatus defines the observed state of Config + properties: + conditions: + description: Conditions contains observations of the state + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + syncTemplate: + description: SyncTemplate represents whether the configuration has + been synced to the template or not + type: boolean + templateUID: + description: TemplateUID represents the template update ID + type: string + used: + description: Used represents overridden configuration specification + properties: + activePromotion: + description: ActivePromotion represents configuration about active + promotion + properties: + demotionTimeout: + description: DemotionTimeout defines maximum duration for + doing active demotion + type: string deployment: description: Deployment represents configuration about deploy properties: @@ -412,1453 +1036,843 @@ spec: environment type: string type: object - gitProjectID: - description: GitProjectID represents a git repository project - id used for publishing test runner status to Gitlab - type: string - gitRepository: - description: GitRepository represents a string of git repository - "/" e.g., agoda-com/samsahai used for - publishing commit status - type: string + maxHistories: + description: MaxHistories defines maximum length of ActivePromotionHistory + stored per team + type: integer maxRetry: - description: MaxRetry defines max retry counts of pull request - component upgrade + description: MaxRetry defines max retry counts of active promotion + process in case failure type: integer - name: - description: Name defines a bundle component name, can be - any name - type: string - resources: - additionalProperties: - type: string - description: Resources represents how many resources of pull - request namespace - type: object - tearDownDuration: - description: TearDownDuration defines duration before teardown - the pull request components + noDowntimeGuarantee: + description: NoDowntimeGuarantee defines a flag for switching + to the new namespace before demoting the active namespace + and guarantees the process will not have a downtime + type: boolean + outdatedNotification: + description: OutdatedNotification defines a configuration + of outdated notification properties: - criteria: - description: Criteria tells how does the duration apply, - default is `failure`. - type: string - duration: - description: Duration tells how much the staging controller - will wait before destroying the pull request namespace + exceedDuration: type: string - required: - - duration + excludeWeekendCalculation: + type: boolean type: object - required: - - components - - name + rollbackTimeout: + description: RollbackTimeout defines maximum duration for + rolling back active promotion + type: string + tearDownDuration: + description: TearDownDuration defines duration before teardown + the previous active namespace + type: string + timeout: + description: Timeout defines maximum duration for doing active + promotion + type: string type: object - type: array - concurrences: - description: Concurrences defines a parallel number of pull request - queue - type: integer - maxHistoryDays: - description: MaxHistoryDays defines maximum days of PullRequestQueueHistory - stored - type: integer - maxRetry: - description: MaxRetry defines max retry counts of pull request component - upgrade - type: integer - resources: - additionalProperties: - type: string - description: Resources represents how many resources of pull request - namespace - type: object - tearDownDuration: - description: TearDownDuration defines duration before teardown the - pull request components - properties: - criteria: - description: Criteria tells how does the duration apply, default - is `failure`. - type: string - duration: - description: Duration tells how much the staging controller - will wait before destroying the pull request namespace - type: string - required: - - duration - type: object - trigger: - description: Trigger represents a pull request trigger configuration - properties: - maxRetry: - description: MaxRetry defines max retry counts of pull request - trigger if cannot find image in the registry - type: integer - pollingTime: - description: PollingTime defines a waiting duration time to - re-check the pull request image in the registry - type: string - type: object - type: object - report: - description: Reporter represents configuration about reporter - properties: - cmd: - description: ReporterShell defines a configuration of shell command - properties: - activeEnvironmentDeleted: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - activePromotion: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - componentUpgrade: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - imageMissing: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - pullRequestQueue: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - pullRequestTrigger: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - type: object - github: - description: ReporterGithub defines a configuration of github reporter - supports pull request queue reporter type only - properties: - baseURL: - description: BaseURL represents a github base url e.g., https://github.com - type: string - enabled: - description: Enabled represents an enabled flag - type: boolean - type: object - gitlab: - description: ReporterGitlab defines a configuration of gitlab reporter - supports pull request queue reporter type only - properties: - baseURL: - description: BaseURL represents a gitlab base url e.g., https://gitlab.com - type: string - enabled: - description: Enabled represents an enabled flag - type: boolean - type: object - msTeams: - description: ReporterMSTeams defines a configuration of Microsoft - Teams - properties: - componentUpgrade: - description: ConfigComponentUpgradeReport defines a configuration - of component upgrade report - properties: - criteria: - description: ReporterCriteria represents a criteria of sending - component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of sending - component upgrade notification within a retry cycle - type: string - type: object - groups: + bundles: + additionalProperties: items: - description: MSTeamsGroup defines group name/id and channel - name/id of Microsoft Teams - properties: - channelNameOrIDs: - items: - type: string - type: array - groupNameOrID: - type: string - required: - - channelNameOrIDs - - groupNameOrID - type: object - type: array - pullRequestQueue: - description: ConfigPullRequestQueueReport defines a configuration - of pull request queues report - properties: - criteria: - description: ReporterCriteria represents a criteria of sending - component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of sending - component upgrade notification within a retry cycle - type: string - type: object - pullRequestTrigger: - description: ConfigPullRequestTrigger defines a configuration - of pull request trigger report - properties: - criteria: - description: ReporterCriteria represents a criteria of sending - component upgrade notification - type: string - extraMessage: - type: string - type: object - required: - - groups - type: object - optionals: - items: - description: ReportOption defines an optional configuration of - slack - properties: - key: - type: string - value: type: string - required: - - key - - value + type: array + description: Bundles represents a group of component for each + bundle type: object - type: array - reportMock: - type: boolean - rest: - description: ReporterRest defines a configuration of http rest - properties: - activePromotion: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint - properties: - url: - type: string - required: - - url - type: object - type: array - required: - - endpoints - type: object - componentUpgrade: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint - properties: - url: - type: string - required: - - url - type: object - type: array - required: - - endpoints - type: object - imageMissing: + components: + description: Components represents all components that are managed + items: + description: Component represents a chart of component and it's + dependencies properties: - endpoints: + chart: + description: ComponentChart represents a chart repository, + name and version + properties: + name: + type: string + repository: + type: string + version: + type: string + required: + - name + - repository + type: object + dependencies: items: - description: Endpoint defines a configuration of rest - endpoint + description: Dependency represents a chart of dependency properties: - url: + chart: + description: ComponentChart represents a chart repository, + name and version + properties: + name: + type: string + repository: + type: string + version: + type: string + required: + - name + - repository + type: object + image: + description: ComponentImage represents an image repository, + tag and pattern which is a regex of tag + properties: + pattern: + type: string + repository: + type: string + tag: + type: string + required: + - repository + type: object + name: type: string - required: - - url - type: object - type: array - required: - - endpoints - type: object - pullRequestQueue: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint - properties: - url: + parent: type: string - required: - - url - type: object - type: array - required: - - endpoints - type: object - pullRequestTrigger: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint - properties: - url: + schedules: + items: + type: string + type: array + source: + description: UpdatingSource represents source for + checking desired version of components type: string + values: + description: ComponentValues represents values of + a component chart + type: object + x-kubernetes-preserve-unknown-fields: true required: - - url + - name type: object type: array - required: - - endpoints - type: object - type: object - slack: - description: ReporterSlack defines a configuration of slack - properties: - activePromotion: - description: ConfigActivePromotionReport defines a configuration - of active promotion report - properties: - extraMessage: - type: string - type: object - channels: - items: - type: string - type: array - componentUpgrade: - description: ConfigComponentUpgradeReport defines a configuration - of component upgrade report - properties: - criteria: - description: ReporterCriteria represents a criteria of sending - component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of sending - component upgrade notification within a retry cycle - type: string - type: object - extraMessage: - type: string - pullRequestQueue: - description: ConfigPullRequestQueueReport defines a configuration - of pull request queues report - properties: - criteria: - description: ReporterCriteria represents a criteria of sending - component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of sending - component upgrade notification within a retry cycle - type: string - type: object - pullRequestTrigger: - description: ConfigPullRequestTrigger defines a configuration - of pull request trigger report - properties: - criteria: - description: ReporterCriteria represents a criteria of sending - component upgrade notification - type: string - extraMessage: - type: string - type: object - required: - - channels - type: object - type: object - staging: - description: Staging represents configuration about staging - properties: - deployment: - description: Deployment represents configuration about deploy - properties: - componentCleanupTimeout: - description: ComponentCleanupTimeout defines timeout duration - of component cleaning up - type: string - engine: - description: "Engine defines method of deploying \n mock - for - test only, always return success \n helm3 - deploy chart with - helm3" - type: string - testRunner: - description: TestRunner represents configuration about test - properties: - gitlab: - description: ConfigGitlab defines a http rest configuration - of gitlab + image: + description: ComponentImage represents an image repository, + tag and pattern which is a regex of tag properties: - branch: - type: string - inferBranch: - description: 'InferBranch is for Pull Request''s testRunner - on gitlab. If true, samsahai will try to infer the - testRunner branch name from the gitlab MR associated - with the PR flow if branch is empty [default: true].' - type: boolean - pipelineTriggerToken: - type: string - projectID: + pattern: type: string - required: - - pipelineTriggerToken - - projectID - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcity defines a http rest configuration - of teamcity - properties: - branch: + repository: type: string - buildTypeID: + tag: type: string required: - - branch - - buildTypeID - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result + - repository type: object - timeout: + name: type: string - type: object - timeout: - description: Timeout defines maximum duration for deploying - environment - type: string - type: object - maxHistoryDays: - description: MaxHistoryDays defines maximum days of QueueHistory - stored - type: integer - maxRetry: - description: MaxRetry defines max retry counts of component upgrade - type: integer - type: object - template: - description: Template represents configuration's template - type: string - type: object - status: - description: ConfigStatus defines the observed state of Config - properties: - conditions: - description: Conditions contains observations of the state - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - syncTemplate: - description: SyncTemplate represents whether the configuration has been - synced to the template or not - type: boolean - templateUID: - description: TemplateUID represents the template update ID - type: string - used: - description: Used represents overridden configuration specification - properties: - activePromotion: - description: ActivePromotion represents configuration about active - promotion - properties: - demotionTimeout: - description: DemotionTimeout defines maximum duration for doing - active demotion - type: string - deployment: - description: Deployment represents configuration about deploy - properties: - componentCleanupTimeout: - description: ComponentCleanupTimeout defines timeout duration - of component cleaning up + parent: type: string - engine: - description: "Engine defines method of deploying \n mock - - for test only, always return success \n helm3 - deploy - chart with helm3" + schedules: + items: + type: string + type: array + source: + description: UpdatingSource represents source for checking + desired version of components type: string - testRunner: - description: TestRunner represents configuration about test - properties: - gitlab: - description: ConfigGitlab defines a http rest configuration - of gitlab - properties: - branch: - type: string - inferBranch: - description: 'InferBranch is for Pull Request''s - testRunner on gitlab. If true, samsahai will try - to infer the testRunner branch name from the gitlab - MR associated with the PR flow if branch is empty - [default: true].' - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - required: - - pipelineTriggerToken - - projectID - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcity defines a http rest configuration - of teamcity - properties: - branch: - type: string - buildTypeID: - type: string - required: - - branch - - buildTypeID - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: - type: string + values: + description: ComponentValues represents values of a component + chart type: object - timeout: - description: Timeout defines maximum duration for deploying - environment - type: string + x-kubernetes-preserve-unknown-fields: true + required: + - chart + - name type: object - maxHistories: - description: MaxHistories defines maximum length of ActivePromotionHistory - stored per team - type: integer - maxRetry: - description: MaxRetry defines max retry counts of active promotion - process in case failure - type: integer - noDowntimeGuarantee: - description: NoDowntimeGuarantee defines a flag for switching - to the new namespace before demoting the active namespace - and guarantees the process will not have a downtime - type: boolean - outdatedNotification: - description: OutdatedNotification defines a configuration of - outdated notification - properties: - exceedDuration: + type: array + envs: + additionalProperties: + additionalProperties: + items: type: string - excludeWeekendCalculation: - type: boolean + type: array + description: ChartValuesURLs represents values file URL of each + chart type: object - rollbackTimeout: - description: RollbackTimeout defines maximum duration for rolling - back active promotion - type: string - tearDownDuration: - description: TearDownDuration defines duration before teardown - the previous active namespace - type: string - timeout: - description: Timeout defines maximum duration for doing active - promotion - type: string - type: object - bundles: - additionalProperties: + description: Envs represents urls of values file per environments + ordering by less priority to high priority + type: object + priorityQueues: + description: PriorityQueues represents a list of bundles/components' + name which needs to be prioritized the first one has the highest + priority and the last one has the lowest priority items: type: string type: array - description: Bundles represents a group of component for each bundle - type: object - components: - description: Components represents all components that are managed - items: - description: Component represents a chart of component and it's - dependencies + pullRequest: + description: PullRequest represents configuration about pull request properties: - chart: - description: ComponentChart represents a chart repository, - name and version - properties: - name: - type: string - repository: - type: string - version: - type: string - required: - - name - - repository - type: object - dependencies: + bundles: + description: Bundles represents a bundle of pull request components + configuration items: - description: Dependency represents a chart of dependency + description: PullRequestBundle represents a bundle of pull + request components configuration properties: - chart: - description: ComponentChart represents a chart repository, - name and version + components: + description: Components represents a list of pull request + components which are deployed together as a bundle + items: + description: PullRequestComponent represents a pull + request component configuration + properties: + image: + description: Image defines an image repository, + tag and pattern of pull request component which + is a regex of tag + properties: + pattern: + type: string + repository: + type: string + tag: + type: string + required: + - repository + type: object + maxRetry: + description: MaxRetry defines max retry counts + of pull request component upgrade + type: integer + name: + description: Name defines a main component name + which is deployed per pull request + type: string + resources: + additionalProperties: + type: string + description: Resources represents how many resources + of pull request namespace + type: object + source: + description: Source defines a source for image + repository + type: string + tearDownDuration: + description: TearDownDuration defines duration + before teardown the pull request components + properties: + criteria: + description: Criteria tells how does the duration + apply, default is `failure`. + type: string + duration: + description: Duration tells how much the staging + controller will wait before destroying the + pull request namespace + type: string + required: + - duration + type: object + required: + - name + type: object + type: array + dependencies: + description: Dependencies defines a list of components + which are required to be deployed together with the + main component + items: + type: string + type: array + deployment: + description: Deployment represents configuration about + deploy properties: - name: + componentCleanupTimeout: + description: ComponentCleanupTimeout defines timeout + duration of component cleaning up type: string - repository: + engine: + description: "Engine defines method of deploying + \n mock - for test only, always return success + \n helm3 - deploy chart with helm3" type: string - version: + testRunner: + description: TestRunner represents configuration + about test + properties: + gitlab: + description: ConfigGitlab defines a http rest + configuration of gitlab + properties: + branch: + type: string + inferBranch: + description: 'InferBranch is for Pull Request''s + testRunner on gitlab. If true, samsahai + will try to infer the testRunner branch + name from the gitlab MR associated with + the PR flow if branch is empty [default: + true].' + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + required: + - pipelineTriggerToken + - projectID + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcity defines a http rest + configuration of teamcity + properties: + branch: + type: string + buildTypeID: + type: string + required: + - branch + - buildTypeID + type: object + testMock: + description: ConfigTestMock defines a result + of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + timeout: + description: Timeout defines maximum duration for + deploying environment type: string - required: - - name - - repository type: object - image: - description: ComponentImage represents an image repository, - tag and pattern which is a regex of tag + gitProjectID: + description: GitProjectID represents a git repository + project id used for publishing test runner status + to Gitlab + type: string + gitRepository: + description: GitRepository represents a string of git + repository "/" e.g., agoda-com/samsahai + used for publishing commit status + type: string + maxRetry: + description: MaxRetry defines max retry counts of pull + request component upgrade + type: integer + name: + description: Name defines a bundle component name, can + be any name + type: string + resources: + additionalProperties: + type: string + description: Resources represents how many resources + of pull request namespace + type: object + tearDownDuration: + description: TearDownDuration defines duration before + teardown the pull request components properties: - pattern: - type: string - repository: + criteria: + description: Criteria tells how does the duration + apply, default is `failure`. type: string - tag: + duration: + description: Duration tells how much the staging + controller will wait before destroying the pull + request namespace type: string required: - - repository - type: object - name: - type: string - parent: - type: string - schedules: - items: - type: string - type: array - source: - description: UpdatingSource represents source for checking - desired version of components - type: string - values: - description: ComponentValues represents values of a - component chart + - duration type: object - x-kubernetes-preserve-unknown-fields: true required: + - components - name type: object type: array - image: - description: ComponentImage represents an image repository, - tag and pattern which is a regex of tag + concurrences: + description: Concurrences defines a parallel number of pull + request queue + type: integer + maxHistoryDays: + description: MaxHistoryDays defines maximum days of PullRequestQueueHistory + stored + type: integer + maxRetry: + description: MaxRetry defines max retry counts of pull request + component upgrade + type: integer + resources: + additionalProperties: + type: string + description: Resources represents how many resources of pull + request namespace + type: object + tearDownDuration: + description: TearDownDuration defines duration before teardown + the pull request components properties: - pattern: - type: string - repository: + criteria: + description: Criteria tells how does the duration apply, + default is `failure`. type: string - tag: + duration: + description: Duration tells how much the staging controller + will wait before destroying the pull request namespace type: string required: - - repository + - duration type: object - name: - type: string - parent: - type: string - schedules: - items: - type: string - type: array - source: - description: UpdatingSource represents source for checking - desired version of components - type: string - values: - description: ComponentValues represents values of a component - chart + trigger: + description: Trigger represents a pull request trigger configuration + properties: + maxRetry: + description: MaxRetry defines max retry counts of pull + request trigger if cannot find image in the registry + type: integer + pollingTime: + description: PollingTime defines a waiting duration time + to re-check the pull request image in the registry + type: string type: object - x-kubernetes-preserve-unknown-fields: true - required: - - chart - - name type: object - type: array - envs: - additionalProperties: - additionalProperties: - items: - type: string - type: array - description: ChartValuesURLs represents values file URL of each - chart - type: object - description: Envs represents urls of values file per environments - ordering by less priority to high priority - type: object - priorityQueues: - description: PriorityQueues represents a list of bundles/components' - name which needs to be prioritized the first one has the highest - priority and the last one has the lowest priority - items: - type: string - type: array - pullRequest: - description: PullRequest represents configuration about pull request - properties: - bundles: - description: Bundles represents a bundle of pull request components - configuration - items: - description: PullRequestBundle represents a bundle of pull - request components configuration + report: + description: Reporter represents configuration about reporter + properties: + cmd: + description: ReporterShell defines a configuration of shell + command properties: - components: - description: Components represents a list of pull request - components which are deployed together as a bundle - items: - description: PullRequestComponent represents a pull - request component configuration - properties: - image: - description: Image defines an image repository, - tag and pattern of pull request component which - is a regex of tag - properties: - pattern: - type: string - repository: - type: string - tag: - type: string - required: - - repository - type: object - maxRetry: - description: MaxRetry defines max retry counts of - pull request component upgrade - type: integer - name: - description: Name defines a main component name - which is deployed per pull request + activeEnvironmentDeleted: + description: CommandAndArgs defines commands and args + properties: + args: + items: type: string - resources: - additionalProperties: - type: string - description: Resources represents how many resources - of pull request namespace - type: object - source: - description: Source defines a source for image repository + type: array + command: + items: type: string - tearDownDuration: - description: TearDownDuration defines duration before - teardown the pull request components - properties: - criteria: - description: Criteria tells how does the duration - apply, default is `failure`. - type: string - duration: - description: Duration tells how much the staging - controller will wait before destroying the - pull request namespace - type: string - required: - - duration - type: object - required: - - name - type: object - type: array - dependencies: - description: Dependencies defines a list of components - which are required to be deployed together with the - main component - items: - type: string - type: array - deployment: - description: Deployment represents configuration about - deploy + type: array + required: + - command + type: object + activePromotion: + description: CommandAndArgs defines commands and args properties: - componentCleanupTimeout: - description: ComponentCleanupTimeout defines timeout - duration of component cleaning up - type: string - engine: - description: "Engine defines method of deploying \n - mock - for test only, always return success \n helm3 - - deploy chart with helm3" - type: string - testRunner: - description: TestRunner represents configuration about - test - properties: - gitlab: - description: ConfigGitlab defines a http rest - configuration of gitlab - properties: - branch: - type: string - inferBranch: - description: 'InferBranch is for Pull Request''s - testRunner on gitlab. If true, samsahai - will try to infer the testRunner branch - name from the gitlab MR associated with - the PR flow if branch is empty [default: - true].' - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - required: - - pipelineTriggerToken - - projectID - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcity defines a http rest - configuration of teamcity - properties: - branch: - type: string - buildTypeID: - type: string - required: - - branch - - buildTypeID - type: object - testMock: - description: ConfigTestMock defines a result of - testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: - type: string - type: object - timeout: - description: Timeout defines maximum duration for - deploying environment - type: string + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command type: object - gitProjectID: - description: GitProjectID represents a git repository - project id used for publishing test runner status to - Gitlab - type: string - gitRepository: - description: GitRepository represents a string of git - repository "/" e.g., agoda-com/samsahai - used for publishing commit status - type: string - maxRetry: - description: MaxRetry defines max retry counts of pull - request component upgrade - type: integer - name: - description: Name defines a bundle component name, can - be any name - type: string - resources: - additionalProperties: - type: string - description: Resources represents how many resources of - pull request namespace + componentUpgrade: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command type: object - tearDownDuration: - description: TearDownDuration defines duration before - teardown the pull request components + imageMissing: + description: CommandAndArgs defines commands and args properties: - criteria: - description: Criteria tells how does the duration - apply, default is `failure`. - type: string - duration: - description: Duration tells how much the staging controller - will wait before destroying the pull request namespace - type: string + args: + items: + type: string + type: array + command: + items: + type: string + type: array required: - - duration + - command + type: object + pullRequestQueue: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command + type: object + pullRequestTrigger: + description: CommandAndArgs defines commands and args + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + required: + - command type: object - required: - - components - - name type: object - type: array - concurrences: - description: Concurrences defines a parallel number of pull - request queue - type: integer - maxHistoryDays: - description: MaxHistoryDays defines maximum days of PullRequestQueueHistory - stored - type: integer - maxRetry: - description: MaxRetry defines max retry counts of pull request - component upgrade - type: integer - resources: - additionalProperties: - type: string - description: Resources represents how many resources of pull - request namespace - type: object - tearDownDuration: - description: TearDownDuration defines duration before teardown - the pull request components - properties: - criteria: - description: Criteria tells how does the duration apply, - default is `failure`. - type: string - duration: - description: Duration tells how much the staging controller - will wait before destroying the pull request namespace - type: string - required: - - duration - type: object - trigger: - description: Trigger represents a pull request trigger configuration - properties: - maxRetry: - description: MaxRetry defines max retry counts of pull request - trigger if cannot find image in the registry - type: integer - pollingTime: - description: PollingTime defines a waiting duration time - to re-check the pull request image in the registry - type: string - type: object - type: object - report: - description: Reporter represents configuration about reporter - properties: - cmd: - description: ReporterShell defines a configuration of shell - command - properties: - activeEnvironmentDeleted: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - activePromotion: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - required: - - command - type: object - componentUpgrade: - description: CommandAndArgs defines commands and args - properties: - args: - items: - type: string - type: array - command: - items: + github: + description: ReporterGithub defines a configuration of github + reporter supports pull request queue reporter type only + properties: + baseURL: + description: BaseURL represents a github base url e.g., + https://github.com + type: string + enabled: + description: Enabled represents an enabled flag + type: boolean + type: object + gitlab: + description: ReporterGitlab defines a configuration of gitlab + reporter supports pull request queue reporter type only + properties: + baseURL: + description: BaseURL represents a gitlab base url e.g., + https://gitlab.com + type: string + enabled: + description: Enabled represents an enabled flag + type: boolean + type: object + msTeams: + description: ReporterMSTeams defines a configuration of Microsoft + Teams + properties: + componentUpgrade: + description: ConfigComponentUpgradeReport defines a configuration + of component upgrade report + properties: + criteria: + description: ReporterCriteria represents a criteria + of sending component upgrade notification type: string - type: array - required: - - command - type: object - imageMissing: - description: CommandAndArgs defines commands and args - properties: - args: - items: + extraMessage: type: string - type: array - command: - items: + interval: + description: ReporterInterval represents how often + of sending component upgrade notification within + a retry cycle type: string - type: array - required: - - command - type: object - pullRequestQueue: - description: CommandAndArgs defines commands and args - properties: - args: - items: + type: object + groups: + items: + description: MSTeamsGroup defines group name/id and + channel name/id of Microsoft Teams + properties: + channelNameOrIDs: + items: + type: string + type: array + groupNameOrID: + type: string + required: + - channelNameOrIDs + - groupNameOrID + type: object + type: array + pullRequestQueue: + description: ConfigPullRequestQueueReport defines a configuration + of pull request queues report + properties: + criteria: + description: ReporterCriteria represents a criteria + of sending component upgrade notification type: string - type: array - command: - items: + extraMessage: type: string - type: array - required: - - command - type: object - pullRequestTrigger: - description: CommandAndArgs defines commands and args - properties: - args: - items: + interval: + description: ReporterInterval represents how often + of sending component upgrade notification within + a retry cycle type: string - type: array - command: - items: + type: object + pullRequestTrigger: + description: ConfigPullRequestTrigger defines a configuration + of pull request trigger report + properties: + criteria: + description: ReporterCriteria represents a criteria + of sending component upgrade notification type: string - type: array - required: - - command - type: object - type: object - github: - description: ReporterGithub defines a configuration of github - reporter supports pull request queue reporter type only - properties: - baseURL: - description: BaseURL represents a github base url e.g., - https://github.com - type: string - enabled: - description: Enabled represents an enabled flag - type: boolean - type: object - gitlab: - description: ReporterGitlab defines a configuration of gitlab - reporter supports pull request queue reporter type only - properties: - baseURL: - description: BaseURL represents a gitlab base url e.g., - https://gitlab.com - type: string - enabled: - description: Enabled represents an enabled flag - type: boolean - type: object - msTeams: - description: ReporterMSTeams defines a configuration of Microsoft - Teams - properties: - componentUpgrade: - description: ConfigComponentUpgradeReport defines a configuration - of component upgrade report + extraMessage: + type: string + type: object + required: + - groups + type: object + optionals: + items: + description: ReportOption defines an optional configuration + of slack properties: - criteria: - description: ReporterCriteria represents a criteria - of sending component upgrade notification - type: string - extraMessage: + key: type: string - interval: - description: ReporterInterval represents how often of - sending component upgrade notification within a retry - cycle + value: type: string + required: + - key + - value type: object - groups: - items: - description: MSTeamsGroup defines group name/id and channel - name/id of Microsoft Teams + type: array + reportMock: + type: boolean + rest: + description: ReporterRest defines a configuration of http + rest + properties: + activePromotion: properties: - channelNameOrIDs: + endpoints: items: - type: string + description: Endpoint defines a configuration of + rest endpoint + properties: + url: + type: string + required: + - url + type: object type: array - groupNameOrID: - type: string required: - - channelNameOrIDs - - groupNameOrID + - endpoints type: object - type: array - pullRequestQueue: - description: ConfigPullRequestQueueReport defines a configuration - of pull request queues report - properties: - criteria: - description: ReporterCriteria represents a criteria - of sending component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of - sending component upgrade notification within a retry - cycle - type: string - type: object - pullRequestTrigger: - description: ConfigPullRequestTrigger defines a configuration - of pull request trigger report - properties: - criteria: - description: ReporterCriteria represents a criteria - of sending component upgrade notification - type: string - extraMessage: - type: string - type: object - required: - - groups - type: object - optionals: - items: - description: ReportOption defines an optional configuration - of slack + componentUpgrade: + properties: + endpoints: + items: + description: Endpoint defines a configuration of + rest endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + imageMissing: + properties: + endpoints: + items: + description: Endpoint defines a configuration of + rest endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + pullRequestQueue: + properties: + endpoints: + items: + description: Endpoint defines a configuration of + rest endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + pullRequestTrigger: + properties: + endpoints: + items: + description: Endpoint defines a configuration of + rest endpoint + properties: + url: + type: string + required: + - url + type: object + type: array + required: + - endpoints + type: object + type: object + slack: + description: ReporterSlack defines a configuration of slack properties: - key: - type: string - value: + activePromotion: + description: ConfigActivePromotionReport defines a configuration + of active promotion report + properties: + extraMessage: + type: string + type: object + channels: + items: + type: string + type: array + componentUpgrade: + description: ConfigComponentUpgradeReport defines a configuration + of component upgrade report + properties: + criteria: + description: ReporterCriteria represents a criteria + of sending component upgrade notification + type: string + extraMessage: + type: string + interval: + description: ReporterInterval represents how often + of sending component upgrade notification within + a retry cycle + type: string + type: object + extraMessage: type: string + pullRequestQueue: + description: ConfigPullRequestQueueReport defines a configuration + of pull request queues report + properties: + criteria: + description: ReporterCriteria represents a criteria + of sending component upgrade notification + type: string + extraMessage: + type: string + interval: + description: ReporterInterval represents how often + of sending component upgrade notification within + a retry cycle + type: string + type: object + pullRequestTrigger: + description: ConfigPullRequestTrigger defines a configuration + of pull request trigger report + properties: + criteria: + description: ReporterCriteria represents a criteria + of sending component upgrade notification + type: string + extraMessage: + type: string + type: object required: - - key - - value + - channels type: object - type: array - reportMock: - type: boolean - rest: - description: ReporterRest defines a configuration of http rest - properties: - activePromotion: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint + type: object + staging: + description: Staging represents configuration about staging + properties: + deployment: + description: Deployment represents configuration about deploy + properties: + componentCleanupTimeout: + description: ComponentCleanupTimeout defines timeout duration + of component cleaning up + type: string + engine: + description: "Engine defines method of deploying \n mock + - for test only, always return success \n helm3 - deploy + chart with helm3" + type: string + testRunner: + description: TestRunner represents configuration about + test + properties: + gitlab: + description: ConfigGitlab defines a http rest configuration + of gitlab properties: - url: + branch: type: string - required: - - url - type: object - type: array - required: - - endpoints - type: object - componentUpgrade: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint - properties: - url: + inferBranch: + description: 'InferBranch is for Pull Request''s + testRunner on gitlab. If true, samsahai will + try to infer the testRunner branch name from + the gitlab MR associated with the PR flow if + branch is empty [default: true].' + type: boolean + pipelineTriggerToken: type: string - required: - - url - type: object - type: array - required: - - endpoints - type: object - imageMissing: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint - properties: - url: + projectID: type: string required: - - url + - pipelineTriggerToken + - projectID type: object - type: array - required: - - endpoints - type: object - pullRequestQueue: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint + pollingTime: + type: string + teamcity: + description: ConfigTeamcity defines a http rest configuration + of teamcity properties: - url: + branch: + type: string + buildTypeID: type: string required: - - url + - branch + - buildTypeID type: object - type: array - required: - - endpoints - type: object - pullRequestTrigger: - properties: - endpoints: - items: - description: Endpoint defines a configuration of rest - endpoint + testMock: + description: ConfigTestMock defines a result of testmock properties: - url: - type: string + result: + type: boolean required: - - url + - result type: object - type: array - required: - - endpoints - type: object - type: object - slack: - description: ReporterSlack defines a configuration of slack - properties: - activePromotion: - description: ConfigActivePromotionReport defines a configuration - of active promotion report - properties: - extraMessage: - type: string - type: object - channels: - items: + timeout: + type: string + type: object + timeout: + description: Timeout defines maximum duration for deploying + environment type: string - type: array - componentUpgrade: - description: ConfigComponentUpgradeReport defines a configuration - of component upgrade report - properties: - criteria: - description: ReporterCriteria represents a criteria - of sending component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of - sending component upgrade notification within a retry - cycle - type: string - type: object - extraMessage: - type: string - pullRequestQueue: - description: ConfigPullRequestQueueReport defines a configuration - of pull request queues report - properties: - criteria: - description: ReporterCriteria represents a criteria - of sending component upgrade notification - type: string - extraMessage: - type: string - interval: - description: ReporterInterval represents how often of - sending component upgrade notification within a retry - cycle - type: string - type: object - pullRequestTrigger: - description: ConfigPullRequestTrigger defines a configuration - of pull request trigger report - properties: - criteria: - description: ReporterCriteria represents a criteria - of sending component upgrade notification - type: string - extraMessage: - type: string - type: object - required: - - channels - type: object - type: object - staging: - description: Staging represents configuration about staging - properties: - deployment: - description: Deployment represents configuration about deploy - properties: - componentCleanupTimeout: - description: ComponentCleanupTimeout defines timeout duration - of component cleaning up - type: string - engine: - description: "Engine defines method of deploying \n mock - - for test only, always return success \n helm3 - deploy - chart with helm3" - type: string - testRunner: - description: TestRunner represents configuration about test - properties: - gitlab: - description: ConfigGitlab defines a http rest configuration - of gitlab - properties: - branch: - type: string - inferBranch: - description: 'InferBranch is for Pull Request''s - testRunner on gitlab. If true, samsahai will try - to infer the testRunner branch name from the gitlab - MR associated with the PR flow if branch is empty - [default: true].' - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - required: - - pipelineTriggerToken - - projectID - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcity defines a http rest configuration - of teamcity - properties: - branch: - type: string - buildTypeID: - type: string - required: - - branch - - buildTypeID - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: - type: string - type: object - timeout: - description: Timeout defines maximum duration for deploying - environment - type: string - type: object - maxHistoryDays: - description: MaxHistoryDays defines maximum days of QueueHistory - stored - type: integer - maxRetry: - description: MaxRetry defines max retry counts of component - upgrade - type: integer - type: object - template: - description: Template represents configuration's template - type: string - type: object - type: object - type: object - version: v1 - versions: - - name: v1 + type: object + maxHistoryDays: + description: MaxHistoryDays defines maximum days of QueueHistory + stored + type: integer + maxRetry: + description: MaxRetry defines max retry counts of component + upgrade + type: integer + type: object + template: + description: Template represents configuration's template + type: string + type: object + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_desiredcomponents.yaml b/test/data/crds/env.samsahai.io_desiredcomponents.yaml index 5b7465cf..06e60990 100644 --- a/test/data/crds/env.samsahai.io_desiredcomponents.yaml +++ b/test/data/crds/env.samsahai.io_desiredcomponents.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: desiredcomponents.env.samsahai.io spec: @@ -15,52 +15,51 @@ spec: plural: desiredcomponents singular: desiredcomponent scope: Namespaced - validation: - openAPIV3Schema: - description: DesiredComponent is the Schema for the desiredcomponents API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: DesiredComponentSpec defines the desired state of DesiredComponent - properties: - bundle: - type: string - name: - type: string - repository: - type: string - version: - type: string - required: - - name - - repository - - version - type: object - status: - description: DesiredComponentStatus defines the observed state of DesiredComponent - properties: - createdAt: - format: date-time - type: string - updatedAt: - format: date-time - type: string - type: object - type: object - version: v1 versions: - name: v1 + schema: + openAPIV3Schema: + description: DesiredComponent is the Schema for the desiredcomponents API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DesiredComponentSpec defines the desired state of DesiredComponent + properties: + bundle: + type: string + name: + type: string + repository: + type: string + version: + type: string + required: + - name + - repository + - version + type: object + status: + description: DesiredComponentStatus defines the observed state of DesiredComponent + properties: + createdAt: + format: date-time + type: string + updatedAt: + format: date-time + type: string + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml b/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml index eeae16df..36b2032e 100644 --- a/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml +++ b/test/data/crds/env.samsahai.io_pullrequestqueuehistories.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: pullrequestqueuehistories.env.samsahai.io spec: @@ -15,562 +15,568 @@ spec: plural: pullrequestqueuehistories singular: pullrequestqueuehistory scope: Namespaced - validation: - openAPIV3Schema: - description: PullRequestQueueHistory is the Schema for the PullRequestQueueHistories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: PullRequestQueueHistorySpec defines the desired state of PullRequestQueueHistory - properties: - pullRequestQueue: - description: PullRequestQueue is the Schema for the queues API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the - latest internal value, and may reject unrecognized values. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: PullRequestQueueSpec defines the desired state of PullRequestQueue - properties: - bundleName: - description: BundleName represents a pull request bundle name - type: string - commitSHA: - description: CommitSHA represents a commit SHA - type: string - components: - description: Components represents a list of components which - are deployed - items: - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - type: array - gitRepository: - description: GitRepository represents a github repository of - the pull request - type: string - imageMissingList: - description: ImageMissingList represents image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - isPrTriggerFailed: - description: IsPRTriggerFailed represents the result of pull - request trigger - type: boolean - noOfOrder: - description: NoOfOrder defines the position in queue lower is - will be picked first - type: integer - noOfRetry: - description: NoOfRetry defines how many times this pull request - component has been tested - type: integer - prNumber: - description: PRNumber represents a pull request number - type: string - prTriggerCreatedAt: - description: PRTriggerCreatedAt represents time when pull request - trigger has been start - format: date-time - type: string - prTriggerFinishedAt: - description: PRTriggerFinishedAt represents time when pull request - trigger has been finish - format: date-time - type: string - teamName: - description: TeamName represents team owner of the pull request - queue - type: string - tearDownDuration: - description: TearDownDuration defines duration before teardown - the pull request components - properties: - criteria: - description: Criteria tells how does the duration apply, - default is `failure`. - type: string - duration: - description: Duration tells how much the staging controller - will wait before destroying the pull request namespace - type: string - required: - - duration - type: object - testRunner: - description: TestRunner represents configuration about how to - test the environment. If defined, this will override testRunner - from config - properties: - gitlab: - description: ConfigGitlabOverrider is data that overrides - ConfigGitlab field by field + versions: + - name: v1 + schema: + openAPIV3Schema: + description: PullRequestQueueHistory is the Schema for the PullRequestQueueHistories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PullRequestQueueHistorySpec defines the desired state of + PullRequestQueueHistory + properties: + pullRequestQueue: + description: PullRequestQueue is the Schema for the queues API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PullRequestQueueSpec defines the desired state of + PullRequestQueue + properties: + bundleName: + description: BundleName represents a pull request bundle name + type: string + commitSHA: + description: CommitSHA represents a commit SHA + type: string + components: + description: Components represents a list of components which + are deployed + items: properties: - branch: + name: + description: Name represents Component name type: string - inferBranch: - type: boolean - pipelineTriggerToken: + repository: + description: Repository represents Docker image repository type: string - projectID: + version: + description: Version represents Docker image tag version type: string + required: + - name + - repository + - version type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcityOverrider is data that overrides - ConfigTeamcity field by field + type: array + gitRepository: + description: GitRepository represents a github repository + of the pull request + type: string + imageMissingList: + description: ImageMissingList represents image missing lists + items: properties: - branch: + repository: type: string - buildTypeID: + tag: type: string - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean required: - - result + - repository + - tag type: object - timeout: - type: string - type: object - upcomingCommitSHA: - description: UpcomingCommitSHA represents an upcoming commit - SHA in case queue is running - type: string - upcomingComponents: - description: UpcomingComponents represents an upcoming components - which are deployed in case queue is running - items: + type: array + isPrTriggerFailed: + description: IsPRTriggerFailed represents the result of pull + request trigger + type: boolean + noOfOrder: + description: NoOfOrder defines the position in queue lower + is will be picked first + type: integer + noOfRetry: + description: NoOfRetry defines how many times this pull request + component has been tested + type: integer + prNumber: + description: PRNumber represents a pull request number + type: string + prTriggerCreatedAt: + description: PRTriggerCreatedAt represents time when pull + request trigger has been start + format: date-time + type: string + prTriggerFinishedAt: + description: PRTriggerFinishedAt represents time when pull + request trigger has been finish + format: date-time + type: string + teamName: + description: TeamName represents team owner of the pull request + queue + type: string + tearDownDuration: + description: TearDownDuration defines duration before teardown + the pull request components properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository + criteria: + description: Criteria tells how does the duration apply, + default is `failure`. type: string - version: - description: Version represents Docker image tag version + duration: + description: Duration tells how much the staging controller + will wait before destroying the pull request namespace type: string required: - - name - - repository - - version + - duration type: object - type: array - required: - - bundleName - - noOfOrder - - prNumber - - teamName - type: object - status: - description: PullRequestQueueStatus defines the observed state of - PullRequestQueue - properties: - conditions: - description: Conditions contains observations of the resource's - state e.g., Queue deployed, being tested - items: + testRunner: + description: TestRunner represents configuration about how + to test the environment. If defined, this will override + testRunner from config properties: - lastTransitionTime: - format: date-time + gitlab: + description: ConfigGitlabOverrider is data that overrides + ConfigGitlab field by field + properties: + branch: + type: string + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + type: object + pollingTime: type: string - message: + teamcity: + description: ConfigTeamcityOverrider is data that overrides + ConfigTeamcity field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: type: string - reason: - type: string - status: - type: string - type: - description: PullRequestQueueConditionType represents - a condition type of pull request queue - type: string - required: - - status - - type type: object - type: array - createdAt: - description: CreatedAt represents time when the component has - been added to queue - format: date-time - type: string - deploymentQueue: - description: ComponentUpgrade defines a deployed pull request - queue - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of - this representation of an object. Servers should convert - recognized schemas to the latest internal value, and may - reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST - resource this object represents. Servers may infer this - from the endpoint the client submits requests to. Cannot - be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: QueueSpec defines the desired state of Queue + upcomingCommitSHA: + description: UpcomingCommitSHA represents an upcoming commit + SHA in case queue is running + type: string + upcomingComponents: + description: UpcomingComponents represents an upcoming components + which are deployed in case queue is running + items: properties: - bundle: - description: Bundle represents a bundle name of component - type: string - components: - description: Components represents a list of components - which are deployed - items: - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image - repository - type: string - version: - description: Version represents Docker image tag - version - type: string - required: - - name - - repository - - version - type: object - type: array name: - description: Name represents a Component name or bundle - name if exist + description: Name represents Component name type: string - nextProcessAt: - description: NextProcessAt represents time to wait for - process this queue - format: date-time + repository: + description: Repository represents Docker image repository type: string - noOfOrder: - description: NoOfOrder defines the position in queue - lower is will be picked first - type: integer - noOfRetry: - description: NoOfRetry defines how many times this component - has been tested - type: integer - prNumber: - description: PRNumber represents a pull request number - type: string - queueExtraParameters: - description: QueueExtraParameters override default behavior - of how to process this queue according to QueueType - properties: - testRunner: - description: TestRunner represents configuration - about how to test the environment - properties: - gitlab: - description: ConfigGitlabOverrider is data that - overrides ConfigGitlab field by field - properties: - branch: - type: string - inferBranch: - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcityOverrider is data - that overrides ConfigTeamcity field by field - properties: - branch: - type: string - buildTypeID: - type: string - type: object - testMock: - description: ConfigTestMock defines a result - of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: - type: string - type: object - type: object - skipTestRunner: - description: SkipTestRunner represents a flag for skipping - running test - type: boolean - teamName: - description: TeamName represents team owner of the queue - type: string - type: - description: Type represents how we will process this - queue + version: + description: Version represents Docker image tag version type: string required: - name - - noOfOrder - - teamName - - type + - repository + - version type: object - status: - description: QueueStatus defines the observed state of Queue + type: array + required: + - bundleName + - noOfOrder + - prNumber + - teamName + type: object + status: + description: PullRequestQueueStatus defines the observed state + of PullRequestQueue + properties: + conditions: + description: Conditions contains observations of the resource's + state e.g., Queue deployed, being tested + items: properties: - conditions: - description: Conditions contains observations of the - resource's state e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when the component - has been added to queue + lastTransitionTime: format: date-time type: string - deployEngine: - description: DeployEngine represents engine using during - installation - type: string - deploymentIssues: - description: DeploymentIssues defines a list of deployment - issue types - items: - properties: - failureComponents: - description: FailureComponents defines a list - of failure components - items: - properties: - componentName: - description: ComponentName defines a name - of component - type: string - firstFailureContainerName: - description: FirstFailureContainerName defines - a first found failure container name - type: string - nodeName: - description: NodeName defines the node name - of pod - type: string - restartCount: - description: RestartCount defines the number - of times the container has been restarted - format: int32 - type: integer - required: - - componentName - - firstFailureContainerName - - nodeName - - restartCount - type: object - type: array - issueType: - description: IssueType defines a deployment issue - type - type: string - required: - - failureComponents - - issueType - type: object - type: array - imageMissingList: - description: ImageMissingList defines image missing - lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - kubeZipLog: - description: KubeZipLog defines log of k8s resources - during deployment in base64 zip format - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for - process this queue - format: date-time + message: type: string - noOfProcessed: - description: NoOfProcessed represents how many time - that this queue had been processed - type: integer - queueHistoryName: - description: QueueHistoryName defines name of history - of this queue + reason: type: string - startDeployTime: - description: StartDeployTime represents the time when - this queue start deploying - format: date-time + status: type: string - startTestingTime: - description: StartTestingTime represents the time when - this queue start testing - format: date-time - type: string - state: - description: State represents current status of this - queue + type: + description: PullRequestQueueConditionType represents + a condition type of pull request queue type: string - testRunners: - description: TestRunner defines the test runner - properties: - gitlab: + required: + - status + - type + type: object + type: array + createdAt: + description: CreatedAt represents time when the component + has been added to queue + format: date-time + type: string + deploymentQueue: + description: ComponentUpgrade defines a deployed pull request + queue + properties: + apiVersion: + description: 'APIVersion defines the versioned schema + of this representation of an object. Servers should + convert recognized schemas to the latest internal value, + and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the + REST resource this object represents. Servers may infer + this from the endpoint the client submits requests to. + Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: QueueSpec defines the desired state of Queue + properties: + bundle: + description: Bundle represents a bundle name of component + type: string + components: + description: Components represents a list of components + which are deployed + items: properties: - branch: - type: string - pipelineID: + name: + description: Name represents Component name type: string - pipelineNumber: + repository: + description: Repository represents Docker image + repository type: string - pipelineURL: + version: + description: Version represents Docker image + tag version type: string + required: + - name + - repository + - version type: object - teamcity: + type: array + name: + description: Name represents a Component name or bundle + name if exist + type: string + nextProcessAt: + description: NextProcessAt represents time to wait + for process this queue + format: date-time + type: string + noOfOrder: + description: NoOfOrder defines the position in queue + lower is will be picked first + type: integer + noOfRetry: + description: NoOfRetry defines how many times this + component has been tested + type: integer + prNumber: + description: PRNumber represents a pull request number + type: string + queueExtraParameters: + description: QueueExtraParameters override default + behavior of how to process this queue according + to QueueType + properties: + testRunner: + description: TestRunner represents configuration + about how to test the environment + properties: + gitlab: + description: ConfigGitlabOverrider is data + that overrides ConfigGitlab field by field + properties: + branch: + type: string + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcityOverrider is data + that overrides ConfigTeamcity field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result + of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + type: object + skipTestRunner: + description: SkipTestRunner represents a flag for + skipping running test + type: boolean + teamName: + description: TeamName represents team owner of the + queue + type: string + type: + description: Type represents how we will process this + queue + type: string + required: + - name + - noOfOrder + - teamName + - type + type: object + status: + description: QueueStatus defines the observed state of + Queue + properties: + conditions: + description: Conditions contains observations of the + resource's state e.g., Queue deployed, being tested + items: properties: - branch: + lastTransitionTime: + format: date-time type: string - buildID: + message: type: string - buildNumber: + reason: type: string - buildTypeID: + status: type: string - buildURL: + type: type: string + required: + - status + - type type: object - type: object - updatedAt: - description: UpdatedAt represents time when the component - was processed - format: date-time - type: string - required: - - kubeZipLog - - queueHistoryName - - state - type: object - type: object - destroyedTime: - description: DestroyedTime represents time at which the PR namespace - will be destroyed - format: date-time - type: string - pullRequestNamespace: - description: PullRequestNamespace represents a current pull - request namespace - type: string - pullRequestQueueHistoryName: - description: PullRequestQueueHistoryName represents created - PullRequestQueueHistory name - type: string - result: - description: Result represents a result of the pull request - queue - type: string - state: - description: State represents current status of this queue - type: string - updatedAt: - description: UpdatedAt represents time when the component was - processed - format: date-time - type: string - required: - - pullRequestNamespace - - state - type: object - type: object - type: object - status: - description: PullRequestQueueHistoryStatus defines the observed state of - PullRequestQueueHistory - type: object - type: object - version: v1 - versions: - - name: v1 + type: array + createdAt: + description: CreatedAt represents time when the component + has been added to queue + format: date-time + type: string + deployEngine: + description: DeployEngine represents engine using + during installation + type: string + deploymentIssues: + description: DeploymentIssues defines a list of deployment + issue types + items: + properties: + failureComponents: + description: FailureComponents defines a list + of failure components + items: + properties: + componentName: + description: ComponentName defines a name + of component + type: string + firstFailureContainerName: + description: FirstFailureContainerName + defines a first found failure container + name + type: string + nodeName: + description: NodeName defines the node + name of pod + type: string + restartCount: + description: RestartCount defines the + number of times the container has been + restarted + format: int32 + type: integer + required: + - componentName + - firstFailureContainerName + - nodeName + - restartCount + type: object + type: array + issueType: + description: IssueType defines a deployment + issue type + type: string + required: + - failureComponents + - issueType + type: object + type: array + imageMissingList: + description: ImageMissingList defines image missing + lists + items: + properties: + repository: + type: string + tag: + type: string + required: + - repository + - tag + type: object + type: array + kubeZipLog: + description: KubeZipLog defines log of k8s resources + during deployment in base64 zip format + type: string + nextProcessAt: + description: NextProcessAt represents time to wait + for process this queue + format: date-time + type: string + noOfProcessed: + description: NoOfProcessed represents how many time + that this queue had been processed + type: integer + queueHistoryName: + description: QueueHistoryName defines name of history + of this queue + type: string + startDeployTime: + description: StartDeployTime represents the time when + this queue start deploying + format: date-time + type: string + startTestingTime: + description: StartTestingTime represents the time + when this queue start testing + format: date-time + type: string + state: + description: State represents current status of this + queue + type: string + testRunners: + description: TestRunner defines the test runner + properties: + gitlab: + properties: + branch: + type: string + pipelineID: + type: string + pipelineNumber: + type: string + pipelineURL: + type: string + type: object + teamcity: + properties: + branch: + type: string + buildID: + type: string + buildNumber: + type: string + buildTypeID: + type: string + buildURL: + type: string + type: object + type: object + updatedAt: + description: UpdatedAt represents time when the component + was processed + format: date-time + type: string + required: + - kubeZipLog + - queueHistoryName + - state + type: object + type: object + destroyedTime: + description: DestroyedTime represents time at which the PR + namespace will be destroyed + format: date-time + type: string + pullRequestNamespace: + description: PullRequestNamespace represents a current pull + request namespace + type: string + pullRequestQueueHistoryName: + description: PullRequestQueueHistoryName represents created + PullRequestQueueHistory name + type: string + result: + description: Result represents a result of the pull request + queue + type: string + state: + description: State represents current status of this queue + type: string + updatedAt: + description: UpdatedAt represents time when the component + was processed + format: date-time + type: string + required: + - pullRequestNamespace + - state + type: object + type: object + type: object + status: + description: PullRequestQueueHistoryStatus defines the observed state + of PullRequestQueueHistory + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_pullrequestqueues.yaml b/test/data/crds/env.samsahai.io_pullrequestqueues.yaml index f029e0ed..9d099676 100644 --- a/test/data/crds/env.samsahai.io_pullrequestqueues.yaml +++ b/test/data/crds/env.samsahai.io_pullrequestqueues.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: pullrequestqueues.env.samsahai.io spec: @@ -15,518 +15,520 @@ spec: plural: pullrequestqueues singular: pullrequestqueue scope: Namespaced - validation: - openAPIV3Schema: - description: PullRequestQueue is the Schema for the queues API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: PullRequestQueueSpec defines the desired state of PullRequestQueue - properties: - bundleName: - description: BundleName represents a pull request bundle name - type: string - commitSHA: - description: CommitSHA represents a commit SHA - type: string - components: - description: Components represents a list of components which are deployed - items: - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - type: array - gitRepository: - description: GitRepository represents a github repository of the pull - request - type: string - imageMissingList: - description: ImageMissingList represents image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - isPrTriggerFailed: - description: IsPRTriggerFailed represents the result of pull request - trigger - type: boolean - noOfOrder: - description: NoOfOrder defines the position in queue lower is will be - picked first - type: integer - noOfRetry: - description: NoOfRetry defines how many times this pull request component - has been tested - type: integer - prNumber: - description: PRNumber represents a pull request number - type: string - prTriggerCreatedAt: - description: PRTriggerCreatedAt represents time when pull request trigger - has been start - format: date-time - type: string - prTriggerFinishedAt: - description: PRTriggerFinishedAt represents time when pull request trigger - has been finish - format: date-time - type: string - teamName: - description: TeamName represents team owner of the pull request queue - type: string - tearDownDuration: - description: TearDownDuration defines duration before teardown the pull - request components - properties: - criteria: - description: Criteria tells how does the duration apply, default - is `failure`. - type: string - duration: - description: Duration tells how much the staging controller will - wait before destroying the pull request namespace - type: string - required: - - duration - type: object - testRunner: - description: TestRunner represents configuration about how to test the - environment. If defined, this will override testRunner from config - properties: - gitlab: - description: ConfigGitlabOverrider is data that overrides ConfigGitlab - field by field + versions: + - name: v1 + schema: + openAPIV3Schema: + description: PullRequestQueue is the Schema for the queues API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PullRequestQueueSpec defines the desired state of PullRequestQueue + properties: + bundleName: + description: BundleName represents a pull request bundle name + type: string + commitSHA: + description: CommitSHA represents a commit SHA + type: string + components: + description: Components represents a list of components which are + deployed + items: properties: - branch: + name: + description: Name represents Component name type: string - inferBranch: - type: boolean - pipelineTriggerToken: + repository: + description: Repository represents Docker image repository type: string - projectID: + version: + description: Version represents Docker image tag version type: string + required: + - name + - repository + - version type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcityOverrider is data that overrides ConfigTeamcity - field by field + type: array + gitRepository: + description: GitRepository represents a github repository of the pull + request + type: string + imageMissingList: + description: ImageMissingList represents image missing lists + items: properties: - branch: + repository: type: string - buildTypeID: + tag: type: string - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean required: - - result + - repository + - tag type: object - timeout: - type: string - type: object - upcomingCommitSHA: - description: UpcomingCommitSHA represents an upcoming commit SHA in - case queue is running - type: string - upcomingComponents: - description: UpcomingComponents represents an upcoming components which - are deployed in case queue is running - items: + type: array + isPrTriggerFailed: + description: IsPRTriggerFailed represents the result of pull request + trigger + type: boolean + noOfOrder: + description: NoOfOrder defines the position in queue lower is will + be picked first + type: integer + noOfRetry: + description: NoOfRetry defines how many times this pull request component + has been tested + type: integer + prNumber: + description: PRNumber represents a pull request number + type: string + prTriggerCreatedAt: + description: PRTriggerCreatedAt represents time when pull request + trigger has been start + format: date-time + type: string + prTriggerFinishedAt: + description: PRTriggerFinishedAt represents time when pull request + trigger has been finish + format: date-time + type: string + teamName: + description: TeamName represents team owner of the pull request queue + type: string + tearDownDuration: + description: TearDownDuration defines duration before teardown the + pull request components properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository + criteria: + description: Criteria tells how does the duration apply, default + is `failure`. type: string - version: - description: Version represents Docker image tag version + duration: + description: Duration tells how much the staging controller will + wait before destroying the pull request namespace type: string required: - - name - - repository - - version + - duration type: object - type: array - required: - - bundleName - - noOfOrder - - prNumber - - teamName - type: object - status: - description: PullRequestQueueStatus defines the observed state of PullRequestQueue - properties: - conditions: - description: Conditions contains observations of the resource's state - e.g., Queue deployed, being tested - items: + testRunner: + description: TestRunner represents configuration about how to test + the environment. If defined, this will override testRunner from + config properties: - lastTransitionTime: - format: date-time + gitlab: + description: ConfigGitlabOverrider is data that overrides ConfigGitlab + field by field + properties: + branch: + type: string + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + type: object + pollingTime: type: string - message: + teamcity: + description: ConfigTeamcityOverrider is data that overrides ConfigTeamcity + field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: type: string - reason: - type: string - status: - type: string - type: - description: PullRequestQueueConditionType represents a condition - type of pull request queue - type: string - required: - - status - - type type: object - type: array - createdAt: - description: CreatedAt represents time when the component has been added - to queue - format: date-time - type: string - deploymentQueue: - description: ComponentUpgrade defines a deployed pull request queue - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the - latest internal value, and may reject unrecognized values. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: QueueSpec defines the desired state of Queue + upcomingCommitSHA: + description: UpcomingCommitSHA represents an upcoming commit SHA in + case queue is running + type: string + upcomingComponents: + description: UpcomingComponents represents an upcoming components + which are deployed in case queue is running + items: properties: - bundle: - description: Bundle represents a bundle name of component - type: string - components: - description: Components represents a list of components which - are deployed - items: - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - type: array name: - description: Name represents a Component name or bundle name - if exist + description: Name represents Component name type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process - this queue - format: date-time + repository: + description: Repository represents Docker image repository type: string - noOfOrder: - description: NoOfOrder defines the position in queue lower is - will be picked first - type: integer - noOfRetry: - description: NoOfRetry defines how many times this component - has been tested - type: integer - prNumber: - description: PRNumber represents a pull request number - type: string - queueExtraParameters: - description: QueueExtraParameters override default behavior - of how to process this queue according to QueueType - properties: - testRunner: - description: TestRunner represents configuration about how - to test the environment - properties: - gitlab: - description: ConfigGitlabOverrider is data that overrides - ConfigGitlab field by field - properties: - branch: - type: string - inferBranch: - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcityOverrider is data that overrides - ConfigTeamcity field by field - properties: - branch: - type: string - buildTypeID: - type: string - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: - type: string - type: object - type: object - skipTestRunner: - description: SkipTestRunner represents a flag for skipping running - test - type: boolean - teamName: - description: TeamName represents team owner of the queue - type: string - type: - description: Type represents how we will process this queue + version: + description: Version represents Docker image tag version type: string required: - name - - noOfOrder - - teamName - - type + - repository + - version type: object - status: - description: QueueStatus defines the observed state of Queue + type: array + required: + - bundleName + - noOfOrder + - prNumber + - teamName + type: object + status: + description: PullRequestQueueStatus defines the observed state of PullRequestQueue + properties: + conditions: + description: Conditions contains observations of the resource's state + e.g., Queue deployed, being tested + items: properties: - conditions: - description: Conditions contains observations of the resource's - state e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when the component has - been added to queue + lastTransitionTime: format: date-time type: string - deployEngine: - description: DeployEngine represents engine using during installation - type: string - deploymentIssues: - description: DeploymentIssues defines a list of deployment issue - types - items: - properties: - failureComponents: - description: FailureComponents defines a list of failure - components - items: - properties: - componentName: - description: ComponentName defines a name of component - type: string - firstFailureContainerName: - description: FirstFailureContainerName defines a - first found failure container name - type: string - nodeName: - description: NodeName defines the node name of pod - type: string - restartCount: - description: RestartCount defines the number of - times the container has been restarted - format: int32 - type: integer - required: - - componentName - - firstFailureContainerName - - nodeName - - restartCount - type: object - type: array - issueType: - description: IssueType defines a deployment issue type - type: string - required: - - failureComponents - - issueType - type: object - type: array - imageMissingList: - description: ImageMissingList defines image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - kubeZipLog: - description: KubeZipLog defines log of k8s resources during - deployment in base64 zip format - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process - this queue - format: date-time + message: type: string - noOfProcessed: - description: NoOfProcessed represents how many time that this - queue had been processed - type: integer - queueHistoryName: - description: QueueHistoryName defines name of history of this - queue + reason: type: string - startDeployTime: - description: StartDeployTime represents the time when this queue - start deploying - format: date-time + status: type: string - startTestingTime: - description: StartTestingTime represents the time when this - queue start testing - format: date-time - type: string - state: - description: State represents current status of this queue + type: + description: PullRequestQueueConditionType represents a condition + type of pull request queue type: string - testRunners: - description: TestRunner defines the test runner - properties: - gitlab: + required: + - status + - type + type: object + type: array + createdAt: + description: CreatedAt represents time when the component has been + added to queue + format: date-time + type: string + deploymentQueue: + description: ComponentUpgrade defines a deployed pull request queue + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: QueueSpec defines the desired state of Queue + properties: + bundle: + description: Bundle represents a bundle name of component + type: string + components: + description: Components represents a list of components which + are deployed + items: properties: - branch: - type: string - pipelineID: + name: + description: Name represents Component name type: string - pipelineNumber: + repository: + description: Repository represents Docker image repository type: string - pipelineURL: + version: + description: Version represents Docker image tag version type: string + required: + - name + - repository + - version type: object - teamcity: + type: array + name: + description: Name represents a Component name or bundle name + if exist + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process + this queue + format: date-time + type: string + noOfOrder: + description: NoOfOrder defines the position in queue lower + is will be picked first + type: integer + noOfRetry: + description: NoOfRetry defines how many times this component + has been tested + type: integer + prNumber: + description: PRNumber represents a pull request number + type: string + queueExtraParameters: + description: QueueExtraParameters override default behavior + of how to process this queue according to QueueType + properties: + testRunner: + description: TestRunner represents configuration about + how to test the environment + properties: + gitlab: + description: ConfigGitlabOverrider is data that overrides + ConfigGitlab field by field + properties: + branch: + type: string + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcityOverrider is data that + overrides ConfigTeamcity field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + type: object + skipTestRunner: + description: SkipTestRunner represents a flag for skipping + running test + type: boolean + teamName: + description: TeamName represents team owner of the queue + type: string + type: + description: Type represents how we will process this queue + type: string + required: + - name + - noOfOrder + - teamName + - type + type: object + status: + description: QueueStatus defines the observed state of Queue + properties: + conditions: + description: Conditions contains observations of the resource's + state e.g., Queue deployed, being tested + items: properties: - branch: + lastTransitionTime: + format: date-time type: string - buildID: + message: type: string - buildNumber: + reason: type: string - buildTypeID: + status: type: string - buildURL: + type: type: string + required: + - status + - type type: object - type: object - updatedAt: - description: UpdatedAt represents time when the component was - processed - format: date-time - type: string - required: - - kubeZipLog - - queueHistoryName - - state - type: object - type: object - destroyedTime: - description: DestroyedTime represents time at which the PR namespace - will be destroyed - format: date-time - type: string - pullRequestNamespace: - description: PullRequestNamespace represents a current pull request - namespace - type: string - pullRequestQueueHistoryName: - description: PullRequestQueueHistoryName represents created PullRequestQueueHistory - name - type: string - result: - description: Result represents a result of the pull request queue - type: string - state: - description: State represents current status of this queue - type: string - updatedAt: - description: UpdatedAt represents time when the component was processed - format: date-time - type: string - required: - - pullRequestNamespace - - state - type: object - type: object - version: v1 - versions: - - name: v1 + type: array + createdAt: + description: CreatedAt represents time when the component + has been added to queue + format: date-time + type: string + deployEngine: + description: DeployEngine represents engine using during installation + type: string + deploymentIssues: + description: DeploymentIssues defines a list of deployment + issue types + items: + properties: + failureComponents: + description: FailureComponents defines a list of failure + components + items: + properties: + componentName: + description: ComponentName defines a name of component + type: string + firstFailureContainerName: + description: FirstFailureContainerName defines + a first found failure container name + type: string + nodeName: + description: NodeName defines the node name of + pod + type: string + restartCount: + description: RestartCount defines the number of + times the container has been restarted + format: int32 + type: integer + required: + - componentName + - firstFailureContainerName + - nodeName + - restartCount + type: object + type: array + issueType: + description: IssueType defines a deployment issue type + type: string + required: + - failureComponents + - issueType + type: object + type: array + imageMissingList: + description: ImageMissingList defines image missing lists + items: + properties: + repository: + type: string + tag: + type: string + required: + - repository + - tag + type: object + type: array + kubeZipLog: + description: KubeZipLog defines log of k8s resources during + deployment in base64 zip format + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process + this queue + format: date-time + type: string + noOfProcessed: + description: NoOfProcessed represents how many time that this + queue had been processed + type: integer + queueHistoryName: + description: QueueHistoryName defines name of history of this + queue + type: string + startDeployTime: + description: StartDeployTime represents the time when this + queue start deploying + format: date-time + type: string + startTestingTime: + description: StartTestingTime represents the time when this + queue start testing + format: date-time + type: string + state: + description: State represents current status of this queue + type: string + testRunners: + description: TestRunner defines the test runner + properties: + gitlab: + properties: + branch: + type: string + pipelineID: + type: string + pipelineNumber: + type: string + pipelineURL: + type: string + type: object + teamcity: + properties: + branch: + type: string + buildID: + type: string + buildNumber: + type: string + buildTypeID: + type: string + buildURL: + type: string + type: object + type: object + updatedAt: + description: UpdatedAt represents time when the component + was processed + format: date-time + type: string + required: + - kubeZipLog + - queueHistoryName + - state + type: object + type: object + destroyedTime: + description: DestroyedTime represents time at which the PR namespace + will be destroyed + format: date-time + type: string + pullRequestNamespace: + description: PullRequestNamespace represents a current pull request + namespace + type: string + pullRequestQueueHistoryName: + description: PullRequestQueueHistoryName represents created PullRequestQueueHistory + name + type: string + result: + description: Result represents a result of the pull request queue + type: string + state: + description: State represents current status of this queue + type: string + updatedAt: + description: UpdatedAt represents time when the component was processed + format: date-time + type: string + required: + - pullRequestNamespace + - state + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml b/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml index 9285666b..35b2136d 100644 --- a/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml +++ b/test/data/crds/env.samsahai.io_pullrequesttriggers.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: pullrequesttriggers.env.samsahai.io spec: @@ -15,185 +15,187 @@ spec: plural: pullrequesttriggers singular: pullrequesttrigger scope: Namespaced - validation: - openAPIV3Schema: - description: PullRequestTrigger is the Schema for the pullrequesttriggers API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: PullRequestTriggerSpec defines the desired state of PullRequestTrigger - properties: - bundleName: - type: string - commitSHA: - type: string - components: - items: - description: PullRequestTriggerComponent represents a pull request - component in bundle + versions: + - name: v1 + schema: + openAPIV3Schema: + description: PullRequestTrigger is the Schema for the pullrequesttriggers + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PullRequestTriggerSpec defines the desired state of PullRequestTrigger + properties: + bundleName: + type: string + commitSHA: + type: string + components: + items: + description: PullRequestTriggerComponent represents a pull request + component in bundle + properties: + componentName: + description: ComponentName defines a name of bundle component + type: string + image: + description: Image defines an image repository and tag + properties: + repository: + type: string + tag: + type: string + required: + - repository + - tag + type: object + pattern: + description: Pattern defines a pattern of bundle component which + is a regex of tag + type: string + source: + description: UpdatingSource represents source for checking desired + version of components + type: string + required: + - componentName + - image + type: object + type: array + gitRepository: + description: GitRepository represents a github repository of the pull + request + type: string + nextProcessAt: + format: date-time + type: string + noOfRetry: + type: integer + prNumber: + type: string + tearDownDuration: + description: TearDownDuration defines duration before teardown the + pull request components. If defined, this will override tearDownDuration + from pull request extra config properties: - componentName: - description: ComponentName defines a name of bundle component + criteria: + description: Criteria tells how does the duration apply, default + is `failure`. + type: string + duration: + description: Duration tells how much the staging controller will + wait before destroying the pull request namespace type: string - image: - description: Image defines an image repository and tag + required: + - duration + type: object + testRunner: + description: TestRunner represents configuration about how to test + the environment. If defined, this will override testRunner from + config + properties: + gitlab: + description: ConfigGitlabOverrider is data that overrides ConfigGitlab + field by field properties: - repository: + branch: type: string - tag: + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: type: string - required: - - repository - - tag type: object - pattern: - description: Pattern defines a pattern of bundle component which - is a regex of tag + pollingTime: type: string - source: - description: UpdatingSource represents source for checking desired - version of components + teamcity: + description: ConfigTeamcityOverrider is data that overrides ConfigTeamcity + field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: type: string - required: - - componentName - - image type: object - type: array - gitRepository: - description: GitRepository represents a github repository of the pull - request - type: string - nextProcessAt: - format: date-time - type: string - noOfRetry: - type: integer - prNumber: - type: string - tearDownDuration: - description: TearDownDuration defines duration before teardown the pull - request components. If defined, this will override tearDownDuration - from pull request extra config - properties: - criteria: - description: Criteria tells how does the duration apply, default - is `failure`. - type: string - duration: - description: Duration tells how much the staging controller will - wait before destroying the pull request namespace - type: string - required: - - duration - type: object - testRunner: - description: TestRunner represents configuration about how to test the - environment. If defined, this will override testRunner from config - properties: - gitlab: - description: ConfigGitlabOverrider is data that overrides ConfigGitlab - field by field + required: + - bundleName + - prNumber + type: object + status: + description: PullRequestTriggerStatus defines the observed state of PullRequestTrigger + properties: + conditions: + description: Conditions contains observations of the resource's state + e.g., Queue deployed, being tested + items: properties: - branch: + lastTransitionTime: + format: date-time type: string - inferBranch: - type: boolean - pipelineTriggerToken: + message: type: string - projectID: + reason: type: string - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcityOverrider is data that overrides ConfigTeamcity - field by field - properties: - branch: + status: type: string - buildTypeID: + type: type: string + required: + - status + - type type: object - testMock: - description: ConfigTestMock defines a result of testmock + type: array + createdAt: + description: CreatedAt represents time when pull request has been + triggered firstly + format: date-time + type: string + imageMissingList: + description: ImageMissingList defines image missing lists + items: properties: - result: - type: boolean + repository: + type: string + tag: + type: string required: - - result + - repository + - tag type: object - timeout: - type: string - type: object - required: - - bundleName - - prNumber - type: object - status: - description: PullRequestTriggerStatus defines the observed state of PullRequestTrigger - properties: - conditions: - description: Conditions contains observations of the resource's state - e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when pull request has been triggered - firstly - format: date-time - type: string - imageMissingList: - description: ImageMissingList defines image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - result: - description: Result represents a result of the pull request trigger - type: string - updatedAt: - description: UpdatedAt represents time when pull request has been re-triggered - format: date-time - type: string - type: object - type: object - version: v1 - versions: - - name: v1 + type: array + result: + description: Result represents a result of the pull request trigger + type: string + updatedAt: + description: UpdatedAt represents time when pull request has been + re-triggered + format: date-time + type: string + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_queuehistories.yaml b/test/data/crds/env.samsahai.io_queuehistories.yaml index c8c93cf3..da54cba0 100644 --- a/test/data/crds/env.samsahai.io_queuehistories.yaml +++ b/test/data/crds/env.samsahai.io_queuehistories.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: queuehistories.env.samsahai.io spec: @@ -15,317 +15,40 @@ spec: plural: queuehistories singular: queuehistory scope: Namespaced - validation: - openAPIV3Schema: - description: QueueHistory is the Schema for the queuehistories API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: QueueHistorySpec defines the desired state of QueueHistory - properties: - appliedValues: - type: object - createdAt: - format: date-time - type: string - isDeploySuccess: - type: boolean - isReverify: - type: boolean - isTestSuccess: - type: boolean - queue: - description: Queue is the Schema for the queues API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the - latest internal value, and may reject unrecognized values. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: QueueSpec defines the desired state of Queue - properties: - bundle: - description: Bundle represents a bundle name of component - type: string - components: - description: Components represents a list of components which - are deployed - items: - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - type: array - name: - description: Name represents a Component name or bundle name - if exist - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process - this queue - format: date-time - type: string - noOfOrder: - description: NoOfOrder defines the position in queue lower is - will be picked first - type: integer - noOfRetry: - description: NoOfRetry defines how many times this component - has been tested - type: integer - prNumber: - description: PRNumber represents a pull request number - type: string - queueExtraParameters: - description: QueueExtraParameters override default behavior - of how to process this queue according to QueueType - properties: - testRunner: - description: TestRunner represents configuration about how - to test the environment - properties: - gitlab: - description: ConfigGitlabOverrider is data that overrides - ConfigGitlab field by field - properties: - branch: - type: string - inferBranch: - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - type: object - pollingTime: - type: string - teamcity: - description: ConfigTeamcityOverrider is data that overrides - ConfigTeamcity field by field - properties: - branch: - type: string - buildTypeID: - type: string - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: - type: string - type: object - type: object - skipTestRunner: - description: SkipTestRunner represents a flag for skipping running - test - type: boolean - teamName: - description: TeamName represents team owner of the queue - type: string - type: - description: Type represents how we will process this queue - type: string - required: - - name - - noOfOrder - - teamName - - type - type: object - status: - description: QueueStatus defines the observed state of Queue - properties: - conditions: - description: Conditions contains observations of the resource's - state e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when the component has - been added to queue - format: date-time - type: string - deployEngine: - description: DeployEngine represents engine using during installation - type: string - deploymentIssues: - description: DeploymentIssues defines a list of deployment issue - types - items: - properties: - failureComponents: - description: FailureComponents defines a list of failure - components - items: - properties: - componentName: - description: ComponentName defines a name of component - type: string - firstFailureContainerName: - description: FirstFailureContainerName defines a - first found failure container name - type: string - nodeName: - description: NodeName defines the node name of pod - type: string - restartCount: - description: RestartCount defines the number of - times the container has been restarted - format: int32 - type: integer - required: - - componentName - - firstFailureContainerName - - nodeName - - restartCount - type: object - type: array - issueType: - description: IssueType defines a deployment issue type - type: string - required: - - failureComponents - - issueType - type: object - type: array - imageMissingList: - description: ImageMissingList defines image missing lists - items: - properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag - type: object - type: array - kubeZipLog: - description: KubeZipLog defines log of k8s resources during - deployment in base64 zip format - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process - this queue - format: date-time - type: string - noOfProcessed: - description: NoOfProcessed represents how many time that this - queue had been processed - type: integer - queueHistoryName: - description: QueueHistoryName defines name of history of this - queue - type: string - startDeployTime: - description: StartDeployTime represents the time when this queue - start deploying - format: date-time - type: string - startTestingTime: - description: StartTestingTime represents the time when this - queue start testing - format: date-time - type: string - state: - description: State represents current status of this queue - type: string - testRunners: - description: TestRunner defines the test runner - properties: - gitlab: - properties: - branch: - type: string - pipelineID: - type: string - pipelineNumber: - type: string - pipelineURL: - type: string - type: object - teamcity: - properties: - branch: - type: string - buildID: - type: string - buildNumber: - type: string - buildTypeID: - type: string - buildURL: - type: string - type: object - type: object - updatedAt: - description: UpdatedAt represents time when the component was - processed - format: date-time - type: string - required: - - kubeZipLog - - queueHistoryName - - state - type: object - type: object - stableComponents: - items: - description: StableComponent is the Schema for the stablecomponents - API + versions: + - name: v1 + schema: + openAPIV3Schema: + description: QueueHistory is the Schema for the queuehistories API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: QueueHistorySpec defines the desired state of QueueHistory + properties: + appliedValues: + type: object + createdAt: + format: date-time + type: string + isDeploySuccess: + type: boolean + isReverify: + type: boolean + isTestSuccess: + type: boolean + queue: + description: Queue is the Schema for the queues API properties: apiVersion: description: 'APIVersion defines the versioned schema of this @@ -342,51 +65,328 @@ spec: metadata: type: object spec: - description: StableComponentSpec defines the desired state of - StableComponent + description: QueueSpec defines the desired state of Queue properties: + bundle: + description: Bundle represents a bundle name of component + type: string + components: + description: Components represents a list of components which + are deployed + items: + properties: + name: + description: Name represents Component name + type: string + repository: + description: Repository represents Docker image repository + type: string + version: + description: Version represents Docker image tag version + type: string + required: + - name + - repository + - version + type: object + type: array name: - description: Name represents Component name + description: Name represents a Component name or bundle name + if exist + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process + this queue + format: date-time type: string - repository: - description: Repository represents Docker image repository + noOfOrder: + description: NoOfOrder defines the position in queue lower + is will be picked first + type: integer + noOfRetry: + description: NoOfRetry defines how many times this component + has been tested + type: integer + prNumber: + description: PRNumber represents a pull request number type: string - updatedBy: - description: UpdatedBy represents a person who updated the - StableComponent + queueExtraParameters: + description: QueueExtraParameters override default behavior + of how to process this queue according to QueueType + properties: + testRunner: + description: TestRunner represents configuration about + how to test the environment + properties: + gitlab: + description: ConfigGitlabOverrider is data that overrides + ConfigGitlab field by field + properties: + branch: + type: string + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcityOverrider is data that + overrides ConfigTeamcity field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object + type: object + skipTestRunner: + description: SkipTestRunner represents a flag for skipping + running test + type: boolean + teamName: + description: TeamName represents team owner of the queue type: string - version: - description: Version represents Docker image tag version + type: + description: Type represents how we will process this queue type: string required: - name - - repository - - version + - noOfOrder + - teamName + - type type: object status: - description: StableComponentStatus defines the observed state - of StableComponent + description: QueueStatus defines the observed state of Queue properties: + conditions: + description: Conditions contains observations of the resource's + state e.g., Queue deployed, being tested + items: + properties: + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array createdAt: + description: CreatedAt represents time when the component + has been added to queue + format: date-time + type: string + deployEngine: + description: DeployEngine represents engine using during installation + type: string + deploymentIssues: + description: DeploymentIssues defines a list of deployment + issue types + items: + properties: + failureComponents: + description: FailureComponents defines a list of failure + components + items: + properties: + componentName: + description: ComponentName defines a name of component + type: string + firstFailureContainerName: + description: FirstFailureContainerName defines + a first found failure container name + type: string + nodeName: + description: NodeName defines the node name of + pod + type: string + restartCount: + description: RestartCount defines the number of + times the container has been restarted + format: int32 + type: integer + required: + - componentName + - firstFailureContainerName + - nodeName + - restartCount + type: object + type: array + issueType: + description: IssueType defines a deployment issue type + type: string + required: + - failureComponents + - issueType + type: object + type: array + imageMissingList: + description: ImageMissingList defines image missing lists + items: + properties: + repository: + type: string + tag: + type: string + required: + - repository + - tag + type: object + type: array + kubeZipLog: + description: KubeZipLog defines log of k8s resources during + deployment in base64 zip format + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process + this queue format: date-time type: string + noOfProcessed: + description: NoOfProcessed represents how many time that this + queue had been processed + type: integer + queueHistoryName: + description: QueueHistoryName defines name of history of this + queue + type: string + startDeployTime: + description: StartDeployTime represents the time when this + queue start deploying + format: date-time + type: string + startTestingTime: + description: StartTestingTime represents the time when this + queue start testing + format: date-time + type: string + state: + description: State represents current status of this queue + type: string + testRunners: + description: TestRunner defines the test runner + properties: + gitlab: + properties: + branch: + type: string + pipelineID: + type: string + pipelineNumber: + type: string + pipelineURL: + type: string + type: object + teamcity: + properties: + branch: + type: string + buildID: + type: string + buildNumber: + type: string + buildTypeID: + type: string + buildURL: + type: string + type: object + type: object updatedAt: + description: UpdatedAt represents time when the component + was processed format: date-time type: string + required: + - kubeZipLog + - queueHistoryName + - state type: object type: object - type: array - required: - - isDeploySuccess - - isTestSuccess - type: object - status: - description: QueueHistoryStatus defines the observed state of QueueHistory - type: object - type: object - version: v1 - versions: - - name: v1 + stableComponents: + items: + description: StableComponent is the Schema for the stablecomponents + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: StableComponentSpec defines the desired state of + StableComponent + properties: + name: + description: Name represents Component name + type: string + repository: + description: Repository represents Docker image repository + type: string + updatedBy: + description: UpdatedBy represents a person who updated the + StableComponent + type: string + version: + description: Version represents Docker image tag version + type: string + required: + - name + - repository + - version + type: object + status: + description: StableComponentStatus defines the observed state + of StableComponent + properties: + createdAt: + format: date-time + type: string + updatedAt: + format: date-time + type: string + type: object + type: object + type: array + required: + - isDeploySuccess + - isTestSuccess + type: object + status: + description: QueueHistoryStatus defines the observed state of QueueHistory + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_queues.yaml b/test/data/crds/env.samsahai.io_queues.yaml index ae6be643..2029d551 100644 --- a/test/data/crds/env.samsahai.io_queues.yaml +++ b/test/data/crds/env.samsahai.io_queues.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: queues.env.samsahai.io spec: @@ -15,278 +15,279 @@ spec: plural: queues singular: queue scope: Namespaced - validation: - openAPIV3Schema: - description: Queue is the Schema for the queues API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: QueueSpec defines the desired state of Queue - properties: - bundle: - description: Bundle represents a bundle name of component - type: string - components: - description: Components represents a list of components which are deployed - items: - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - type: array - name: - description: Name represents a Component name or bundle name if exist - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process this - queue - format: date-time - type: string - noOfOrder: - description: NoOfOrder defines the position in queue lower is will be - picked first - type: integer - noOfRetry: - description: NoOfRetry defines how many times this component has been - tested - type: integer - prNumber: - description: PRNumber represents a pull request number - type: string - queueExtraParameters: - description: QueueExtraParameters override default behavior of how to - process this queue according to QueueType - properties: - testRunner: - description: TestRunner represents configuration about how to test - the environment + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Queue is the Schema for the queues API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: QueueSpec defines the desired state of Queue + properties: + bundle: + description: Bundle represents a bundle name of component + type: string + components: + description: Components represents a list of components which are + deployed + items: properties: - gitlab: - description: ConfigGitlabOverrider is data that overrides ConfigGitlab - field by field - properties: - branch: - type: string - inferBranch: - type: boolean - pipelineTriggerToken: - type: string - projectID: - type: string - type: object - pollingTime: + name: + description: Name represents Component name + type: string + repository: + description: Repository represents Docker image repository type: string - teamcity: - description: ConfigTeamcityOverrider is data that overrides - ConfigTeamcity field by field - properties: - branch: - type: string - buildTypeID: - type: string - type: object - testMock: - description: ConfigTestMock defines a result of testmock - properties: - result: - type: boolean - required: - - result - type: object - timeout: + version: + description: Version represents Docker image tag version type: string + required: + - name + - repository + - version type: object - type: object - skipTestRunner: - description: SkipTestRunner represents a flag for skipping running test - type: boolean - teamName: - description: TeamName represents team owner of the queue - type: string - type: - description: Type represents how we will process this queue - type: string - required: - - name - - noOfOrder - - teamName - - type - type: object - status: - description: QueueStatus defines the observed state of Queue - properties: - conditions: - description: Conditions contains observations of the resource's state - e.g., Queue deployed, being tested - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - createdAt: - description: CreatedAt represents time when the component has been added - to queue - format: date-time - type: string - deployEngine: - description: DeployEngine represents engine using during installation - type: string - deploymentIssues: - description: DeploymentIssues defines a list of deployment issue types - items: - properties: - failureComponents: - description: FailureComponents defines a list of failure components - items: - properties: - componentName: - description: ComponentName defines a name of component - type: string - firstFailureContainerName: - description: FirstFailureContainerName defines a first found - failure container name - type: string - nodeName: - description: NodeName defines the node name of pod - type: string - restartCount: - description: RestartCount defines the number of times the - container has been restarted - format: int32 - type: integer - required: - - componentName - - firstFailureContainerName - - nodeName - - restartCount - type: object - type: array - issueType: - description: IssueType defines a deployment issue type - type: string - required: - - failureComponents - - issueType - type: object - type: array - imageMissingList: - description: ImageMissingList defines image missing lists - items: + type: array + name: + description: Name represents a Component name or bundle name if exist + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process this + queue + format: date-time + type: string + noOfOrder: + description: NoOfOrder defines the position in queue lower is will + be picked first + type: integer + noOfRetry: + description: NoOfRetry defines how many times this component has been + tested + type: integer + prNumber: + description: PRNumber represents a pull request number + type: string + queueExtraParameters: + description: QueueExtraParameters override default behavior of how + to process this queue according to QueueType properties: - repository: - type: string - tag: - type: string - required: - - repository - - tag + testRunner: + description: TestRunner represents configuration about how to + test the environment + properties: + gitlab: + description: ConfigGitlabOverrider is data that overrides + ConfigGitlab field by field + properties: + branch: + type: string + inferBranch: + type: boolean + pipelineTriggerToken: + type: string + projectID: + type: string + type: object + pollingTime: + type: string + teamcity: + description: ConfigTeamcityOverrider is data that overrides + ConfigTeamcity field by field + properties: + branch: + type: string + buildTypeID: + type: string + type: object + testMock: + description: ConfigTestMock defines a result of testmock + properties: + result: + type: boolean + required: + - result + type: object + timeout: + type: string + type: object type: object - type: array - kubeZipLog: - description: KubeZipLog defines log of k8s resources during deployment - in base64 zip format - type: string - nextProcessAt: - description: NextProcessAt represents time to wait for process this - queue - format: date-time - type: string - noOfProcessed: - description: NoOfProcessed represents how many time that this queue - had been processed - type: integer - queueHistoryName: - description: QueueHistoryName defines name of history of this queue - type: string - startDeployTime: - description: StartDeployTime represents the time when this queue start - deploying - format: date-time - type: string - startTestingTime: - description: StartTestingTime represents the time when this queue start - testing - format: date-time - type: string - state: - description: State represents current status of this queue - type: string - testRunners: - description: TestRunner defines the test runner - properties: - gitlab: + skipTestRunner: + description: SkipTestRunner represents a flag for skipping running + test + type: boolean + teamName: + description: TeamName represents team owner of the queue + type: string + type: + description: Type represents how we will process this queue + type: string + required: + - name + - noOfOrder + - teamName + - type + type: object + status: + description: QueueStatus defines the observed state of Queue + properties: + conditions: + description: Conditions contains observations of the resource's state + e.g., Queue deployed, being tested + items: properties: - branch: + lastTransitionTime: + format: date-time type: string - pipelineID: + message: type: string - pipelineNumber: + reason: type: string - pipelineURL: + status: type: string + type: + type: string + required: + - status + - type type: object - teamcity: + type: array + createdAt: + description: CreatedAt represents time when the component has been + added to queue + format: date-time + type: string + deployEngine: + description: DeployEngine represents engine using during installation + type: string + deploymentIssues: + description: DeploymentIssues defines a list of deployment issue types + items: properties: - branch: - type: string - buildID: - type: string - buildNumber: + failureComponents: + description: FailureComponents defines a list of failure components + items: + properties: + componentName: + description: ComponentName defines a name of component + type: string + firstFailureContainerName: + description: FirstFailureContainerName defines a first + found failure container name + type: string + nodeName: + description: NodeName defines the node name of pod + type: string + restartCount: + description: RestartCount defines the number of times + the container has been restarted + format: int32 + type: integer + required: + - componentName + - firstFailureContainerName + - nodeName + - restartCount + type: object + type: array + issueType: + description: IssueType defines a deployment issue type type: string - buildTypeID: + required: + - failureComponents + - issueType + type: object + type: array + imageMissingList: + description: ImageMissingList defines image missing lists + items: + properties: + repository: type: string - buildURL: + tag: type: string + required: + - repository + - tag type: object - type: object - updatedAt: - description: UpdatedAt represents time when the component was processed - format: date-time - type: string - required: - - kubeZipLog - - queueHistoryName - - state - type: object - type: object - version: v1 - versions: - - name: v1 + type: array + kubeZipLog: + description: KubeZipLog defines log of k8s resources during deployment + in base64 zip format + type: string + nextProcessAt: + description: NextProcessAt represents time to wait for process this + queue + format: date-time + type: string + noOfProcessed: + description: NoOfProcessed represents how many time that this queue + had been processed + type: integer + queueHistoryName: + description: QueueHistoryName defines name of history of this queue + type: string + startDeployTime: + description: StartDeployTime represents the time when this queue start + deploying + format: date-time + type: string + startTestingTime: + description: StartTestingTime represents the time when this queue + start testing + format: date-time + type: string + state: + description: State represents current status of this queue + type: string + testRunners: + description: TestRunner defines the test runner + properties: + gitlab: + properties: + branch: + type: string + pipelineID: + type: string + pipelineNumber: + type: string + pipelineURL: + type: string + type: object + teamcity: + properties: + branch: + type: string + buildID: + type: string + buildNumber: + type: string + buildTypeID: + type: string + buildURL: + type: string + type: object + type: object + updatedAt: + description: UpdatedAt represents time when the component was processed + format: date-time + type: string + required: + - kubeZipLog + - queueHistoryName + - state + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_stablecomponents.yaml b/test/data/crds/env.samsahai.io_stablecomponents.yaml index f01688d2..32d7e4e7 100644 --- a/test/data/crds/env.samsahai.io_stablecomponents.yaml +++ b/test/data/crds/env.samsahai.io_stablecomponents.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: stablecomponents.env.samsahai.io spec: @@ -15,56 +15,55 @@ spec: plural: stablecomponents singular: stablecomponent scope: Namespaced - validation: - openAPIV3Schema: - description: StableComponent is the Schema for the stablecomponents API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: StableComponentSpec defines the desired state of StableComponent - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - updatedBy: - description: UpdatedBy represents a person who updated the StableComponent - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - status: - description: StableComponentStatus defines the observed state of StableComponent - properties: - createdAt: - format: date-time - type: string - updatedAt: - format: date-time - type: string - type: object - type: object - version: v1 versions: - name: v1 + schema: + openAPIV3Schema: + description: StableComponent is the Schema for the stablecomponents API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: StableComponentSpec defines the desired state of StableComponent + properties: + name: + description: Name represents Component name + type: string + repository: + description: Repository represents Docker image repository + type: string + updatedBy: + description: UpdatedBy represents a person who updated the StableComponent + type: string + version: + description: Version represents Docker image tag version + type: string + required: + - name + - repository + - version + type: object + status: + description: StableComponentStatus defines the observed state of StableComponent + properties: + createdAt: + format: date-time + type: string + updatedAt: + format: date-time + type: string + type: object + type: object served: true storage: true status: diff --git a/test/data/crds/env.samsahai.io_teams.yaml b/test/data/crds/env.samsahai.io_teams.yaml index 2364e682..deb447e9 100644 --- a/test/data/crds/env.samsahai.io_teams.yaml +++ b/test/data/crds/env.samsahai.io_teams.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: (devel) + controller-gen.kubebuilder.io/version: "" creationTimestamp: null name: teams.env.samsahai.io spec: @@ -15,502 +15,507 @@ spec: plural: teams singular: team scope: Cluster - validation: - openAPIV3Schema: - description: Team is the Schema for the teams API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: TeamSpec defines the desired state of Team - properties: - credential: - description: Credential - properties: - github: - description: Github - properties: - token: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Team is the Schema for the teams API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TeamSpec defines the desired state of Team + properties: + credential: + description: Credential + properties: + github: + description: Github + properties: + token: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + required: + - token + type: object + gitlab: + description: Gitlab + properties: + token: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + required: + - token + type: object + secretName: + description: SecretName + type: string + teamcity: + description: Teamcity + properties: + password: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + username: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + required: + - password + - username + type: object + type: object + desc: + description: Description represents description for this team + type: string + owners: + description: Owners represents contact point of this team + items: + type: string + type: array + resources: + additionalProperties: + type: string + description: Resources represents how many resources per namespace + for the team + type: object + stagingCtrl: + description: StagingCtrl represents configuration about the staging + controller. For easier for developing, debugging and testing purposes + properties: + endpoint: + description: Endpoint represents the staging endpoint endpoint. + type: string + image: + description: Image represents image for run staging controller. + type: string + isDeploy: + description: IsDeploy represents flag to deploy staging controller + or not. + type: boolean + resources: + description: ResourceRequirements describes the compute resource + requirements. + properties: + limits: + additionalProperties: type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - required: - - token - type: object - gitlab: - description: Gitlab + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + required: + - isDeploy + type: object + type: object + status: + description: TeamStatus defines the observed state of Team + properties: + activeComponents: + additionalProperties: + description: StableComponent is the Schema for the stablecomponents + API properties: - token: - description: SecretKeySelector selects a key of a Secret. + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: StableComponentSpec defines the desired state of + StableComponent properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + description: Name represents Component name type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - required: - - token - type: object - secretName: - description: SecretName - type: string - teamcity: - description: Teamcity - properties: - password: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. + repository: + description: Repository represents Docker image repository type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + updatedBy: + description: UpdatedBy represents a person who updated the + StableComponent + type: string + version: + description: Version represents Docker image tag version type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean required: - - key + - name + - repository + - version type: object - username: - description: SecretKeySelector selects a key of a Secret. + status: + description: StableComponentStatus defines the observed state + of StableComponent properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. + createdAt: + format: date-time type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + updatedAt: + format: date-time type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key type: object - required: - - password - - username type: object - type: object - desc: - description: Description represents description for this team - type: string - owners: - description: Owners represents contact point of this team - items: + description: ActiveComponents represents a list of stable components + in active namespace + type: object + activeDeletedBy: + description: ActiveDeletedBy represents a person who deleted the Active + environment type: string - type: array - resources: - additionalProperties: + activePromotedBy: + description: ActivePromotedBy represents a person who promoted the + ActivePromotion type: string - description: Resources represents how many resources per namespace for - the team - type: object - stagingCtrl: - description: StagingCtrl represents configuration about the staging - controller. For easier for developing, debugging and testing purposes - properties: - endpoint: - description: Endpoint represents the staging endpoint endpoint. - type: string - image: - description: Image represents image for run staging controller. - type: string - isDeploy: - description: IsDeploy represents flag to deploy staging controller - or not. - type: boolean - resources: - description: ResourceRequirements describes the compute resource - requirements. + conditions: + description: Conditions contains observations of the resource's state + e.g., Team namespace is created, destroyed + items: properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type type: object - required: - - isDeploy - type: object - type: object - status: - description: TeamStatus defines the observed state of Team - properties: - activeComponents: - additionalProperties: - description: StableComponent is the Schema for the stablecomponents - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: StableComponentSpec defines the desired state of - StableComponent - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - updatedBy: - description: UpdatedBy represents a person who updated the - StableComponent - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - status: - description: StableComponentStatus defines the observed state - of StableComponent - properties: - createdAt: - format: date-time - type: string - updatedAt: - format: date-time - type: string - type: object + type: array + desiredComponentImageCreatedTime: + description: DesiredComponentImageCreatedTime represents mapping of + desired component image and created time map[componentName][repository:tag] + = image and createdTime type: object - description: ActiveComponents represents a list of stable components - in active namespace - type: object - activeDeletedBy: - description: ActiveDeletedBy represents a person who deleted the Active - environment - type: string - activePromotedBy: - description: ActivePromotedBy represents a person who promoted the ActivePromotion - type: string - conditions: - description: Conditions contains observations of the resource's state - e.g., Team namespace is created, destroyed - items: + x-kubernetes-preserve-unknown-fields: true + namespace: properties: - lastTransitionTime: - format: date-time - type: string - message: + active: type: string - reason: + preActive: type: string - status: + previousActive: type: string - type: + pullRequests: + items: + type: string + type: array + staging: type: string - required: - - status - - type type: object - type: array - desiredComponentImageCreatedTime: - description: DesiredComponentImageCreatedTime represents mapping of - desired component image and created time map[componentName][repository:tag] - = image and createdTime - type: object - x-kubernetes-preserve-unknown-fields: true - namespace: - properties: - active: - type: string - preActive: - type: string - previousActive: - type: string - pullRequests: - items: - type: string - type: array - staging: - type: string - type: object - stableComponents: - additionalProperties: - description: StableComponent is the Schema for the stablecomponents - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: StableComponentSpec defines the desired state of - StableComponent - properties: - name: - description: Name represents Component name - type: string - repository: - description: Repository represents Docker image repository - type: string - updatedBy: - description: UpdatedBy represents a person who updated the - StableComponent - type: string - version: - description: Version represents Docker image tag version - type: string - required: - - name - - repository - - version - type: object - status: - description: StableComponentStatus defines the observed state - of StableComponent - properties: - createdAt: - format: date-time - type: string - updatedAt: - format: date-time - type: string - type: object - type: object - description: StableComponentList represents a list of stable components - type: object - syncTemplate: - description: SyncTemplate represents whether the team has been synced - to the template or not - type: boolean - templateUID: - description: TemplateUID represents the template update ID - type: string - used: - description: Used represents overridden team specification - properties: - credential: - description: Credential + stableComponents: + additionalProperties: + description: StableComponent is the Schema for the stablecomponents + API properties: - github: - description: Github - properties: - token: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - required: - - token + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: type: object - gitlab: - description: Gitlab + spec: + description: StableComponentSpec defines the desired state of + StableComponent properties: - token: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + name: + description: Name represents Component name + type: string + repository: + description: Repository represents Docker image repository + type: string + updatedBy: + description: UpdatedBy represents a person who updated the + StableComponent + type: string + version: + description: Version represents Docker image tag version + type: string required: - - token + - name + - repository + - version type: object - secretName: - description: SecretName - type: string - teamcity: - description: Teamcity + status: + description: StableComponentStatus defines the observed state + of StableComponent properties: - password: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - required: - - password - - username + createdAt: + format: date-time + type: string + updatedAt: + format: date-time + type: string type: object type: object - desc: - description: Description represents description for this team - type: string - owners: - description: Owners represents contact point of this team - items: - type: string - type: array - resources: - additionalProperties: + description: StableComponentList represents a list of stable components + type: object + syncTemplate: + description: SyncTemplate represents whether the team has been synced + to the template or not + type: boolean + templateUID: + description: TemplateUID represents the template update ID + type: string + used: + description: Used represents overridden team specification + properties: + credential: + description: Credential + properties: + github: + description: Github + properties: + token: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + required: + - token + type: object + gitlab: + description: Gitlab + properties: + token: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + required: + - token + type: object + secretName: + description: SecretName + type: string + teamcity: + description: Teamcity + properties: + password: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + username: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + required: + - password + - username + type: object + type: object + desc: + description: Description represents description for this team type: string - description: Resources represents how many resources per namespace - for the team - type: object - stagingCtrl: - description: StagingCtrl represents configuration about the staging - controller. For easier for developing, debugging and testing purposes - properties: - endpoint: - description: Endpoint represents the staging endpoint endpoint. + owners: + description: Owners represents contact point of this team + items: type: string - image: - description: Image represents image for run staging controller. + type: array + resources: + additionalProperties: type: string - isDeploy: - description: IsDeploy represents flag to deploy staging controller - or not. - type: boolean - resources: - description: ResourceRequirements describes the compute resource - requirements. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. More info: - https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - required: - - isDeploy - type: object - type: object - type: object - type: object - version: v1 - versions: - - name: v1 + description: Resources represents how many resources per namespace + for the team + type: object + stagingCtrl: + description: StagingCtrl represents configuration about the staging + controller. For easier for developing, debugging and testing + purposes + properties: + endpoint: + description: Endpoint represents the staging endpoint endpoint. + type: string + image: + description: Image represents image for run staging controller. + type: string + isDeploy: + description: IsDeploy represents flag to deploy staging controller + or not. + type: boolean + resources: + description: ResourceRequirements describes the compute resource + requirements. + properties: + limits: + additionalProperties: + type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + type: string + description: 'Requests describes the minimum amount of + compute resources required. If Requests is omitted for + a container, it defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + required: + - isDeploy + type: object + type: object + type: object + type: object served: true storage: true status: From 31eef0f8da624563798b120addd515de69da07bf Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 21 Dec 2023 17:18:59 +0700 Subject: [PATCH 09/20] fix: linter --- internal/staging/start_testrunner.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/staging/start_testrunner.go b/internal/staging/start_testrunner.go index 6d27b1b1..3331b335 100644 --- a/internal/staging/start_testrunner.go +++ b/internal/staging/start_testrunner.go @@ -215,7 +215,7 @@ func (c *controller) triggerTest(queue *s2hv1.Queue, testRunners []internal.Stag // if test is not triggered yet, do... if !testRunner.IsTriggered(queue) { wg.Add(1) - go func(runner internal.StagingTestRunner) { + go func(i int, runner internal.StagingTestRunner) { defer wg.Done() // trigger test and update k8s object if err := runner.Trigger(testConfig, c.getCurrentQueue()); err != nil { @@ -228,7 +228,7 @@ func (c *controller) triggerTest(queue *s2hv1.Queue, testRunners []internal.Stag if tr := runner.GetName(); tr == teamcity.TestRunnerName { queue.Status.TestRunner.Teamcity.BuildNumber = "Build cannot be triggered in time" } - }(testRunner) + }(i, testRunner) } } From 2cf2aa84e43804c9256c29fb555c39a96a3d1433 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Fri, 22 Dec 2023 13:48:42 +0700 Subject: [PATCH 10/20] fix: remove deprecated module, update k3s image version, update go version --- Makefile | 5 ++--- go.mod | 23 ++++++++++++----------- go.sum | 37 ++++++++++++++++++++++--------------- 3 files changed, 36 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index da289a8d..02220c80 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ KUBEBUILDER_VERSION ?= 2.2.0 KUBEBULIDER_FILENAME = kubebuilder_$(KUBEBUILDER_VERSION)_$(OS)_$(ARCH) KUBEBUILDER_PATH ?= /usr/local/kubebuilder/ GORELEASER_VERSION ?= 0.124.1 -K3S_DOCKER_IMAGE ?= rancher/k3s:v1.22.17+k3s1 +K3S_DOCKER_IMAGE ?= rancher/k3s:v1.22.17-k3s1 KUBECONFIG = /tmp/s2h/k3s-kubeconfig K3S_DOCKER_NAME ?= s2h-k3s-server K3S_PORT ?= 6443 @@ -473,9 +473,8 @@ endif .install-gotools: @echo installing gotools - @GO111MODULE=off $(GO) get -u \ + $(GO) get -d \ golang.org/x/tools/cmd/goimports \ - github.com/golang/protobuf/protoc-gen-go \ github.com/twitchtv/twirp/protoc-gen-twirp # Produce CRDs that work back to Kubernetes 1.21 (no version conversion) diff --git a/go.mod b/go.mod index cd2e696b..151691b3 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/agoda-com/samsahai -go 1.17 +go 1.20 require ( github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 github.com/docker/distribution v2.7.1+incompatible github.com/ghodss/yaml v1.0.0 github.com/go-logr/logr v0.4.0 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/google/go-cmp v0.5.5 github.com/google/uuid v1.1.2 github.com/imdario/mergo v0.3.12 @@ -22,9 +22,9 @@ require ( github.com/swaggo/http-swagger v0.0.0-20190614090009-c2865af9083e github.com/swaggo/swag v1.6.3 github.com/tidwall/gjson v1.2.1 - github.com/twitchtv/twirp v8.1.0+incompatible + github.com/twitchtv/twirp v8.1.3+incompatible go.uber.org/zap v1.19.0 - google.golang.org/protobuf v1.27.1 + google.golang.org/protobuf v1.31.0 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df helm.sh/helm/v3 v3.6.3 k8s.io/api v0.22.2 @@ -154,15 +154,16 @@ require ( go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect - golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 // indirect + golang.org/x/crypto v0.16.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.19.0 // indirect golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 // indirect - golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect - golang.org/x/text v0.3.6 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/tools v0.1.2 // indirect + golang.org/x/tools v0.16.1 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c // indirect diff --git a/go.sum b/go.sum index 5105bc95..01721324 100644 --- a/go.sum +++ b/go.sum @@ -127,7 +127,6 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -395,8 +394,9 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -847,8 +847,8 @@ github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhV github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/twitchtv/twirp v8.1.0+incompatible h1:KGXanpa9LXdVE/V5P/tA27rkKFmXRGCtSNT7zdeeVOY= -github.com/twitchtv/twirp v8.1.0+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= +github.com/twitchtv/twirp v8.1.3+incompatible h1:+F4TdErPgSUbMZMwp13Q/KgDVuI7HJXP61mNV3/7iuU= +github.com/twitchtv/twirp v8.1.3+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -953,8 +953,9 @@ golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -988,8 +989,9 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1032,8 +1034,9 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1048,8 +1051,9 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1116,12 +1120,13 @@ golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo= -golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1129,8 +1134,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1190,8 +1196,9 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1278,8 +1285,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From 80a2a1acf2e886d9051deda1d90789f5e7ede3a2 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Fri, 22 Dec 2023 14:04:07 +0700 Subject: [PATCH 11/20] fix: linter --- go.mod | 5 ++--- go.sum | 1 - internal/util/dotaccess/dotaccess.go | 6 +++++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 151691b3..057fe286 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/agoda-com/samsahai -go 1.20 +go 1.18 require ( github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 @@ -24,6 +24,7 @@ require ( github.com/tidwall/gjson v1.2.1 github.com/twitchtv/twirp v8.1.3+incompatible go.uber.org/zap v1.19.0 + golang.org/x/text v0.14.0 google.golang.org/protobuf v1.31.0 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df helm.sh/helm/v3 v3.6.3 @@ -155,13 +156,11 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect golang.org/x/crypto v0.16.0 // indirect - golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/term v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect golang.org/x/tools v0.16.1 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect diff --git a/go.sum b/go.sum index 01721324..d98d8556 100644 --- a/go.sum +++ b/go.sum @@ -991,7 +991,6 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= diff --git a/internal/util/dotaccess/dotaccess.go b/internal/util/dotaccess/dotaccess.go index 69f2b519..a5626913 100644 --- a/internal/util/dotaccess/dotaccess.go +++ b/internal/util/dotaccess/dotaccess.go @@ -5,6 +5,9 @@ import ( "fmt" "reflect" "strings" + + "golang.org/x/text/cases" + "golang.org/x/text/language" ) func Get(obj interface{}, prop string) (interface{}, error) { @@ -45,7 +48,8 @@ func getProperty(obj interface{}, prop string) (interface{}, error) { return idx.Interface(), nil } - prop = strings.Title(prop) + caser := cases.Title(language.English) + prop = caser.String(prop) return getField(obj, prop) } From ca2f59ca8d47b7c9d6c26285a8db8025dedab8f6 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Fri, 22 Dec 2023 14:07:45 +0700 Subject: [PATCH 12/20] fix: update go version for workflow job --- .github/workflows/build-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 8f886edf..174d615f 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -31,7 +31,7 @@ jobs: # BUILD - uses: actions/setup-go@v1 with: - go-version: '1.17.2' + go-version: '1.18.10' - uses: actions/checkout@v1 with: From ba40b01a0785cc1b768ff2d497f66d32d474c4fb Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 4 Jan 2024 19:00:27 +0700 Subject: [PATCH 13/20] fix: update manager option --- cmd/samsahai/main.go | 10 ++++++---- cmd/staging/main.go | 9 ++++++--- internal/samsahai/exporter/metric_test.go | 9 ++++++++- test/e2e/config/ctrl.go | 3 ++- test/e2e/pullrequest/ctrl.go | 9 ++++++--- test/e2e/samsahai/ctrl.go | 10 ++++++---- test/e2e/staging/ctrl.go | 3 ++- 7 files changed, 36 insertions(+), 17 deletions(-) diff --git a/cmd/samsahai/main.go b/cmd/samsahai/main.go index e97f64a4..de811c6e 100644 --- a/cmd/samsahai/main.go +++ b/cmd/samsahai/main.go @@ -37,11 +37,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" - cr "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client/config" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/manager/signals" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" docs2 "github.com/agoda-com/samsahai/docs" @@ -119,9 +119,11 @@ func startCtrlCmd() *cobra.Command { // Create a new Cmd to provide shared dependencies and start components logger.Info("setting up manager") - mgr, err := cr.NewManager(cfg, manager.Options{ - Scheme: scheme, - MetricsBindAddress: ":" + httpMetricPort, + mgr, err := manager.New(cfg, manager.Options{ + Scheme: scheme, + Metrics: server.Options{ + BindAddress: ":" + httpMetricPort, + }, }) if err != nil { logger.Error(err, "unable to set up overall controller manager") diff --git a/cmd/staging/main.go b/cmd/staging/main.go index 46f071e1..231a85fb 100644 --- a/cmd/staging/main.go +++ b/cmd/staging/main.go @@ -34,6 +34,7 @@ import ( logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/manager/signals" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" s2h "github.com/agoda-com/samsahai/internal" @@ -117,9 +118,11 @@ func startCtrlCmd() *cobra.Command { // Create a new Cmd to provide shared dependencies and start components logger.Info("setting up manager") mgr, err := manager.New(cfg, manager.Options{ - Scheme: scheme, - MetricsBindAddress: ":" + httpMetricPort, - Namespace: namespace, + Scheme: scheme, + Metrics: server.Options{ + BindAddress: ":" + httpMetricPort, + }, + LeaderElectionNamespace: namespace, }) if err != nil { logger.Error(err, "unable to set up overall controller manager") diff --git a/internal/samsahai/exporter/metric_test.go b/internal/samsahai/exporter/metric_test.go index 0eb48547..d7e38d9a 100644 --- a/internal/samsahai/exporter/metric_test.go +++ b/internal/samsahai/exporter/metric_test.go @@ -18,6 +18,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" "github.com/agoda-com/samsahai/internal" @@ -81,7 +82,13 @@ var _ = Describe("Samsahai Exporter", func() { g.Expect(err).NotTo(HaveOccurred()) g.Expect(configCtrl).NotTo(BeNil()) - mgr, err := manager.New(cfg, manager.Options{Namespace: namespace, MetricsBindAddress: ":8008"}) + mgr, err := manager.New(cfg, manager.Options{ + Scheme: scheme.Scheme, + LeaderElectionNamespace: namespace, + Metrics: server.Options{ + BindAddress: ":8008", + }, + }) Expect(err).NotTo(HaveOccurred(), "should create manager successfully") teamList := &s2hv1.TeamList{ diff --git a/test/e2e/config/ctrl.go b/test/e2e/config/ctrl.go index 1253bc2c..022f353f 100644 --- a/test/e2e/config/ctrl.go +++ b/test/e2e/config/ctrl.go @@ -20,6 +20,7 @@ import ( rclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" "github.com/agoda-com/samsahai/internal" @@ -70,7 +71,7 @@ var _ = Describe("[e2e] Config controller", func() { Expect(err).NotTo(HaveOccurred(), "Please provide credential for accessing k8s cluster") restCfg := rest.CopyConfig(adminRestConfig) - mgr, err = manager.New(restCfg, manager.Options{MetricsBindAddress: "0"}) + mgr, err = manager.New(restCfg, manager.Options{Metrics: server.Options{BindAddress: "0"}}) Expect(err).NotTo(HaveOccurred(), "should create manager successfully") namespace = os.Getenv("POD_NAMESPACE") diff --git a/test/e2e/pullrequest/ctrl.go b/test/e2e/pullrequest/ctrl.go index ce76e637..836d8e92 100644 --- a/test/e2e/pullrequest/ctrl.go +++ b/test/e2e/pullrequest/ctrl.go @@ -24,6 +24,7 @@ import ( rclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" "github.com/agoda-com/samsahai/internal" @@ -89,8 +90,10 @@ func setupStaging(namespace string) (internal.StagingController, internal.QueueC // create mgr from config stagingCfg := rest.CopyConfig(restCfg) stagingMgr, err := manager.New(stagingCfg, manager.Options{ - Namespace: namespace, - MetricsBindAddress: "0", + LeaderElectionNamespace: namespace, + Metrics: server.Options{ + BindAddress: ":8008", + }, }) Expect(err).NotTo(HaveOccurred()) @@ -121,7 +124,7 @@ var _ = Describe("[e2e] Pull request controller", func() { Expect(err).NotTo(HaveOccurred(), "Please provide credential for accessing k8s cluster") restCfg = rest.CopyConfig(adminRestConfig) - mgr, err = manager.New(restCfg, manager.Options{MetricsBindAddress: "0"}) + mgr, err = manager.New(restCfg, manager.Options{Metrics: server.Options{BindAddress: "0"}}) Expect(err).NotTo(HaveOccurred(), "should create manager successfully") client, err = rclient.New(restCfg, rclient.Options{Scheme: scheme.Scheme}) diff --git a/test/e2e/samsahai/ctrl.go b/test/e2e/samsahai/ctrl.go index 94bc0555..1eb7cceb 100644 --- a/test/e2e/samsahai/ctrl.go +++ b/test/e2e/samsahai/ctrl.go @@ -4,13 +4,14 @@ import ( "context" "encoding/json" "fmt" - batchv1 "k8s.io/api/batch/v1" "net/http" "net/http/httptest" "os" "sync" "time" + batchv1 "k8s.io/api/batch/v1" + . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/tidwall/gjson" @@ -27,6 +28,7 @@ import ( rclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" "github.com/agoda-com/samsahai/internal" @@ -107,7 +109,7 @@ var _ = Describe("[e2e] Main controller", func() { Expect(err).NotTo(HaveOccurred(), "Please provide credential for accessing k8s cluster") restCfg = rest.CopyConfig(adminRestConfig) - mgr, err = manager.New(restCfg, manager.Options{MetricsBindAddress: "0"}) + mgr, err = manager.New(restCfg, manager.Options{Metrics: server.Options{BindAddress: "0"}}) Expect(err).NotTo(HaveOccurred(), "should create manager successfully") client, err = rclient.New(restCfg, rclient.Options{Scheme: scheme.Scheme}) @@ -391,8 +393,8 @@ var _ = Describe("[e2e] Main controller", func() { // create mgr from config stagingCfg := rest.CopyConfig(restCfg) stagingMgr, err := manager.New(stagingCfg, manager.Options{ - Namespace: preActiveNs, - MetricsBindAddress: "0", + LeaderElectionNamespace: preActiveNs, + Metrics: server.Options{BindAddress: "0"}, }) Expect(err).NotTo(HaveOccurred()) diff --git a/test/e2e/staging/ctrl.go b/test/e2e/staging/ctrl.go index 35bc4a6a..43dc12cc 100644 --- a/test/e2e/staging/ctrl.go +++ b/test/e2e/staging/ctrl.go @@ -24,6 +24,7 @@ import ( rclient "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" s2hv1 "github.com/agoda-com/samsahai/api/v1" "github.com/agoda-com/samsahai/internal" @@ -346,7 +347,7 @@ var _ = Describe("[e2e] Staging controller", func() { restCfg, err = config.GetConfig() Expect(err).NotTo(HaveOccurred(), "Please provide credential for accessing k8s cluster") - mgr, err = manager.New(restCfg, manager.Options{Namespace: namespace, MetricsBindAddress: "0"}) + mgr, err = manager.New(restCfg, manager.Options{LeaderElectionNamespace: namespace, Metrics: server.Options{BindAddress: "0"}}) Expect(err).NotTo(HaveOccurred(), "should create manager successfully") client, err = rclient.New(restCfg, rclient.Options{Scheme: scheme.Scheme}) From a5a22ad7b683a0921116d7e485a4a1a74c837010 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 4 Jan 2024 19:01:17 +0700 Subject: [PATCH 14/20] fix: update controller watch --- internal/desiredcomponent/controller.go | 2 +- internal/pullrequest/queue/controller.go | 2 +- internal/pullrequest/trigger/controller.go | 2 +- .../samsahai/activepromotion/controller.go | 2 +- internal/samsahai/controller.go | 30 ++++++++----------- 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/internal/desiredcomponent/controller.go b/internal/desiredcomponent/controller.go index 41ac6561..3531cbaf 100644 --- a/internal/desiredcomponent/controller.go +++ b/internal/desiredcomponent/controller.go @@ -77,7 +77,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { } // Watch for changes to DesiredComponent - err = c.Watch(&source.Kind{Type: &s2hv1.DesiredComponent{}}, &handler.EnqueueRequestForObject{}) + err = c.Watch(source.Kind(mgr.GetCache(), &s2hv1.DesiredComponent{}), &handler.EnqueueRequestForObject{}) if err != nil { return err } diff --git a/internal/pullrequest/queue/controller.go b/internal/pullrequest/queue/controller.go index 929bd0e6..ace39fcf 100644 --- a/internal/pullrequest/queue/controller.go +++ b/internal/pullrequest/queue/controller.go @@ -145,7 +145,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { } // Watch for changes to PullRequestQueue - err = c.Watch(&source.Kind{Type: &s2hv1.PullRequestQueue{}}, &handler.EnqueueRequestForObject{}) + err = c.Watch(source.Kind(mgr.GetCache(), &s2hv1.PullRequestQueue{}), &handler.EnqueueRequestForObject{}) if err != nil { return err } diff --git a/internal/pullrequest/trigger/controller.go b/internal/pullrequest/trigger/controller.go index 6712e260..1a1e3a84 100644 --- a/internal/pullrequest/trigger/controller.go +++ b/internal/pullrequest/trigger/controller.go @@ -72,7 +72,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { } // Watch for changes to PullRequestTrigger - err = c.Watch(&source.Kind{Type: &s2hv1.PullRequestTrigger{}}, &handler.EnqueueRequestForObject{}) + err = c.Watch(source.Kind(mgr.GetCache(), &s2hv1.PullRequestTrigger{}), &handler.EnqueueRequestForObject{}) if err != nil { return err } diff --git a/internal/samsahai/activepromotion/controller.go b/internal/samsahai/activepromotion/controller.go index d5bfba59..623cbfd6 100644 --- a/internal/samsahai/activepromotion/controller.go +++ b/internal/samsahai/activepromotion/controller.go @@ -290,7 +290,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { } // Watch for changes to ActivePromotion - err = c.Watch(&source.Kind{Type: &s2hv1.ActivePromotion{}}, &handler.EnqueueRequestForObject{}) + err = c.Watch(source.Kind(mgr.GetCache(), &s2hv1.ActivePromotion{}), &handler.EnqueueRequestForObject{}) if err != nil { return err } diff --git a/internal/samsahai/controller.go b/internal/samsahai/controller.go index 537af245..4360b23c 100644 --- a/internal/samsahai/controller.go +++ b/internal/samsahai/controller.go @@ -1447,43 +1447,39 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { } // Watching changes of Team - err = c.Watch(&source.Kind{Type: &s2hv1.Team{}}, &handler.EnqueueRequestForObject{}) + err = c.Watch(source.Kind(mgr.GetCache(), &s2hv1.Team{}), &handler.EnqueueRequestForObject{}) if err != nil { return err } // Watching changes of namespace belongs to Team - err = c.Watch(&source.Kind{Type: &corev1.Namespace{}}, &handler.EnqueueRequestForOwner{ - IsController: true, - OwnerType: &s2hv1.Team{}, - }) + err = c.Watch(source.Kind(mgr.GetCache(), &corev1.Namespace{}), handler.EnqueueRequestForOwner( + mgr.GetScheme(), mgr.GetRESTMapper(), &s2hv1.Team{}, handler.OnlyControllerOwner(), + )) if err != nil { return err } // Watching changes of deployment belongs to Team - err = c.Watch(&source.Kind{Type: &appsv1.Deployment{}}, &handler.EnqueueRequestForOwner{ - IsController: true, - OwnerType: &s2hv1.Team{}, - }) + err = c.Watch(source.Kind(mgr.GetCache(), &appsv1.Deployment{}), handler.EnqueueRequestForOwner( + mgr.GetScheme(), mgr.GetRESTMapper(), &s2hv1.Team{}, handler.OnlyControllerOwner(), + )) if err != nil { return err } // Watching changes of service belongs to Team - err = c.Watch(&source.Kind{Type: &corev1.Service{}}, &handler.EnqueueRequestForOwner{ - IsController: true, - OwnerType: &s2hv1.Team{}, - }) + err = c.Watch(source.Kind(mgr.GetCache(), &corev1.Service{}), handler.EnqueueRequestForOwner( + mgr.GetScheme(), mgr.GetRESTMapper(), &s2hv1.Team{}, handler.OnlyControllerOwner(), + )) if err != nil { return err } // Watching changes of secret belongs to Team - err = c.Watch(&source.Kind{Type: &corev1.Secret{}}, &handler.EnqueueRequestForOwner{ - IsController: true, - OwnerType: &s2hv1.Team{}, - }) + err = c.Watch(source.Kind(mgr.GetCache(), &corev1.Secret{}), handler.EnqueueRequestForOwner( + mgr.GetScheme(), mgr.GetRESTMapper(), &s2hv1.Team{}, handler.OnlyControllerOwner(), + )) if err != nil { return err } From 5d97c1f062cf9e1437ceadc06fd1d791f3d3fd87 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 4 Jan 2024 19:01:33 +0700 Subject: [PATCH 15/20] fix: lint --- internal/samsahai/k8sobject/object.go | 4 ++-- internal/samsahai/plugin/plugin.go | 5 +++++ internal/util/http/client.go | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/internal/samsahai/k8sobject/object.go b/internal/samsahai/k8sobject/object.go index c599752c..7e350ffd 100644 --- a/internal/samsahai/k8sobject/object.go +++ b/internal/samsahai/k8sobject/object.go @@ -154,7 +154,7 @@ func GetDeployment(scheme *runtime.Scheme, teamComp *s2hv1.Team, namespaceName s PeriodSeconds: int32(10), SuccessThreshold: int32(1), FailureThreshold: int32(3), - Handler: corev1.Handler{ + ProbeHandler: corev1.ProbeHandler{ HTTPGet: &corev1.HTTPGetAction{ Path: "/healthz", Port: intstr.FromInt(internal.StagingDefaultPort), @@ -168,7 +168,7 @@ func GetDeployment(scheme *runtime.Scheme, teamComp *s2hv1.Team, namespaceName s PeriodSeconds: int32(10), SuccessThreshold: int32(1), FailureThreshold: int32(3), - Handler: corev1.Handler{ + ProbeHandler: corev1.ProbeHandler{ HTTPGet: &corev1.HTTPGetAction{ Path: "/healthz", Port: intstr.FromInt(internal.StagingDefaultPort), diff --git a/internal/samsahai/plugin/plugin.go b/internal/samsahai/plugin/plugin.go index 8e36531c..4038fab3 100644 --- a/internal/samsahai/plugin/plugin.go +++ b/internal/samsahai/plugin/plugin.go @@ -123,6 +123,11 @@ func (p *plugin) executeCmd(ctx context.Context, commandAndArgs ...string) (stri outputCh := make(chan string) errCh := make(chan error) + // Dummy usage to ensure the compiler recognizes the import as used. + // Since, the compiler does not consider the type assertion as a usage, + // and keep throwing an "imported and not used" error. + var _ exec.Cmd + go func() { data, err := cmd.ExecuteCommand(ctx, p.cwd, &s2hv1.CommandAndArgs{ Command: []string{p.path}, diff --git a/internal/util/http/client.go b/internal/util/http/client.go index b525a3e6..5fd342b8 100644 --- a/internal/util/http/client.go +++ b/internal/util/http/client.go @@ -5,7 +5,7 @@ import ( "context" "crypto/tls" "fmt" - "io/ioutil" + "io" "log" "net/http" "net/url" @@ -225,7 +225,7 @@ func (c *Client) request(req *http.Request) (int, []byte, error) { } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { return resp.StatusCode, nil, err } From bff94cece6666daa1b8123d2c4948a3d00a7c34f Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 4 Jan 2024 19:01:59 +0700 Subject: [PATCH 16/20] fix: update logger --- internal/log/log.go | 44 ++++++++++++-------------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/internal/log/log.go b/internal/log/log.go index 3d11fc98..54d7feed 100644 --- a/internal/log/log.go +++ b/internal/log/log.go @@ -14,7 +14,7 @@ import ( // Log is the base logger used by kubebuilder. It delegates // to another logr.Logger. You *must* call SetLogger to // get any actual logging. -var Log = NewS2hLogger(log.NullLogger{}) +var Log = NewS2hLogger(logr.New(log.NullLogSink{})) var S2HLog Logger @@ -28,7 +28,7 @@ func init() { // logger. It expects to have *some* logr.Logger set at all times (generally // a no-op logger before the promises are fulfilled). type DelegatingLogger struct { - logger *log.DelegatingLogger + logger *logr.Logger } func GetLogger(debug bool) logr.Logger { @@ -42,20 +42,13 @@ func GetLogger(debug bool) logr.Logger { func NewS2hLogger(initial logr.Logger) *DelegatingLogger { return &DelegatingLogger{ - logger: log.NewDelegatingLogger(initial), + logger: &initial, } } // SetLogger sets a concrete logging implementation for all deferred Loggers. func SetLogger(l logr.Logger) { - Log.Fulfill(l) -} - -// Fulfill switches the logger over to use the actual logger -// provided, instead of the temporary initial one, if this method -// has not been previously called. -func (l *DelegatingLogger) Fulfill(actual logr.Logger) { - l.logger.Fulfill(actual) + Log.logger = &l } // Logger represents the ability to log messages, both errors and not. @@ -142,31 +135,18 @@ func (l *DelegatingLogger) Warnf(format string, args ...interface{}) { // WithName implements logr.Logger func (l *DelegatingLogger) WithName(name string) Logger { - ln := l.logger.WithName(name) - delegatingLn, ok := ln.(*log.DelegatingLogger) - - if !ok { - delegatingLn = log.NewDelegatingLogger(ln) + if l.logger == nil { + return l } - - res := &DelegatingLogger{ - logger: delegatingLn, - } - - return res + l.logger.WithName(name) + return l } // WithValues implements logr.Logger func (l *DelegatingLogger) WithValues(tags ...interface{}) Logger { - ln := l.logger.WithValues(tags...) - delegatingLn, ok := ln.(*log.DelegatingLogger) - if !ok { - delegatingLn = log.NewDelegatingLogger(ln) - } - - res := &DelegatingLogger{ - logger: delegatingLn, + if l.logger == nil { + return l } - - return res + l.logger.WithValues(tags...) + return l } From 0db1eaa66e0ae5268282e2c19d7eac85dee665ef Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 4 Jan 2024 19:11:26 +0700 Subject: [PATCH 17/20] fix: upgrade helm kubecuildercontroller-tools --- Makefile | 16 +- docs/docs.go | 2 +- go.mod | 211 +++++----- go.sum | 1097 +++++++++++++------------------------------------- 4 files changed, 387 insertions(+), 939 deletions(-) diff --git a/Makefile b/Makefile index 02220c80..77f6fd77 100644 --- a/Makefile +++ b/Makefile @@ -17,8 +17,8 @@ GOBIN=$(shell $(GO) env GOPATH)/bin else GOBIN=$(shell $(GO) env GOBIN) endif -KUBEBUILDER_VERSION ?= 2.2.0 -KUBEBULIDER_FILENAME = kubebuilder_$(KUBEBUILDER_VERSION)_$(OS)_$(ARCH) +KUBEBUILDER_VERSION ?= 3.13.0 +KUBEBULIDER_FILENAME = kubebuilder_$(OS)_$(ARCH) KUBEBUILDER_PATH ?= /usr/local/kubebuilder/ GORELEASER_VERSION ?= 0.124.1 K3S_DOCKER_IMAGE ?= rancher/k3s:v1.22.17-k3s1 @@ -27,7 +27,7 @@ K3S_DOCKER_NAME ?= s2h-k3s-server K3S_PORT ?= 6443 K8S_VERSION ?= 1.22.0 KUSTOMIZE_VERSION ?= 3.8.6 -HELM_VERSION ?= 3.6.3 +HELM_VERSION ?= 3.13.3 POD_NAMESPACE ?= default GO111MODULE := on @@ -35,7 +35,7 @@ SUDO ?= INSTALL_DIR ?= $(PWD)/bin/ OS = $$(echo `uname`|tr '[:upper:]' '[:lower:]') OS2 = $$(if [ "$$(uname|tr '[:upper:]' '[:lower:]')" = "linux" ]; then echo linux; elif [ "$$(uname|tr '[:upper:]' '[:lower:]')" = "darwin" ]; then echo osx; fi) -ARCH = $$(if [ "$$(uname -m)" = "x86" ]; then echo 386; elif [ "$$(uname -m)" = "x86_64" ]; then echo amd64; fi) +ARCH = $$(if [ "$$(uname -m)" = "x86" ]; then echo 386; elif [ "$$(uname -m)" = "x86_64" ]; then echo amd64; elif [ "$$(uname -m)" = "arm64" ]; then echo arm64; fi) ARCHx86 = $$(if [ "$$(uname -m)" = "x86" ]; then echo x86_32; elif [ "$$(uname -m)" = "x86_64" ]; then echo x86_64; fi) DEBUG ?= ARCHIVE_EXT ?= .tar.gz @@ -369,7 +369,7 @@ install-go: .install-kubebuilder: export APP_VERSION = $(KUBEBUILDER_VERSION) .install-kubebuilder: export _FILENAME="$(KUBEBULIDER_FILENAME)"; \ - export _DOWNLOAD_URL="https://github.com/kubernetes-sigs/kubebuilder/releases/download/v$(KUBEBUILDER_VERSION)/$$_FILENAME.tar.gz"; \ + export _DOWNLOAD_URL="https://github.com/kubernetes-sigs/kubebuilder/releases/download/v$(KUBEBUILDER_VERSION)/$$_FILENAME"; \ export _MOVE_CMD="$(MKDIR) -p /usr/local/$(APP_NAME)/bin && $(MV) $(TMP_DIR)/$$_FILENAME/bin/* /usr/local/$(APP_NAME)/bin/"; \ export INSTALL_DIR="/usr/local/$(APP_NAME)/bin/"; \ $(MAKE) .install-archive @@ -480,13 +480,13 @@ endif # Produce CRDs that work back to Kubernetes 1.21 (no version conversion) CRD_OPTIONS ?= "crd" -CONTROLLER_GEN=$(GO) run $$GOPATH/pkg/mod/github.com/phantomnat/controller-tools@v0.2.4-1/cmd/controller-gen/main.go +CONTROLLER_GEN=$(GO) run $$GOPATH/pkg/mod/sigs.k8s.io/controller-tools@v0.13.0/cmd/controller-gen/main.go # Generate manifests e.g. CRD, RBAC etc. manifests: controller-gen $(GO) get sigs.k8s.io/controller-tools - $(CONTROLLER_GEN) $(CRD_OPTIONS) paths="./..." crd:crdVersions=v1 output:crd:artifacts:config=config/crds output:none - $(CONTROLLER_GEN) $(CRD_OPTIONS) paths="./..." crd:crdVersions=v1 output:crd:artifacts:config=test/data/crds output:none + $(CONTROLLER_GEN) paths="./..." crd:crdVersions=v1 output:crd:artifacts:config=config/crds output:none + $(CONTROLLER_GEN) paths="./..." crd:crdVersions=v1 output:crd:artifacts:config=test/data/crds output:none # Generate code generate: controller-gen diff --git a/docs/docs.go b/docs/docs.go index 69a835af..dc623621 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,6 +1,6 @@ // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT // This file was generated by swaggo/swag at -// 2023-12-21 17:16:46.483501 +0700 +07 m=+0.216299335 +// 2024-01-04 19:04:13.652874 +0700 +07 m=+0.807228168 package docs diff --git a/go.mod b/go.mod index 057fe286..7ea03ce4 100644 --- a/go.mod +++ b/go.mod @@ -4,194 +4,185 @@ go 1.18 require ( github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 - github.com/docker/distribution v2.7.1+incompatible + github.com/docker/distribution v2.8.2+incompatible github.com/ghodss/yaml v1.0.0 - github.com/go-logr/logr v0.4.0 + github.com/go-logr/logr v1.2.4 github.com/golang/protobuf v1.5.3 - github.com/google/go-cmp v0.5.5 - github.com/google/uuid v1.1.2 - github.com/imdario/mergo v0.3.12 + github.com/google/go-cmp v0.5.9 + github.com/google/uuid v1.3.0 + github.com/imdario/mergo v0.3.13 github.com/julienschmidt/httprouter v1.3.0 github.com/nlopes/slack v0.5.0 github.com/onsi/ginkgo v1.16.5 - github.com/onsi/gomega v1.15.0 + github.com/onsi/gomega v1.27.10 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.11.0 - github.com/spf13/cobra v1.1.3 + github.com/prometheus/client_golang v1.16.0 + github.com/spf13/cobra v1.7.0 github.com/spf13/viper v1.7.0 github.com/swaggo/http-swagger v0.0.0-20190614090009-c2865af9083e github.com/swaggo/swag v1.6.3 github.com/tidwall/gjson v1.2.1 github.com/twitchtv/twirp v8.1.3+incompatible - go.uber.org/zap v1.19.0 + go.uber.org/zap v1.25.0 golang.org/x/text v0.14.0 google.golang.org/protobuf v1.31.0 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df - helm.sh/helm/v3 v3.6.3 - k8s.io/api v0.22.2 - k8s.io/apimachinery v0.22.2 - k8s.io/client-go v0.22.2 - sigs.k8s.io/controller-runtime v0.9.2 + helm.sh/helm/v3 v3.13.3 + k8s.io/api v0.28.4 + k8s.io/apimachinery v0.28.4 + k8s.io/client-go v0.28.4 + sigs.k8s.io/controller-runtime v0.16.3 ) require ( - cloud.google.com/go v0.54.0 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v0.3.1 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/KyleBanks/depth v1.2.1 // indirect - github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect + github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.1.1 // indirect - github.com/Masterminds/sprig/v3 v3.2.2 // indirect - github.com/Masterminds/squirrel v1.5.0 // indirect - github.com/Microsoft/go-winio v0.4.16 // indirect - github.com/Microsoft/hcsshim v0.8.14 // indirect - github.com/PuerkitoBio/purell v1.1.1 // indirect - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect + github.com/Masterminds/semver/v3 v3.2.1 // indirect + github.com/Masterminds/sprig/v3 v3.2.3 // indirect + github.com/Masterminds/squirrel v1.5.4 // indirect + github.com/Microsoft/hcsshim v0.11.0 // indirect github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bshuster-repo/logrus-logstash-hook v1.0.0 // indirect github.com/bugsnag/bugsnag-go v1.5.4 // indirect github.com/bugsnag/panicwrap v1.2.0 // indirect - github.com/cespare/xxhash/v2 v2.1.1 // indirect - github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 // indirect - github.com/containerd/containerd v1.4.4 // indirect - github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 // indirect - github.com/cyphar/filepath-securejoin v0.2.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/chai2010/gettext-go v1.0.2 // indirect + github.com/containerd/containerd v1.7.6 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/deislabs/oras v0.11.1 // indirect - github.com/docker/cli v20.10.5+incompatible // indirect - github.com/docker/docker v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible // indirect - github.com/docker/docker-credential-helpers v0.6.3 // indirect + github.com/docker/cli v24.0.6+incompatible // indirect + github.com/docker/docker v24.0.7+incompatible // indirect + github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-metrics v0.0.1 // indirect - github.com/docker/go-units v0.4.0 // indirect + github.com/docker/go-units v0.5.0 // indirect github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect - github.com/evanphx/json-patch v4.11.0+incompatible // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect - github.com/fatih/color v1.7.0 // indirect - github.com/fsnotify/fsnotify v1.4.9 // indirect - github.com/garyburd/redigo v1.6.2 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-chi/chi v4.0.2+incompatible // indirect - github.com/go-errors/errors v1.0.1 // indirect - github.com/go-logr/zapr v0.4.0 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.19.5 // indirect + github.com/go-errors/errors v1.4.2 // indirect + github.com/go-gorp/gorp/v3 v3.1.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-logr/zapr v1.2.4 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/spec v0.19.5 // indirect - github.com/go-openapi/swag v0.19.14 // indirect + github.com/go-openapi/swag v0.22.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/uuid v3.3.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/btree v1.0.1 // indirect - github.com/google/gofuzz v1.1.0 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/gnostic v0.5.5 // indirect - github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/mux v1.7.3 // indirect + github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/gosuri/uitable v0.0.4 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/huandu/xstrings v1.3.1 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/jmoiron/sqlx v1.3.1 // indirect + github.com/huandu/xstrings v1.4.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmoiron/sqlx v1.3.5 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.11 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/klauspost/compress v1.16.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/lib/pq v1.10.0 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/lusis/slack-test v0.0.0-20180109053238-3c758769bfa6 // indirect github.com/magiconair/properties v1.8.1 // indirect - github.com/mailru/easyjson v0.7.6 // indirect - github.com/mattn/go-colorable v0.1.2 // indirect - github.com/mattn/go-isatty v0.0.8 // indirect - github.com/mattn/go-runewidth v0.0.7 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/mitchellh/copystructure v1.1.1 // indirect - github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.1.2 // indirect - github.com/mitchellh/reflectwalk v1.0.1 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/locker v1.0.1 // indirect github.com/moby/spdystream v0.2.0 // indirect - github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect + github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nxadm/tail v1.4.8 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.1 // indirect - github.com/opencontainers/runc v0.1.1 // indirect - github.com/pelletier/go-toml v1.2.0 // indirect + github.com/opencontainers/image-spec v1.1.0-rc5 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.26.0 // indirect - github.com/prometheus/procfs v0.6.0 // indirect - github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351 // indirect - github.com/russross/blackfriday v1.5.2 // indirect - github.com/shopspring/decimal v1.2.0 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.10.1 // indirect + github.com/rubenv/sql-migrate v1.5.2 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/afero v1.2.2 // indirect - github.com/spf13/cast v1.3.1 // indirect + github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.7.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14 // indirect github.com/tidwall/match v1.0.1 // indirect github.com/tidwall/pretty v1.0.1 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect + github.com/xlab/treeprint v1.2.0 // indirect github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940 // indirect github.com/yvasiyarov/gorelic v0.0.7 // indirect github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9 // indirect - go.opencensus.io v0.22.3 // indirect - go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect - go.uber.org/atomic v1.7.0 // indirect - go.uber.org/multierr v1.6.0 // indirect + go.opentelemetry.io/otel v1.14.0 // indirect + go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect + go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.16.0 // indirect + golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/net v0.19.0 // indirect - golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect + golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/term v0.15.0 // indirect - golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.16.1 // indirect - gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c // indirect - google.golang.org/grpc v1.38.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect + google.golang.org/grpc v1.56.3 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect - gopkg.in/gorp.v1 v1.7.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.51.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - k8s.io/apiextensions-apiserver v0.22.2 // indirect - k8s.io/apiserver v0.22.2 // indirect - k8s.io/cli-runtime v0.21.0 // indirect - k8s.io/component-base v0.22.2 // indirect - k8s.io/klog/v2 v2.9.0 // indirect - k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e // indirect - k8s.io/kubectl v0.21.0 // indirect - k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a // indirect - rsc.io/letsencrypt v0.0.3 // indirect - sigs.k8s.io/kustomize/api v0.8.5 // indirect - sigs.k8s.io/kustomize/kyaml v0.10.15 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect - sigs.k8s.io/yaml v1.2.0 // indirect -) - -replace ( - k8s.io/api => k8s.io/api v0.21.0 - k8s.io/apimachinery => k8s.io/apimachinery v0.21.0 - k8s.io/client-go => k8s.io/client-go v0.21.0 - sigs.k8s.io/controller-tools => github.com/phantomnat/controller-tools v0.2.4-1 + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/apiextensions-apiserver v0.28.4 // indirect + k8s.io/apiserver v0.28.4 // indirect + k8s.io/cli-runtime v0.28.4 // indirect + k8s.io/component-base v0.28.4 // indirect + k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect + k8s.io/kubectl v0.28.4 // indirect + k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect + oras.land/oras-go v1.2.4 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect + sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index d98d8556..f24bdb06 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -6,253 +5,132 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0 h1:3ithwDMr7/3vpAMXiH+ZQnYbuIsh+OPhUPMFC9enmn0= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= -github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= +github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= -github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= -github.com/Masterminds/squirrel v1.5.0 h1:JukIZisrUXadA9pl3rMkjhiamxiB0cXiu+HGp/Y8cY8= -github.com/Masterminds/squirrel v1.5.0/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= -github.com/Masterminds/vcs v1.13.1/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/hcsshim v0.8.14 h1:lbPVK25c1cu5xTLITwpUcxoA9vKrKErASPYygvouJns= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= +github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= +github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/hcsshim v0.11.0 h1:7EFNIY4igHEXUdj1zXgAyU3fLc7QfOKHbkldRVTBdiM= +github.com/Microsoft/hcsshim v0.11.0/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= -github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/bugsnag-go v1.5.4 h1:phfo1SwqFyhz8B5i2A/yoSdnc3BVeN4KNehn1HEzO2o= github.com/bugsnag/bugsnag-go v1.5.4/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/bugsnag/panicwrap v1.2.0 h1:OzrKrRvXis8qEvOkfcxNcYbOd2O7xXS2nnKMEMABFQA= github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= +github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.4 h1:rtRG4N6Ct7GNssATwgpvMGfnjnwfjnu/Zs9W3Ikzq+M= -github.com/containerd/containerd v1.4.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 h1:6ejg6Lkk8dskcM7wQ28gONkukbQkM4qpj4RnYbpFzrI= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/containerd v1.7.6 h1:oNAVsnhPoy4BTPQivLgTzI9Oleml9l/+eYIDYXRCYo8= +github.com/containerd/containerd v1.7.6/go.mod h1:SY6lrkkuJT40BVNO37tlYTSnKJnP5AXBc0fhx0q+TJ4= +github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/deislabs/oras v0.11.1 h1:oo2J/3vXdcti8cjFi8ghMOkx0OacONxHC8dhJ17NdJ0= -github.com/deislabs/oras v0.11.1/go.mod h1:39lCtf8Q6WDC7ul9cnyWXONNzKvabEKk+AX+L0ImnQk= -github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v20.10.5+incompatible h1:bjflayQbWg+xOkF2WPEAOi4Y7zWhR7ptoPhV/VqLVDE= -github.com/docker/cli v20.10.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20191216044856-a8371794149d/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible h1:iWPIG7pWIsCwT6ZtHnTUpoVMnete7O/pzd9HFE3+tn8= -github.com/docker/docker v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc= +github.com/docker/cli v24.0.6+incompatible h1:fF+XCQCgJjjQNIMjzaSmiKJSCcfcXb3TWTcc7GAneOY= +github.com/docker/cli v24.0.6+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= +github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= +github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= +github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM= -github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w= @@ -261,129 +139,68 @@ github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NB github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= +github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= -github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= +github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.1 h1:OQl5ys5MBea7OGCdvPbBJWRgnhC/fGona6QKfvFeau8= -github.com/gobuffalo/envy v1.7.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= -github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= -github.com/gobuffalo/logger v1.0.1 h1:ZEgyRGgAm4ZAhAO45YXMs5Fp+bzGLESFewzAVBMKuTg= -github.com/gobuffalo/logger v1.0.1/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= -github.com/gobuffalo/packd v0.3.0 h1:eMwymTkA1uXsqxS0Tpoop3Lc0u3kTfiMBE6nKtQU4g4= -github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= -github.com/gobuffalo/packr/v2 v2.7.1 h1:n3CIW5T17T8v4GGK5sWXLVWJhCz7b5aNLSxW6gYim4o= -github.com/gobuffalo/packr/v2 v2.7.1/go.mod h1:qYEvAazPaVxy7Y7KR0W8qYEE+RymX74kETFqjFoFlOc= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= +github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= +github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godror/godror v0.13.3/go.mod h1:2ouUT4kdhUBk7TAkHWD4SN0CdI0pgEQbo8FVHhbSKWg= -github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -391,61 +208,45 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= +github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= @@ -453,32 +254,28 @@ github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -486,39 +283,26 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= -github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= +github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE= -github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -526,18 +310,18 @@ github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4d github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -546,287 +330,187 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtB github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= -github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/lusis/slack-test v0.0.0-20180109053238-3c758769bfa6 h1:iOAVXzZyXtW408TMYejlUPo6BIn92HmOacWtIfNyYns= github.com/lusis/slack-test v0.0.0-20180109053238-3c758769bfa6/go.mod h1:sFlOUpQL1YcjhFVXhg1CG8ZASEs/Mf1oVb6H75JL/zg= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/pkger v0.17.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= +github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= +github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-oci8 v0.0.7/go.mod h1:wjDx6Xm9q7dFtHJvIlrI99JytznLw5wQ4R+9mNXJwGI= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-shellwords v1.0.11/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.12.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.25 h1:dFwPR6SfLtrSwgDcIq2bcU/gVutB4sNApq2HBdqcakg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/copystructure v1.1.1 h1:Bp6x9R1Wn16SIz3OfeDr0b7RnCG2OB66Y7PQyC/cvq4= -github.com/mitchellh/copystructure v1.1.1/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 h1:yH0SvLzcbZxcJXho2yh7CqdENGMQe73Cw3woZBpPli0= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nlopes/slack v0.5.0 h1:NbIae8Kd0NpqaEI3iUrsuS0KbcEDhzhc939jLW5fNm0= github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= -github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= -github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= +github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.4.0 h1:LUa41nrWTQNGhzdsZ5lTnkwbNjj6rXTdazA1cSdjkOY= -github.com/rogpeppe/go-internal v1.4.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351 h1:HXr/qUllAWv9riaI4zh2eXWKmCSDqVS/XH1MRHLKRwk= -github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351/go.mod h1:DCgfY80j8GYL7MLEfvcpSFvjD0L5yZq/aZUJmhZklyg= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= +github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14 h1:PyYN9JH5jY9j6av01SpfRMb+1DWg/i3MbGOKPxJ2wjM= @@ -841,119 +525,67 @@ github.com/tidwall/gjson v1.2.1 h1:j0efZLrZUvNerEf6xqoi0NjWMK5YlLrR7Guo/dxY174= github.com/tidwall/gjson v1.2.1/go.mod h1:c/nTNbUr0E0OrXEhq1pwa8iEgc2DOt4ZZqAt1HtCkPA= github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.0.1 h1:WE4RBSZ1x6McVVC8S/Md+Qse8YUv6HRObAx6ke00NY8= github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/twitchtv/twirp v8.1.3+incompatible h1:+F4TdErPgSUbMZMwp13Q/KgDVuI7HJXP61mNV3/7iuU= github.com/twitchtv/twirp v8.1.3+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= +github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940 h1:p7OofyZ509h8DmPLh8Hn+EIIZm/xYhdZHJ9GnXHdr6U= github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/gorelic v0.0.7 h1:4DTF1WOM2ZZS/xMOkTFBOcb6XiHu/PKn3rVo6dbewQE= github.com/yvasiyarov/gorelic v0.0.7/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9 h1:AsFN8kXcCVkUFHyuzp1FtYbzp1nCO/H6+1uPSGEyPzM= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= -github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc= -go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= +go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= +go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -961,11 +593,8 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -975,21 +604,14 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1000,48 +622,30 @@ golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1049,8 +653,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1060,96 +664,57 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1161,117 +726,56 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= -gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1280,7 +784,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= @@ -1290,122 +793,76 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= -gopkg.in/gorp.v1 v1.7.2 h1:j3DWlAyGVv8whO7AcIWznQ2Yj7yJkn34B8s63GViAAw= -gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -helm.sh/helm/v3 v3.6.3 h1:0nKDyXJr23nI3JrcP7HH7NcR+CYRvro/52Dvr1KhGO0= -helm.sh/helm/v3 v3.6.3/go.mod h1:mIIus8EOqj+obtycw3sidsR4ORr2aFDmXMSI3k+oeVY= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= +helm.sh/helm/v3 v3.13.3 h1:0zPEdGqHcubehJHP9emCtzRmu8oYsJFRrlVF3TFj8xY= +helm.sh/helm/v3 v3.13.3/go.mod h1:3OKO33yI3p4YEXtTITN2+4oScsHeQe71KuzhlZ+aPfg= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.21.0 h1:gu5iGF4V6tfVCQ/R+8Hc0h7H1JuEhzyEi9S4R5LM8+Y= -k8s.io/api v0.21.0/go.mod h1:+YbrhBBGgsxbF6o6Kj4KJPJnBmAKuXDeS3E18bgHNVU= -k8s.io/apiextensions-apiserver v0.21.0/go.mod h1:gsQGNtGkc/YoDG9loKI0V+oLZM4ljRPjc/sql5tmvzc= -k8s.io/apiextensions-apiserver v0.21.2/go.mod h1:+Axoz5/l3AYpGLlhJDfcVQzCerVYq3K3CvDMvw6X1RA= -k8s.io/apiextensions-apiserver v0.22.2 h1:zK7qI8Ery7j2CaN23UCFaC1hj7dMiI87n01+nKuewd4= -k8s.io/apiextensions-apiserver v0.22.2/go.mod h1:2E0Ve/isxNl7tWLSUDgi6+cmwHi5fQRdwGVCxbC+KFA= -k8s.io/apimachinery v0.21.0 h1:3Fx+41if+IRavNcKOz09FwEXDBG6ORh6iMsTSelhkMA= -k8s.io/apimachinery v0.21.0/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= -k8s.io/apiserver v0.21.0/go.mod h1:w2YSn4/WIwYuxG5zJmcqtRdtqgW/J2JRgFAqps3bBpg= -k8s.io/apiserver v0.21.2/go.mod h1:lN4yBoGyiNT7SC1dmNk0ue6a5Wi6O3SWOIw91TsucQw= -k8s.io/apiserver v0.22.2 h1:TdIfZJc6YNhu2WxeAOWq1TvukHF0Sfx0+ln4XK9qnL4= -k8s.io/apiserver v0.22.2/go.mod h1:vrpMmbyjWrgdyOvZTSpsusQq5iigKNWv9o9KlDAbBHI= -k8s.io/cli-runtime v0.21.0 h1:/V2Kkxtf6x5NI2z+Sd/mIrq4FQyQ8jzZAUD6N5RnN7Y= -k8s.io/cli-runtime v0.21.0/go.mod h1:XoaHP93mGPF37MkLbjGVYqg3S1MnsFdKtiA/RZzzxOo= -k8s.io/client-go v0.21.0 h1:n0zzzJsAQmJngpC0IhgFcApZyoGXPrDIAD601HD09ag= -k8s.io/client-go v0.21.0/go.mod h1:nNBytTF9qPFDEhoqgEPaarobC8QPae13bElIVHzIglA= -k8s.io/code-generator v0.21.0/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= -k8s.io/code-generator v0.21.2/go.mod h1:8mXJDCB7HcRo1xiEQstcguZkbxZaqeUOrO9SsicWs3U= -k8s.io/code-generator v0.22.2/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= -k8s.io/component-base v0.21.0/go.mod h1:qvtjz6X0USWXbgmbfXR+Agik4RZ3jv2Bgr5QnZzdPYw= -k8s.io/component-base v0.21.2/go.mod h1:9lvmIThzdlrJj5Hp8Z/TOgIkdfsNARQ1pT+3PByuiuc= -k8s.io/component-base v0.22.2 h1:vNIvE0AIrLhjX8drH0BgCNJcR4QZxMXcJzBsDplDx9M= -k8s.io/component-base v0.22.2/go.mod h1:5Br2QhI9OTe79p+TzPe9JKNQYvEKbq9rTJDWllunGug= -k8s.io/component-helpers v0.21.0/go.mod h1:tezqefP7lxfvJyR+0a+6QtVrkZ/wIkyMLK4WcQ3Cj8U= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kubectl v0.21.0 h1:WZXlnG/yjcE4LWO2g6ULjFxtzK6H1TKzsfaBFuVIhNg= -k8s.io/kubectl v0.21.0/go.mod h1:EU37NukZRXn1TpAkMUoy8Z/B2u6wjHDS4aInsDzVvks= -k8s.io/metrics v0.21.0/go.mod h1:L3Ji9EGPP1YBbfm9sPfEXSpnj8i24bfQbAFAsW0NueQ= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210527160623-6fdb442a123b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= +k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= +k8s.io/apiextensions-apiserver v0.28.4 h1:AZpKY/7wQ8n+ZYDtNHbAJBb+N4AXXJvyZx6ww6yAJvU= +k8s.io/apiextensions-apiserver v0.28.4/go.mod h1:pgQIZ1U8eJSMQcENew/0ShUTlePcSGFq6dxSxf2mwPM= +k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= +k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= +k8s.io/apiserver v0.28.4 h1:BJXlaQbAU/RXYX2lRz+E1oPe3G3TKlozMMCZWu5GMgg= +k8s.io/apiserver v0.28.4/go.mod h1:Idq71oXugKZoVGUUL2wgBCTHbUR+FYTWa4rq9j4n23w= +k8s.io/cli-runtime v0.28.4 h1:IW3aqSNFXiGDllJF4KVYM90YX4cXPGxuCxCVqCD8X+Q= +k8s.io/cli-runtime v0.28.4/go.mod h1:MLGRB7LWTIYyYR3d/DOgtUC8ihsAPA3P8K8FDNIqJ0k= +k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY= +k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4= +k8s.io/component-base v0.28.4 h1:c/iQLWPdUgI90O+T9TeECg8o7N3YJTiuz2sKxILYcYo= +k8s.io/component-base v0.28.4/go.mod h1:m9hR0uvqXDybiGL2nf/3Lf0MerAfQXzkfWhUY58JUbU= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= +k8s.io/kubectl v0.28.4 h1:gWpUXW/T7aFne+rchYeHkyB8eVDl5UZce8G4X//kjUQ= +k8s.io/kubectl v0.28.4/go.mod h1:CKOccVx3l+3MmDbkXtIUtibq93nN2hkDR99XDCn7c/c= +k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= +k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +oras.land/oras-go v1.2.4 h1:djpBY2/2Cs1PV87GSJlxv4voajVOMZxqqtq9AB8YNvY= +oras.land/oras-go v1.2.4/go.mod h1:DYcGfb3YF1nKjcezfX2SNlDAeQFKSXmf+qrFmrh4324= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/letsencrypt v0.0.3 h1:H7xDfhkaFFSYEJlKeq38RwX2jYcnTeHuDQyT+mMNMwM= -rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.19/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/controller-runtime v0.9.2 h1:MnCAsopQno6+hI9SgJHKddzXpmv2wtouZz6931Eax+Q= -sigs.k8s.io/controller-runtime v0.9.2/go.mod h1:TxzMCHyEUpaeuOiZx/bIdc2T81vfs/aKdvJt9wuu0zk= -sigs.k8s.io/kustomize/api v0.8.5 h1:bfCXGXDAbFbb/Jv5AhMj2BB8a5VAJuuQ5/KU69WtDjQ= -sigs.k8s.io/kustomize/api v0.8.5/go.mod h1:M377apnKT5ZHJS++6H4rQoCHmWtt6qTpp3mbe7p6OLY= -sigs.k8s.io/kustomize/cmd/config v0.9.7/go.mod h1:MvXCpHs77cfyxRmCNUQjIqCmZyYsbn5PyQpWiq44nW0= -sigs.k8s.io/kustomize/kustomize/v4 v4.0.5/go.mod h1:C7rYla7sI8EnxHE/xEhRBSHMNfcL91fx0uKmUlUhrBk= -sigs.k8s.io/kustomize/kyaml v0.10.15 h1:dSLgG78KyaxN4HylPXdK+7zB3k7sW6q3IcCmcfKA+aI= -sigs.k8s.io/kustomize/kyaml v0.10.15/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4cPcfUVt5Hg= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= +sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= +sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= +sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= +sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From bafdcd27ea859780fabb5c4bc9c28cde35ec5b23 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Thu, 4 Jan 2024 19:11:48 +0700 Subject: [PATCH 18/20] fix: controller generate --- api/v1/zz_generated.deepcopy.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go index c647ef9b..a1eb3c0a 100644 --- a/api/v1/zz_generated.deepcopy.go +++ b/api/v1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2019 Agoda DevOps Container. @@ -305,7 +304,8 @@ func (in ChartValuesURLs) DeepCopyInto(out *ChartValuesURLs) { if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = make([]string, len(*in)) copy(*out, *in) } @@ -529,7 +529,8 @@ func (in ConfigBundles) DeepCopyInto(out *ConfigBundles) { if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = make([]string, len(*in)) copy(*out, *in) } @@ -823,7 +824,8 @@ func (in *ConfigSpec) DeepCopyInto(out *ConfigSpec) { if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = make([]string, len(*in)) copy(*out, *in) } @@ -858,14 +860,16 @@ func (in *ConfigSpec) DeepCopyInto(out *ConfigSpec) { if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = make(ChartValuesURLs, len(*in)) for key, val := range *in { var outVal []string if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = make([]string, len(*in)) copy(*out, *in) } @@ -2889,7 +2893,8 @@ func (in *TeamStatus) DeepCopyInto(out *TeamStatus) { if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = make(map[string]DesiredImageTime, len(*in)) for key, val := range *in { (*out)[key] = *val.DeepCopy() From f5a74c9d7270090d6c04aaabf2ec97def2cc7509 Mon Sep 17 00:00:00 2001 From: npetchapan Date: Fri, 5 Jan 2024 15:25:22 +0700 Subject: [PATCH 19/20] fix: upgrade kubebuilder --- Makefile | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 77f6fd77..3ca661ea 100644 --- a/Makefile +++ b/Makefile @@ -72,7 +72,7 @@ init: tidy install-dep .PHONY: install-dep install-dep: .install-kubectl .install-kustomize .install-golangci-lint .install-kubebuilder .install-helm \ - .install-protoc .install-swag .install-gotools + .install-protoc .install-swag @echo 'done!' .PHONY: format @@ -367,12 +367,15 @@ install-go: .install-kubebuilder: export APP_NAME = kubebuilder .install-kubebuilder: export APP_VERSION = $(KUBEBUILDER_VERSION) +.install-kubebuilder: export _DOWNLOAD_URL = https://go.kubebuilder.io/dl/latest/$(OS)/$(ARCH) .install-kubebuilder: - export _FILENAME="$(KUBEBULIDER_FILENAME)"; \ - export _DOWNLOAD_URL="https://github.com/kubernetes-sigs/kubebuilder/releases/download/v$(KUBEBUILDER_VERSION)/$$_FILENAME"; \ - export _MOVE_CMD="$(MKDIR) -p /usr/local/$(APP_NAME)/bin && $(MV) $(TMP_DIR)/$$_FILENAME/bin/* /usr/local/$(APP_NAME)/bin/"; \ - export INSTALL_DIR="/usr/local/$(APP_NAME)/bin/"; \ - $(MAKE) .install-archive + $(MKDIR) -p $(TMP_DIR); \ + $(PWD); \ + $(CURL) -sLo $(TMP_DIR)/$(APP_NAME) $(_DOWNLOAD_URL); \ + $(CHMOD) +x $(TMP_DIR)/$(APP_NAME); \ + $(MKDIR) -p /usr/local/$(APP_NAME)/bin; \ + $(MV) $(TMP_DIR)/$(APP_NAME) /usr/local/$(APP_NAME)/bin/; \ + echo $(APP_NAME) $(APP_VERSION) installed; .install-helm: export APP_NAME = helm .install-helm: export APP_VERSION = $(HELM_VERSION) From d87046b4cb64c17c1871065ab3e4289b919af38f Mon Sep 17 00:00:00 2001 From: npetchapan Date: Fri, 5 Jan 2024 16:13:23 +0700 Subject: [PATCH 20/20] fix: twirp dependencies version got downgrade --- Makefile | 2 +- go.mod | 7 +++++++ go.sum | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 3ca661ea..7dd188bc 100644 --- a/Makefile +++ b/Makefile @@ -72,7 +72,7 @@ init: tidy install-dep .PHONY: install-dep install-dep: .install-kubectl .install-kustomize .install-golangci-lint .install-kubebuilder .install-helm \ - .install-protoc .install-swag + .install-protoc .install-swag .install-gotools @echo 'done!' .PHONY: format diff --git a/go.mod b/go.mod index 7ea03ce4..e3b87d0d 100644 --- a/go.mod +++ b/go.mod @@ -186,3 +186,10 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) + +replace ( + helm.sh/helm/v3 => helm.sh/helm/v3 v3.13.3 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.28.4 + k8s.io/kubectl => k8s.io/kubectl v0.28.4 + sigs.k8s.io/kustomize/api => sigs.k8s.io/kustomize/api v0.10.1 +) diff --git a/go.sum b/go.sum index f24bdb06..4db483fc 100644 --- a/go.sum +++ b/go.sum @@ -36,6 +36,7 @@ github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA4 github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/hcsshim v0.11.0 h1:7EFNIY4igHEXUdj1zXgAyU3fLc7QfOKHbkldRVTBdiM= github.com/Microsoft/hcsshim v0.11.0/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -46,9 +47,11 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -79,10 +82,13 @@ github.com/containerd/containerd v1.7.6 h1:oNAVsnhPoy4BTPQivLgTzI9Oleml9l/+eYIDY github.com/containerd/containerd v1.7.6/go.mod h1:SY6lrkkuJT40BVNO37tlYTSnKJnP5AXBc0fhx0q+TJ4= github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= @@ -111,10 +117,13 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -141,6 +150,7 @@ github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6 github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -149,6 +159,7 @@ github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpj github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= @@ -165,6 +176,7 @@ github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaL github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -242,11 +254,13 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= @@ -286,9 +300,11 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -319,6 +335,7 @@ github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQs github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -336,11 +353,13 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lusis/slack-test v0.0.0-20180109053238-3c758769bfa6 h1:iOAVXzZyXtW408TMYejlUPo6BIn92HmOacWtIfNyYns= github.com/lusis/slack-test v0.0.0-20180109053238-3c758769bfa6/go.mod h1:sFlOUpQL1YcjhFVXhg1CG8ZASEs/Mf1oVb6H75JL/zg= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= @@ -370,6 +389,7 @@ github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFW github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= @@ -399,6 +419,7 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -408,11 +429,13 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= @@ -465,14 +488,17 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -489,22 +515,28 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -543,8 +575,10 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -563,6 +597,7 @@ go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -627,12 +662,14 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -676,6 +713,7 @@ golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -771,6 +809,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -794,6 +833,7 @@ gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gG gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -818,6 +858,7 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -843,8 +884,11 @@ k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY= k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4= k8s.io/component-base v0.28.4 h1:c/iQLWPdUgI90O+T9TeECg8o7N3YJTiuz2sKxILYcYo= k8s.io/component-base v0.28.4/go.mod h1:m9hR0uvqXDybiGL2nf/3Lf0MerAfQXzkfWhUY58JUbU= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= k8s.io/kubectl v0.28.4 h1:gWpUXW/T7aFne+rchYeHkyB8eVDl5UZce8G4X//kjUQ= @@ -858,11 +902,14 @@ sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigw sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= -sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= +sigs.k8s.io/kustomize/api v0.10.1 h1:KgU7hfYoscuqag84kxtzKdEC3mKMb99DPI3a0eaV1d0= +sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= +sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=