From f1bae16723a819d0efea43b6b18e2d7cedb1ec90 Mon Sep 17 00:00:00 2001 From: Somefive Date: Mon, 12 Jun 2023 10:41:02 +0800 Subject: [PATCH] Chore: remove schematic kube and helm (#6099) * Chore: remove unused code Signed-off-by: Somefive * Chore: remove schematic Kube & Helm Signed-off-by: Somefive --------- Signed-off-by: Somefive --- apis/core.oam.dev/common/types.go | 77 -- .../common/zz_generated.deepcopy.go | 96 --- .../v1beta1/resourcetracker_types.go | 53 +- .../v1beta1/zz_generated.deepcopy.go | 21 - apis/interfaces/resourcetracker.go | 35 - apis/types/capability.go | 57 -- apis/types/workflow.go | 29 - .../core.oam.dev_applicationrevisions.yaml | 365 --------- .../core.oam.dev_componentdefinitions.yaml | 70 -- .../core.oam.dev_definitionrevisions.yaml | 288 ------- .../crds/core.oam.dev_policydefinitions.yaml | 70 -- .../crds/core.oam.dev_resourcetrackers.yaml | 50 -- .../crds/core.oam.dev_traitdefinitions.yaml | 70 -- .../core.oam.dev_workflowstepdefinitions.yaml | 70 -- cmd/core/app/options/options.go | 5 +- cmd/core/app/options/options_test.go | 2 - cmd/core/app/server.go | 7 +- e2e/plugin/plugin_suit_test.go | 12 - e2e/plugin/plugin_test.go | 90 --- e2e/registry/registry_test.go | 4 +- go.mod | 1 - go.sum | 733 ------------------ pkg/appfile/appfile.go | 141 ---- pkg/appfile/appfile_test.go | 522 ------------- pkg/appfile/helm/helm.go | 111 --- pkg/appfile/helm/helm_test.go | 101 --- pkg/appfile/helm/schema.go | 218 ------ pkg/appfile/helm/schema_test.go | 295 ------- pkg/appfile/template.go | 12 - pkg/appfile/template_test.go | 18 - pkg/auth/round_trippers.go | 5 +- .../v1beta1/application/generator.go | 20 +- .../componentdefinition_controller_test.go | 120 --- pkg/controller/utils/actions.go | 51 -- pkg/controller/utils/capability.go | 61 +- pkg/controller/utils/utils.go | 10 - pkg/multicluster/cluster_management.go | 23 - pkg/oam/testutil/helper.go | 10 - pkg/policy/envbinding/patch.go | 17 - pkg/policy/envbinding/placement.go | 15 - pkg/policy/envbinding/placement_test.go | 68 -- pkg/policy/envbinding/utils.go | 78 -- pkg/policy/envbinding/utils_test.go | 32 - pkg/resourcekeeper/cache_test.go | 3 +- pkg/resourcekeeper/gc.go | 4 +- pkg/stdlib/pkgs/multicluster.cue | 15 - pkg/utils/app/{app.go => operation.go} | 28 +- pkg/utils/errors/resourcetracker.go | 14 - pkg/utils/helm/helm.go | 213 ----- pkg/utils/json.go | 6 - pkg/utils/k8s.go | 8 - pkg/utils/pprof.go | 64 -- pkg/utils/round_trippers.go | 41 - pkg/utils/sanitize.go | 26 - pkg/utils/sanitize_test.go | 28 - pkg/utils/schema/ui_schema.go | 33 +- pkg/utils/strings.go | 134 +--- pkg/utils/strings_test.go | 198 +---- pkg/utils/system/system.go | 9 - pkg/utils/url.go | 13 + pkg/utils/url_test.go | 36 + pkg/velaql/providers/query/endpoint.go | 4 +- .../validating_handler_test.go | 20 - pkg/workflow/operation/operation.go | 5 +- .../providers/multicluster/multicluster.go | 22 - .../multicluster/multicluster_test.go | 87 --- references/apis/types.go | 100 --- references/appfile/modify.go | 76 -- references/cli/registry.go | 23 +- references/cmd/cli/fake/source.go | 21 - references/common/common.go | 17 - references/common/prometheus.go | 59 -- references/docgen/cluster.go | 10 - references/docgen/cluster_test.go | 82 +- references/docgen/console.go | 5 - references/docgen/markdown.go | 18 - references/docgen/parser.go | 55 -- references/docgen/testdata/kube-worker.yaml | 40 - references/docgen/testdata/svcTraitDef.yaml | 30 - .../multicluster_test.go | 168 ---- .../example-envbinding-app-wo-workflow.yaml | 40 - .../testdata/app/example-envbinding-app.yaml | 80 -- .../app/example-lite-envbinding-app.yaml | 32 - test/e2e-test/definition_revision_test.go | 341 -------- test/e2e-test/helm_app_test.go | 387 --------- test/e2e-test/kube_app_test.go | 357 --------- 86 files changed, 136 insertions(+), 6949 deletions(-) delete mode 100644 apis/interfaces/resourcetracker.go delete mode 100644 apis/types/workflow.go delete mode 100644 pkg/appfile/helm/helm.go delete mode 100644 pkg/appfile/helm/helm_test.go delete mode 100644 pkg/appfile/helm/schema.go delete mode 100644 pkg/appfile/helm/schema_test.go delete mode 100644 pkg/controller/utils/actions.go delete mode 100644 pkg/policy/envbinding/utils.go delete mode 100644 pkg/policy/envbinding/utils_test.go rename pkg/utils/app/{app.go => operation.go} (77%) delete mode 100644 pkg/utils/pprof.go delete mode 100644 pkg/utils/round_trippers.go delete mode 100644 pkg/utils/sanitize.go delete mode 100644 pkg/utils/sanitize_test.go delete mode 100644 references/apis/types.go delete mode 100644 references/cmd/cli/fake/source.go delete mode 100644 references/common/common.go delete mode 100644 references/common/prometheus.go delete mode 100644 references/docgen/testdata/kube-worker.yaml delete mode 100644 references/docgen/testdata/svcTraitDef.yaml delete mode 100644 test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml delete mode 100644 test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml delete mode 100644 test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml delete mode 100644 test/e2e-test/helm_app_test.go delete mode 100644 test/e2e-test/kube_app_test.go diff --git a/apis/core.oam.dev/common/types.go b/apis/core.oam.dev/common/types.go index d31d016f0..6b190ca93 100644 --- a/apis/core.oam.dev/common/types.go +++ b/apis/core.oam.dev/common/types.go @@ -32,16 +32,6 @@ import ( "github.com/oam-dev/kubevela/pkg/oam" ) -// Kube defines the encapsulation in raw Kubernetes resource format -type Kube struct { - // Template defines the raw Kubernetes resource - // +kubebuilder:pruning:PreserveUnknownFields - Template runtime.RawExtension `json:"template"` - - // Parameters defines configurable parameters - Parameters []KubeParameter `json:"parameters,omitempty"` -} - // ParameterValueType refers to a data type of parameter type ParameterValueType string @@ -52,31 +42,6 @@ const ( BooleanType ParameterValueType = "boolean" ) -// A KubeParameter defines a configurable parameter of a component. -type KubeParameter struct { - // Name of this parameter - Name string `json:"name"` - - // +kubebuilder:validation:Enum:=string;number;boolean - // ValueType indicates the type of the parameter value, and - // only supports basic data types: string, number, boolean. - ValueType ParameterValueType `json:"type"` - - // FieldPaths specifies an array of fields within this workload that will be - // overwritten by the value of this parameter. All fields must be of the - // same type. Fields are specified as JSON field paths without a leading - // dot, for example 'spec.replicas'. - FieldPaths []string `json:"fieldPaths"` - - // +kubebuilder:default:=false - // Required specifies whether or not a value for this parameter must be - // supplied when authoring an Application. - Required *bool `json:"required,omitempty"` - - // Description of this parameter. - Description *string `json:"description,omitempty"` -} - // CUE defines the encapsulation in CUE format type CUE struct { // Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field. @@ -87,26 +52,11 @@ type CUE struct { // Schematic defines the encapsulation of this capability(workload/trait/scope), // the encapsulation can be defined in different ways, e.g. CUE/HCL(terraform)/KUBE(K8s Object)/HELM, etc... type Schematic struct { - KUBE *Kube `json:"kube,omitempty"` - CUE *CUE `json:"cue,omitempty"` - HELM *Helm `json:"helm,omitempty"` - Terraform *Terraform `json:"terraform,omitempty"` } -// A Helm represents resources used by a Helm module -type Helm struct { - // Release records a Helm release used by a Helm module workload. - // +kubebuilder:pruning:PreserveUnknownFields - Release runtime.RawExtension `json:"release"` - - // HelmRelease records a Helm repository used by a Helm module workload. - // +kubebuilder:pruning:PreserveUnknownFields - Repository runtime.RawExtension `json:"repository"` -} - // Terraform is the struct to describe cloud resources managed by Hashicorp Terraform type Terraform struct { // Configuration is Terraform Configuration @@ -213,26 +163,6 @@ const ( ApplicationDeleting ApplicationPhase = "deleting" ) -// WorkflowState is a string that mark the workflow state -type WorkflowState string - -const ( - // WorkflowStateInitializing means the workflow is in initial state - WorkflowStateInitializing WorkflowState = "Initializing" - // WorkflowStateTerminated means workflow is terminated manually, and it won't be started unless the spec changed. - WorkflowStateTerminated WorkflowState = "Terminated" - // WorkflowStateSuspended means workflow is suspended manually, and it can be resumed. - WorkflowStateSuspended WorkflowState = "Suspended" - // WorkflowStateSucceeded means workflow is running successfully, all steps finished. - WorkflowStateSucceeded WorkflowState = "Succeeded" - // WorkflowStateFinished means workflow is end. - WorkflowStateFinished WorkflowState = "Finished" - // WorkflowStateExecuting means workflow is still running or waiting some steps. - WorkflowStateExecuting WorkflowState = "Executing" - // WorkflowStateSkipping means it will skip this reconcile and let next reconcile to handle it. - WorkflowStateSkipping WorkflowState = "Skipping" -) - // ApplicationComponentStatus record the health status of App component type ApplicationComponentStatus struct { Name string `json:"name"` @@ -269,13 +199,6 @@ type Revision struct { RevisionHash string `json:"revisionHash,omitempty"` } -// RawComponent record raw component -type RawComponent struct { - // +kubebuilder:validation:EmbeddedResource - // +kubebuilder:pruning:PreserveUnknownFields - Raw runtime.RawExtension `json:"raw"` -} - // AppStatus defines the observed state of Application type AppStatus struct { // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster diff --git a/apis/core.oam.dev/common/zz_generated.deepcopy.go b/apis/core.oam.dev/common/zz_generated.deepcopy.go index fe85551bd..8b2ed6c68 100644 --- a/apis/core.oam.dev/common/zz_generated.deepcopy.go +++ b/apis/core.oam.dev/common/zz_generated.deepcopy.go @@ -278,76 +278,6 @@ func (in *DefinitionReference) DeepCopy() *DefinitionReference { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Helm) DeepCopyInto(out *Helm) { - *out = *in - in.Release.DeepCopyInto(&out.Release) - in.Repository.DeepCopyInto(&out.Repository) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Helm. -func (in *Helm) DeepCopy() *Helm { - if in == nil { - return nil - } - out := new(Helm) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Kube) DeepCopyInto(out *Kube) { - *out = *in - in.Template.DeepCopyInto(&out.Template) - if in.Parameters != nil { - in, out := &in.Parameters, &out.Parameters - *out = make([]KubeParameter, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kube. -func (in *Kube) DeepCopy() *Kube { - if in == nil { - return nil - } - out := new(Kube) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *KubeParameter) DeepCopyInto(out *KubeParameter) { - *out = *in - if in.FieldPaths != nil { - in, out := &in.FieldPaths, &out.FieldPaths - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Required != nil { - in, out := &in.Required, &out.Required - *out = new(bool) - **out = **in - } - if in.Description != nil { - in, out := &in.Description, &out.Description - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeParameter. -func (in *KubeParameter) DeepCopy() *KubeParameter { - if in == nil { - return nil - } - out := new(KubeParameter) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OAMObjectReference) DeepCopyInto(out *OAMObjectReference) { *out = *in @@ -383,22 +313,6 @@ func (in *PolicyStatus) DeepCopy() *PolicyStatus { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RawComponent) DeepCopyInto(out *RawComponent) { - *out = *in - in.Raw.DeepCopyInto(&out.Raw) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RawComponent. -func (in *RawComponent) DeepCopy() *RawComponent { - if in == nil { - return nil - } - out := new(RawComponent) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RawExtensionPointer) DeepCopyInto(out *RawExtensionPointer) { *out = *in @@ -475,21 +389,11 @@ func (in *Revision) DeepCopy() *Revision { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Schematic) DeepCopyInto(out *Schematic) { *out = *in - if in.KUBE != nil { - in, out := &in.KUBE, &out.KUBE - *out = new(Kube) - (*in).DeepCopyInto(*out) - } if in.CUE != nil { in, out := &in.CUE, &out.CUE *out = new(CUE) **out = **in } - if in.HELM != nil { - in, out := &in.HELM, &out.HELM - *out = new(Helm) - (*in).DeepCopyInto(*out) - } if in.Terraform != nil { in, out := &in.Terraform, &out.Terraform *out = new(Terraform) diff --git a/apis/core.oam.dev/v1beta1/resourcetracker_types.go b/apis/core.oam.dev/v1beta1/resourcetracker_types.go index 1edd0dbdb..92d74113b 100644 --- a/apis/core.oam.dev/v1beta1/resourcetracker_types.go +++ b/apis/core.oam.dev/v1beta1/resourcetracker_types.go @@ -32,7 +32,6 @@ import ( "github.com/kubevela/pkg/util/compression" "github.com/oam-dev/kubevela/apis/core.oam.dev/common" - "github.com/oam-dev/kubevela/apis/interfaces" velatypes "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/oam" velaerr "github.com/oam-dev/kubevela/pkg/utils/errors" @@ -53,8 +52,7 @@ type ResourceTracker struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec ResourceTrackerSpec `json:"spec,omitempty"` - Status ResourceTrackerStatus `json:"status,omitempty"` + Spec ResourceTrackerSpec `json:"spec,omitempty"` } // ResourceTrackerType defines the type of resourceTracker @@ -140,7 +138,7 @@ type ManagedResource struct { } // Equal check if two managed resource equals -func (in ManagedResource) Equal(r ManagedResource) bool { +func (in *ManagedResource) Equal(r ManagedResource) bool { if !in.ClusterObjectReference.Equal(r.ClusterObjectReference) { return false } @@ -151,7 +149,7 @@ func (in ManagedResource) Equal(r ManagedResource) bool { } // DisplayName readable name for locating resource -func (in ManagedResource) DisplayName() string { +func (in *ManagedResource) DisplayName() string { s := in.Kind + " " + in.Name if in.Namespace != "" || in.Cluster != "" { s += " (" @@ -170,12 +168,12 @@ func (in ManagedResource) DisplayName() string { } // NamespacedName namespacedName -func (in ManagedResource) NamespacedName() types.NamespacedName { +func (in *ManagedResource) NamespacedName() types.NamespacedName { return types.NamespacedName{Namespace: in.Namespace, Name: in.Name} } // ResourceKey computes the key for managed resource, resources with the same key points to the same resource -func (in ManagedResource) ResourceKey() string { +func (in *ManagedResource) ResourceKey() string { group := in.GroupVersionKind().Group kind := in.GroupVersionKind().Kind cluster := in.Cluster @@ -186,12 +184,12 @@ func (in ManagedResource) ResourceKey() string { } // ComponentKey computes the key for the component which managed resource belongs to -func (in ManagedResource) ComponentKey() string { +func (in *ManagedResource) ComponentKey() string { return strings.Join([]string{in.Env, in.Component}, "/") } // UnmarshalTo unmarshal ManagedResource into target object -func (in ManagedResource) UnmarshalTo(obj interface{}) error { +func (in *ManagedResource) UnmarshalTo(obj interface{}) error { if in.Data == nil || in.Data.Raw == nil { return velaerr.ManagedResourceHasNoDataError{} } @@ -199,7 +197,7 @@ func (in ManagedResource) UnmarshalTo(obj interface{}) error { } // ToUnstructured converts managed resource into unstructured -func (in ManagedResource) ToUnstructured() *unstructured.Unstructured { +func (in *ManagedResource) ToUnstructured() *unstructured.Unstructured { obj := &unstructured.Unstructured{} obj.SetGroupVersionKind(in.GroupVersionKind()) obj.SetName(in.Name) @@ -211,7 +209,7 @@ func (in ManagedResource) ToUnstructured() *unstructured.Unstructured { } // ToUnstructuredWithData converts managed resource into unstructured and unmarshal data -func (in ManagedResource) ToUnstructuredWithData() (*unstructured.Unstructured, error) { +func (in *ManagedResource) ToUnstructuredWithData() (*unstructured.Unstructured, error) { obj := in.ToUnstructured() if err := in.UnmarshalTo(obj); err != nil { if errors.Is(err, velaerr.ManagedResourceHasNoDataError{}) { @@ -221,13 +219,6 @@ func (in ManagedResource) ToUnstructuredWithData() (*unstructured.Unstructured, return obj, nil } -// ResourceTrackerStatus define the status of resourceTracker -// For backward-compatibility -type ResourceTrackerStatus struct { - // Deprecated - TrackedResources []common.ClusterObjectReference `json:"trackedResources,omitempty"` -} - // +kubebuilder:object:root=true // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -325,29 +316,3 @@ func (in *ResourceTracker) DeleteManagedResource(rsc client.Object, remove bool) } return true } - -// addClusterObjectReference -// Deprecated -func (in *ResourceTracker) addClusterObjectReference(ref common.ClusterObjectReference) bool { - for _, _rsc := range in.Status.TrackedResources { - if _rsc.Equal(ref) { - return true - } - } - in.Status.TrackedResources = append(in.Status.TrackedResources, ref) - return false -} - -// AddTrackedResource add new object reference into tracked resources, return if already exists -// Deprecated -func (in *ResourceTracker) AddTrackedResource(rsc interfaces.TrackableResource) bool { - return in.addClusterObjectReference(common.ClusterObjectReference{ - ObjectReference: corev1.ObjectReference{ - APIVersion: rsc.GetAPIVersion(), - Kind: rsc.GetKind(), - Name: rsc.GetName(), - Namespace: rsc.GetNamespace(), - UID: rsc.GetUID(), - }, - }) -} diff --git a/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go b/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go index 4cebf3217..79757e8a3 100644 --- a/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go +++ b/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go @@ -679,7 +679,6 @@ func (in *ResourceTracker) DeepCopyInto(out *ResourceTracker) { out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceTracker. @@ -771,26 +770,6 @@ func (in *ResourceTrackerSpec) DeepCopy() *ResourceTrackerSpec { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceTrackerStatus) DeepCopyInto(out *ResourceTrackerStatus) { - *out = *in - if in.TrackedResources != nil { - in, out := &in.TrackedResources, &out.TrackedResources - *out = make([]common.ClusterObjectReference, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceTrackerStatus. -func (in *ResourceTrackerStatus) DeepCopy() *ResourceTrackerStatus { - if in == nil { - return nil - } - out := new(ResourceTrackerStatus) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TraitDefinition) DeepCopyInto(out *TraitDefinition) { *out = *in diff --git a/apis/interfaces/resourcetracker.go b/apis/interfaces/resourcetracker.go deleted file mode 100644 index 9cf29a456..000000000 --- a/apis/interfaces/resourcetracker.go +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package interfaces - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -// ObjectOwner is the interface for get and set ownerReference -type ObjectOwner interface { - GetOwnerReferences() []metav1.OwnerReference - SetOwnerReferences([]metav1.OwnerReference) -} - -// TrackableResource is the interface for resources to be tracked by resourcetracker -type TrackableResource interface { - client.Object - metav1.Type - ObjectOwner -} diff --git a/apis/types/capability.go b/apis/types/capability.go index 993254da1..92703253d 100644 --- a/apis/types/capability.go +++ b/apis/types/capability.go @@ -17,13 +17,7 @@ limitations under the License. package types import ( - "encoding/json" - "cuelang.org/go/cue" - "github.com/spf13/pflag" - "k8s.io/apimachinery/pkg/runtime" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" ) // Source record the source of Capability @@ -89,10 +83,6 @@ type CapabilityCategory string const ( TerraformCategory CapabilityCategory = "terraform" - HelmCategory CapabilityCategory = "helm" - - KubeCategory CapabilityCategory = "kube" - CUECategory CapabilityCategory = "cue" ) @@ -109,49 +99,6 @@ type Parameter struct { JSONType string `json:"jsonType,omitempty"` } -// SetFlagBy set cli flag from Parameter -func SetFlagBy(flags *pflag.FlagSet, v Parameter) { - name := v.Name - if v.Alias != "" { - name = v.Alias - } - // nolint:exhaustive - switch v.Type { - case cue.IntKind: - var vv int64 - switch val := v.Default.(type) { - case int64: - vv = val - case json.Number: - vv, _ = val.Int64() - case int: - vv = int64(val) - case float64: - vv = int64(val) - } - flags.Int64P(name, v.Short, vv, v.Usage) - case cue.StringKind: - flags.StringP(name, v.Short, v.Default.(string), v.Usage) - case cue.BoolKind: - flags.BoolP(name, v.Short, v.Default.(bool), v.Usage) - case cue.NumberKind, cue.FloatKind: - var vv float64 - switch val := v.Default.(type) { - case int64: - vv = float64(val) - case json.Number: - vv, _ = val.Float64() - case int: - vv = float64(val) - case float64: - vv = val - } - flags.Float64P(name, v.Short, vv, v.Usage) - default: - // other types not supported yet - } -} - // Capability defines the content of a capability type Capability struct { Name string `json:"name"` @@ -181,8 +128,4 @@ type Capability struct { TerraformConfiguration string `json:"terraformConfiguration,omitempty"` ConfigurationType string `json:"configurationType,omitempty"` Path string `json:"path,omitempty"` - - // KubeTemplate - KubeTemplate runtime.RawExtension `json:"kubetemplate,omitempty"` - KubeParameter []common.KubeParameter `json:"kubeparameter,omitempty"` } diff --git a/apis/types/workflow.go b/apis/types/workflow.go deleted file mode 100644 index 4d806f4bb..000000000 --- a/apis/types/workflow.go +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -import ( - corev1 "k8s.io/api/core/v1" -) - -// WorkflowContext is the workflow context to pass into workflow objects. -type WorkflowContext struct { - AppName string `json:"appName,omitempty"` - AppRevision string `json:"appRevision,omitempty"` - WorkflowIndex int `json:"workflowIndex"` - ResourceConfigMap corev1.LocalObjectReference `json:"resourceConfigMap,omitempty"` -} diff --git a/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml b/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml index f89b1151d..a82343725 100644 --- a/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml +++ b/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml @@ -968,79 +968,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used - by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will - be overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or - not a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type - of the parameter value, and only supports - basic data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes - resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -1353,79 +1280,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used - by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will - be overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or - not a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type - of the parameter value, and only supports - basic data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes - resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -1697,79 +1551,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used - by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will - be overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or - not a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type - of the parameter value, and only supports - basic data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes - resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -2193,79 +1974,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used - by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will - be overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or - not a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type - of the parameter value, and only supports - basic data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes - resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -2524,79 +2232,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used - by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will - be overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or - not a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type - of the parameter value, and only supports - basic data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes - resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform diff --git a/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml b/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml index 3a60031ae..bd3687d97 100644 --- a/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml +++ b/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml @@ -101,76 +101,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm module - properties: - release: - description: Release records a Helm release used by a Helm - module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable parameter - of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array of fields - within this workload that will be overwritten by the - value of this parameter. \tAll fields must be of the - same type. Fields are specified as JSON field paths - without a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not a value - for this parameter must be supplied when authoring - an Application. - type: boolean - type: - description: 'ValueType indicates the type of the parameter - value, and only supports basic data types: string, - number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform diff --git a/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml b/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml index a970b80c8..ed57e52ee 100644 --- a/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml +++ b/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml @@ -142,78 +142,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will be - overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not - a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type of - the parameter value, and only supports basic - data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -473,78 +401,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will be - overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not - a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type of - the parameter value, and only supports basic - data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -805,78 +661,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will be - overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not - a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type of - the parameter value, and only supports basic - data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform @@ -1112,78 +896,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm - module - properties: - release: - description: Release records a Helm release used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository - used by a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable - parameter of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array - of fields within this workload that will be - overwritten by the value of this parameter. - \tAll fields must be of the same type. Fields - are specified as JSON field paths without - a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not - a value for this parameter must be supplied - when authoring an Application. - type: boolean - type: - description: 'ValueType indicates the type of - the parameter value, and only supports basic - data types: string, number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform diff --git a/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml b/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml index f49637b61..c06f06e4f 100644 --- a/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml +++ b/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml @@ -74,76 +74,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm module - properties: - release: - description: Release records a Helm release used by a Helm - module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable parameter - of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array of fields - within this workload that will be overwritten by the - value of this parameter. \tAll fields must be of the - same type. Fields are specified as JSON field paths - without a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not a value - for this parameter must be supplied when authoring - an Application. - type: boolean - type: - description: 'ValueType indicates the type of the parameter - value, and only supports basic data types: string, - number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform diff --git a/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml b/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml index b9648a948..f79cd7a16 100644 --- a/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml +++ b/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml @@ -130,56 +130,6 @@ spec: required: - applicationGeneration type: object - status: - description: ResourceTrackerStatus define the status of resourceTracker - For backward-compatibility - properties: - trackedResources: - description: Deprecated - items: - description: ClusterObjectReference defines the object reference - with cluster. - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - type: string - creator: - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - type: array - type: object type: object served: true storage: true diff --git a/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml b/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml index 0edd49f5d..3c8b1838b 100644 --- a/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml +++ b/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml @@ -119,76 +119,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm module - properties: - release: - description: Release records a Helm release used by a Helm - module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable parameter - of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array of fields - within this workload that will be overwritten by the - value of this parameter. \tAll fields must be of the - same type. Fields are specified as JSON field paths - without a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not a value - for this parameter must be supplied when authoring - an Application. - type: boolean - type: - description: 'ValueType indicates the type of the parameter - value, and only supports basic data types: string, - number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform diff --git a/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml b/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml index e7b29c06d..9357cc29d 100644 --- a/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml +++ b/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml @@ -71,76 +71,6 @@ spec: required: - template type: object - helm: - description: A Helm represents resources used by a Helm module - properties: - release: - description: Release records a Helm release used by a Helm - module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - repository: - description: HelmRelease records a Helm repository used by - a Helm module workload. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - release - - repository - type: object - kube: - description: Kube defines the encapsulation in raw Kubernetes - resource format - properties: - parameters: - description: Parameters defines configurable parameters - items: - description: A KubeParameter defines a configurable parameter - of a component. - properties: - description: - description: Description of this parameter. - type: string - fieldPaths: - description: "FieldPaths specifies an array of fields - within this workload that will be overwritten by the - value of this parameter. \tAll fields must be of the - same type. Fields are specified as JSON field paths - without a leading dot, for example 'spec.replicas'." - items: - type: string - type: array - name: - description: Name of this parameter - type: string - required: - default: false - description: Required specifies whether or not a value - for this parameter must be supplied when authoring - an Application. - type: boolean - type: - description: 'ValueType indicates the type of the parameter - value, and only supports basic data types: string, - number, boolean.' - enum: - - string - - number - - boolean - type: string - required: - - fieldPaths - - name - - type - type: object - type: array - template: - description: Template defines the raw Kubernetes resource - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - template - type: object terraform: description: Terraform is the struct to describe cloud resources managed by Hashicorp Terraform diff --git a/cmd/core/app/options/options.go b/cmd/core/app/options/options.go index 0a54ff3b2..f8328f3e2 100644 --- a/cmd/core/app/options/options.go +++ b/cmd/core/app/options/options.go @@ -25,6 +25,7 @@ import ( "github.com/kubevela/pkg/controller/sharding" pkgmulticluster "github.com/kubevela/pkg/multicluster" utillog "github.com/kubevela/pkg/util/log" + "github.com/kubevela/pkg/util/profiling" wfTypes "github.com/kubevela/workflow/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" cliflag "k8s.io/component-base/cli/flag" @@ -53,7 +54,6 @@ type CoreOptions struct { InformerSyncPeriod time.Duration QPS float64 Burst int - PprofAddr string LeaderElectionResourceLock string LeaseDuration time.Duration RenewDeadLine time.Duration @@ -90,7 +90,6 @@ func NewCoreOptions() *CoreOptions { InformerSyncPeriod: 10 * time.Hour, QPS: 50, Burst: 100, - PprofAddr: "", LeaderElectionResourceLock: "configmapsleases", LeaseDuration: 15 * time.Second, RenewDeadLine: 10 * time.Second, @@ -123,7 +122,6 @@ func (s *CoreOptions) Flags() cliflag.NamedFlagSets { "The re-sync period for informer in controller-runtime. This is a system-level configuration.") gfs.Float64Var(&s.QPS, "kube-api-qps", s.QPS, "the qps for reconcile clients. Low qps may lead to low throughput. High qps may give stress to api-server. Raise this value if concurrent-reconciles is set to be high.") gfs.IntVar(&s.Burst, "kube-api-burst", s.Burst, "the burst for reconcile clients. Recommend setting it qps*2.") - gfs.StringVar(&s.PprofAddr, "pprof-addr", s.PprofAddr, "The address for pprof to use while exporting profiling results. The default value is empty which means do not expose it. Set it to address like :6666 to expose it.") gfs.StringVar(&s.LeaderElectionResourceLock, "leader-election-resource-lock", s.LeaderElectionResourceLock, "The resource lock to use for leader election") gfs.DurationVar(&s.LeaseDuration, "leader-election-lease-duration", s.LeaseDuration, "The duration that non-leader candidates will wait to force acquire leadership") @@ -163,6 +161,7 @@ func (s *CoreOptions) Flags() cliflag.NamedFlagSets { kfs := fss.FlagSet("klog") pkgclient.AddTimeoutControllerClientFlags(fss.FlagSet("controllerclient")) utillog.AddFlags(kfs) + profiling.AddFlags(fss.FlagSet("profiling")) if s.LogDebug { _ = kfs.Set("v", strconv.Itoa(int(commonconfig.LogDebug))) diff --git a/cmd/core/app/options/options_test.go b/cmd/core/app/options/options_test.go index a15a446c2..5da459fa3 100644 --- a/cmd/core/app/options/options_test.go +++ b/cmd/core/app/options/options_test.go @@ -60,7 +60,6 @@ func TestCoreOptions_Flags(t *testing.T) { "--max-workflow-wait-backoff-time=5", "--metrics-addr=/metrics", "--perf-enabled=true", - "--pprof-addr=/debug/pprof", "--use-webhook=true", "--webhook-cert-dir=/path/to/cert", "--webhook-port=8080", @@ -86,7 +85,6 @@ func TestCoreOptions_Flags(t *testing.T) { InformerSyncPeriod: 3 * time.Second, QPS: 200, Burst: 500, - PprofAddr: "/debug/pprof", LeaderElectionResourceLock: "/leases", LeaseDuration: 3 * time.Second, RenewDeadLine: 5 * time.Second, diff --git a/cmd/core/app/server.go b/cmd/core/app/server.go index 9482b37fa..f1ad68e74 100644 --- a/cmd/core/app/server.go +++ b/cmd/core/app/server.go @@ -28,6 +28,7 @@ import ( velaclient "github.com/kubevela/pkg/controller/client" "github.com/kubevela/pkg/controller/sharding" "github.com/kubevela/pkg/meta" + "github.com/kubevela/pkg/util/profiling" "github.com/kubevela/workflow/pkg/cue/packages" "github.com/pkg/errors" "github.com/spf13/cobra" @@ -52,7 +53,6 @@ import ( "github.com/oam-dev/kubevela/pkg/monitor/watcher" "github.com/oam-dev/kubevela/pkg/multicluster" "github.com/oam-dev/kubevela/pkg/oam" - pkgutil "github.com/oam-dev/kubevela/pkg/utils" "github.com/oam-dev/kubevela/pkg/utils/common" "github.com/oam-dev/kubevela/pkg/utils/util" oamwebhook "github.com/oam-dev/kubevela/pkg/webhook/core.oam.dev" @@ -101,10 +101,7 @@ func run(ctx context.Context, s *options.CoreOptions) error { "QPS", restConfig.QPS, "Burst", restConfig.Burst, ) - - if s.PprofAddr != "" { - go pkgutil.EnablePprof(s.PprofAddr, nil) - } + go profiling.StartProfilingServer(nil) // wrapper the round tripper by multi cluster rewriter if s.EnableClusterGateway { diff --git a/e2e/plugin/plugin_suit_test.go b/e2e/plugin/plugin_suit_test.go index d955c0667..508db9498 100644 --- a/e2e/plugin/plugin_suit_test.go +++ b/e2e/plugin/plugin_suit_test.go @@ -43,8 +43,6 @@ var app v1beta1.Application var testShowCdDef v1beta1.ComponentDefinition var testShowTdDef v1beta1.TraitDefinition var testCdDef v1beta1.ComponentDefinition -var testCdDefWithHelm v1beta1.ComponentDefinition -var testCdDefWithKube v1beta1.ComponentDefinition var testCdWithDeepCue v1beta1.ComponentDefinition var testTdDef v1beta1.TraitDefinition var testTdDefWithKube v1beta1.TraitDefinition @@ -80,14 +78,6 @@ var _ = BeforeSuite(func() { err = k8sClient.Create(ctx, &testCdDef) Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - Expect(yaml.Unmarshal([]byte(componentDefWithHelm), &testCdDefWithHelm)).Should(BeNil()) - err = k8sClient.Create(ctx, &testCdDefWithHelm) - Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - - Expect(yaml.Unmarshal([]byte(componentDefWithKube), &testCdDefWithKube)).Should(BeNil()) - err = k8sClient.Create(ctx, &testCdDefWithKube) - Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - Expect(yaml.Unmarshal([]byte(componentWithDeepCue), &testCdWithDeepCue)).Should(BeNil()) err = k8sClient.Create(ctx, &testCdWithDeepCue) Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) @@ -124,8 +114,6 @@ var _ = AfterSuite(func() { Expect(k8sClient.Delete(ctx, &app)).Should(BeNil()) Expect(k8sClient.Delete(ctx, &testCdDef)).Should(BeNil()) - Expect(k8sClient.Delete(ctx, &testCdDefWithHelm)).Should(BeNil()) - Expect(k8sClient.Delete(ctx, &testCdDefWithKube)).Should(BeNil()) Expect(k8sClient.Delete(ctx, &testCdWithDeepCue)).Should(BeNil()) Expect(k8sClient.Delete(ctx, &testTdDef)).Should(BeNil()) Expect(k8sClient.Delete(ctx, &testTdDefWithKube)).Should(BeNil()) diff --git a/e2e/plugin/plugin_test.go b/e2e/plugin/plugin_test.go index 215232d70..83f648802 100644 --- a/e2e/plugin/plugin_test.go +++ b/e2e/plugin/plugin_test.go @@ -131,29 +131,6 @@ var _ = Describe("Test Kubectl Plugin", func() { Expect(err).NotTo(HaveOccurred()) Expect(output).Should(ContainSubstring(showTdResult)) }) - It("Test show componentDefinition use Helm Charts as Workload", func() { - Eventually(func() string { - cdName := "test-webapp-chart" - output, _ := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", cdName)) - return output - }, 20*time.Second, time.Second).Should(ContainSubstring("Specification")) - }) - It("Test show componentDefinition def with raw Kube mode", func() { - cdName := "kube-worker" - output, err := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", cdName)) - Expect(err).NotTo(HaveOccurred()) - Expect(output).Should(ContainSubstring("image")) - Expect(output).Should(ContainSubstring("The value will be applied to fields: [spec.template.spec.containers[0].image].")) - Expect(output).Should(ContainSubstring("port")) - Expect(output).Should(ContainSubstring("the specific container port num which can accept external request.")) - }) - It("Test show traitDefinition def with raw Kube mode", func() { - tdName := "service-kube" - output, err := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", tdName)) - Expect(err).NotTo(HaveOccurred()) - Expect(output).Should(ContainSubstring("targetPort")) - Expect(output).Should(ContainSubstring("target port num for service provider.")) - }) It("Test show traitDefinition def with cue single map parameter", func() { tdName := "annotations" output, err := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", tdName)) @@ -397,73 +374,6 @@ spec: ` -var componentDefWithHelm = ` -apiVersion: core.oam.dev/v1beta1 -kind: ComponentDefinition -metadata: - name: test-webapp-chart - namespace: default - annotations: - definition.oam.dev/description: helm chart for webapp -spec: - workload: - definition: - apiVersion: apps/v1 - kind: Deployment - schematic: - helm: - release: - chart: - spec: - chart: "podinfo" - version: "5.1.4" - repository: - url: "https://charts.kubevela.net/example/" -` - -var componentDefWithKube = ` -apiVersion: core.oam.dev/v1beta1 -kind: ComponentDefinition -metadata: - name: kube-worker - namespace: default -spec: - workload: - definition: - apiVersion: apps/v1 - kind: Deployment - schematic: - kube: - template: - apiVersion: apps/v1 - kind: Deployment - spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - ports: - - containerPort: 80 - parameters: - - name: image - required: true - type: string - fieldPaths: - - "spec.template.spec.containers[0].image" - - name: port - required: true - type: string - fieldPaths: - - "spec.template.spec.containers[0].ports[0].containerPort" - description: "the specific container port num which can accept external request." -` - var traitDef = ` apiVersion: core.oam.dev/v1beta1 kind: TraitDefinition diff --git a/e2e/registry/registry_test.go b/e2e/registry/registry_test.go index 3301c23d7..5d68a7aae 100644 --- a/e2e/registry/registry_test.go +++ b/e2e/registry/registry_test.go @@ -20,14 +20,14 @@ import ( "fmt" "github.com/oam-dev/kubevela/e2e" - "github.com/oam-dev/kubevela/references/apis" + "github.com/oam-dev/kubevela/references/cli" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) var ( - registryConfigs = []apis.RegistryConfig{ + registryConfigs = []cli.RegistryConfig{ { Name: "e2e-oss-registry", URL: "oss://registry.e2e.net", diff --git a/go.mod b/go.mod index 375c26b27..702c0df63 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,6 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/chartmuseum/helm-push v0.10.4 github.com/containerd/containerd v1.7.1 - github.com/coreos/prometheus-operator v0.41.1 github.com/crossplane/crossplane-runtime v0.19.2 github.com/cue-exp/kubevelafix v0.0.0-20220922150317-aead819d979d github.com/dave/jennifer v1.6.1 diff --git a/go.sum b/go.sum index f22b4252b..0bedf275a 100644 --- a/go.sum +++ b/go.sum @@ -1,17 +1,10 @@ cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.3.0/go.mod h1:9IAwXhoyBJ7z9LcAwkj0/7NnPzYaPeZxxVp3zm+5IqA= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU= cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -19,56 +12,24 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= github.com/AlecAivazis/survey/v2 v2.1.1 h1:LEMbHE0pLj75faaVEKClEX1TM4AJmmnOh9eimREzLWI= github.com/AlecAivazis/survey/v2 v2.1.1/go.mod h1:9FJRdMdDm8rnT+zHVbvQT2RTSTLq0Ttd6q3Vl2fahjk= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-sdk-for-go v23.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v36.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= -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/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 v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v11.2.8+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.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3-0.20191028180845-3492b2aff503/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.1-0.20191028180845-3492b2aff503/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/to v0.3.1-0.20191028180845-3492b2aff503/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= -github.com/Azure/go-autorest/autorest/validation v0.2.1-0.20191028180845-3492b2aff503/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/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.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/FogDong/uitable v0.0.5 h1:1bJo/uvhGUC6i8JPHZCr8XKMHiDExE7mQkOCmDl0ryQ= github.com/FogDong/uitable v0.0.5/go.mod h1:1yEaP13SkkBUj3HvqKIUWnsb42XigyZbNle84mc5kLM= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= 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= @@ -96,29 +57,19 @@ github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMo github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8 h1:xzYJEypr/85nBpB11F9br+3HUrpgb+fcm5iADzXXYEw= github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.6/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -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= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= 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/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/a8m/expect v1.0.0/go.mod h1:4IwSCMumY49ScypDnjNbYEjgVeqy1/U2cEs3Lat96eA= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agiledragon/gomonkey/v2 v2.4.0 h1:YDQJYiSQ8o78dCMXehU1E4F/Kh4jPX+MV+/iK/yfL7s= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= 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= @@ -128,19 +79,13 @@ github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVK github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 h1:PpfENOj/vPfhhy9N2OFRjpue0hjM5XqAp2thFmkXXIk= github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU= -github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220418222510-f25a4f6275ed/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= -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/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= @@ -148,27 +93,15 @@ github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkE 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-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= -github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aryann/difflib v0.0.0-20210328193216-ff5ff6dc229b h1:uUXgbcPDK3KpW29o4iy7GtuappbWT0l5NaMo9H9pJDw= github.com/aryann/difflib v0.0.0-20210328193216-ff5ff6dc229b/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/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= 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.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= 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= @@ -179,16 +112,11 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw= github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= -github.com/brancz/kube-rbac-proxy v0.5.0/go.mod h1:cL2VjiIFGS90Cjh5ZZ8+It6tMcBt8rwvuw2J6Mamnl0= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= @@ -198,11 +126,6 @@ github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= @@ -210,9 +133,7 @@ github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY 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 v0.0.0-20181017004759-096ff4a8a059/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -224,9 +145,6 @@ github.com/chartmuseum/helm-push v0.10.4/go.mod h1:T+g3wEExKHZADxEU3ZwCRZm5Wa5cr 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/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -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/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= @@ -241,11 +159,9 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -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 v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go= github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc= @@ -255,23 +171,15 @@ github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNA 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 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= 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.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/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-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/prometheus-operator v0.41.1 h1:MEhY9syliPlQg+VlFRUfNodUEVXRXJ2n1pFG0aBp+mI= -github.com/coreos/prometheus-operator v0.41.1/go.mod h1:LhLfEBydppl7nvfEA1jIqlF3xJ9myHCnzrU+HHDxRd4= -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/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= @@ -287,23 +195,17 @@ github.com/cue-exp/kubevelafix v0.0.0-20220922150317-aead819d979d h1:VNJA1nSKA8X github.com/cue-exp/kubevelafix v0.0.0-20220922150317-aead819d979d/go.mod h1:SyTryzw/zYJIogw3H2IRcYdV5gsSoVMJiKGElcQK09I= github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/dave/jennifer v1.6.1 h1:T4T/67t6RAA5AIV6+NP8Uk/BIsXgDoqEowgycdQQLuk= github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/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-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc= github.com/docker/cli v20.10.9+incompatible h1:OJ7YkwQA+k2Oi51lmCojpjiygKpi76P7bg91b2eJxYU= github.com/docker/cli v20.10.9+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= 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-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= @@ -313,26 +215,12 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh 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/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= 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/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= 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 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= 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/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elastic/go-sysinfo v1.0.1/go.mod h1:O/D5m1VpYLwGjCYzEt63g3Z1uO3jXfwyzzjiW90t8cY= -github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= -github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= -github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= 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= @@ -345,7 +233,6 @@ github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -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/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= @@ -357,10 +244,7 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= -github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= @@ -369,7 +253,6 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ 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/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v0.0.0-20180516100307-2d684516a886/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -378,7 +261,6 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fatih/structtag v1.1.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= @@ -392,14 +274,10 @@ github.com/fluxcd/pkg/apis/meta v1.0.0 h1:i9IGHd/VNEZELX7mepkiYFbJxs2J5znaB4cN9z github.com/fluxcd/pkg/apis/meta v1.0.0/go.mod h1:04ZdpZYm1x+aL93K4daNHW1UX6E8K7Gyf5za9OhrE+U= github.com/fluxcd/source-controller/api v0.24.4 h1:m54sS1rJlgJf5j9qDRgKLhbPJAnJ9dY+VrstPKj0aQo= github.com/fluxcd/source-controller/api v0.24.4/go.mod h1:b0MmMPGE8gcpgSyGXe5m7see77tBW26eZrvGkkPstUs= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= 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/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -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/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -417,15 +295,10 @@ github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSy github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo= github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -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/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= 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-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= @@ -438,13 +311,11 @@ github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6 github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= 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-gorp/gorp/v3 v3.0.5/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= 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-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -464,88 +335,19 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= -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.17.2/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.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.17.2/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-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.4/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.17.2/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/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.17.2/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.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/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.17.2/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.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.18.0/go.mod h1:uI6pHuxWYTy94zZxgcwJkUWa9wbIlhteGfloI10GD4U= -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/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.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.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.19.7/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.17.2/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.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.17.2/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.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/validate v0.17.2/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -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.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= -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/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= 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= @@ -556,71 +358,35 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY= github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= 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.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godror/godror v0.24.2/go.mod h1:wZv/9vPiUib6tkoDl+AZ/QLf5YZgMravZ7jxH2eQWAE= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 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.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= 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/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -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-20191027212112-611e8accdfc9/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.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 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= @@ -640,11 +406,8 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx 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/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= -github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= 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= @@ -653,7 +416,6 @@ github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSx github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -677,126 +439,76 @@ github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 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/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20200417002340-c6e0a841f49a/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg= 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.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/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/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.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gophercloud/gophercloud v0.6.0/go.mod h1:GICNByuaEBibcjmjvI7QvYJSZEbGkcYwAR7EZK2WMqM= -github.com/gophercloud/gophercloud v0.10.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= -github.com/gophercloud/gophercloud v0.11.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20191106031601-ce3c9ade29de/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= 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 v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/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.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= 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 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= 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.4/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.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= -github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= -github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= 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/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= 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/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.5/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/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0= github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= 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-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.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.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= 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 v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= 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= @@ -805,14 +517,8 @@ github.com/hashicorp/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1 github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.8.5/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k= -github.com/hashicorp/serf v0.9.0/go.mod h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU= github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174 h1:WlZsjVhE8Af9IcZDGgJGQpNflI3+MJSBhsgT5PCtzBQ= github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -821,8 +527,6 @@ github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq 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/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/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -835,33 +539,19 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/flux v0.65.0/go.mod h1:BwN2XG2lMszOoquQaFdPET8FRQfrXiZsWmcMO9rkaVY= -github.com/influxdata/influxdb v1.7.7/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= -github.com/influxdata/influxdb v1.8.0/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxql v1.1.0/go.mod h1:KpVI7okXjK6PRi3Z5B+mtKZli+R1DnZgb3N+tzevNgo= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jellydator/ttlcache/v3 v3.0.1 h1:cHgCSMS7TdQcoprXnWUptJZzyFsqs18Lt8VVhRuZYVU= github.com/jellydator/ttlcache/v3 v3.0.1/go.mod h1:WwTaEmcXQ3MTjOm4bsZoDFiCu/hMvNWLO1w67RXz6h4= -github.com/jessevdk/go-flags v0.0.0-20180331124232-1c38ed7ad0cc/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= -github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= @@ -869,26 +559,16 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= 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.9/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/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.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= 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= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -899,15 +579,9 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW 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.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= 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/kortschak/utter v1.0.1/go.mod h1:vSmSjbyrlKjjsL71193LmzBOKgwePk9DH6uFaWHIInc= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -920,7 +594,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -930,7 +603,6 @@ github.com/kubevela/pkg v1.8.1-0.20230522085329-7d5e1241a86d h1:QMmTg33lUZEfTz94 github.com/kubevela/pkg v1.8.1-0.20230522085329-7d5e1241a86d/go.mod h1:3ZWrl2+zb5ROdC2NJPPrL/4sun4M10wYfRP/9gF9WJE= github.com/kubevela/workflow v0.5.1-0.20230412142834-be9e5a10baf0 h1:/ZPmjKpd/+fpCjJfNfUnE7jdESuCcZeP+fyTUAU9an0= github.com/kubevela/workflow v0.5.1-0.20230412142834-be9e5a10baf0/go.mod h1:0GhIWFIPP+Zt31m4Aslx9mihoyNz3HrOvCV69ljMIBo= -github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= @@ -940,37 +612,24 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= 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/leanovate/gopter v0.2.4/go.mod h1:gNcbPWNEWRe4lm+bycKqxUYoH5uoVje5SkOJ3uoLer8= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/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.0/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lovoo/gcloud-opentracing v0.3.0/go.mod h1:ZFqk2y38kMDDikZPAK7ynTTGuyt17nSPdS3K5e+ZTBY= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -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/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -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.1/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/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI= github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= @@ -980,18 +639,12 @@ github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlW github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 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-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= 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.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= @@ -999,18 +652,12 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ 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-oci8 v0.1.1/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.3/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.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= 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/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= 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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -1019,12 +666,6 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfr github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/minio/minio-go/v6 v6.0.49/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg= -github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -1040,13 +681,11 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb 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/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= 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/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= @@ -1067,21 +706,16 @@ github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbD 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-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 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/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mozillazg/go-cos v0.13.0/go.mod h1:Zp6DvvXn0RUOXGJ2chmWt2bLEqRAnJnS3DnAZsJsoaE= -github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto= github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= 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= @@ -1092,13 +726,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nacos-group/nacos-sdk-go/v2 v2.2.2 h1:FI+7vr1fvCA4jbgx36KezmP3zlU/WoP/7wAloaSd1Ew= github.com/nacos-group/nacos-sdk-go/v2 v2.2.2/go.mod h1:ys/1adWeKXXzbNWfRNbaFlX/t6HVLWdpsNDvmoWTw0g= -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/nelsam/hel/v2 v2.3.2/go.mod h1:1ZTGfU2PFTOd5mx22i5O0Lc2GY933lQ2wb/ggy+rL3w= github.com/nelsam/hel/v2 v2.3.3/go.mod h1:1ZTGfU2PFTOd5mx22i5O0Lc2GY933lQ2wb/ggy+rL3w= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -1115,23 +742,11 @@ github.com/oam-dev/terraform-config-inspect v0.0.0-20210418082552-fc72d929aa28 h github.com/oam-dev/terraform-config-inspect v0.0.0-20210418082552-fc72d929aa28/go.mod h1:Mu8i0/DdplvnjwRbAYPsc8+LRR27n/mp8VWdkN10GzE= github.com/oam-dev/terraform-controller v0.7.10 h1:e2STz6Od53S4Ra4+QQs65lujF50vIb6eQtTMuvvofjk= github.com/oam-dev/terraform-controller v0.7.10/go.mod h1:xvgChKG0pij0WEKRrX7w30SdVBPVOlRl/+Mv7+2C1cI= -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/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/oklog/ulid v0.0.0-20170117200651-66bb6560562f/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= 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.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= 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.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/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.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -1147,10 +762,6 @@ github.com/onsi/ginkgo/v2 v2.6.0/go.mod h1:63DOGlLAH8+REH8jUGdL3YpCpu7JODesutUjd github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs= github.com/onsi/ginkgo/v2 v2.10.0/go.mod h1:UDQOh5wbQUlMnkLfVaIUMtQ1Vus92oM+P2JX1aulgcE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= 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.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -1163,7 +774,6 @@ github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2 github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= 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.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8= @@ -1175,35 +785,16 @@ github.com/openkruise/rollouts v0.3.0/go.mod h1:rZvWA05fLEqfVQYLwqtSNzAbCZSzYift github.com/openshift/build-machinery-go v0.0.0-20211213093930-7e33a7eb4ce3/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= github.com/openshift/library-go v0.0.0-20230327085348-8477ec72b725 h1:GC0oekPo2BDqK+2Mv6W/VuvkaUUMFcmqp0AZDN2vWrA= github.com/openshift/library-go v0.0.0-20230327085348-8477ec72b725/go.mod h1:OspkL5FZZapzNcka6UkNMFD7ifLT/dWUNvtwErpRK9k= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= -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.0.3-0.20180606204148-bd9c31933947/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/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= 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/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= 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/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -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/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -1211,10 +802,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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= @@ -1224,21 +812,10 @@ github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= -github.com/prometheus-community/prom-label-proxy v0.1.1-0.20200616110844-0fbfa11fa8f3/go.mod h1:XdjyZg7LCbCC5FADHtpgNp6kQ0W9beXVGfmcvndMj5Y= -github.com/prometheus/alertmanager v0.18.0/go.mod h1:WcxHBl40VSPuOaqWae6l6HpnEOVRIycEJ7i9iYkadEE= -github.com/prometheus/alertmanager v0.20.0/go.mod h1:9g2i48FAyZW6BtbsnvHtMHQXl2aVtrORKwKVCQ+nbrg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -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.2.0/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= -github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= @@ -1248,21 +825,15 @@ github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQg github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= 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/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/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.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= @@ -1271,31 +842,18 @@ github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJ github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/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-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= 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.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.6/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/prometheus/prometheus v0.0.0-20180315085919-58e2a31db8de/go.mod h1:oAIUtOny2rjMX0OWN5vPR5/q/twIROJvdqnQKDdil/s= -github.com/prometheus/prometheus v1.8.2-0.20200110114423-1e64d757f711/go.mod h1:7U90zPoLkWjEIQcy/rweQla82OCTUzxVHE51G3OhJbI= -github.com/prometheus/prometheus v1.8.2-0.20200507164740-ecee9c8abfd1/go.mod h1:S5n0C6tSgdnwWshBUceRx5G1OsjLv/EeZ9t3wIfEtsY= -github.com/prometheus/prometheus v1.8.2-0.20200609102542-5d7e3e970602/go.mod h1:CwaXafRa0mm72de2GQWtfQxjGytbSKIGivWxQvjpRZs= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b h1:zd/2RNzIRkoGGMjE+YIsZ85CnDIz672JK2F3Zl4vux4= github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rivo/tview v0.0.0-20221128165837-db36428c92d9 h1:ccTgRxA37ypj3q8zB8G4k3xGPfBbIaMwrf3Yw6k50NY= github.com/rivo/tview v0.0.0-20221128165837-db36428c92d9/go.mod h1:YX2wUZOcJGOIycErz2s9KvDaP0jnWwRCirQMPLPpQ+Y= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -1305,46 +863,26 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= 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.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rubenv/sql-migrate v1.3.1 h1:Vx+n4Du8X8VTYuXbhNxdEUoh6wiJERA0GlWocR5FrbA= github.com/rubenv/sql-migrate v1.3.1/go.mod h1:YzG/Vh82CwyhTFXy+Mf5ahAiiEOpAlHurg+23VEzcsk= -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/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/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= -github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= 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/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/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20180825020608-02ddb050ef6b/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.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= @@ -1355,15 +893,11 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= 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 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= 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/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= @@ -1372,8 +906,6 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU 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 v0.0.0-20180629152535-a114f312e075/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 v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= @@ -1384,28 +916,20 @@ github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRM github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/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/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= 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/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 v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1419,40 +943,24 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/thanos-io/thanos v0.11.0/go.mod h1:N/Yes7J68KqvmY+xM6J5CJqEvWIvKSR5sqGtmuD6wDc= github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -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 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/uber/jaeger-client-go v2.20.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-client-go v2.23.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -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.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xanzy/go-gitlab v0.83.0 h1:37p0MpTPNbsTMKX/JnmJtY8Ch1sFiJzVF342+RvZEGw= github.com/xanzy/go-gitlab v0.83.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= 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= @@ -1462,7 +970,6 @@ github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/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= @@ -1479,15 +986,9 @@ github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1 github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY= github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= -go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk= -go.elastic.co/apm/module/apmhttp v1.5.0/go.mod h1:1FbmNuyD3ddauwzgVwFB0fqY6KbZt3JkV187tGCYYhY= -go.elastic.co/apm/module/apmot v1.5.0/go.mod h1:d2KYwhJParTpyw2WnTNy8geNlHKKFX+4oK3YLlsesWE= -go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs= 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.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c h1:/RwRVN9EdXAVtdHxP7Ndn/tfmM9/goiwU0QTnLBgS4w= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.5 h1:BX4JIbQ7hl7+jL+g+2j5UAr0o1bctCm6/Ct+ArBGkf0= @@ -1510,17 +1011,7 @@ go.etcd.io/etcd/raft/v3 v3.5.5/go.mod h1:76TA48q03g1y1VpTue92jZLr9lIHKUNcYdZOOGy go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0= go.etcd.io/etcd/server/v3 v3.5.5/go.mod h1:rZ95vDw/jrvsbj9XpTqPrTAB9/kzchVdhRirySPkUBc= -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.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.3.2/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -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/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= @@ -1575,14 +1066,10 @@ go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJP go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= 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.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.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.2.0/go.mod h1:YfO3fm683kQpzETxlTGZhGIVmXAhaw3gxeBADbpZtnU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= @@ -1590,14 +1077,10 @@ go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= 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/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= 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/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= 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/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= @@ -1606,31 +1089,16 @@ go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/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-20190211182817-74369b46fc67/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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/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-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1648,29 +1116,19 @@ golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/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= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 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= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/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-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= 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.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -1681,46 +1139,29 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/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= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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-20190206173232-65e2d4e15006/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-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-20190628185345-da137c7871d7/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-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/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-20200202094626-16171245cfb2/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-20200421231249-e086a090c8fd/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-20200602114024-627f9648deb9/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= @@ -1753,9 +1194,7 @@ golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 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-20190402181905-9f3314589c9a/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/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -1770,10 +1209,8 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ 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= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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-20200317015054-43a5402ce75a/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= @@ -1781,7 +1218,6 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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= @@ -1789,58 +1225,27 @@ 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-20190209173611-3b5209105503/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-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190425145619-16072639606e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190530182044-ad28b68e88f1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/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-20190813064441-fde4db37ae7a/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-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/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-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191113165036-4c7a9d0fe056/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/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-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/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-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/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= @@ -1903,10 +1308,7 @@ golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/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.20180805044716-cb6730876b98/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -1918,11 +1320,7 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/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-20200416051211-89c76fbcd5d1/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-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1930,56 +1328,22 @@ golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxb 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-20180525024113-a5b4c53f6e8b/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-20181011042414-1f849cf54d09/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-20190118193359-16909d206f00/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-20190206041539-40960b6deb8e/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= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/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-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190918214516-5a1a30219888/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/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-20191111182352-50fa39b762bc/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-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/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-20200108203644-89082a384178/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-20200313205530-4303120df7d8/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200422205258-72e4a01eba43/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200603131246-cc40288be839/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= @@ -2002,53 +1366,27 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -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.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.26.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= 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.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/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/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-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-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -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-20190927181202-20e1ac93f88c/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-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/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-20200603110839-e855014d5736/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= @@ -2065,23 +1403,14 @@ google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= 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.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -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.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= 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.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= 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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= @@ -2130,17 +1459,12 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/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/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= 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/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= 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/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= 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.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -2160,106 +1484,68 @@ 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-20200603094226-e3079894b1e8/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/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= 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.11.2 h1:P3cLaFxfoxaGLGJVnoPrhf1j86LC5EDINSpYSpMUkkA= helm.sh/helm/v3 v3.11.2/go.mod h1:Hw+09mfpDiRRKAgAIZlFkPSeOkvv7Acl5McBvQyNPVw= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/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= -howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A= -k8s.io/api v0.0.0-20190813020757-36bff7324fb7/go.mod h1:3Iy+myeAORNCLgjd/Xu9ebwN7Vh59Bw0vh9jhoX+V58= -k8s.io/api v0.0.0-20191115095533-47f6de673b26/go.mod h1:iA/8arsvelvo4IDqIhX4IbjTEKBGgvsf2OraTuRtLFU= -k8s.io/api v0.0.0-20191122220107-b5267f2975e0/go.mod h1:vYpRfxYkMrmPPSesoHEkGNHxNKTk96REAwqm/inQbs0= -k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY= -k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= -k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY= k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg= k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg= k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= -k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4= k8s.io/apiextensions-apiserver v0.26.1/go.mod h1:AptjOSXDGuE0JICx/Em15PaoO7buLwTs0dGleIHixSM= k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= -k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA= -k8s.io/apimachinery v0.0.0-20190809020650-423f5d784010/go.mod h1:Waf/xTS2FGRrgXCkO5FP3XxTOWh0qLf2QhL1qFZZ/R8= -k8s.io/apimachinery v0.0.0-20191115015347-3c7067801da2/go.mod h1:dXFS2zaQR8fyzuvRdJDHw2Aerij/yVGJSre0bZQSVJA= -k8s.io/apimachinery v0.0.0-20191121175448-79c2a76c473a/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0= -k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= -k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc= k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= -k8s.io/apiserver v0.0.0-20191122221311-9d521947b1e1/go.mod h1:RbsZY5zzBIWnz4KbctZsTVjwIuOpTp4Z8oCgFHN4kZQ= -k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4= k8s.io/apiserver v0.26.1/go.mod h1:wr75z634Cv+sifswE9HlAo5FQ7UoUauIICRlOE+5dCg= k8s.io/apiserver v0.26.3 h1:blBpv+yOiozkPH2aqClhJmJY+rp53Tgfac4SKPDJnU4= k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA= k8s.io/cli-runtime v0.26.3 h1:3ULe0oI28xmgeLMVXIstB+ZL5CTGvWSMVMLeHxitIuc= k8s.io/cli-runtime v0.26.3/go.mod h1:5YEhXLV4kLt/OSy9yQwtSSNZU2Z7aTEYta1A+Jg4VC4= -k8s.io/client-go v0.0.0-20190620085101-78d2af792bab/go.mod h1:E95RaSlHr79aHaX0aGSwcPNfygDiPKOVXdmivCIZT0k= -k8s.io/client-go v0.0.0-20191122220542-ed16ecbdf3a0/go.mod h1:tyxNgOmR/Xi39HrlQ/9LQgiHJgBvmY7gp95o5GpBA4o= -k8s.io/client-go v0.17.5/go.mod h1:S8uZpBpjJJdEH/fEyxcqg7Rn0P5jH+ilkgBHjriSmNo= -k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= -k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk= k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA= k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw= k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE= k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= -k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE= k8s.io/code-generator v0.24.0/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= k8s.io/code-generator v0.26.1/go.mod h1:OMoJ5Dqx1wgaQzKgc+ZWaZPfGjdRq/Y3WubFrZmeI3I= k8s.io/code-generator v0.26.3/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= -k8s.io/component-base v0.0.0-20191122220729-2684fb322cb9/go.mod h1:NFuUusy/X4Tk21m21tcNUihnmp4OI7lXU7/xA+rYXkc= -k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI= k8s.io/component-base v0.24.0/go.mod h1:Dgazgon0i7KYUsS8krG8muGiMVtUZxG037l1MKyXgrA= k8s.io/component-base v0.26.1/go.mod h1:VHrLR0b58oC035w6YQiBSbtsf0ThuSwXP+p5dD/kAWU= k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/helm v2.17.0+incompatible h1:Bpn6o1wKLYqKM3+Osh8e+1/K2g/GsQJ4F4yNF2+deao= k8s.io/helm v2.17.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= @@ -2276,12 +1562,6 @@ k8s.io/kms v0.26.3 h1:+rC4BMeMBkH5hrfZt9WFMRrs2m3vY2rXymisNactcTY= k8s.io/kms v0.26.3/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg= k8s.io/kube-aggregator v0.26.3 h1:nc4H5ymGkWPU3c9U9UM468JcmNENY/s/mDYVW3t3uRo= k8s.io/kube-aggregator v0.26.3/go.mod h1:SgBESB/+PfZAyceTPIanfQ7GtX9G/+mjfUbTHg3Twbo= -k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/kube-openapi v0.0.0-20190709113604-33be087ad058/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= -k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= -k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= @@ -2291,11 +1571,6 @@ k8s.io/kubectl v0.26.3 h1:bZ5SgFyeEXw6XTc1Qji0iNdtqAC76lmeIIQULg2wNXM= k8s.io/kubectl v0.26.3/go.mod h1:02+gv7Qn4dupzN3fi/9OvqqdW+uG/4Zi56vc4Zmsp1g= k8s.io/metrics v0.26.3 h1:pHI8XtmBbGGdh7bL0s2C3v93fJfxyktHPAFsnRYnDTo= k8s.io/metrics v0.26.3/go.mod h1:NNnWARAAz+ZJTs75Z66fJTV7jHcVb3GtrlDszSIr3fE= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20191114200735-6ca3b61696b6/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= @@ -2308,7 +1583,6 @@ open-cluster-management.io/api v0.10.1 h1:/qv1qfIkAVSz6RQmKGehSv6zYI34Xmb8hK7sIU open-cluster-management.io/api v0.10.1/go.mod h1:6BB/Y6r3hXlPjpJgDwIs6Ubxyx/kXXOg6D9Cntg1I9E= oras.land/oras-go v1.2.2 h1:0E9tOHUfrNH7TCDk5KU0jVBEzCqbfdyuVfGmJ7ZeRPE= oras.land/oras-go v1.2.2/go.mod h1:Apa81sKoZPpP7CDciE006tSZ0x3Q3+dOoBcMZ/aNxvw= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= sigs.k8s.io/apiserver-network-proxy v0.0.30 h1:Zr5Zqd2GymcYUwijHUDEaQ1I3Dx0giTIWaD80N6j2mE= sigs.k8s.io/apiserver-network-proxy v0.0.30/go.mod h1:0wSWl5ohhp7kYl5XOP0w1IZSWTHhe9TojjDGityZxnc= @@ -2333,19 +1607,12 @@ sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s= sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= 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.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= 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= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/appfile/appfile.go b/pkg/appfile/appfile.go index d20cbf055..1507fd263 100644 --- a/pkg/appfile/appfile.go +++ b/pkg/appfile/appfile.go @@ -23,9 +23,6 @@ import ( "reflect" "strings" - "cuelang.org/go/cue/cuecontext" - "cuelang.org/go/cue/format" - json2cue "cuelang.org/go/encoding/json" "github.com/crossplane/crossplane-runtime/pkg/fieldpath" "github.com/kubevela/pkg/util/slices" terraformapi "github.com/oam-dev/terraform-controller/api/v1beta2" @@ -35,7 +32,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" "sigs.k8s.io/controller-runtime/pkg/client" velaclient "github.com/kubevela/pkg/controller/client" @@ -47,7 +43,6 @@ import ( "github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" "github.com/oam-dev/kubevela/apis/types" - "github.com/oam-dev/kubevela/pkg/appfile/helm" "github.com/oam-dev/kubevela/pkg/auth" "github.com/oam-dev/kubevela/pkg/component" "github.com/oam-dev/kubevela/pkg/cue/definition" @@ -317,10 +312,6 @@ func (af *Appfile) GenerateComponentManifest(wl *Workload, mutate func(*velaproc // generate context here to avoid nil pointer panic wl.Ctx = NewBasicContext(ctxData, wl.Params) switch wl.CapabilityCategory { - case types.HelmCategory: - return generateComponentFromHelmModule(wl, ctxData) - case types.KubeCategory: - return generateComponentFromKubeModule(wl, ctxData) case types.TerraformCategory: return generateComponentFromTerraformModule(wl, af.Name, af.Namespace) default: @@ -614,78 +605,6 @@ func evalWorkloadWithContext(pCtx process.Context, wl *Workload, ns, appName str return compManifest, nil } -// GenerateCUETemplate generate CUE Template from Kube module and Helm module -func GenerateCUETemplate(wl *Workload) (string, error) { - var templateStr string - switch wl.CapabilityCategory { - case types.KubeCategory: - kubeObj := &unstructured.Unstructured{} - - err := json.Unmarshal(wl.FullTemplate.Kube.Template.Raw, kubeObj) - if err != nil { - return templateStr, errors.Wrap(err, "cannot decode Kube template into K8s object") - } - - paramValues, err := resolveKubeParameters(wl.FullTemplate.Kube.Parameters, wl.Params) - if err != nil { - return templateStr, errors.WithMessage(err, "cannot resolve parameter settings") - } - if err := setParameterValuesToKubeObj(kubeObj, paramValues); err != nil { - return templateStr, errors.WithMessage(err, "cannot set parameters value") - } - - // convert structured kube obj into CUE (go ==marshal==> json ==decoder==> cue) - objRaw, err := kubeObj.MarshalJSON() - if err != nil { - return templateStr, errors.Wrap(err, "cannot marshal kube object") - } - cuectx := cuecontext.New() - expr, err := json2cue.Extract("", objRaw) - if err != nil { - return templateStr, errors.Wrap(err, "cannot extract object into CUE") - } - v := cuectx.BuildExpr(expr) - cueRaw, err := format.Node(v.Syntax()) - if err != nil { - return templateStr, errors.Wrap(err, "cannot format CUE") - } - - // NOTE a hack way to enable using CUE capabilities on KUBE schematic workload - templateStr = fmt.Sprintf(` -output: %s`, string(cueRaw)) - case types.HelmCategory: - gv, err := schema.ParseGroupVersion(wl.FullTemplate.Reference.Definition.APIVersion) - if err != nil { - return templateStr, err - } - targetWorkloadGVK := gv.WithKind(wl.FullTemplate.Reference.Definition.Kind) - // NOTE this is a hack way to enable using CUE module capabilities on Helm module workload - // construct an empty base workload according to its GVK - templateStr = fmt.Sprintf(` -output: { - apiVersion: "%s" - kind: "%s" -}`, targetWorkloadGVK.GroupVersion().String(), targetWorkloadGVK.Kind) - default: - } - return templateStr, nil -} - -func generateComponentFromKubeModule(wl *Workload, ctxData velaprocess.ContextData) (*types.ComponentManifest, error) { - templateStr, err := GenerateCUETemplate(wl) - if err != nil { - return nil, err - } - wl.FullTemplate.TemplateStr = templateStr - - // re-use the way CUE module generates comp & acComp - compManifest, err := generateComponentFromCUEModule(wl, ctxData) - if err != nil { - return nil, err - } - return compManifest, nil -} - func generateTerraformConfigurationWorkload(wl *Workload, ns string) (*unstructured.Unstructured, error) { if wl.FullTemplate == nil || wl.FullTemplate.Terraform == nil || wl.FullTemplate.Terraform.Configuration == "" { return nil, errors.New(errTerraformConfigurationIsNotSet) @@ -772,37 +691,6 @@ type paramValueSetting struct { FieldPaths []string } -func resolveKubeParameters(params []common.KubeParameter, settings map[string]interface{}) (paramValueSettings, error) { - supported := map[string]*common.KubeParameter{} - for _, p := range params { - supported[p.Name] = p.DeepCopy() - } - - values := make(paramValueSettings) - for name, v := range settings { - // check unsupported parameter setting - if supported[name] == nil { - return nil, errors.Errorf("unsupported parameter %q", name) - } - // construct helper map - values[name] = paramValueSetting{ - Value: v, - ValueType: supported[name].ValueType, - FieldPaths: supported[name].FieldPaths, - } - } - - // check required parameter - for _, p := range params { - if p.Required != nil && *p.Required { - if _, ok := values[p.Name]; !ok { - return nil, errors.Errorf("require parameter %q", p.Name) - } - } - } - return values, nil -} - func setParameterValuesToKubeObj(obj *unstructured.Unstructured, values paramValueSettings) error { paved := fieldpath.Pave(obj.Object) for paramName, v := range values { @@ -839,35 +727,6 @@ func setParameterValuesToKubeObj(obj *unstructured.Unstructured, values paramVal return nil } -func generateComponentFromHelmModule(wl *Workload, ctxData velaprocess.ContextData) (*types.ComponentManifest, error) { - templateStr, err := GenerateCUETemplate(wl) - if err != nil { - return nil, err - } - wl.FullTemplate.TemplateStr = templateStr - - // re-use the way CUE module generates comp & acComp - compManifest := &types.ComponentManifest{ - Name: wl.Name, - Namespace: ctxData.Namespace, - StandardWorkload: &unstructured.Unstructured{}, - } - - if wl.FullTemplate.Reference.Type != types.AutoDetectWorkloadDefinition { - compManifest, err = generateComponentFromCUEModule(wl, ctxData) - if err != nil { - return nil, err - } - } - - rls, repo, err := helm.RenderHelmReleaseAndHelmRepo(wl.FullTemplate.Helm, wl.Name, ctxData.AppName, ctxData.Namespace, wl.Params) - if err != nil { - return nil, err - } - compManifest.PackagedWorkloadResources = []*unstructured.Unstructured{rls, repo} - return compManifest, nil -} - // GenerateContextDataFromAppFile generates process context data from app file func GenerateContextDataFromAppFile(appfile *Appfile, wlName string) velaprocess.ContextData { data := velaprocess.ContextData{ diff --git a/pkg/appfile/appfile_test.go b/pkg/appfile/appfile_test.go index a4ffb36aa..fec17de69 100644 --- a/pkg/appfile/appfile_test.go +++ b/pkg/appfile/appfile_test.go @@ -19,7 +19,6 @@ package appfile import ( "context" "encoding/json" - "fmt" "testing" "cuelang.org/go/cue/cuecontext" @@ -35,7 +34,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/utils/pointer" "sigs.k8s.io/yaml" "github.com/kubevela/workflow/pkg/cue/model" @@ -49,259 +47,6 @@ import ( "github.com/oam-dev/kubevela/pkg/oam/util" ) -var _ = Describe("Test Helm schematic appfile", func() { - var ( - appName = "test-app" - compName = "test-comp" - workloadName = "test-workload" - ) - - It("Test generate AppConfig resources from Helm schematic", func() { - appFile := &Appfile{ - Name: appName, - Namespace: "default", - AppRevisionName: appName + "-v1", - RelatedTraitDefinitions: map[string]*v1beta1.TraitDefinition{ - "scaler": { - Spec: v1beta1.TraitDefinitionSpec{}, - }, - }, - Workloads: []*Workload{ - { - Name: workloadName, - Type: "webapp-chart", - CapabilityCategory: oamtypes.HelmCategory, - Params: map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }, - engine: definition.NewWorkloadAbstractEngine(compName, pd), - Traits: []*Trait{ - { - Name: "scaler", - Params: map[string]interface{}{ - "replicas": float64(10), - }, - engine: definition.NewTraitAbstractEngine("scaler", pd), - }, - }, - FullTemplate: &Template{ - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - }, - }, - Helm: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.1.4", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://charts.kubevela.net/example/", - }), - }, - }, - }, - }, - } - By("Generate ApplicationConfiguration and Components") - components, err := appFile.GenerateComponentManifests() - Expect(err).To(BeNil()) - - expectCompManifest := &oamtypes.ComponentManifest{ - Name: workloadName, - StandardWorkload: &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "workload.oam.dev/type": "webapp-chart", - "app.oam.dev/component": compName, - "app.oam.dev/name": appName, - "app.oam.dev/appRevision": appName + "-v1", - }}}}, - PackagedWorkloadResources: []*unstructured.Unstructured{ - { - Object: map[string]interface{}{ - "apiVersion": "helm.toolkit.fluxcd.io/v2beta1", - "kind": "HelmRelease", - "metadata": map[string]interface{}{ - "name": fmt.Sprintf("%s-%s", appName, compName), - "namespace": "default", - }, - "spec": map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "sourceRef": map[string]interface{}{ - "kind": "HelmRepository", - "name": fmt.Sprintf("%s-%s", appName, compName), - "namespace": "default", - }, - }, - }, - "interval": "5m0s", - "values": map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }, - }, - }, - }, - { - Object: map[string]interface{}{ - "apiVersion": "source.toolkit.fluxcd.io/v1beta1", - "kind": "HelmRepository", - "metadata": map[string]interface{}{ - "name": fmt.Sprintf("%s-%s", appName, compName), - "namespace": "default", - }, - "spec": map[string]interface{}{ - "url": "https://charts.kubevela.net/example/", - }, - }, - }, - }, - } - By("Verify expected ComponentManifest") - diff := cmp.Diff(components[0], expectCompManifest) - Expect(diff).ShouldNot(BeEmpty()) - }) - -}) - -var _ = Describe("Test Kube schematic appfile", func() { - var ( - appName = "test-app" - compName = "test-comp" - ) - var testTemplate = func() runtime.RawExtension { - yamlStr := `apiVersion: apps/v1 -kind: Deployment -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - ports: - - containerPort: 80 ` - b, _ := yaml.YAMLToJSON([]byte(yamlStr)) - return runtime.RawExtension{Raw: b} - } - - var testAppfile = func() *Appfile { - return &Appfile{ - AppRevisionName: appName + "-v1", - Name: appName, - Namespace: "default", - RelatedTraitDefinitions: map[string]*v1beta1.TraitDefinition{ - "scaler": { - Spec: v1beta1.TraitDefinitionSpec{}, - }, - }, - Workloads: []*Workload{ - { - Type: "kube-worker", - CapabilityCategory: oamtypes.KubeCategory, - Params: map[string]interface{}{ - "image": "nginx:1.14.0", - }, - engine: definition.NewWorkloadAbstractEngine(compName, pd), - Traits: []*Trait{ - { - Name: "scaler", - Params: map[string]interface{}{ - "replicas": float64(10), - }, - engine: definition.NewTraitAbstractEngine("scaler", pd), - }, - }, - FullTemplate: &Template{ - Kube: &common.Kube{ - Template: testTemplate(), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - Required: pointer.Bool(true), - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - }, - }, - }, - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - }, - }, - }, - }, - }, - } - - } - - It("Test generate AppConfig resources from Kube schematic", func() { - By("Generate ApplicationConfiguration and Components") - comps, err := testAppfile().GenerateComponentManifests() - Expect(err).To(BeNil()) - - expectWorkload := func() *unstructured.Unstructured { - yamlStr := `apiVersion: apps/v1 -kind: Deployment -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - image: nginx:1.14.0 - ports: - - containerPort: 80 ` - r := &unstructured.Unstructured{} - _ = yaml.Unmarshal([]byte(yamlStr), r) - return r - }() - - expectCompManifest := &oamtypes.ComponentManifest{ - Name: compName, - StandardWorkload: expectWorkload, - } - By("Verify expected Component") - diff := cmp.Diff(comps[0], expectCompManifest) - Expect(diff).ShouldNot(BeEmpty()) - }) - - It("Test missing set required parameter", func() { - appfile := testAppfile() - // remove parameter settings - appfile.Workloads[0].Params = nil - _, err := appfile.GenerateComponentManifests() - - expectError := errors.WithMessage(errors.New(`require parameter "image"`), "cannot resolve parameter settings") - diff := cmp.Diff(expectError, err, test.EquateErrors()) - Expect(diff).Should(BeEmpty()) - }) -}) - var _ = Describe("Test Workflow", func() { It("generate workflow task runners", func() { workflowStepDef := v1beta1.WorkflowStepDefinition{ @@ -462,77 +207,6 @@ variable "password" { }) }) -func TestResolveKubeParameters(t *testing.T) { - stringParam := &common.KubeParameter{ - Name: "strParam", - ValueType: common.StringType, - FieldPaths: []string{"spec"}, - } - requiredParam := &common.KubeParameter{ - Name: "reqParam", - Required: pointer.Bool(true), - ValueType: common.StringType, - FieldPaths: []string{"spec"}, - } - tests := map[string]struct { - reason string - params []common.KubeParameter - settings map[string]interface{} - want paramValueSettings - wantErr error - }{ - "EmptyParam": { - reason: "Empty value settings and no error should be returned", - want: make(paramValueSettings), - }, - "UnsupportedParam": { - reason: "An error shoulde be returned because of unsupported param", - params: []common.KubeParameter{*stringParam}, - settings: map[string]interface{}{"unsupported": "invalid parameter"}, - want: nil, - wantErr: errors.Errorf("unsupported parameter %q", "unsupported"), - }, - "MissingRequiredParam": { - reason: "An error should be returned because of missing required param", - params: []common.KubeParameter{*stringParam, *requiredParam}, - settings: map[string]interface{}{"strParam": "string"}, - want: nil, - wantErr: errors.Errorf("require parameter %q", "reqParam"), - }, - "Succeed": { - reason: "No error should be returned", - params: []common.KubeParameter{*stringParam, *requiredParam}, - settings: map[string]interface{}{"strParam": "test", "reqParam": "test"}, - want: paramValueSettings{ - "strParam": paramValueSetting{ - Value: "test", - ValueType: common.StringType, - FieldPaths: stringParam.FieldPaths, - }, - "reqParam": paramValueSetting{ - Value: "test", - ValueType: common.StringType, - FieldPaths: requiredParam.FieldPaths, - }, - }, - wantErr: nil, - }, - } - - for tcName, tc := range tests { - t.Run(tcName, func(t *testing.T) { - result, err := resolveKubeParameters(tc.params, tc.settings) - if diff := cmp.Diff(tc.want, result); diff != "" { - t.Fatalf("\nresolveKubeParameters(...)(...) -want +get \nreason:%s\n%s\n", tc.reason, diff) - } - if diff := cmp.Diff(tc.wantErr, err, test.EquateErrors()); diff != "" { - t.Fatalf("\nresolveKubeParameters(...)(...) -want +get \nreason:%s\n%s\n", tc.reason, diff) - } - }) - } - -} - func TestSetParameterValuesToKubeObj(t *testing.T) { tests := map[string]struct { reason string @@ -949,202 +623,6 @@ func TestGenerateTerraformConfigurationWorkload(t *testing.T) { } } -func TestGenerateCUETemplate(t *testing.T) { - - var testCorrectTemplate = func() runtime.RawExtension { - yamlStr := `apiVersion: apps/v1 -kind: Deployment -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - ports: - - containerPort: 80 ` - b, _ := yaml.YAMLToJSON([]byte(yamlStr)) - return runtime.RawExtension{Raw: b} - } - - var testErrorTemplate = func() runtime.RawExtension { - yamlStr := `apiVersion: apps/v1 -kind: Deployment -spec: - template: - selector: - matchLabels: - app: nginx -` - b, _ := yaml.YAMLToJSON([]byte(yamlStr)) - return runtime.RawExtension{Raw: b} - } - - testcases := map[string]struct { - workload *Workload - expectData string - hasError bool - errInfo string - }{"Kube workload with Correct template": { - workload: &Workload{ - FullTemplate: &Template{ - Kube: &common.Kube{ - Template: testCorrectTemplate(), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - Required: pointer.Bool(true), - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - }, - }, - }, - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - }, - }, - }, - Params: map[string]interface{}{ - "image": "nginx:1.14.0", - }, - CapabilityCategory: oamtypes.KubeCategory, - }, - expectData: ` -output: { - apiVersion: "apps/v1" - kind: "Deployment" - spec: { - selector: { - matchLabels: { - app: "nginx" - } - } - template: { - metadata: { - labels: { - app: "nginx" - } - } - spec: { - containers: [{ - image: "nginx:1.14.0" - name: "nginx" - }] - ports: [{ - containerPort: 80 - }] - } - } - } -}`, - hasError: false, - }, "Kube workload with wrong template": { - workload: &Workload{ - FullTemplate: &Template{ - Kube: &common.Kube{ - Template: testErrorTemplate(), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - Required: pointer.Bool(true), - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - }, - }, - }, - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - }, - }, - }, - Params: map[string]interface{}{ - "image": "nginx:1.14.0", - }, - CapabilityCategory: oamtypes.KubeCategory, - }, - hasError: true, - errInfo: "cannot decode Kube template into K8s object: unexpected end of JSON input", - }, "Kube workload with wrong parameter": { - workload: &Workload{ - FullTemplate: &Template{ - Kube: &common.Kube{ - Template: testCorrectTemplate(), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - Required: pointer.Bool(true), - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - }, - }, - }, - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - }, - }, - }, - Params: map[string]interface{}{ - "unsupported": "invalid parameter", - }, - CapabilityCategory: oamtypes.KubeCategory, - }, - hasError: true, - errInfo: "cannot resolve parameter settings: unsupported parameter \"unsupported\"", - }, "Helm workload with correct reference": { - workload: &Workload{ - FullTemplate: &Template{ - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "app/v1", - Kind: "deployment", - }, - }, - }, - CapabilityCategory: oamtypes.HelmCategory, - }, - hasError: false, - expectData: ` -output: { - apiVersion: "app/v1" - kind: "deployment" -}`, - }, "Helm workload with wrong reference": { - workload: &Workload{ - FullTemplate: &Template{ - Reference: common.WorkloadTypeDescriptor{ - Definition: common.WorkloadGVK{ - APIVersion: "app@//v1", - Kind: "deployment", - }, - }, - }, - CapabilityCategory: oamtypes.HelmCategory, - }, - hasError: true, - errInfo: "unexpected GroupVersion string: app@//v1", - }} - - for i, tc := range testcases { - template, err := GenerateCUETemplate(tc.workload) - assert.Equal(t, err != nil, tc.hasError) - if tc.hasError { - assert.Equal(t, tc.errInfo, err.Error()) - continue - } - assert.Equal(t, tc.expectData, template, i) - } -} - func TestPrepareArtifactsData(t *testing.T) { compManifests := []*oamtypes.ComponentManifest{ { diff --git a/pkg/appfile/helm/helm.go b/pkg/appfile/helm/helm.go deleted file mode 100644 index ac6e3956f..000000000 --- a/pkg/appfile/helm/helm.go +++ /dev/null @@ -1,111 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package helm - -import ( - "encoding/json" - "fmt" - "time" - - "github.com/pkg/errors" - apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" - helmapi "github.com/oam-dev/kubevela/pkg/appfile/helm/flux2apis" - commonutil "github.com/oam-dev/kubevela/pkg/utils/common" -) - -var ( - // DefaultIntervalDuration is the interval that flux controller reconcile HelmRelease and HelmRepository - DefaultIntervalDuration = &metav1.Duration{Duration: 5 * time.Minute} -) - -// ConstructHelmReleaseName will format helm release name in a fixed way -func ConstructHelmReleaseName(appName, compName string) string { - return appName + "-" + compName -} - -// RenderHelmReleaseAndHelmRepo constructs HelmRelease and HelmRepository in unstructured format -func RenderHelmReleaseAndHelmRepo(helmSpec *common.Helm, compName, appName, ns string, values map[string]interface{}) (*unstructured.Unstructured, *unstructured.Unstructured, error) { - releaseSpec, repoSpec, err := decodeHelmSpec(helmSpec) - if err != nil { - return nil, nil, errors.WithMessage(err, "Helm spec is invalid") - } - if releaseSpec.Interval == nil { - releaseSpec.Interval = DefaultIntervalDuration - } - if repoSpec.Interval == nil { - repoSpec.Interval = DefaultIntervalDuration - } - - // construct unstructured HelmRepository object - repoName := fmt.Sprintf("%s-%s", appName, compName) - helmRepo := commonutil.GenerateUnstructuredObj(repoName, ns, helmapi.HelmRepositoryGVK) - if err := commonutil.SetSpecObjIntoUnstructuredObj(repoSpec, helmRepo); err != nil { - return nil, nil, errors.Wrap(err, "cannot set spec to HelmRepository") - } - - // construct unstructured HelmRelease object - rlsName := ConstructHelmReleaseName(appName, compName) - helmRelease := commonutil.GenerateUnstructuredObj(rlsName, ns, helmapi.HelmReleaseGVK) - - // construct HelmRelease chart values - chartValues := map[string]interface{}{} - if releaseSpec.Values != nil { - if err := json.Unmarshal(releaseSpec.Values.Raw, &chartValues); err != nil { - return nil, nil, errors.Wrap(err, "cannot get chart values") - } - } - for k, v := range values { - // override values with settings from application - chartValues[k] = v - } - if len(chartValues) > 0 { - // avoid an empty map - vJSON, err := json.Marshal(chartValues) - if err != nil { - return nil, nil, errors.Wrap(err, "cannot get chart values") - } - releaseSpec.Values = &apiextensionsv1.JSON{Raw: vJSON} - } - - // reference HelmRepository by HelmRelease - releaseSpec.Chart.Spec.SourceRef = helmapi.CrossNamespaceObjectReference{ - Kind: helmapi.HelmRepositoryKind, - Namespace: ns, - Name: repoName, - } - if err := commonutil.SetSpecObjIntoUnstructuredObj(releaseSpec, helmRelease); err != nil { - return nil, nil, errors.Wrap(err, "cannot set spec to HelmRelease") - } - - return helmRelease, helmRepo, nil -} - -func decodeHelmSpec(h *common.Helm) (*helmapi.HelmReleaseSpec, *helmapi.HelmRepositorySpec, error) { - releaseSpec := &helmapi.HelmReleaseSpec{} - if err := json.Unmarshal(h.Release.Raw, releaseSpec); err != nil { - return nil, nil, errors.Wrap(err, "Helm release spec is invalid") - } - repoSpec := &helmapi.HelmRepositorySpec{} - if err := json.Unmarshal(h.Repository.Raw, repoSpec); err != nil { - return nil, nil, errors.Wrap(err, "Helm repository spec is invalid") - } - return releaseSpec, repoSpec, nil -} diff --git a/pkg/appfile/helm/helm_test.go b/pkg/appfile/helm/helm_test.go deleted file mode 100644 index 19474651b..000000000 --- a/pkg/appfile/helm/helm_test.go +++ /dev/null @@ -1,101 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package helm - -import ( - "fmt" - "testing" - - "github.com/google/go-cmp/cmp" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "sigs.k8s.io/yaml" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" - helmapi "github.com/oam-dev/kubevela/pkg/appfile/helm/flux2apis" -) - -func TestRenderHelmReleaseAndHelmRepo(t *testing.T) { - h := testData("podinfo", "1.0.0", "test.com", "testSecret") - chartValues := map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "1.0.1", - }, - } - rls, repo, err := RenderHelmReleaseAndHelmRepo(h, "test-comp", "test-app", "test-ns", chartValues) - if err != nil { - t.Fatalf("want: nil, got: %v", err) - } - - expectRls := &unstructured.Unstructured{} - expectRls.SetGroupVersionKind(helmapi.HelmReleaseGVK) - expectRls.SetName("test-app-test-comp") - expectRls.SetNamespace("test-ns") - unstructured.SetNestedMap(expectRls.Object, map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "1.0.0", - "sourceRef": map[string]interface{}{ - "kind": "HelmRepository", - "name": "test-app-test-comp", - "namespace": "test-ns", - }, - }, - }, - "interval": "5m0s", - "values": map[string]interface{}{"image": map[string]interface{}{"tag": "1.0.1"}}, - }, "spec") - - if diff := cmp.Diff(expectRls, rls); diff != "" { - t.Errorf("\n%s\nApply(...): -want , +got \n%s\n", "render HelmRelease", diff) - } - - expectRepo := &unstructured.Unstructured{} - expectRepo.SetGroupVersionKind(helmapi.HelmRepositoryGVK) - expectRepo.SetName("test-app-test-comp") - expectRepo.SetNamespace("test-ns") - unstructured.SetNestedMap(expectRepo.Object, map[string]interface{}{ - "url": "test.com", - "secretRef": map[string]interface{}{ - "name": "testSecret", - }, - "interval": "5m0s", - }, "spec") - - if diff := cmp.Diff(expectRepo, repo); diff != "" { - t.Errorf("\n%s\nApply(...): -want , +got \n%s\n", "render HelmRepository", diff) - } -} - -func testData(chart, version, repoURL, secretName string) *common.Helm { - rlsStr := fmt.Sprintf( - `chart: - spec: - chart: "%s" - version: "%s"`, chart, version) - repoStr := fmt.Sprintf( - `url: "%s" -secretRef: - name: "%s"`, repoURL, secretName) - rlsJson, _ := yaml.YAMLToJSON([]byte(rlsStr)) - repoJson, _ := yaml.YAMLToJSON([]byte(repoStr)) - - h := &common.Helm{} - h.Release.Raw = rlsJson - h.Repository.Raw = repoJson - return h -} diff --git a/pkg/appfile/helm/schema.go b/pkg/appfile/helm/schema.go deleted file mode 100644 index d9dc74c0d..000000000 --- a/pkg/appfile/helm/schema.go +++ /dev/null @@ -1,218 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package helm - -import ( - "bytes" - "context" - "encoding/json" - "fmt" - "net/http" - - "cuelang.org/go/cue" - "cuelang.org/go/cue/cuecontext" - "cuelang.org/go/cue/format" - "cuelang.org/go/encoding/openapi" - "cuelang.org/go/encoding/yaml" - "github.com/getkin/kin-openapi/openapi3" - "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" -) - -var ( - getters = getter.Providers{ - getter.Provider{ - Schemes: []string{"http", "https"}, - New: getter.NewHTTPGetter, - }, - } -) - -// GetChartValuesJSONSchema fetched the Chart bundle and get JSON schema of Values -// file. If the Chart provides a 'values.json.schema' file, use it directly. -// Otherwise, try to generate a JSON schema based on the Values file. -func GetChartValuesJSONSchema(ctx context.Context, h *common.Helm) ([]byte, error) { - releaseSpec, repoSpec, err := decodeHelmSpec(h) - if err != nil { - return nil, errors.WithMessage(err, "Helm spec is invalid") - } - chartSpec := releaseSpec.Chart.Spec - files, err := loadChartFiles(ctx, repoSpec.URL, chartSpec.Chart, chartSpec.Version) - if err != nil { - return nil, errors.WithMessage(err, "cannot load Chart files") - } - var values *loader.BufferedFile - for _, f := range files { - switch f.Name { - case "values.yaml", "values.yml": - values = f - case "values.schema.json": - // use the JSON schema file if exists - return f.Data, nil - default: - continue - } - } - if values == nil { - return nil, errors.New("cannot find 'values.schema.json' or 'values.yaml' file in the Chart") - } - // try to generate a schema based on Values file - generatedSchema, err := generateSchemaFromValues(values.Data) - if err != nil { - return nil, errors.WithMessage(err, "cannot generate schema from Values file") - } - return generatedSchema, nil -} - -// generateSchemaFromValues generate OpenAPIv3 schema based on Chart Values -// file. -func generateSchemaFromValues(values []byte) ([]byte, error) { - valuesIdentifier := "values" - cuectx := cuecontext.New() - // convert Values yaml to CUE - file, err := yaml.Extract("", string(values)) - if err != nil { - return nil, errors.Wrap(err, "cannot extract Values.yaml to CUE") - } - ins := cuectx.BuildFile(file) - // get the streamed CUE including the comments which will be used as - // 'description' in the schema - c, err := format.Node(ins.Value().Syntax(cue.Docs(true)), format.Simplify()) - if err != nil { - return nil, errors.Wrap(err, "cannot format CUE generated from Values.yaml") - } - // cue openapi encoder only works on top-level identifier, we have to add - // an identifier manually - valuesStr := fmt.Sprintf("#%s:{\n%s\n}", valuesIdentifier, string(c)) - - val := cuecontext.New().CompileString(valuesStr) - if val.Err() != nil { - return nil, errors.Wrap(val.Err(), "cannot compile CUE generated from Values.yaml") - } - // generate OpenAPIv3 schema through cue openapi encoder - rawSchema, err := openapi.Gen(val, &openapi.Config{}) - if err != nil { - return nil, errors.Wrap(err, "cannot generate OpenAPIv3 schema") - } - rawSchema, err = makeSwaggerCompatible(rawSchema) - if err != nil { - return nil, errors.WithMessage(err, "cannot make CUE-generated schema compatible with Swagger") - } - - var out = &bytes.Buffer{} - _ = json.Indent(out, rawSchema, "", " ") - // load schema into Swagger to validate it compatible with Swagger OpenAPIv3 - fullSchemaBySwagger, err := openapi3.NewLoader().LoadFromData(out.Bytes()) - if err != nil { - return nil, errors.Wrap(err, "cannot load schema by SwaggerLoader") - } - valuesSchema := fullSchemaBySwagger.Components.Schemas[valuesIdentifier].Value - changeEnumToDefault(valuesSchema) - - b, err := valuesSchema.MarshalJSON() - if err != nil { - return nil, errors.Wrap(err, "cannot marshall Values schema") - } - return b, nil -} - -func loadChartFiles(ctx context.Context, repoURL, chart, version string) ([]*loader.BufferedFile, error) { - url, err := repo.FindChartInRepoURL(repoURL, chart, version, "", "", "", getters) - if err != nil { - return nil, errors.Wrap(err, "cannot find Chart URL") - } - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) - if err != nil { - return nil, err - } - resp, err := http.DefaultClient.Do(req) - if err != nil { - return nil, errors.Wrapf(err, "cannot fetch Chart from remote URL:%s", url) - } - //nolint:errcheck - defer resp.Body.Close() - files, err := loader.LoadArchiveFiles(resp.Body) - if err != nil { - return nil, errors.Wrap(err, "cannot load Chart files") - } - return files, nil -} - -// cue openapi encoder converts default in Chart Values as enum in schema -// changing enum to default makes the schema consistent with Chart Values -func changeEnumToDefault(schema *openapi3.Schema) { - t := schema.Type - switch t { - case "object": - for _, v := range schema.Properties { - s := v.Value - changeEnumToDefault(s) - } - case "array": - if schema.Items != nil { - changeEnumToDefault(schema.Items.Value) - } - } - // change enum to default - if len(schema.Enum) > 0 { - schema.Default = schema.Enum[0] - schema.Enum = nil - } - // remove all required fields, because fields in Values.yml are all optional - schema.Required = nil -} - -// cue openapi encoder converts 'items' field in an array type field into array, -// that's not compatible with OpenAPIv3. 'items' field should be an object. -func makeSwaggerCompatible(d []byte) ([]byte, error) { - m := map[string]interface{}{} - err := json.Unmarshal(d, &m) - if err != nil { - return nil, errors.Wrap(err, "cannot unmarshall schema") - } - handleItemsOfArrayType(m) - b, err := json.Marshal(m) - if err != nil { - return nil, errors.Wrap(err, "cannot marshall schema") - } - return b, nil -} - -// handleItemsOfArrayType will convert all 'items' of array type from array to object -// and remove enum in the items -func handleItemsOfArrayType(t map[string]interface{}) { - for _, v := range t { - if next, ok := v.(map[string]interface{}); ok { - handleItemsOfArrayType(next) - } - } - if t["type"] == "array" { - if i, ok := t["items"].([]interface{}); ok { - if len(i) > 0 { - if itemSpec, ok := i[0].(map[string]interface{}); ok { - handleItemsOfArrayType(itemSpec) - itemSpec["enum"] = nil - t["items"] = itemSpec - } - } - } - } -} diff --git a/pkg/appfile/helm/schema_test.go b/pkg/appfile/helm/schema_test.go deleted file mode 100644 index 61baab0f4..000000000 --- a/pkg/appfile/helm/schema_test.go +++ /dev/null @@ -1,295 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package helm - -import ( - "context" - "encoding/json" - "fmt" - "os" - "testing" - - "github.com/getkin/kin-openapi/openapi3" - "github.com/google/go-cmp/cmp" -) - -func TestGenerateSchemaFromValues(t *testing.T) { - testValues, err := os.ReadFile("./testdata/values.yaml") - if err != nil { - t.Error(err, "cannot load test data") - } - wantSchema, err := os.ReadFile("./testdata/values.schema.json") - if err != nil { - t.Error(err, "cannot load expected data") - } - wantSchemaMap := map[string]interface{}{} - // convert bytes to map for diff converience - _ = json.Unmarshal(wantSchema, &wantSchemaMap) - result, err := generateSchemaFromValues(testValues) - if err != nil { - t.Error(err, "failed generate schema from values") - } - resultMap := map[string]interface{}{} - if err := json.Unmarshal(result, &resultMap); err != nil { - t.Error(err, "cannot unmarshal result bytes") - } - if diff := cmp.Diff(resultMap, wantSchemaMap); diff != "" { - t.Fatalf("\ngenerateSchemaFromValues(...)(...) -want +get \n%s", diff) - } -} - -func TestGetChartValuesJSONSchema(t *testing.T) { - testHelm := testData("podinfo", "5.1.4", "https://charts.kubevela.net/example", "testSecret") - wantSchema, err := os.ReadFile("./testdata/podinfo.values.schema.json") - if err != nil { - t.Error(err, "cannot load expected data") - } - wantSchemaMap := map[string]interface{}{} - // convert bytes to map for diff converience - _ = json.Unmarshal(wantSchema, &wantSchemaMap) - result, err := GetChartValuesJSONSchema(context.Background(), testHelm) - if err != nil { - t.Error(err, "failed get schema") - } - resultMap := map[string]interface{}{} - if err := json.Unmarshal(result, &resultMap); err != nil { - t.Error(err, "cannot unmarshal result bytes") - } - if diff := cmp.Diff(resultMap, wantSchemaMap); diff != "" { - t.Fatalf("\nGetChartValuesJSONSchema(...)(...) -want +get \n%s", diff) - } -} - -func TestChangeEnumToDefault(t *testing.T) { - // testData contains object, string, integer, bool, and array type fields - // with enum and required values - testData := `{"properties":{"array":{"enum":[["a","b","c"]],"items":{"type":"string"},"type":"array"},"bool":{"enum":[false],"type":"boolean"},"integer":{"enum":[1],"type":"integer"},"obj":{"properties":{"f0":{"enum":["v0"],"type":"string"},"f1":{"enum":["v1"],"type":"string"},"f2":{"enum":["v2"],"type":"string"}},"required":["f0","f1","f2"],"type":"object"},"string":{"enum":["a"],"type":"string"}},"required":["bool","string","obj","array","integer"],"type":"object"}` - - s := fmt.Sprintf(`{"components":{"schemas":{"values":%s}}}`, testData) - testSwagger, err := openapi3.NewLoader().LoadFromData([]byte(s)) - if err != nil { - t.Error(err) - } - testSchema := testSwagger.Components.Schemas["values"].Value - changeEnumToDefault(testSchema) - result, err := testSchema.MarshalJSON() - if err != nil { - t.Error(err) - } - resultMap := map[string]interface{}{} - err = json.Unmarshal(result, &resultMap) - if err != nil { - t.Error(err) - } - want := `{"properties":{"array":{"default":["a","b","c"],"items":{"type":"string"},"type":"array"},"bool":{"default":false,"type":"boolean"},"integer":{"default":1,"type":"integer"},"obj":{"properties":{"f0":{"default":"v0","type":"string"},"f1":{"default":"v1","type":"string"},"f2":{"default":"v2","type":"string"}},"type":"object"},"string":{"default":"a","type":"string"}},"type":"object"}` - wantMap := map[string]interface{}{} - _ = json.Unmarshal([]byte(want), &wantMap) - if diff := cmp.Diff(resultMap, wantMap); diff != "" { - t.Fatalf("\nchangeEnumToDefault(...) -want +get %s\n", diff) - } -} - -func TestMakeSwaggerCompatible(t *testing.T) { - tests := []struct { - caseName string - testdata string - want string - }{ - { - caseName: "integer type array", - testdata: `{"integerArray": { - "type": "array", - "items": [ - { - "type": "integer", - "enum": [ - 0 - ] - }, - { - "type": "integer", - "enum": [ - 1 - ] - }, - { - "type": "integer", - "enum": [ - 2 - ] - } - ], - "enum": [ - [ - 0, - 1, - 2 - ] - ] - }}`, - want: `{"integerArray":{"enum":[[0,1,2]],"items":{"enum":null,"type":"integer"},"type":"array"}}`, - }, - { - caseName: "string type array", - testdata: `{"stringArray": { - "type": "array", - "items": [ - { - "type": "string", - "enum": [ - "a" - ] - }, - { - "type": "string", - "enum": [ - "b" - ] - }, - { - "type": "string", - "enum": [ - "c" - ] - } - ], - "enum": [ - [ - "a", - "b", - "c" - ] - ] -}}`, - want: `{"stringArray":{"enum":[["a","b","c"]],"items":{"enum":null,"type":"string"},"type":"array"}}`, - }, - { - caseName: "bool type array", - testdata: `{"boolArray": { - "type": "array", - "items": [ - { - "type": "boolean", - "enum": [ - true - ] - }, - { - "type": "boolean", - "enum": [ - false - ] - } - ], - "enum": [ - [ - true, - false - ] - ] -}}`, - want: `{"boolArray":{"enum":[[true,false]],"items":{"enum":null,"type":"boolean"},"type":"array"}}`, - }, - { - caseName: "object type array", - testdata: `{"objectArray": { - "type": "array", - "items": [ - { - "type": "object", - "required": [ - "f0", - "f1", - "f2" - ], - "properties": { - "f0": { - "type": "string", - "enum": [ - "v0" - ] - }, - "f1": { - "type": "string", - "enum": [ - "v1" - ] - }, - "f2": { - "type": "string", - "enum": [ - "v2" - ] - } - } - } - ] -}}`, - want: `{"objectArray":{"items":{"enum":null,"properties":{"f0":{"enum":["v0"],"type":"string"},"f1":{"enum":["v1"],"type":"string"},"f2":{"enum":["v2"],"type":"string"}},"required":["f0","f1","f2"],"type":"object"},"type":"array"}}`, - }, - { - caseName: "object type array embeds object type array", - testdata: `{ - "objectArray": { - "type": "array", - "items": [ - { - "type": "array", - "items": [ - { - "type": "object", - "required": [ - "f0" - ], - "properties": { - "f0": { - "type": "string", - "enum": [ - "v0" - ] - } - } - } - ] - } - ] - } -} -`, - want: `{"objectArray":{"items":{"enum":null,"items":{"enum":null,"properties":{"f0":{"enum":["v0"],"type":"string"}},"required":["f0"],"type":"object"},"type":"array"},"type":"array"}}`, - }, - } - - for _, tc := range tests { - t.Run(tc.caseName, func(t *testing.T) { - result, err := makeSwaggerCompatible([]byte(tc.testdata)) - if err != nil { - t.Error(err) - } - resultMap := map[string]interface{}{} - err = json.Unmarshal(result, &resultMap) - if err != nil { - t.Error(err) - } - wantMap := map[string]interface{}{} - _ = json.Unmarshal([]byte(tc.want), &wantMap) - if diff := cmp.Diff(resultMap, wantMap); diff != "" { - t.Fatalf("\nmakeSwaggerCompatible(...) -want +get %s\n", diff) - } - }) - } -} diff --git a/pkg/appfile/template.go b/pkg/appfile/template.go index ce12ae30e..de77069d3 100644 --- a/pkg/appfile/template.go +++ b/pkg/appfile/template.go @@ -54,8 +54,6 @@ type Template struct { CustomStatus string CapabilityCategory types.CapabilityCategory Reference common.WorkloadTypeDescriptor - Helm *common.Helm - Kube *common.Kube Terraform *common.Terraform ComponentDefinition *v1beta1.ComponentDefinition @@ -362,16 +360,6 @@ func loadSchematicToTemplate(tmpl *Template, status *common.Status, schematic *c tmpl.CapabilityCategory = types.CUECategory tmpl.TemplateStr = schematic.CUE.Template } - if schematic.HELM != nil { - tmpl.CapabilityCategory = types.HelmCategory - tmpl.Helm = schematic.HELM - return nil - } - if schematic.KUBE != nil { - tmpl.CapabilityCategory = types.KubeCategory - tmpl.Kube = schematic.KUBE - return nil - } if schematic.Terraform != nil { tmpl.CapabilityCategory = types.TerraformCategory tmpl.Terraform = schematic.Terraform diff --git a/pkg/appfile/template_test.go b/pkg/appfile/template_test.go index 98349eab8..c58470358 100644 --- a/pkg/appfile/template_test.go +++ b/pkg/appfile/template_test.go @@ -293,20 +293,6 @@ func TestLoadSchematicToTemplate(t *testing.T) { Terraform: &common.Terraform{}, }, }, - "helm schematic": { - schematic: &common.Schematic{HELM: &common.Helm{}}, - want: &Template{ - CapabilityCategory: types.HelmCategory, - Helm: &common.Helm{}, - }, - }, - "kube schematic": { - schematic: &common.Schematic{KUBE: &common.Kube{}}, - want: &Template{ - CapabilityCategory: types.KubeCategory, - Kube: &common.Kube{}, - }, - }, } for reason, casei := range testCases { gtmp := &Template{} @@ -365,8 +351,6 @@ spec: Kind: "Deployment", }, }, - Helm: nil, - Kube: nil, ComponentDefinition: compDef, } @@ -375,8 +359,6 @@ spec: Health: "testHealthPolicy", CustomStatus: "testCustomStatus", CapabilityCategory: types.CUECategory, - Helm: nil, - Kube: nil, TraitDefinition: traitDef, } diff --git a/pkg/auth/round_trippers.go b/pkg/auth/round_trippers.go index 14e0586c7..56d8cb833 100644 --- a/pkg/auth/round_trippers.go +++ b/pkg/auth/round_trippers.go @@ -21,12 +21,11 @@ package auth import ( "net/http" + "github.com/kubevela/pkg/util/net" utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/client-go/transport" "k8s.io/klog/v2" - - "github.com/oam-dev/kubevela/pkg/utils" ) const ( @@ -67,7 +66,7 @@ func (rt *impersonatingRoundTripper) RoundTrip(req *http.Request) (*http.Respons } func (rt *impersonatingRoundTripper) CancelRequest(req *http.Request) { - utils.TryCancelRequest(rt.WrappedRoundTripper(), req) + net.TryCancelRequest(rt.WrappedRoundTripper(), req) } func (rt *impersonatingRoundTripper) WrappedRoundTripper() http.RoundTripper { diff --git a/pkg/controller/core.oam.dev/v1beta1/application/generator.go b/pkg/controller/core.oam.dev/v1beta1/application/generator.go index d9df2f98f..8fe7fbd76 100644 --- a/pkg/controller/core.oam.dev/v1beta1/application/generator.go +++ b/pkg/controller/core.oam.dev/v1beta1/application/generator.go @@ -22,23 +22,18 @@ import ( "strings" "time" - pkgmulticluster "github.com/kubevela/pkg/multicluster" - utilfeature "k8s.io/apiserver/pkg/util/feature" - - configprovider "github.com/oam-dev/kubevela/pkg/config/provider" - ctrlutil "github.com/oam-dev/kubevela/pkg/controller/utils" - "github.com/oam-dev/kubevela/pkg/features" - "github.com/oam-dev/kubevela/pkg/utils/apply" - "github.com/crossplane/crossplane-runtime/pkg/meta" "github.com/pkg/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" monitorContext "github.com/kubevela/pkg/monitor/context" + pkgmulticluster "github.com/kubevela/pkg/multicluster" + "github.com/kubevela/pkg/util/slices" workflowv1alpha1 "github.com/kubevela/workflow/api/v1alpha1" "github.com/kubevela/workflow/pkg/cue/model/value" "github.com/kubevela/workflow/pkg/executor" @@ -53,15 +48,17 @@ import ( "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/appfile" "github.com/oam-dev/kubevela/pkg/auth" + configprovider "github.com/oam-dev/kubevela/pkg/config/provider" "github.com/oam-dev/kubevela/pkg/controller/core.oam.dev/v1beta1/application/assemble" + ctrlutil "github.com/oam-dev/kubevela/pkg/controller/utils" velaprocess "github.com/oam-dev/kubevela/pkg/cue/process" + "github.com/oam-dev/kubevela/pkg/features" "github.com/oam-dev/kubevela/pkg/monitor/metrics" "github.com/oam-dev/kubevela/pkg/multicluster" "github.com/oam-dev/kubevela/pkg/oam" "github.com/oam-dev/kubevela/pkg/oam/util" - "github.com/oam-dev/kubevela/pkg/policy/envbinding" "github.com/oam-dev/kubevela/pkg/stdlib" - "github.com/oam-dev/kubevela/pkg/utils" + "github.com/oam-dev/kubevela/pkg/utils/apply" "github.com/oam-dev/kubevela/pkg/velaql/providers/query" multiclusterProvider "github.com/oam-dev/kubevela/pkg/workflow/providers/multicluster" oamProvider "github.com/oam-dev/kubevela/pkg/workflow/providers/oam" @@ -308,7 +305,7 @@ func checkDependsOnValidComponent(dependsOnComponentNames, allComponentNames []s return "", true } for _, dc := range dependsOnComponentNames { - if !utils.StringsContain(allComponentNames, dc) { + if !slices.Contains(allComponentNames, dc) { return dc, false } } @@ -370,7 +367,6 @@ func (h *AppHandler) applyComponentFunc(appParser *appfile.Parser, appRev *v1bet ctx := multicluster.ContextWithClusterName(baseCtx, clusterName) ctx = contextWithComponentNamespace(ctx, overrideNamespace) ctx = contextWithReplicaKey(ctx, comp.ReplicaKey) - ctx = envbinding.ContextWithEnvName(ctx, env) wl, manifest, err := h.prepareWorkloadAndManifests(ctx, appParser, comp, appRev, patcher, af) if err != nil { diff --git a/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go b/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go index 079917b38..804dfd950 100644 --- a/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go +++ b/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go @@ -22,8 +22,6 @@ import ( "fmt" "time" - "k8s.io/klog/v2" - "github.com/oam-dev/kubevela/pkg/oam/testutil" . "github.com/onsi/ginkgo/v2" @@ -31,13 +29,11 @@ import ( corev1 "k8s.io/api/core/v1" crdv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/yaml" - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/oam/util" @@ -319,100 +315,6 @@ spec: }) }) - Context("When the ComponentDefinition contains Helm Module, should create a ConfigMap", func() { - var componentDefinitionName = "cd-with-helm-module" - var namespace = "default" - req := reconcile.Request{NamespacedName: client.ObjectKey{Name: componentDefinitionName, Namespace: namespace}} - - It("Applying ComponentDefinition with Helm module", func() { - cd := v1beta1.ComponentDefinition{} - cd.SetName(componentDefinitionName) - cd.SetNamespace(namespace) - cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"} - cd.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.1.4", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://charts.kubevela.net/example/", - }), - }, - } - By("Create ComponentDefinition") - Expect(k8sClient.Create(ctx, &cd)).Should(Succeed()) - testutil.ReconcileRetry(&r, req) - - By("Check whether ConfigMap is created") - var cm corev1.ConfigMap - name := fmt.Sprintf("component-%s%s", types.CapabilityConfigMapNamePrefix, componentDefinitionName) - Eventually(func() bool { - err := k8sClient.Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, &cm) - if err != nil { - klog.ErrorS(err, "failed to get configmap") - } - return err == nil - }, 10*time.Second, time.Second).Should(BeTrue()) - Expect(cm.Data[types.OpenapiV3JSONSchema]).Should(Not(Equal(""))) - - By("Check whether ConfigMapRef refer to right ConfigMap") - Eventually(func() string { - _ = k8sClient.Get(ctx, client.ObjectKey{Namespace: cd.Namespace, Name: cd.Name}, &cd) - return cd.Status.ConfigMapRef - }, 10*time.Second, time.Second).Should(Equal(name)) - }) - }) - - Context("When the ComponentDefinition contains Kube Module, should create a ConfigMap", func() { - var componentDefinitionName = "cd-with-kube-module" - var namespace = "default" - req := reconcile.Request{NamespacedName: client.ObjectKey{Name: componentDefinitionName, Namespace: namespace}} - - It("Applying ComponentDefinition with kube Module", func() { - cd := v1beta1.ComponentDefinition{} - cd.SetName(componentDefinitionName) - cd.SetNamespace(namespace) - cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"} - cd.Spec.Schematic = &common.Schematic{ - KUBE: &common.Kube{ - Template: generateTemplate(KUBEWorkerTemplate), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - Required: pointer.Bool(true), - Description: pointer.String("test description"), - }, - }, - }, - } - By("Create ComponentDefinition") - Expect(k8sClient.Create(ctx, &cd)).Should(Succeed()) - testutil.ReconcileRetry(&r, req) - - By("Check whether ConfigMap is created") - var cm corev1.ConfigMap - name := fmt.Sprintf("component-%s%s", types.CapabilityConfigMapNamePrefix, componentDefinitionName) - Eventually(func() bool { - err := k8sClient.Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, &cm) - return err == nil - }, 10*time.Second, time.Second).Should(BeTrue()) - Expect(cm.Data[types.OpenapiV3JSONSchema]).Should(Not(Equal(""))) - - By("Check whether ConfigMapRef refer to right ConfigMap") - Eventually(func() string { - _ = k8sClient.Get(ctx, client.ObjectKey{Namespace: cd.Namespace, Name: cd.Name}, &cd) - return cd.Status.ConfigMapRef - }, 10*time.Second, time.Second).Should(Equal(name)) - }) - }) - Context("When the ComponentDefinition contains Terraform Module, should create a ConfigMap", func() { var componentDefinitionName = "alibaba-rds-test" var namespace = "default" @@ -740,25 +642,3 @@ spec: }) }) }) - -func generateTemplate(template string) runtime.RawExtension { - b, _ := yaml.YAMLToJSON([]byte(template)) - return runtime.RawExtension{Raw: b} -} - -var KUBEWorkerTemplate = `apiVersion: apps/v1 -kind: Deployment -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - ports: - - containerPort: 80 -` diff --git a/pkg/controller/utils/actions.go b/pkg/controller/utils/actions.go deleted file mode 100644 index 6f4ebb640..000000000 --- a/pkg/controller/utils/actions.go +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package utils - -import ( - "context" - - "k8s.io/client-go/util/retry" - "sigs.k8s.io/controller-runtime/pkg/client" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" - "github.com/oam-dev/kubevela/pkg/oam" -) - -// FreezeApplication freeze application to disable the reconciling process for it -func FreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func()) (string, error) { - return oam.GetControllerRequirement(app), _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, "Disabled") -} - -// UnfreezeApplication unfreeze application to enable the reconciling process for it -func UnfreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), originalControllerRequirement string) error { - return _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, originalControllerRequirement) -} - -func _updateApplicationWithControllerRequirement(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), controllerRequirement string) error { - appKey := client.ObjectKeyFromObject(app) - return retry.RetryOnConflict(retry.DefaultBackoff, func() error { - if err := cli.Get(ctx, appKey, app); err != nil { - return err - } - oam.SetControllerRequirement(app, controllerRequirement) - if mutate != nil { - mutate() - } - return cli.Update(ctx, app) - }) -} diff --git a/pkg/controller/utils/capability.go b/pkg/controller/utils/capability.go index 213f871fd..f1210ab0e 100644 --- a/pkg/controller/utils/capability.go +++ b/pkg/controller/utils/capability.go @@ -40,7 +40,6 @@ import ( "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/appfile" - "github.com/oam-dev/kubevela/pkg/appfile/helm" "github.com/oam-dev/kubevela/pkg/cue/script" "github.com/oam-dev/kubevela/pkg/oam/util" "github.com/oam-dev/kubevela/pkg/utils/common" @@ -99,8 +98,6 @@ type CapabilityComponentDefinition struct { WorkloadType util.WorkloadType `json:"workloadType"` WorkloadDefName string `json:"workloadDefName"` - Helm *commontypes.Helm `json:"helm"` - Kube *commontypes.Kube `json:"kube"` Terraform *commontypes.Terraform `json:"terraform"` CapabilityBaseDefinition } @@ -114,14 +111,6 @@ func NewCapabilityComponentDef(componentDefinition *v1beta1.ComponentDefinition) def.WorkloadDefName = componentDefinition.Spec.Workload.Type } if componentDefinition.Spec.Schematic != nil { - if componentDefinition.Spec.Schematic.HELM != nil { - def.WorkloadType = util.HELMDef - def.Helm = componentDefinition.Spec.Schematic.HELM - } - if componentDefinition.Spec.Schematic.KUBE != nil { - def.WorkloadType = util.KubeDef - def.Kube = componentDefinition.Spec.Schematic.KUBE - } if componentDefinition.Spec.Schematic.Terraform != nil { def.WorkloadType = util.TerraformDef def.Terraform = componentDefinition.Spec.Schematic.Terraform @@ -329,37 +318,6 @@ func generateJSONSchemaWithRequiredProperty(schemas map[string]*openapi3.Schema, return b, nil } -// GetKubeSchematicOpenAPISchema gets OpenAPI v3 schema based on kube schematic parameters for component and trait definition -func GetKubeSchematicOpenAPISchema(params []commontypes.KubeParameter) ([]byte, error) { - required := []string{} - properties := map[string]*openapi3.Schema{} - for _, p := range params { - var tmp *openapi3.Schema - switch p.ValueType { - case commontypes.StringType: - tmp = openapi3.NewStringSchema() - case commontypes.NumberType: - tmp = openapi3.NewFloat64Schema() - case commontypes.BooleanType: - tmp = openapi3.NewBoolSchema() - default: - tmp = openapi3.NewStringSchema() - } - if p.Required != nil && *p.Required { - required = append(required, p.Name) - } - - if p.Description != nil { - tmp.Description = fmt.Sprintf("%s %s", tmp.Description, *p.Description) - } else { - // save FieldPaths into description - tmp.Description = fmt.Sprintf("The value will be applied to fields: [%s].", strings.Join(p.FieldPaths, ",")) - } - properties[p.Name] = tmp - } - return generateJSONSchemaWithRequiredProperty(properties, required) -} - // GetGitSSHPublicKey gets a kubernetes secret containing the SSH private key based on gitCredentialsSecretReference parameters for component and trait definition func GetGitSSHPublicKey(ctx context.Context, k8sClient client.Client, gitCredentialsSecretReference *v1.SecretReference) (*gitssh.PublicKeys, error) { gitCredentialsSecretName := gitCredentialsSecretReference.Name @@ -403,10 +361,6 @@ func (def *CapabilityComponentDefinition) StoreOpenAPISchema(ctx context.Context var jsonSchema []byte var err error switch def.WorkloadType { - case util.HELMDef: - jsonSchema, err = helm.GetChartValuesJSONSchema(ctx, def.Helm) - case util.KubeDef: - jsonSchema, err = GetKubeSchematicOpenAPISchema(def.Kube.Parameters) case util.TerraformDef: if def.Terraform == nil { return "", fmt.Errorf("no Configuration is set in Terraform specification: %s", def.Name) @@ -475,8 +429,6 @@ type CapabilityTraitDefinition struct { DefCategoryType util.WorkloadType `json:"defCategoryType"` - Kube *commontypes.Kube `json:"kube"` - CapabilityBaseDefinition } @@ -484,10 +436,6 @@ type CapabilityTraitDefinition struct { func NewCapabilityTraitDef(traitdefinition *v1beta1.TraitDefinition) CapabilityTraitDefinition { var def CapabilityTraitDefinition def.Name = traitdefinition.Name // or def.Name = req.NamespacedName.Name - if traitdefinition.Spec.Schematic != nil && traitdefinition.Spec.Schematic.KUBE != nil { - def.DefCategoryType = util.KubeDef - def.Kube = traitdefinition.Spec.Schematic.KUBE - } def.TraitDefinition = *traitdefinition.DeepCopy() return def } @@ -503,14 +451,7 @@ func (def *CapabilityTraitDefinition) GetOpenAPISchema(name string) ([]byte, err // StoreOpenAPISchema stores OpenAPI v3 schema from TraitDefinition in ConfigMap func (def *CapabilityTraitDefinition) StoreOpenAPISchema(ctx context.Context, k8sClient client.Client, namespace, name string, revName string) (string, error) { - var jsonSchema []byte - var err error - switch def.DefCategoryType { - case util.KubeDef: // Kube template - jsonSchema, err = GetKubeSchematicOpenAPISchema(def.Kube.Parameters) - default: // CUE template - jsonSchema, err = def.GetOpenAPISchema(name) - } + jsonSchema, err := def.GetOpenAPISchema(name) if err != nil { return "", fmt.Errorf("failed to generate OpenAPI v3 JSON schema for capability %s: %w", def.Name, err) } diff --git a/pkg/controller/utils/utils.go b/pkg/controller/utils/utils.go index 2cccf1d20..cfd507117 100644 --- a/pkg/controller/utils/utils.go +++ b/pkg/controller/utils/utils.go @@ -20,23 +20,13 @@ import ( "fmt" "strconv" "strings" - "time" "github.com/mitchellh/hashstructure/v2" - "k8s.io/apimachinery/pkg/util/wait" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" "github.com/oam-dev/kubevela/pkg/oam/util" ) -// DefaultBackoff is the backoff we use in controller -var DefaultBackoff = wait.Backoff{ - Duration: 1 * time.Second, - Factor: 2, - Steps: 5, - Jitter: 0.1, -} - // GetAppNextRevision will generate the next revision name and revision number for application func GetAppNextRevision(app *v1beta1.Application) (string, int64) { if app == nil { diff --git a/pkg/multicluster/cluster_management.go b/pkg/multicluster/cluster_management.go index 6c63b339b..af651a43a 100644 --- a/pkg/multicluster/cluster_management.go +++ b/pkg/multicluster/cluster_management.go @@ -41,10 +41,7 @@ import ( ocmclusterv1 "open-cluster-management.io/api/cluster/v1" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" - "github.com/oam-dev/kubevela/pkg/policy/envbinding" "github.com/oam-dev/kubevela/pkg/utils" - velaerrors "github.com/oam-dev/kubevela/pkg/utils/errors" cmdutil "github.com/oam-dev/kubevela/pkg/utils/util" ) @@ -597,25 +594,5 @@ func getMutableClusterSecret(ctx context.Context, c client.Client, clusterName s if labels == nil || labels[clustercommon.LabelKeyClusterCredentialType] == "" { return nil, fmt.Errorf("invalid cluster secret %s: cluster credential type label %s is not set", clusterName, clustercommon.LabelKeyClusterCredentialType) } - apps := &v1beta1.ApplicationList{} - if err := c.List(ctx, apps); err != nil { - return nil, errors.Wrap(err, "failed to find applications to check clusters") - } - errs := velaerrors.ErrorList{} - for _, app := range apps.Items { - status, err := envbinding.GetEnvBindingPolicyStatus(app.DeepCopy(), "") - if err == nil && status != nil { - for _, env := range status.Envs { - for _, placement := range env.Placements { - if placement.Cluster == clusterName { - errs = append(errs, fmt.Errorf("application %s/%s (env: %s) is currently using cluster %s", app.Namespace, app.Name, env.Env, clusterName)) - } - } - } - } - } - if errs.HasError() { - return nil, errors.Wrapf(errs, "cluster %s is in use now", clusterName) - } return clusterSecret, nil } diff --git a/pkg/oam/testutil/helper.go b/pkg/oam/testutil/helper.go index b904d9b46..4c8c1701f 100644 --- a/pkg/oam/testutil/helper.go +++ b/pkg/oam/testutil/helper.go @@ -35,16 +35,6 @@ func ReconcileRetry(r reconcile.Reconciler, req reconcile.Request) { }, 15*time.Second, time.Second).Should(gomega.BeNil()) } -// ReconcileRetryAndExpectErr will reconcile and get error -func ReconcileRetryAndExpectErr(r reconcile.Reconciler, req reconcile.Request) { - gomega.Eventually(func() error { - if _, err := r.Reconcile(context.TODO(), req); err != nil { - return err - } - return nil - }, 3*time.Second, time.Second).ShouldNot(gomega.BeNil()) -} - // ReconcileOnce will just reconcile once func ReconcileOnce(r reconcile.Reconciler, req reconcile.Request) { if _, err := r.Reconcile(context.TODO(), req); err != nil { diff --git a/pkg/policy/envbinding/patch.go b/pkg/policy/envbinding/patch.go index 04d281dcf..4f70ce000 100644 --- a/pkg/policy/envbinding/patch.go +++ b/pkg/policy/envbinding/patch.go @@ -18,7 +18,6 @@ package envbinding import ( "encoding/json" - "fmt" "regexp" "strings" @@ -200,19 +199,3 @@ func PatchComponents(baseComponents []common.ApplicationComponent, patchComponen } return newComponents, nil } - -// PatchApplicationByEnvBindingEnv get patched application directly through policyName and envName -func PatchApplicationByEnvBindingEnv(app *v1beta1.Application, policyName string, envName string) (*v1beta1.Application, error) { - policy, err := GetEnvBindingPolicy(app, policyName) - if err != nil { - return nil, err - } - if policy != nil { - for _, env := range policy.Envs { - if env.Name == envName { - return PatchApplication(app, &env.Patch, env.Selector) - } - } - } - return nil, fmt.Errorf("target env %s in policy %s not found", envName, policyName) -} diff --git a/pkg/policy/envbinding/placement.go b/pkg/policy/envbinding/placement.go index 739f68b07..71b807a73 100644 --- a/pkg/policy/envbinding/placement.go +++ b/pkg/policy/envbinding/placement.go @@ -26,21 +26,6 @@ import ( "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" ) -// ReadPlacementDecisions read placement decisions from application status, return (decisions, if decision is made, error) -// Deprecated As it is only used in EnvBinding policy -func ReadPlacementDecisions(app *v1beta1.Application, policyName string, envName string) ([]v1alpha1.PlacementDecision, bool, error) { - envBindingStatus, err := GetEnvBindingPolicyStatus(app, policyName) - if err != nil || envBindingStatus == nil { - return nil, false, err - } - for _, envStatus := range envBindingStatus.Envs { - if envStatus.Env == envName { - return envStatus.Placements, true, nil - } - } - return nil, false, nil -} - // updateClusterConnections update cluster connection in envbinding status with decisions func updateClusterConnections(status *v1alpha1.EnvBindingStatus, decisions []v1alpha1.PlacementDecision, app *v1beta1.Application) { var currentRev string diff --git a/pkg/policy/envbinding/placement_test.go b/pkg/policy/envbinding/placement_test.go index dd13d2f3b..a2f267966 100644 --- a/pkg/policy/envbinding/placement_test.go +++ b/pkg/policy/envbinding/placement_test.go @@ -17,83 +17,15 @@ limitations under the License. package envbinding import ( - "encoding/json" "testing" "github.com/stretchr/testify/require" - "k8s.io/apimachinery/pkg/runtime" "github.com/oam-dev/kubevela/apis/core.oam.dev/common" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" ) -func TestReadPlacementDecisions(t *testing.T) { - pld := []v1alpha1.PlacementDecision{{ - Cluster: "example-cluster", - Namespace: "example-namespace", - }} - testCases := []struct { - Status *v1alpha1.EnvBindingStatus - StatusRaw []byte - ExpectedExists bool - ExpectedHasError bool - }{{ - Status: nil, - StatusRaw: []byte(`bad value`), - ExpectedExists: false, - ExpectedHasError: true, - }, { - Status: &v1alpha1.EnvBindingStatus{ - Envs: []v1alpha1.EnvStatus{{ - Env: "example-env", - Placements: pld, - }}, - }, - ExpectedExists: true, - ExpectedHasError: false, - }, { - Status: &v1alpha1.EnvBindingStatus{ - Envs: []v1alpha1.EnvStatus{{ - Env: "bad-env", - Placements: pld, - }}, - }, - ExpectedExists: false, - ExpectedHasError: false, - }} - r := require.New(t) - for _, testCase := range testCases { - app := &v1beta1.Application{} - _status := common.PolicyStatus{ - Name: "example-policy", - Type: v1alpha1.EnvBindingPolicyType, - } - if testCase.Status == nil { - _status.Status = &runtime.RawExtension{Raw: testCase.StatusRaw} - } else { - bs, err := json.Marshal(testCase.Status) - r.NoError(err) - _status.Status = &runtime.RawExtension{Raw: bs} - } - app.Status.PolicyStatus = []common.PolicyStatus{_status} - pds, exists, err := ReadPlacementDecisions(app, "", "example-env") - r.Equal(testCase.ExpectedExists, exists) - if testCase.ExpectedHasError { - r.Error(err) - continue - } - r.NoError(err) - if exists { - r.Equal(len(pld), len(pds)) - for idx := range pld { - r.Equal(pld[idx].Cluster, pds[idx].Cluster) - r.Equal(pld[idx].Namespace, pds[idx].Namespace) - } - } - } -} - func TestUpdateClusterConnections(t *testing.T) { app := &v1beta1.Application{} app.Status.LatestRevision = &common.Revision{Name: "v1"} diff --git a/pkg/policy/envbinding/utils.go b/pkg/policy/envbinding/utils.go deleted file mode 100644 index e549a7f9a..000000000 --- a/pkg/policy/envbinding/utils.go +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package envbinding - -import ( - "context" - "encoding/json" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1" - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" -) - -type contextKey string - -const ( - // EnvNameContextKey is the name of env - // Deprecated - EnvNameContextKey = contextKey("EnvName") -) - -// GetEnvBindingPolicy extract env-binding policy with given policy name, if policy name is empty, the first env-binding policy will be used -// Deprecated -func GetEnvBindingPolicy(app *v1beta1.Application, policyName string) (*v1alpha1.EnvBindingSpec, error) { - for _, policy := range app.Spec.Policies { - if (policy.Name == policyName || policyName == "") && policy.Type == v1alpha1.EnvBindingPolicyType && policy.Properties != nil { - envBindingSpec := &v1alpha1.EnvBindingSpec{} - err := json.Unmarshal(policy.Properties.Raw, envBindingSpec) - return envBindingSpec, err - } - } - return nil, nil -} - -// GetEnvBindingPolicyStatus extract env-binding policy status with given policy name, if policy name is empty, the first env-binding policy will be used -// Deprecated -func GetEnvBindingPolicyStatus(app *v1beta1.Application, policyName string) (*v1alpha1.EnvBindingStatus, error) { - for _, policyStatus := range app.Status.PolicyStatus { - if (policyStatus.Name == policyName || policyName == "") && policyStatus.Type == v1alpha1.EnvBindingPolicyType { - envBindingStatus := &v1alpha1.EnvBindingStatus{} - if policyStatus.Status != nil { - err := json.Unmarshal(policyStatus.Status.Raw, envBindingStatus) - return envBindingStatus, err - } - return nil, nil - } - } - return nil, nil -} - -// EnvNameInContext extract env name from context -// Deprecated -func EnvNameInContext(ctx context.Context) string { - envName := ctx.Value(EnvNameContextKey) - if envName != nil { - return envName.(string) - } - return "" -} - -// ContextWithEnvName wraps context with envName -// Deprecated -func ContextWithEnvName(ctx context.Context, envName string) context.Context { - return context.WithValue(ctx, EnvNameContextKey, envName) -} diff --git a/pkg/policy/envbinding/utils_test.go b/pkg/policy/envbinding/utils_test.go deleted file mode 100644 index 64776279f..000000000 --- a/pkg/policy/envbinding/utils_test.go +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package envbinding - -import ( - "context" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestEnvContext(t *testing.T) { - r := require.New(t) - envName := "env" - extracted := EnvNameInContext(ContextWithEnvName(context.Background(), envName)) - r.Equal(envName, extracted) - r.Equal("", EnvNameInContext(context.Background())) -} diff --git a/pkg/resourcekeeper/cache_test.go b/pkg/resourcekeeper/cache_test.go index 8c7d372d4..2f00480f0 100644 --- a/pkg/resourcekeeper/cache_test.go +++ b/pkg/resourcekeeper/cache_test.go @@ -84,7 +84,8 @@ func TestResourceCache(t *testing.T) { } rts := []*v1beta1.ResourceTracker{nil, rt1, rt2, rt3} cache.registerResourceTrackers(rts...) - o, ok := cache.m.Get(createMR("resource-1").ResourceKey()) + mr := createMR("resource-1") + o, ok := cache.m.Get(mr.ResourceKey()) r.True(ok) r.False(o.loaded) for _, check := range []struct { diff --git a/pkg/resourcekeeper/gc.go b/pkg/resourcekeeper/gc.go index 65ef2fdc0..017bbedab 100644 --- a/pkg/resourcekeeper/gc.go +++ b/pkg/resourcekeeper/gc.go @@ -331,7 +331,7 @@ func (h *gcHandler) deleteIndependentComponent(ctx context.Context, mr v1beta1.M } else { dependentClear := true for _, mr := range rt.Spec.ManagedResources { - if utils.StringsContain(dependent, mr.Component) { + if slices.Contains(dependent, mr.Component) { entry := h.cache.get(ctx, mr) if entry.gcExecutorRT != rt { continue @@ -435,7 +435,7 @@ func (h *gcHandler) checkDependentComponent(mr v1beta1.ManagedResource) []string } for _, comp := range h.app.Spec.Components { for _, input := range comp.Inputs { - if utils.StringsContain(outputs, input.From) { + if slices.Contains(outputs, input.From) { dependent = append(dependent, comp.Name) } } diff --git a/pkg/stdlib/pkgs/multicluster.cue b/pkg/stdlib/pkgs/multicluster.cue index dd3b4e372..21d127ce2 100644 --- a/pkg/stdlib/pkgs/multicluster.cue +++ b/pkg/stdlib/pkgs/multicluster.cue @@ -30,21 +30,6 @@ dependsOn?: [...string] } -// deprecated -#ReadPlacementDecisions: { - #provider: "multicluster" - #do: "read-placement-decisions" - - inputs: { - policyName: string - envName: string - } - - outputs: { - decisions?: [...#PlacementDecision] - } -} - // deprecated #MakePlacementDecisions: { #provider: "multicluster" diff --git a/pkg/utils/app/app.go b/pkg/utils/app/operation.go similarity index 77% rename from pkg/utils/app/app.go rename to pkg/utils/app/operation.go index e6a5dff20..0c3af8ae5 100644 --- a/pkg/utils/app/app.go +++ b/pkg/utils/app/operation.go @@ -84,7 +84,7 @@ func RollbackApplicationWithRevision(ctx context.Context, cli client.Client, app // freeze the application appKey := client.ObjectKeyFromObject(app) - controllerRequirement, err := utils.FreezeApplication(ctx, cli, app, func() { + controllerRequirement, err := FreezeApplication(ctx, cli, app, func() { app.Spec = matchedRev.Spec.Application.Spec oam.SetPublishVersion(app, publishVersion) }) @@ -94,7 +94,7 @@ func RollbackApplicationWithRevision(ctx context.Context, cli client.Client, app defer func() { // unfreeze application - if err = utils.UnfreezeApplication(ctx, cli, app, nil, controllerRequirement); err != nil { + if err = UnfreezeApplication(ctx, cli, app, nil, controllerRequirement); err != nil { klog.Errorf("failed to unfreeze application %s after update:%s", appKey, err.Error()) } }() @@ -130,3 +130,27 @@ func RollbackApplicationWithRevision(ctx context.Context, cli client.Client, app } return matchedRev, app, nil } + +// FreezeApplication freeze application to disable the reconciling process for it +func FreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func()) (string, error) { + return oam.GetControllerRequirement(app), _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, "Disabled") +} + +// UnfreezeApplication unfreeze application to enable the reconciling process for it +func UnfreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), originalControllerRequirement string) error { + return _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, originalControllerRequirement) +} + +func _updateApplicationWithControllerRequirement(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), controllerRequirement string) error { + appKey := client.ObjectKeyFromObject(app) + return retry.RetryOnConflict(retry.DefaultBackoff, func() error { + if err := cli.Get(ctx, appKey, app); err != nil { + return err + } + oam.SetControllerRequirement(app, controllerRequirement) + if mutate != nil { + mutate() + } + return cli.Update(ctx, app) + }) +} diff --git a/pkg/utils/errors/resourcetracker.go b/pkg/utils/errors/resourcetracker.go index 3654100ff..1ed9b74f5 100644 --- a/pkg/utils/errors/resourcetracker.go +++ b/pkg/utils/errors/resourcetracker.go @@ -16,20 +16,6 @@ limitations under the License. package errors -import ( - "fmt" -) - -// ResourceTrackerNotExistError identifies error caused by resourcetracker not exist -type ResourceTrackerNotExistError struct { - Name string -} - -// Error implement error interface -func (err ResourceTrackerNotExistError) Error() string { - return fmt.Sprintf("given resource tracker %q doesn't exist", err.Name) -} - // ManagedResourceHasNoDataError identifies error caused by no data in maanged resource type ManagedResourceHasNoDataError struct{} diff --git a/pkg/utils/helm/helm.go b/pkg/utils/helm/helm.go index 5e62af76e..6ed693cf3 100644 --- a/pkg/utils/helm/helm.go +++ b/pkg/utils/helm/helm.go @@ -19,32 +19,21 @@ package helm import ( "context" "fmt" - "io" "log" "os" - "strings" v1 "k8s.io/api/core/v1" types2 "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/pkg/errors" "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/repo" - "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/utils/common" - cmdutil "github.com/oam-dev/kubevela/pkg/utils/util" ) -// VelaDebugLog defines an ENV to set vela helm install log to be debug const ( - VelaDebugLog = "VELA_DEBUG" userNameSecKey = "username" userPasswordSecKey = "password" caFileSecKey = "caFile" @@ -56,138 +45,6 @@ var ( settings = cli.New() ) -// Install will install helm chart -func Install(ioStreams cmdutil.IOStreams, repoName, repoURL, chartName, version, namespace, releaseName string, - vals map[string]interface{}) error { - - if len(namespace) > 0 { - args, err := common.InitBaseRestConfig() - if err != nil { - return err - } - kubeClient, err := args.GetClient() - if err != nil { - return err - } - exist, err := cmdutil.DoesNamespaceExist(kubeClient, namespace) - if err != nil { - return err - } - if !exist { - if err = cmdutil.NewNamespace(kubeClient, namespace); err != nil { - return fmt.Errorf("create namespace (%s) failed for chart %s: %w", namespace, chartName, err) - } - } - } - // check release running first before add repo and install chart - if IsHelmReleaseRunning(releaseName, chartName, namespace, ioStreams) { - return nil - } - - if !IsHelmRepositoryExist(repoName, repoURL) { - err := AddHelmRepository(repoName, repoURL, - "", "", "", "", "", false, ioStreams.Out) - if err != nil { - return err - } - } - - chartClient, err := NewHelmInstall(version, namespace, releaseName) - if err != nil { - return err - } - chartRequested, err := GetChart(chartClient, repoName+"/"+chartName) - if err != nil { - return err - } - rel, err := chartClient.Run(chartRequested, vals) - if err != nil { - return err - } - ioStreams.Infof("Successfully installed chart (%s) with release name (%s)\n", chartName, rel.Name) - return nil -} - -// Uninstall will uninstall helm chart -func Uninstall(ioStreams cmdutil.IOStreams, chartName, namespace, releaseName string) error { - if !IsHelmReleaseRunning(releaseName, chartName, namespace, ioStreams) { - return nil - } - uninstall, err := NewHelmUninstall(namespace) - if err != nil { - return err - } - _, err = uninstall.Run(releaseName) - if err != nil { - return err - } - ioStreams.Infof("Successfully removed chart (%s) with release name (%s)\n", chartName, releaseName) - return nil -} - -// NewHelmInstall will create a install client for helm install -func NewHelmInstall(version, namespace, releaseName string) (*action.Install, error) { - actionConfig := new(action.Configuration) - if len(namespace) == 0 { - namespace = types.DefaultKubeVelaNS - } - if err := actionConfig.Init( - cmdutil.NewRestConfigGetter(namespace), - namespace, - os.Getenv("HELM_DRIVER"), - debug, - ); err != nil { - return nil, err - } - - client := action.NewInstall(actionConfig) - client.ReleaseName = releaseName - // MUST set here, client didn't use namespace from configuration - client.Namespace = namespace - - if len(version) > 0 { - client.Version = version - } else { - client.Version = types.DefaultKubeVelaVersion - } - return client, nil -} - -// NewHelmUninstall will create a helm uninstall client -func NewHelmUninstall(namespace string) (*action.Uninstall, error) { - actionConfig := new(action.Configuration) - - if err := actionConfig.Init( - cmdutil.NewRestConfigGetter(namespace), - namespace, - os.Getenv("HELM_DRIVER"), - debug, - ); err != nil { - return nil, err - } - return action.NewUninstall(actionConfig), nil -} - -// IsHelmRepositoryExist will check help repo exists -func IsHelmRepositoryExist(name, url string) bool { - repos := GetHelmRepositoryList() - for _, repo := range repos { - if repo.Name == name && repo.URL == url { - return true - } - } - return false -} - -// GetHelmRepositoryList get the helm repo list from default setting -func GetHelmRepositoryList() []*repo.Entry { - f, err := repo.LoadFile(settings.RepositoryConfig) - if err == nil && len(f.Repositories) > 0 { - return f.Repositories - } - return nil -} - func debug(format string, v ...interface{}) { if settings.Debug { format = fmt.Sprintf("[debug] %s\n", format) @@ -195,53 +52,6 @@ func debug(format string, v ...interface{}) { } } -// AddHelmRepository add helm repo -func AddHelmRepository(name, url, username, password, certFile, keyFile, caFile string, insecureSkipTLSverify bool, out io.Writer) error { - var f repo.File - c := repo.Entry{ - Name: name, - URL: url, - Username: username, - Password: password, - CertFile: certFile, - KeyFile: keyFile, - CAFile: caFile, - InsecureSkipTLSverify: insecureSkipTLSverify, - } - - r, err := repo.NewChartRepository(&c, getter.All(settings)) - if err != nil { - return err - } - - if _, err := r.DownloadIndexFile(); err != nil { - return errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", url) - } - - f.Update(&c) - - if err := f.WriteFile(settings.RepositoryConfig, 0644); err != nil { - return err - } - fmt.Fprintf(out, "%q has been added to your repositories\n", name) - return nil -} - -// IsHelmReleaseRunning check helm release running -func IsHelmReleaseRunning(releaseName, chartName, ns string, streams cmdutil.IOStreams) bool { - releases, err := GetHelmRelease(ns) - if err != nil { - streams.Error("get helm release err", err) - return false - } - for _, r := range releases { - if strings.Contains(r.Chart.ChartFullPath(), chartName) && r.Name == releaseName { - return true - } - } - return false -} - // GetHelmRelease will get helm release func GetHelmRelease(ns string) ([]*release.Release, error) { actionConfig := new(action.Configuration) @@ -258,29 +68,6 @@ func GetHelmRelease(ns string) ([]*release.Release, error) { return results, nil } -// GetChart will locate chart -func GetChart(client *action.Install, name string) (*chart.Chart, error) { - if os.Getenv(VelaDebugLog) != "" { - settings.Debug = true - } - - chartPath, err := client.ChartPathOptions.LocateChart(name, settings) - if err != nil { - return nil, err - } - - chartRequested, err := loader.Load(chartPath) - if err != nil { - return nil, err - } - return chartRequested, nil -} - -// InstallHelmChart will install helm chart from types.Chart -func InstallHelmChart(ioStreams cmdutil.IOStreams, c types.Chart) error { - return Install(ioStreams, c.Repo, c.URL, c.Name, c.Version, c.Namespace, c.Name, c.Values) -} - // SetHTTPOption will read username and password from secret return a httpOption that contain these info. func SetHTTPOption(ctx context.Context, k8sClient client.Client, secretRef types2.NamespacedName) (*common.HTTPOption, error) { sec := v1.Secret{} diff --git a/pkg/utils/json.go b/pkg/utils/json.go index 1ccc393b5..b97078126 100644 --- a/pkg/utils/json.go +++ b/pkg/utils/json.go @@ -21,12 +21,6 @@ import ( "encoding/json" ) -// DumpJSON returns the JSON encoding -func DumpJSON(o interface{}) string { - j, _ := json.Marshal(o) - return string(j) -} - // StrictUnmarshal unmarshal target structure and disallow unknown fields func StrictUnmarshal(bs []byte, dest interface{}) error { d := json.NewDecoder(bytes.NewReader(bs)) diff --git a/pkg/utils/k8s.go b/pkg/utils/k8s.go index 173b94da9..1bf25acda 100644 --- a/pkg/utils/k8s.go +++ b/pkg/utils/k8s.go @@ -185,14 +185,6 @@ func GetUserInfoFromConfig(cfg *rest.Config) *authv1.UserInfo { return nil } -// AutoSetSelfImpersonationInConfig set impersonate username and group to the identity in the original rest config -func AutoSetSelfImpersonationInConfig(cfg *rest.Config) { - if userInfo := GetUserInfoFromConfig(cfg); userInfo != nil { - cfg.Impersonate.UserName = userInfo.Username - cfg.Impersonate.Groups = append(cfg.Impersonate.Groups, userInfo.Groups...) - } -} - // CreateOrUpdate create or update a kubernetes object func CreateOrUpdate(ctx context.Context, cli client.Client, obj client.Object) (controllerutil.OperationResult, error) { bs, err := json.Marshal(obj) diff --git a/pkg/utils/pprof.go b/pkg/utils/pprof.go deleted file mode 100644 index 3ed61fda8..000000000 --- a/pkg/utils/pprof.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2022 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package utils - -import ( - "encoding/json" - "net/http" - "net/http/pprof" - "runtime" - "time" - - "k8s.io/klog/v2" -) - -// EnablePprof listen to the pprofAddr and export the profiling results -// If the errChan is nil, this function will panic when the listening error occurred. -func EnablePprof(pprofAddr string, errChan chan error) { - // Start pprof server if enabled - mux := http.NewServeMux() - mux.HandleFunc("/debug/pprof/", pprof.Index) - mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) - mux.HandleFunc("/debug/pprof/profile", pprof.Profile) - mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) - mux.HandleFunc("/debug/pprof/trace", pprof.Trace) - mux.HandleFunc("/mem/stat", func(writer http.ResponseWriter, request *http.Request) { - var ms runtime.MemStats - runtime.ReadMemStats(&ms) - bs, _ := json.Marshal(ms) - _, _ = writer.Write(bs) - }) - mux.HandleFunc("/gc", func(writer http.ResponseWriter, request *http.Request) { - runtime.GC() - }) - pprofServer := http.Server{ - Addr: pprofAddr, - Handler: mux, - ReadHeaderTimeout: 2 * time.Second, - } - - klog.InfoS("Starting debug HTTP server", "addr", pprofServer.Addr) - - if err := pprofServer.ListenAndServe(); err != nil { - klog.Error(err, "Failed to start debug HTTP server") - if errChan != nil { - errChan <- err - } else { - panic(err) - } - } -} diff --git a/pkg/utils/round_trippers.go b/pkg/utils/round_trippers.go deleted file mode 100644 index 6003f7cac..000000000 --- a/pkg/utils/round_trippers.go +++ /dev/null @@ -1,41 +0,0 @@ -/* - - Copyright 2021 The KubeVela Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package utils - -import ( - "net/http" - - utilnet "k8s.io/apimachinery/pkg/util/net" - "k8s.io/klog/v2" -) - -// TryCancelRequest tries to cancel the request by traversing round trippers -func TryCancelRequest(rt http.RoundTripper, req *http.Request) { - type canceler interface { - CancelRequest(*http.Request) - } - switch rt := rt.(type) { - case canceler: - rt.CancelRequest(req) - case utilnet.RoundTripperWrapper: - TryCancelRequest(rt.WrappedRoundTripper(), req) - default: - klog.Warningf("Unable to cancel request for %T", rt) - } -} diff --git a/pkg/utils/sanitize.go b/pkg/utils/sanitize.go deleted file mode 100644 index a65714af5..000000000 --- a/pkg/utils/sanitize.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package utils - -import "strings" - -// Sanitize the inputs by removing line endings -func Sanitize(s string) string { - s = strings.ReplaceAll(s, "\n", "") - s = strings.ReplaceAll(s, "\r", "") - return s -} diff --git a/pkg/utils/sanitize_test.go b/pkg/utils/sanitize_test.go deleted file mode 100644 index 65490df29..000000000 --- a/pkg/utils/sanitize_test.go +++ /dev/null @@ -1,28 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package utils - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestSanitize(t *testing.T) { - s := "abc\ndef\rgh" - require.Equal(t, "abcdefgh", Sanitize(s)) -} diff --git a/pkg/utils/schema/ui_schema.go b/pkg/utils/schema/ui_schema.go index 6f5f9a9b2..7f12f684a 100644 --- a/pkg/utils/schema/ui_schema.go +++ b/pkg/utils/schema/ui_schema.go @@ -18,9 +18,8 @@ package schema import ( "fmt" - "strings" - "github.com/oam-dev/kubevela/pkg/utils" + "github.com/kubevela/pkg/util/slices" ) // UISchema ui schema @@ -87,7 +86,7 @@ func (c Condition) Validate() error { if c.Action != "enable" && c.Action != "disable" && c.Action != "" { return fmt.Errorf("the action of the condition only supports enable, disable or leave it empty") } - if c.Op != "" && !utils.StringsContain([]string{"==", "!=", "in"}, c.Op) { + if c.Op != "" && !slices.Contains([]string{"==", "!=", "in"}, c.Op) { return fmt.Errorf("the op of the condition must be `==` 、`!=` and `in`") } return nil @@ -125,22 +124,6 @@ type Option struct { Value interface{} `json:"value"` } -// FirstUpper Sets the first letter of the string to upper. -func FirstUpper(s string) string { - if s == "" { - return "" - } - return strings.ToUpper(s[:1]) + s[1:] -} - -// FirstLower Sets the first letter of the string to lowercase. -func FirstLower(s string) string { - if s == "" { - return "" - } - return strings.ToLower(s[:1]) + s[1:] -} - // GetDefaultUIType Set the default mapping for API Schema Type func GetDefaultUIType(apiType string, haveOptions bool, subType string, haveSub bool) string { switch apiType { @@ -170,15 +153,3 @@ func GetDefaultUIType(apiType string, haveOptions bool, subType string, haveSub return "Input" } } - -// RenderLabel render option label -func RenderLabel(source interface{}) string { - switch v := source.(type) { - case int: - return fmt.Sprintf("%d", v) - case string: - return FirstUpper(v) - default: - return FirstUpper(fmt.Sprintf("%v", v)) - } -} diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go index d43fb8bd5..add614a65 100644 --- a/pkg/utils/strings.go +++ b/pkg/utils/strings.go @@ -17,128 +17,9 @@ limitations under the License. package utils import ( - "net/url" - "path" - "reflect" - "sort" - "strconv" "strings" ) -// StringsContain strings contain -func StringsContain(items []string, source string) bool { - for _, item := range items { - if item == source { - return true - } - } - return false -} - -// ThreeWaySliceCompare will compare two string slice, with the three return values: [both in A and B], [only in A], [only in B] -func ThreeWaySliceCompare(a []string, b []string) ([]string, []string, []string) { - m := make(map[string]struct{}) - for _, k := range b { - m[k] = struct{}{} - } - - var AB, AO, BO []string - for _, k := range a { - _, ok := m[k] - if !ok { - AO = append(AO, k) - continue - } - AB = append(AB, k) - delete(m, k) - } - for k := range m { - BO = append(BO, k) - } - sort.Strings(AB) - sort.Strings(AO) - sort.Strings(BO) - return AB, AO, BO -} - -// EqualSlice checks if two slice are equal -func EqualSlice(a, b []string) bool { - sort.Strings(a) - sort.Strings(b) - return reflect.DeepEqual(a, b) -} - -// SliceIncludeSlice the slice include the b slice -func SliceIncludeSlice(a, b []string) bool { - if EqualSlice(a, b) { - return true - } - for _, item := range b { - if !StringsContain(a, item) { - return false - } - } - return true -} - -// ToString convery an interface to a string type. -func ToString(i interface{}) string { - if i == nil { - return "" - } - v := reflect.ValueOf(i) - if v.Kind() == reflect.Ptr && !v.IsNil() { - v = v.Elem() - } - i = v.Interface() - switch s := i.(type) { - case string: - return s - case bool: - return strconv.FormatBool(s) - case float64: - return strconv.FormatFloat(s, 'f', -1, 64) - case float32: - return strconv.FormatFloat(float64(s), 'f', -1, 32) - case int: - return strconv.Itoa(s) - case int64: - return strconv.FormatInt(s, 10) - case int32: - return strconv.Itoa(int(s)) - case int16: - return strconv.FormatInt(int64(s), 10) - case int8: - return strconv.FormatInt(int64(s), 10) - case uint: - return strconv.FormatUint(uint64(s), 10) - case uint64: - // nolint - return strconv.FormatUint(uint64(s), 10) - case uint32: - return strconv.FormatUint(uint64(s), 10) - case uint16: - return strconv.FormatUint(uint64(s), 10) - case uint8: - return strconv.FormatUint(uint64(s), 10) - case []byte: - return string(s) - case nil: - return "" - default: - return "" - } -} - -// MapKey2Array convery map keys to array -func MapKey2Array(source map[string]string) []string { - var list []string - for k := range source { - list = append(list, k) - } - return list -} - // GetBoxDrawingString get line drawing string, see https://en.wikipedia.org/wiki/Box-drawing_character // nolint:gocyclo func GetBoxDrawingString(up bool, down bool, left bool, right bool, padLeft int, padRight int) string { @@ -193,14 +74,9 @@ func GetBoxDrawingString(up bool, down bool, left bool, right bool, padLeft int, return sb.String() } -// JoinURL join baseURL and subPath to be new URL -func JoinURL(baseURL, subPath string) (string, error) { - parsedURL, err := url.Parse(baseURL) - if err != nil { - return "", err - } - parsedURL.RawPath = path.Join(parsedURL.RawPath, subPath) - parsedURL.Path = path.Join(parsedURL.Path, subPath) - URL := parsedURL.String() - return URL, nil +// Sanitize the inputs by removing line endings +func Sanitize(s string) string { + s = strings.ReplaceAll(s, "\n", "") + s = strings.ReplaceAll(s, "\r", "") + return s } diff --git a/pkg/utils/strings_test.go b/pkg/utils/strings_test.go index 83b864b5e..1cfa5c032 100644 --- a/pkg/utils/strings_test.go +++ b/pkg/utils/strings_test.go @@ -17,202 +17,12 @@ package utils import ( - "errors" - "net/url" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) -func TestCompareSlice(t *testing.T) { - caseA := []string{"c", "b", "a"} - caseB := []string{"c", "b", "a"} - gotab, gotao, gotbo := ThreeWaySliceCompare(caseA, caseB) - assert.Equal(t, gotab, []string{"a", "b", "c"}) - assert.Equal(t, gotao, []string(nil)) - assert.Equal(t, gotbo, []string(nil)) - - caseA = []string{"c", "b"} - caseB = []string{"c", "a"} - gotab, gotao, gotbo = ThreeWaySliceCompare(caseA, caseB) - assert.Equal(t, gotab, []string{"c"}) - assert.Equal(t, gotao, []string{"b"}) - assert.Equal(t, gotbo, []string{"a"}) - - caseA = []string{"c", "b"} - caseB = nil - gotab, gotao, gotbo = ThreeWaySliceCompare(caseA, caseB) - assert.Equal(t, gotab, []string(nil)) - assert.Equal(t, gotao, []string{"b", "c"}) - assert.Equal(t, gotbo, []string(nil)) - - caseA = nil - caseB = []string{"c", "b"} - gotab, gotao, gotbo = ThreeWaySliceCompare(caseA, caseB) - assert.Equal(t, gotab, []string(nil)) - assert.Equal(t, gotao, []string(nil)) - assert.Equal(t, gotbo, []string{"b", "c"}) -} - -func TestEqual(t *testing.T) { - caseA := []string{"c", "b", "a"} - caseB := []string{"c", "b", "a"} - assert.Equal(t, EqualSlice(caseA, caseB), true) - - caseA = []string{"c", "a", "b"} - caseB = []string{"c", "b", "a"} - assert.Equal(t, EqualSlice(caseA, caseB), true) - - caseA = []string{"c", "a", "b"} - caseB = []string{"b", "a", "c"} - assert.Equal(t, EqualSlice(caseA, caseB), true) - - caseA = []string{"c", "a", "b"} - caseB = []string{"b", "a", "c", "d"} - assert.Equal(t, EqualSlice(caseA, caseB), false) - - caseA = []string{} - caseB = []string{} - assert.Equal(t, EqualSlice(caseA, caseB), true) - - caseA = []string{} - caseB = []string{"b", "a", "c"} - assert.Equal(t, EqualSlice(caseA, caseB), false) -} - -func TestSliceIncludeSlice(t *testing.T) { - caseA := []string{"b", "a", "c"} - caseB := []string{} - assert.Equal(t, SliceIncludeSlice(caseA, caseB), true) - - caseA = []string{"b", "a", "c"} - caseB = []string{"b"} - assert.Equal(t, SliceIncludeSlice(caseA, caseB), true) - - caseA = []string{"b", "a", "c"} - caseB = []string{"b", "c"} - assert.Equal(t, SliceIncludeSlice(caseA, caseB), true) - - caseA = []string{"b", "a", "c"} - caseB = []string{"b", "c", "d"} - assert.Equal(t, SliceIncludeSlice(caseA, caseB), false) - - caseA = []string{"b", "a", "c"} - caseB = []string{"b", "c", "a"} - assert.Equal(t, SliceIncludeSlice(caseA, caseB), true) -} - -func TestJoinURL(t *testing.T) { - - testcase := []struct { - baseURL string - subPath string - expectedUrl string - err error - }{ - { - baseURL: "https://www.kubevela.com", - subPath: "index.yaml", - expectedUrl: "https://www.kubevela.com/index.yaml", - err: nil, - }, - { - baseURL: "http://www.kubevela.com", - subPath: "index.yaml", - expectedUrl: "http://www.kubevela.com/index.yaml", - err: nil, - }, - { - baseURL: "0x7f:", - subPath: "index.yaml", - expectedUrl: "", - err: &url.Error{Op: "parse", URL: "0x7f:", Err: errors.New("first path segment in URL cannot contain colon")}, - }, - } - - for _, tc := range testcase { - url, err := JoinURL(tc.baseURL, tc.subPath) - assert.Equal(t, tc.expectedUrl, url) - assert.Equal(t, tc.err, err) - } - -} - -func TestToString(t *testing.T) { - type Obj struct { - k string - } - obj := &Obj{"foo"} - boolPtr := true - caseA := []struct { - input interface{} - expect string - }{ - {int(666), "666"}, - {int8(6), "6"}, - {int16(6), "6"}, - {int32(6), "6"}, - {int64(6), "6"}, - {uint(6), "6"}, - {uint8(6), "6"}, - {uint16(6), "6"}, - {uint32(6), "6"}, - {uint64(6), "6"}, - {float32(3.14), "3.14"}, - {float64(3.14), "3.14"}, - {true, "true"}, - {false, "false"}, - {&boolPtr, "true"}, - {nil, ""}, - {[]byte("one time"), "one time"}, - {"one more time", "one more time"}, - {obj, ""}, - } - - for _, test := range caseA { - v := ToString(test.input) - assert.Equal(t, test.expect, v) - } -} - -func TestStringsContain(t *testing.T) { - type args struct { - items []string - source string - } - tests := []struct { - name string - args args - want bool - }{ - { - name: "test empty items should not contain any string", - args: args{ - items: []string{}, - source: "foo", - }, - want: false, - }, - { - name: "test items should contain source", - args: args{ - items: []string{"foo", "bar"}, - source: "foo", - }, - want: true, - }, - { - name: "test items should not contain source", - args: args{ - items: []string{"foo", "bar"}, - source: "baz", - }, - want: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - assert.Equalf(t, tt.want, StringsContain(tt.args.items, tt.args.source), "StringsContain(%v, %v)", tt.args.items, tt.args.source) - }) - } +func TestSanitize(t *testing.T) { + s := "abc\ndef\rgh" + require.Equal(t, "abcdefgh", Sanitize(s)) } diff --git a/pkg/utils/system/system.go b/pkg/utils/system/system.go index c7042b16d..132655139 100644 --- a/pkg/utils/system/system.go +++ b/pkg/utils/system/system.go @@ -54,15 +54,6 @@ func GetVelaHomeDir() (string, error) { return velaHome, nil } -// GetDefaultFrontendDir return default vela frontend dir -func GetDefaultFrontendDir() (string, error) { - home, err := GetVelaHomeDir() - if err != nil { - return "", err - } - return filepath.Join(home, "frontend"), nil -} - // GetCapCenterDir return cap center dir func GetCapCenterDir() (string, error) { home, err := GetVelaHomeDir() diff --git a/pkg/utils/url.go b/pkg/utils/url.go index 2579fc928..cb0f6de26 100644 --- a/pkg/utils/url.go +++ b/pkg/utils/url.go @@ -19,6 +19,7 @@ package utils import ( "fmt" "net/url" + "path" "regexp" ) @@ -70,3 +71,15 @@ func IsValidURL(strURL string) bool { } return true } + +// JoinURL join baseURL and subPath to be new URL +func JoinURL(baseURL, subPath string) (string, error) { + parsedURL, err := url.Parse(baseURL) + if err != nil { + return "", err + } + parsedURL.RawPath = path.Join(parsedURL.RawPath, subPath) + parsedURL.Path = path.Join(parsedURL.Path, subPath) + URL := parsedURL.String() + return URL, nil +} diff --git a/pkg/utils/url_test.go b/pkg/utils/url_test.go index e3644fae2..10109b973 100644 --- a/pkg/utils/url_test.go +++ b/pkg/utils/url_test.go @@ -17,6 +17,8 @@ limitations under the License. package utils import ( + "fmt" + "net/url" "testing" "github.com/stretchr/testify/assert" @@ -113,3 +115,37 @@ func TestIsValidURL(t *testing.T) { }) } } + +func TestJoinURL(t *testing.T) { + testcase := []struct { + baseURL string + subPath string + expectedUrl string + err error + }{ + { + baseURL: "https://www.kubevela.com", + subPath: "index.yaml", + expectedUrl: "https://www.kubevela.com/index.yaml", + err: nil, + }, + { + baseURL: "http://www.kubevela.com", + subPath: "index.yaml", + expectedUrl: "http://www.kubevela.com/index.yaml", + err: nil, + }, + { + baseURL: "0x7f:", + subPath: "index.yaml", + expectedUrl: "", + err: &url.Error{Op: "parse", URL: "0x7f:", Err: fmt.Errorf("first path segment in URL cannot contain colon")}, + }, + } + + for _, tc := range testcase { + url, err := JoinURL(tc.baseURL, tc.subPath) + assert.Equal(t, tc.expectedUrl, url) + assert.Equal(t, tc.err, err) + } +} diff --git a/pkg/velaql/providers/query/endpoint.go b/pkg/velaql/providers/query/endpoint.go index 9d0fb22b6..1edeab278 100644 --- a/pkg/velaql/providers/query/endpoint.go +++ b/pkg/velaql/providers/query/endpoint.go @@ -23,6 +23,7 @@ import ( "strings" "time" + "github.com/kubevela/pkg/util/slices" corev1 "k8s.io/api/core/v1" v1 "k8s.io/api/networking/v1" networkv1beta1 "k8s.io/api/networking/v1beta1" @@ -41,7 +42,6 @@ import ( "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" apis "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/multicluster" - "github.com/oam-dev/kubevela/pkg/utils" querytypes "github.com/oam-dev/kubevela/pkg/velaql/providers/query/types" ) @@ -236,7 +236,7 @@ func generatorFromIngress(ingress v1.Ingress, cluster, component string) (servic getAppProtocol := func(host string) string { if len(ingress.Spec.TLS) > 0 { for _, tls := range ingress.Spec.TLS { - if len(tls.Hosts) > 0 && utils.StringsContain(tls.Hosts, host) { + if len(tls.Hosts) > 0 && slices.Contains(tls.Hosts, host) { return querytypes.HTTPS } if len(tls.Hosts) == 0 { diff --git a/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go b/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go index 5a73e9968..0f235d371 100644 --- a/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go +++ b/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go @@ -169,25 +169,5 @@ var _ = Describe("Test ComponentDefinition validating handler", func() { Expect(resp.Allowed).Should(BeFalse()) Expect(resp.Result.Reason).Should(Equal(metav1.StatusReason("the type and the definition of the workload field in ComponentDefinition wrongCd should represent the same workload"))) }) - - It("Test HELM type componentDefinition without definition", func() { - helmCd := v1beta1.ComponentDefinition{} - helmCd.SetGroupVersionKind(v1beta1.ComponentDefinitionGroupVersionKind) - helmCd.SetName("helmCd") - helmCd.Spec.Workload.Type = "deployments.apps" - helmCd.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{}, - } - helmCdRaw, _ := json.Marshal(helmCd) - req := admission.Request{ - AdmissionRequest: admissionv1.AdmissionRequest{ - Operation: admissionv1.Create, - Resource: reqResource, - Object: runtime.RawExtension{Raw: helmCdRaw}, - }, - } - resp := handler.Handle(context.TODO(), req) - Expect(resp.Allowed).Should(BeTrue()) - }) }) }) diff --git a/pkg/workflow/operation/operation.go b/pkg/workflow/operation/operation.go index 0d2177c41..821999c20 100644 --- a/pkg/workflow/operation/operation.go +++ b/pkg/workflow/operation/operation.go @@ -40,6 +40,7 @@ import ( "github.com/oam-dev/kubevela/pkg/oam" "github.com/oam-dev/kubevela/pkg/resourcetracker" "github.com/oam-dev/kubevela/pkg/rollout" + kubevelaapp "github.com/oam-dev/kubevela/pkg/utils/app" errors3 "github.com/oam-dev/kubevela/pkg/utils/errors" ) @@ -320,7 +321,7 @@ func (wo appWorkflowOperator) Rollback(ctx context.Context) error { } appKey := client.ObjectKeyFromObject(app) // rollback application spec and freeze - controllerRequirement, err := utils.FreezeApplication(ctx, wo.cli, app, func() { + controllerRequirement, err := kubevelaapp.FreezeApplication(ctx, wo.cli, app, func() { app.Spec = rev.Spec.Application.Spec oam.SetPublishVersion(app, publishVersion) }) @@ -369,7 +370,7 @@ func (wo appWorkflowOperator) Rollback(ctx context.Context) error { } // unfreeze application - if err = utils.UnfreezeApplication(ctx, wo.cli, app, nil, controllerRequirement); err != nil { + if err = kubevelaapp.UnfreezeApplication(ctx, wo.cli, app, nil, controllerRequirement); err != nil { return errors.Wrapf(err, "failed to resume application to restart") } diff --git a/pkg/workflow/providers/multicluster/multicluster.go b/pkg/workflow/providers/multicluster/multicluster.go index 64289ab90..aefee0594 100644 --- a/pkg/workflow/providers/multicluster/multicluster.go +++ b/pkg/workflow/providers/multicluster/multicluster.go @@ -48,27 +48,6 @@ type provider struct { renderer oamProvider.WorkloadRenderer } -// ReadPlacementDecisions -// Deprecated -func (p *provider) ReadPlacementDecisions(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act wfTypes.Action) error { - policy, err := v.GetString("inputs", "policyName") - if err != nil { - return err - } - env, err := v.GetString("inputs", "envName") - if err != nil { - return err - } - decisions, exists, err := envbinding.ReadPlacementDecisions(p.app, policy, env) - if err != nil { - return err - } - if exists { - return v.FillObject(map[string]interface{}{"decisions": decisions}, "outputs") - } - return v.FillObject(map[string]interface{}{}, "outputs") -} - // MakePlacementDecisions // Deprecated func (p *provider) MakePlacementDecisions(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act wfTypes.Action) error { @@ -210,7 +189,6 @@ func (p *provider) GetPlacementsFromTopologyPolicies(ctx monitorContext.Context, func Install(p wfTypes.Providers, c client.Client, app *v1beta1.Application, af *appfile.Appfile, apply oamProvider.ComponentApply, healthCheck oamProvider.ComponentHealthCheck, renderer oamProvider.WorkloadRenderer) { prd := &provider{Client: c, app: app, af: af, apply: apply, healthCheck: healthCheck, renderer: renderer} p.Register(ProviderName, map[string]wfTypes.Handler{ - "read-placement-decisions": prd.ReadPlacementDecisions, "make-placement-decisions": prd.MakePlacementDecisions, "patch-application": prd.PatchApplication, "list-clusters": prd.ListClusters, diff --git a/pkg/workflow/providers/multicluster/multicluster_test.go b/pkg/workflow/providers/multicluster/multicluster_test.go index 31398174f..6b9bec4c0 100644 --- a/pkg/workflow/providers/multicluster/multicluster_test.go +++ b/pkg/workflow/providers/multicluster/multicluster_test.go @@ -40,93 +40,6 @@ import ( "github.com/oam-dev/kubevela/pkg/utils/common" ) -func TestReadPlacementDecisions(t *testing.T) { - testCases := []struct { - InputVal map[string]interface{} - OldCluster string - OldNamespace string - ExpectError string - ExpectDecisionExists bool - ExpectCluster string - ExpectNamespace string - }{{ - InputVal: map[string]interface{}{}, - ExpectError: "var(path=inputs.policyName) not exist", - }, { - InputVal: map[string]interface{}{ - "policyName": "example-policy", - }, - ExpectError: "var(path=inputs.envName) not exist", - }, { - InputVal: map[string]interface{}{ - "policyName": "example-policy", - "envName": "example-env", - }, - ExpectError: "", - ExpectDecisionExists: false, - }, { - InputVal: map[string]interface{}{ - "policyName": "example-policy", - "envName": "example-env", - }, - OldCluster: "example-cluster", - OldNamespace: "example-namespace", - ExpectError: "", - ExpectDecisionExists: true, - ExpectCluster: "example-cluster", - ExpectNamespace: "example-namespace", - }} - r := require.New(t) - for _, testCase := range testCases { - cli := fake.NewClientBuilder().WithScheme(common.Scheme).Build() - app := &v1beta1.Application{} - p := &provider{ - Client: cli, - app: app, - } - act := &mock.Action{} - v, err := value.NewValue("", nil, "") - r.NoError(err) - r.NoError(v.FillObject(testCase.InputVal, "inputs")) - if testCase.ExpectCluster != "" || testCase.ExpectNamespace != "" { - pd := v1alpha1.PlacementDecision{ - Cluster: testCase.OldCluster, - Namespace: testCase.OldNamespace, - } - bs, err := json.Marshal(&v1alpha1.EnvBindingStatus{ - Envs: []v1alpha1.EnvStatus{{ - Env: "example-env", - Placements: []v1alpha1.PlacementDecision{pd}, - }}, - }) - r.NoError(err) - app.Status.PolicyStatus = []apicommon.PolicyStatus{{ - Name: "example-policy", - Type: v1alpha1.EnvBindingPolicyType, - Status: &runtime.RawExtension{Raw: bs}, - }} - } - err = p.ReadPlacementDecisions(nil, nil, v, act) - if testCase.ExpectError == "" { - r.NoError(err) - } else { - r.Contains(err.Error(), testCase.ExpectError) - continue - } - outputs, err := v.LookupValue("outputs") - r.NoError(err) - md := map[string][]v1alpha1.PlacementDecision{} - r.NoError(outputs.UnmarshalTo(&md)) - if !testCase.ExpectDecisionExists { - r.Equal(0, len(md)) - } else { - r.Equal(1, len(md["decisions"])) - r.Equal(testCase.ExpectCluster, md["decisions"][0].Cluster) - r.Equal(testCase.ExpectNamespace, md["decisions"][0].Namespace) - } - } -} - func TestMakePlacementDecisions(t *testing.T) { multicluster.ClusterGatewaySecretNamespace = types.DefaultKubeVelaNS testCases := []struct { diff --git a/references/apis/types.go b/references/apis/types.go deleted file mode 100644 index c78f235cc..000000000 --- a/references/apis/types.go +++ /dev/null @@ -1,100 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package apis - -import ( - "k8s.io/apimachinery/pkg/runtime" - - "github.com/oam-dev/kubevela/apis/types" -) - -// Environment contains all info needed in `vela env` command -type Environment struct { - EnvName string `json:"envName" binding:"required,min=1,max=32"` - Namespace string `json:"namespace" binding:"required,min=1,max=32"` - Email string `json:"email"` - Domain string `json:"domain"` - Current string `json:"current,omitempty"` -} - -// EnvironmentBody used for restful API in dashboard server -type EnvironmentBody struct { - Namespace string `json:"namespace" binding:"required,min=1,max=32"` -} - -// Response used for restful API response in dashboard server -type Response struct { - Code int `json:"code"` - Data interface{} `json:"data" swaggerignore:"true"` -} - -// CommonFlag used for restful API flags in dashboard server -type CommonFlag struct { - Name string `json:"name"` - Value string `json:"value"` -} - -// WorkloadMeta store workload metadata for dashboard restful API server -type WorkloadMeta struct { - Name string `json:"name"` - Parameters []types.Parameter `json:"parameters,omitempty"` - Description string `json:"description,omitempty"` -} - -// TraitBody used to present trait which is to be attached and, of which parameters are set -type TraitBody struct { - EnvName string `json:"envName"` - Name string `json:"name"` - Flags []CommonFlag `json:"flags"` - ComponentName string `json:"componentName"` - AppName string `json:"appName,omitempty"` - Staging string `json:"staging,omitempty"` -} - -// ComponentMeta store component info for dashboard restful API server -type ComponentMeta struct { - Name string `json:"name"` - Status string `json:"status,omitempty"` - Workload runtime.RawExtension `json:"workload,omitempty"` - // WorkloadName for `vela comp ls` - WorkloadName string `json:"workloadName,omitempty"` - // TraitNames for `vela comp ls` - TraitNames []string `json:"traitsNames,omitempty"` - App string `json:"app"` - CreatedTime string `json:"createdTime,omitempty"` -} - -// ApplicationMeta used for dashboard restful API server -type ApplicationMeta struct { - Name string `json:"name"` - Status string `json:"status,omitempty"` - Components []ComponentMeta `json:"components,omitempty"` - CreatedTime string `json:"createdTime,omitempty"` -} - -// CapabilityMeta used for dashboard restful API server -type CapabilityMeta struct { - CapabilityName string `json:"capabilityName"` - CapabilityCenterName string `json:"capabilityCenterName,omitempty"` -} - -// RegistryConfig is used to store registry config in file -type RegistryConfig struct { - Name string `json:"name"` - URL string `json:"url"` - Token string `json:"token"` -} diff --git a/references/appfile/modify.go b/references/appfile/modify.go index d40542261..898e00603 100644 --- a/references/appfile/modify.go +++ b/references/appfile/modify.go @@ -17,14 +17,8 @@ limitations under the License. package appfile import ( - "encoding/json" "errors" - "fmt" - "k8s.io/apimachinery/pkg/runtime" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" "github.com/oam-dev/kubevela/references/appfile/api" ) @@ -47,73 +41,3 @@ func SetWorkload(app *api.Application, componentName, workloadType string, workl app.Services[componentName] = s return Validate(app) } - -// SetTrait will set user trait for Appfile -func SetTrait(app *v1beta1.Application, componentName, traitType string, traitData map[string]interface{}) error { - if app == nil { - return errorAppNilPointer - } - if traitData == nil { - traitData = make(map[string]interface{}) - } - data, err := json.Marshal(traitData) - if err != nil { - return fmt.Errorf("fail to marshal trait data %w", err) - } - var foundComp bool - for idx, comp := range app.Spec.Components { - if comp.Name != componentName { - continue - } - foundComp = true - var added bool - for j, tr := range app.Spec.Components[idx].Traits { - if tr.Type != traitType { - continue - } - added = true - if app.Spec.Components[idx].Traits[j].Properties == nil && data != nil { - app.Spec.Components[idx].Traits[j].Properties = &runtime.RawExtension{Raw: data} - } else { - app.Spec.Components[idx].Traits[j].Properties.Raw = data - } - } - if !added { - app.Spec.Components[idx].Traits = append(app.Spec.Components[idx].Traits, common.ApplicationTrait{Type: traitType, Properties: &runtime.RawExtension{Raw: data}}) - } - } - if !foundComp { - return errors.New(componentName + " not found in app " + app.Name) - } - return nil -} - -// RemoveTrait will remove a trait from Appfile -func RemoveTrait(app *api.Application, componentName, traitType string) error { - if app == nil { - return errorAppNilPointer - } - - s, ok := app.Services[componentName] - if !ok { - return nil - } - delete(s, traitType) - return nil -} - -// RemoveComponent will remove component from Application -func RemoveComponent(app *v1beta1.Application, componentName string) error { - if app == nil { - return errorAppNilPointer - } - var newComps []common.ApplicationComponent - for _, comp := range app.Spec.Components { - if comp.Name == componentName { - continue - } - newComps = append(newComps, comp) - } - app.Spec.Components = newComps - return nil -} diff --git a/references/cli/registry.go b/references/cli/registry.go index 0f8045523..6eb4cbfd9 100644 --- a/references/cli/registry.go +++ b/references/cli/registry.go @@ -41,10 +41,16 @@ import ( "github.com/oam-dev/kubevela/pkg/utils/common" "github.com/oam-dev/kubevela/pkg/utils/system" cmdutil "github.com/oam-dev/kubevela/pkg/utils/util" - "github.com/oam-dev/kubevela/references/apis" "github.com/oam-dev/kubevela/references/docgen" ) +// RegistryConfig is used to store registry config in file +type RegistryConfig struct { + Name string `json:"name"` + URL string `json:"url"` + Token string `json:"token"` +} + // NewRegistryCommand Manage Capability Center func NewRegistryCommand(ioStream cmdutil.IOStreams, order string) *cobra.Command { cmd := &cobra.Command{ @@ -150,7 +156,7 @@ func listCapRegistrys(ioStreams cmdutil.IOStreams) error { // addRegistry will add a registry func addRegistry(regName, regURL, regToken string) error { - regConfig := apis.RegistryConfig{ + regConfig := RegistryConfig{ Name: regName, URL: regURL, Token: regToken, } repos, err := ListRegistryConfig() @@ -222,7 +228,7 @@ type GithubRegistry struct { } // NewRegistryFromConfig return Registry interface to get capabilities -func NewRegistryFromConfig(config apis.RegistryConfig) (Registry, error) { +func NewRegistryFromConfig(config RegistryConfig) (Registry, error) { return NewRegistry(context.TODO(), config.Token, config.Name, config.URL) } @@ -273,9 +279,8 @@ func NewRegistry(ctx context.Context, token, registryName string, regURL string) // ListRegistryConfig will get all registry config stored in local // this will return at least one config, which is DefaultRegistry -func ListRegistryConfig() ([]apis.RegistryConfig, error) { - - defaultRegistryConfig := apis.RegistryConfig{Name: DefaultRegistry, URL: "oss://registry.kubevela.net/"} +func ListRegistryConfig() ([]RegistryConfig, error) { + defaultRegistryConfig := RegistryConfig{Name: DefaultRegistry, URL: "oss://registry.kubevela.net/"} config, err := system.GetRepoConfig() if err != nil { return nil, err @@ -283,7 +288,7 @@ func ListRegistryConfig() ([]apis.RegistryConfig, error) { data, err := os.ReadFile(filepath.Clean(config)) if err != nil { if os.IsNotExist(err) { - err := StoreRepos([]apis.RegistryConfig{defaultRegistryConfig}) + err := StoreRepos([]RegistryConfig{defaultRegistryConfig}) if err != nil { return nil, errors.Wrap(err, "error initialize default registry") } @@ -291,7 +296,7 @@ func ListRegistryConfig() ([]apis.RegistryConfig, error) { } return nil, err } - var regConfigs []apis.RegistryConfig + var regConfigs []RegistryConfig if err = yaml.Unmarshal(data, ®Configs); err != nil { return nil, err } @@ -722,7 +727,7 @@ func Parse(addr string) (string, *Content, error) { } // StoreRepos will store registry repo locally -func StoreRepos(registries []apis.RegistryConfig) error { +func StoreRepos(registries []RegistryConfig) error { config, err := system.GetRepoConfig() if err != nil { return err diff --git a/references/cmd/cli/fake/source.go b/references/cmd/cli/fake/source.go deleted file mode 100644 index dc83b1b6f..000000000 --- a/references/cmd/cli/fake/source.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -// FrontendSource is a base64-encoded, gzipped tarball of the default Frontend Static files. -// This whole file will be rewrite at build time. -var FrontendSource string diff --git a/references/common/common.go b/references/common/common.go deleted file mode 100644 index 597916dc4..000000000 --- a/references/common/common.go +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package common diff --git a/references/common/prometheus.go b/references/common/prometheus.go deleted file mode 100644 index f72b53f49..000000000 --- a/references/common/prometheus.go +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package common - -import ( - "context" - - "github.com/oam-dev/kubevela/pkg/utils/util" - - monitoring "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1" - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/pointer" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -// InstallPrometheusInstance will install prometheus instance when the Capability is 'metrics' -func InstallPrometheusInstance(kubecli client.Client) error { - var promIns = monitoring.Prometheus{} - err := kubecli.Get(context.Background(), types.NamespacedName{Namespace: "monitoring", Name: "oam"}, &promIns) - if err == nil { - return nil - } - promIns.Name = "oam" - promIns.Namespace = "monitoring" - promIns.SetLabels(map[string]string{"prometheus": "kubevela"}) - promIns.Spec = monitoring.PrometheusSpec{ - Image: pointer.String("quay.io/prometheus/prometheus:v2.19.2"), - NodeSelector: map[string]string{"kubernetes.io/os": "linux"}, - Replicas: pointer.Int32(1), - ServiceAccountName: "kube-prometheus-stack-prometheus", - SecurityContext: &corev1.PodSecurityContext{ - RunAsUser: pointer.Int64(1000), - RunAsNonRoot: pointer.Bool(true), - FSGroup: pointer.Int64(2000), - }, - ServiceMonitorSelector: &v1.LabelSelector{MatchLabels: map[string]string{"k8s-app": "oam", "controller": "metricsTrait"}}, - ServiceMonitorNamespaceSelector: &v1.LabelSelector{ - MatchLabels: util.OAMLabel, - }, - Version: "v2.19.2", - } - return kubecli.Create(context.Background(), &promIns) -} diff --git a/references/docgen/cluster.go b/references/docgen/cluster.go index c5f618fdf..a64a05136 100644 --- a/references/docgen/cluster.go +++ b/references/docgen/cluster.go @@ -378,12 +378,6 @@ func HandleTemplate(in *runtime.RawExtension, schematic *commontypes.Schematic, tmp.Path = schematic.Terraform.Path return tmp, nil } - if schematic.KUBE != nil { - tmp.Category = types.KubeCategory - tmp.KubeTemplate = schematic.KUBE.Template - tmp.KubeParameter = schematic.KUBE.Parameters - return tmp, nil - } } if tmp.CueTemplateURI != "" { b, err := common.HTTPGetWithOption(context.Background(), tmp.CueTemplateURI, nil) @@ -393,10 +387,6 @@ func HandleTemplate(in *runtime.RawExtension, schematic *commontypes.Schematic, tmp.CueTemplate = string(b) } if tmp.CueTemplate == "" { - if schematic != nil && schematic.HELM != nil { - tmp.Category = types.HelmCategory - return tmp, nil - } return types.Capability{}, errors.New("template not exist in definition") } tmp.Parameters, err = cue.GetParameters(tmp.CueTemplate, pd) diff --git a/references/docgen/cluster_test.go b/references/docgen/cluster_test.go index b54cc72f9..bc7f1ef5f 100644 --- a/references/docgen/cluster_test.go +++ b/references/docgen/cluster_test.go @@ -18,7 +18,6 @@ package docgen import ( "context" - "encoding/json" "os" "path/filepath" "strings" @@ -155,18 +154,8 @@ var _ = Describe("test GetCapabilityByName", func() { defaultNS string cd1 corev1beta1.ComponentDefinition cd2 corev1beta1.ComponentDefinition - cd3 corev1beta1.ComponentDefinition - cd4 corev1beta1.ComponentDefinition - td1 corev1beta1.TraitDefinition - td2 corev1beta1.TraitDefinition - td3 corev1beta1.TraitDefinition component1 string component2 string - component3 string - component4 string - trait1 string - trait2 string - trait3 string ) BeforeEach(func() { c = common.Args{} @@ -176,12 +165,6 @@ var _ = Describe("test GetCapabilityByName", func() { defaultNS = types.DefaultKubeVelaNS component1 = "cd1" component2 = "cd2" - component3 = "cd3" - component4 = "cd4" - - trait1 = "td1" - trait2 = "td2" - trait3 = "td3" By("create namespace") Expect(k8sClient.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: ns}})).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) @@ -191,11 +174,6 @@ var _ = Describe("test GetCapabilityByName", func() { data, _ := os.ReadFile("testdata/componentDef.yaml") yaml.Unmarshal(data, &cd1) yaml.Unmarshal(data, &cd2) - data2, _ := os.ReadFile("testdata/kube-worker.yaml") - yaml.Unmarshal(data2, &cd3) - - helmYaml, _ := os.ReadFile("testdata/helm.yaml") - yaml.Unmarshal(helmYaml, &cd4) cd1.Namespace = ns cd1.Name = component1 @@ -204,38 +182,10 @@ var _ = Describe("test GetCapabilityByName", func() { cd2.Namespace = defaultNS cd2.Name = component2 Expect(k8sClient.Create(ctx, &cd2)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - - cd3.Namespace = ns - cd3.Name = component3 - Expect(k8sClient.Create(ctx, &cd3)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - - cd4.Namespace = ns - cd4.Name = component4 - Expect(k8sClient.Create(ctx, &cd4)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - - By("create TraitDefinition") - data3, _ := os.ReadFile("testdata/svcTraitDef.yaml") - yaml.Unmarshal(data3, &td3) - - td3.DeepCopyInto(&td1) - td3.DeepCopyInto(&td2) - td3.Namespace = ns - td3.Name = trait3 - Expect(k8sClient.Create(ctx, &td3)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - td1.Name = trait1 - td2.Name = trait2 - td1.Namespace = ns - td1.Name = trait1 - td1.SetResourceVersion("") - Expect(k8sClient.Create(ctx, &td1)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - td2.Namespace = defaultNS - td2.Name = trait2 - td2.SetResourceVersion("") - Expect(k8sClient.Create(ctx, &td2)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) }) AfterEach(func() { - for _, obj := range []client.Object{&cd1, &cd2, &cd3, &cd4, &td1, &td2, &td3} { + for _, obj := range []client.Object{&cd1, &cd2} { key := client.ObjectKeyFromObject(obj) Expect(k8sClient.Delete(ctx, obj)).Should(Succeed()) Eventually(func(g Gomega) { @@ -253,36 +203,6 @@ var _ = Describe("test GetCapabilityByName", func() { _, err = GetCapabilityByName(ctx, c, component2, ns, nil) Expect(err).Should(BeNil()) - By("ComponentDefinition is in the default namespace") - cap, err := GetCapabilityByName(ctx, c, component3, ns, nil) - Expect(err).Should(BeNil()) - jsontmp, err := json.Marshal(cap.KubeParameter) - Expect(err).Should(BeNil()) - Expect(string(jsontmp)).Should(ContainSubstring("image")) - Expect(string(jsontmp)).Should(ContainSubstring("spec.template.spec.containers[0].image")) - Expect(string(jsontmp)).Should(ContainSubstring("port")) - Expect(string(jsontmp)).Should(ContainSubstring("the specific container port num which can accept external request.")) - - By("ComponentDefinition's workload type is AutoDetectWorkloadDefinition") - _, err = GetCapabilityByName(ctx, c, component4, ns, nil) - Expect(err).Should(BeNil()) - - By("TraitDefinition is in the current namespace") - _, err = GetCapabilityByName(ctx, c, trait1, ns, nil) - Expect(err).Should(BeNil()) - - By("TraitDefinition is in the default namespace") - _, err = GetCapabilityByName(ctx, c, trait2, ns, nil) - Expect(err).Should(BeNil()) - - By("TraitDefinition is in the default namespace") - cap, err = GetCapabilityByName(ctx, c, trait3, ns, nil) - Expect(err).Should(BeNil()) - jsontmp, err = json.Marshal(cap.KubeParameter) - Expect(err).Should(BeNil()) - Expect(string(jsontmp)).Should(ContainSubstring("targetPort")) - Expect(string(jsontmp)).Should(ContainSubstring("target port num for service provider.")) - By("capability cloud not be found") _, err = GetCapabilityByName(ctx, c, "a-component-definition-not-existed", ns, nil) Expect(err).Should(HaveOccurred()) diff --git a/references/docgen/console.go b/references/docgen/console.go index 29c51de5c..e764bb94c 100644 --- a/references/docgen/console.go +++ b/references/docgen/console.go @@ -150,11 +150,6 @@ func (ref *ConsoleReference) Show(ctx context.Context, c common.Args, ioStreams if err != nil { return err } - case types.HelmCategory, types.KubeCategory: - _, propertyConsole, err = ref.GenerateHelmAndKubeProperties(ctx, capability) - if err != nil { - return err - } default: return fmt.Errorf("unsupport capability category %s", capability.Category) } diff --git a/references/docgen/markdown.go b/references/docgen/markdown.go index 830a4054f..c5db39dc7 100644 --- a/references/docgen/markdown.go +++ b/references/docgen/markdown.go @@ -176,14 +176,6 @@ func (ref *MarkdownReference) GenerateMarkdownForCap(ctx context.Context, c type klog.Warningf("failed to get base resource kinds for %s: %v", c.Name, warnErr) } } - case types.HelmCategory, types.KubeCategory: - properties, _, err := ref.GenerateHelmAndKubeProperties(ctx, &c) - if err != nil { - return "", fmt.Errorf("failed to retrieve `parameters` value from %s with err: %w", c.Name, err) - } - for _, property := range properties { - generatedDoc += ref.getParameterString("###"+property.Name, property.Parameters, types.HelmCategory) - } case types.TerraformCategory: generatedDoc, err = ref.GenerateTerraformCapabilityPropertiesAndOutputs(c) if err != nil { @@ -319,16 +311,6 @@ func (ref *MarkdownReference) getParameterString(tableName string, parameterList tab += fmt.Sprintf(" %s | %s | %s | %t | %s \n", p.Name, ref.prettySentence(p.Usage), ref.formatTableString(p.PrintableType), p.Required, printableDefaultValue) } } - case types.HelmCategory: - for _, p := range parameterList { - printableDefaultValue := ref.getJSONPrintableDefaultValue(p.JSONType, p.Default) - tab += fmt.Sprintf(" %s | %s | %s | %t | %s \n", p.Name, ref.prettySentence(p.Usage), ref.formatTableString(p.PrintableType), p.Required, printableDefaultValue) - } - case types.KubeCategory: - for _, p := range parameterList { - // Kube parameter doesn't have default value - tab += fmt.Sprintf(" %s | %s | %s | %t | %s \n", p.Name, ref.prettySentence(p.Usage), ref.formatTableString(p.PrintableType), p.Required, "") - } case types.TerraformCategory: // Terraform doesn't have default value for _, p := range parameterList { diff --git a/references/docgen/parser.go b/references/docgen/parser.go index a978dc9b0..7a803518c 100644 --- a/references/docgen/parser.go +++ b/references/docgen/parser.go @@ -33,7 +33,6 @@ import ( "github.com/olekukonko/tablewriter" "github.com/pkg/errors" "github.com/rogpeppe/go-internal/modfile" - v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" @@ -49,7 +48,6 @@ import ( "github.com/oam-dev/kubevela/apis/types" "github.com/oam-dev/kubevela/pkg/controller/utils" velacue "github.com/oam-dev/kubevela/pkg/cue" - velaprocess "github.com/oam-dev/kubevela/pkg/cue/process" pkgdef "github.com/oam-dev/kubevela/pkg/definition" pkgUtils "github.com/oam-dev/kubevela/pkg/utils" "github.com/oam-dev/kubevela/pkg/utils/common" @@ -148,11 +146,6 @@ func (ref *ParseReference) prepareConsoleParameter(tableName string, parameterLi table.Append([]string{ref.I18N.Get(p.Name), ref.prettySentence(p.Usage), ref.I18N.Get(p.PrintableType), ref.I18N.Get(strconv.FormatBool(p.Required)), ref.I18N.Get(printableDefaultValue)}) } } - case types.HelmCategory, types.KubeCategory: - for _, p := range parameterList { - printableDefaultValue := ref.getJSONPrintableDefaultValue(p.JSONType, p.Default) - table.Append([]string{ref.I18N.Get(p.Name), ref.prettySentence(p.Usage), ref.I18N.Get(p.PrintableType), ref.I18N.Get(strconv.FormatBool(p.Required)), ref.I18N.Get(printableDefaultValue)}) - } case types.TerraformCategory: // Terraform doesn't have default value for _, p := range parameterList { @@ -432,20 +425,6 @@ func (ref *ParseReference) getCUEPrintableDefaultValue(v interface{}) string { return "" } -func (ref *ParseReference) getJSONPrintableDefaultValue(dataType string, value interface{}) string { - if value != nil { - return strings.TrimSpace(fmt.Sprintf("%v", value)) - } - defaultValueMap := map[string]string{ - "number": "0", - "boolean": "false", - "string": "\"\"", - "object": "{}", - "array": "[]", - } - return defaultValueMap[dataType] -} - // CommonReference contains parameters info of HelmCategory and KubuCategory type capability at present type CommonReference struct { Name string @@ -459,40 +438,6 @@ type CommonSchema struct { Schemas *openapi3.Schema } -// GenerateHelmAndKubeProperties get all properties of a Helm/Kube Category type capability -func (ref *ParseReference) GenerateHelmAndKubeProperties(ctx context.Context, capability *types.Capability) ([]CommonReference, []ConsoleReference, error) { - cmName := fmt.Sprintf("%s%s", types.CapabilityConfigMapNamePrefix, capability.Name) - switch capability.Type { - case types.TypeComponentDefinition: - cmName = fmt.Sprintf("component-%s", cmName) - case types.TypeTrait: - cmName = fmt.Sprintf("trait-%s", cmName) - default: - } - var cm v1.ConfigMap - commonRefs = make([]CommonReference, 0) - if err := ref.Client.Get(ctx, client.ObjectKey{Namespace: capability.Namespace, Name: cmName}, &cm); err != nil { - return nil, nil, err - } - data, ok := cm.Data[types.OpenapiV3JSONSchema] - if !ok { - return nil, nil, errors.Errorf("configMap doesn't have openapi-v3-json-schema data") - } - parameterJSON := fmt.Sprintf(BaseOpenAPIV3Template, data) - swagger, err := openapi3.NewLoader().LoadFromData(json.RawMessage(parameterJSON)) - if err != nil { - return nil, nil, err - } - parameters := swagger.Components.Schemas[velaprocess.ParameterFieldName].Value - WalkParameterSchema(parameters, Specification, 0) - - var consoleRefs []ConsoleReference - for _, item := range commonRefs { - consoleRefs = append(consoleRefs, ref.prepareConsoleParameter(item.Name, item.Parameters, types.HelmCategory)) - } - return commonRefs, consoleRefs, err -} - // GenerateTerraformCapabilityProperties generates Capability properties for Terraform ComponentDefinition func (ref *ParseReference) parseTerraformCapabilityParameters(capability types.Capability) ([]ReferenceParameterTable, []ReferenceParameterTable, error) { var ( diff --git a/references/docgen/testdata/kube-worker.yaml b/references/docgen/testdata/kube-worker.yaml deleted file mode 100644 index 9bc2e150d..000000000 --- a/references/docgen/testdata/kube-worker.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: ComponentDefinition -metadata: - name: kube-worker - namespace: default -spec: - workload: - definition: - apiVersion: apps/v1 - kind: Deployment - schematic: - kube: - template: - apiVersion: apps/v1 - kind: Deployment - spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - ports: - - containerPort: 80 - parameters: - - name: image - required: true - type: string - fieldPaths: - - "spec.template.spec.containers[0].image" - - name: port - required: true - type: string - fieldPaths: - - "spec.template.spec.containers[0].ports[0].containerPort" - description: "the specific container port num which can accept external request." diff --git a/references/docgen/testdata/svcTraitDef.yaml b/references/docgen/testdata/svcTraitDef.yaml deleted file mode 100644 index 900a91eb5..000000000 --- a/references/docgen/testdata/svcTraitDef.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: TraitDefinition -metadata: - name: service-kube - namespace: default -spec: - appliesToWorkloads: - - webservice - - worker - - backend - podDisruptive: true - schematic: - kube: - template: - apiVersion: v1 - kind: Service - metadata: - name: my-service - spec: - ports: - - protocol: TCP - port: 80 - targetPort: 9376 - parameters: - - name: targetPort - required: true - type: number - fieldPaths: - - "spec.template.spec.ports[0].targetPort" - description: "target port num for service provider." diff --git a/test/e2e-multicluster-test/multicluster_test.go b/test/e2e-multicluster-test/multicluster_test.go index 1dc7bebf3..31a70a56e 100644 --- a/test/e2e-multicluster-test/multicluster_test.go +++ b/test/e2e-multicluster-test/multicluster_test.go @@ -125,35 +125,6 @@ var _ = Describe("Test multicluster scenario", func() { Expect(out).Should(ContainSubstring("alias-worker")) }) - It("Test detach cluster with application use", func() { - const testClusterName = "test-cluster" - _, err := execCommand("cluster", "join", "/tmp/worker.kubeconfig", "--name", testClusterName) - Expect(err).Should(Succeed()) - app := &v1beta1.Application{} - bs, err := os.ReadFile("./testdata/app/example-lite-envbinding-app.yaml") - Expect(err).Should(Succeed()) - appYaml := strings.ReplaceAll(string(bs), "TEST_CLUSTER_NAME", testClusterName) - Expect(yaml.Unmarshal([]byte(appYaml), app)).Should(Succeed()) - ctx := context.Background() - err = k8sClient.Create(ctx, app) - Expect(err).Should(Succeed()) - namespacedName := client.ObjectKeyFromObject(app) - Eventually(func(g Gomega) { - g.Expect(k8sClient.Get(ctx, namespacedName, app)).Should(Succeed()) - g.Expect(len(app.Status.PolicyStatus)).ShouldNot(Equal(0)) - }, 30*time.Second).Should(Succeed()) - _, err = execCommand("cluster", "detach", testClusterName) - Expect(err).ShouldNot(Succeed()) - err = k8sClient.Delete(ctx, app) - Expect(err).Should(Succeed()) - Eventually(func(g Gomega) { - err := k8sClient.Get(ctx, namespacedName, app) - g.Expect(kerrors.IsNotFound(err)).Should(BeTrue()) - }, 30*time.Second).Should(Succeed()) - _, err = execCommand("cluster", "detach", testClusterName) - Expect(err).Should(Succeed()) - }) - It("Test generate service account kubeconfig", func() { _, workerCtx := initializeContext() By("create service account kubeconfig in worker cluster") @@ -234,145 +205,6 @@ var _ = Describe("Test multicluster scenario", func() { cleanUpNamespace(hubCtx, workerCtx, prodNamespace) }) - It("Test create EnvBinding Application", func() { - // This test is going to cover multiple functions, including - // 1. Multiple stage deployment for three environment - // 2. Namespace selector. - // 3. A special cluster: local cluster - // 4. Component selector. - By("apply application") - app := &v1beta1.Application{} - bs, err := os.ReadFile("./testdata/app/example-envbinding-app.yaml") - Expect(err).Should(Succeed()) - appYaml := strings.ReplaceAll(strings.ReplaceAll(string(bs), "TEST_NAMESPACE", testNamespace), "PROD_NAMESPACE", prodNamespace) - Expect(yaml.Unmarshal([]byte(appYaml), app)).Should(Succeed()) - app.SetNamespace(namespace) - err = k8sClient.Create(hubCtx, app) - Expect(err).Should(Succeed()) - var hubDeployName string - By("wait application resource ready") - Eventually(func(g Gomega) { - // check deployments in clusters - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(1)) - hubDeployName = deploys.Items[0].Name - deploys = &appsv1.DeploymentList{} - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(namespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(2)) - deploys = &appsv1.DeploymentList{} - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(prodNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(2)) - }, time.Minute).Should(Succeed()) - Expect(hubDeployName).Should(Equal("data-worker")) - // delete application - By("delete application") - Expect(k8sClient.Delete(hubCtx, app)).Should(Succeed()) - By("wait application resource delete") - Eventually(func(g Gomega) { - // check deployments in clusters - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(namespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(0)) - deploys = &appsv1.DeploymentList{} - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(namespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(0)) - }, time.Minute).Should(Succeed()) - }) - - It("Test create EnvBinding Application with trait disable and without workflow, delete env, change env and add env", func() { - // This test is going to cover multiple functions, including - // 1. disable trait - // 2. auto deploy2env workflow - // 3. delete env - // 4. change cluster in env - // 5. add env - By("apply application") - app := &v1beta1.Application{} - bs, err := os.ReadFile("./testdata/app/example-envbinding-app-wo-workflow.yaml") - Expect(err).Should(Succeed()) - appYaml := strings.ReplaceAll(string(bs), "TEST_NAMESPACE", testNamespace) - Expect(yaml.Unmarshal([]byte(appYaml), app)).Should(Succeed()) - app.SetNamespace(testNamespace) - namespacedName := client.ObjectKeyFromObject(app) - err = k8sClient.Create(hubCtx, app) - Expect(err).Should(Succeed()) - By("wait application resource ready") - Eventually(func(g Gomega) { - // check deployments in clusters - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(1)) - g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(2)) - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(1)) - g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(1)) - }, time.Minute).Should(Succeed()) - By("test delete env") - spec := &v1alpha1.EnvBindingSpec{} - Expect(json.Unmarshal(app.Spec.Policies[0].Properties.Raw, spec)).Should(Succeed()) - envs := spec.Envs - bs, err = json.Marshal(&v1alpha1.EnvBindingSpec{Envs: []v1alpha1.EnvConfig{envs[0]}}) - Expect(err).Should(Succeed()) - Eventually(func(g Gomega) { - g.Expect(k8sClient.Get(hubCtx, namespacedName, app)).Should(Succeed()) - app.Spec.Policies[0].Properties.Raw = bs - g.Expect(k8sClient.Update(hubCtx, app)).Should(Succeed()) - }, 15*time.Second).Should(Succeed()) - Eventually(func(g Gomega) { - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(0)) - }, time.Minute).Should(Succeed()) - By("test change env cluster name") - envs[0].Placement.ClusterSelector.Name = WorkerClusterName - bs, err = json.Marshal(&v1alpha1.EnvBindingSpec{Envs: []v1alpha1.EnvConfig{envs[0]}}) - Expect(err).Should(Succeed()) - Eventually(func(g Gomega) { - g.Expect(k8sClient.Get(hubCtx, namespacedName, app)).Should(Succeed()) - app.Spec.Policies[0].Properties.Raw = bs - g.Expect(k8sClient.Update(hubCtx, app)).Should(Succeed()) - }, 15*time.Second).Should(Succeed()) - Eventually(func(g Gomega) { - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(0)) - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(1)) - }, time.Minute).Should(Succeed()) - By("test add env") - envs[1].Placement.ClusterSelector.Name = multicluster.ClusterLocalName - bs, err = json.Marshal(&v1alpha1.EnvBindingSpec{Envs: envs}) - Expect(err).Should(Succeed()) - Eventually(func(g Gomega) { - g.Expect(k8sClient.Get(hubCtx, namespacedName, app)).Should(Succeed()) - app.Spec.Policies[0].Properties.Raw = bs - g.Expect(k8sClient.Update(hubCtx, app)).Should(Succeed()) - }, 15*time.Second).Should(Succeed()) - Eventually(func(g Gomega) { - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(1)) - g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(1)) - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(1)) - g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(2)) - }, time.Minute).Should(Succeed()) - // delete application - By("delete application") - Expect(k8sClient.Delete(hubCtx, app)).Should(Succeed()) - By("wait application resource delete") - Eventually(func(g Gomega) { - // check deployments in clusters - deploys := &appsv1.DeploymentList{} - g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(0)) - deploys = &appsv1.DeploymentList{} - g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed()) - g.Expect(len(deploys.Items)).Should(Equal(0)) - }, time.Minute).Should(Succeed()) - }) - It("Test deploy multi-cluster application with target", func() { By("apply application") app := &v1beta1.Application{ diff --git a/test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml b/test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml deleted file mode 100644 index f6c49c574..000000000 --- a/test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Application -metadata: - name: example-app - namespace: TEST_NAMESPACE # to be replaced -spec: - components: - - name: hello-world-server - type: webservice - properties: - image: crccheck/hello-world - ports: - - port: 8000 - expose: true - traits: - - type: scaler - properties: - replicas: 2 - policies: - - name: example-multi-env-policy - type: env-binding - properties: - envs: - - name: test - placement: # selecting the cluster to deploy to - clusterSelector: - name: local - - - name: staging - placement: # selecting the cluster to deploy to - clusterSelector: - name: cluster-worker - patch: - components: - - name: hello-world-server - type: webservice - traits: - - type: scaler - disable: true - diff --git a/test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml b/test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml deleted file mode 100644 index b102f6d3b..000000000 --- a/test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Application -metadata: - name: example-app - namespace: default -spec: - components: - - name: hello-world-server - type: webservice - properties: - image: crccheck/hello-world - ports: - - port: 8000 - expose: true - traits: - - type: scaler - properties: - replicas: 1 - - name: data-worker - type: worker - properties: - image: busybox - cmd: - - sleep - - '1000000' - policies: - - name: example-multi-env-policy - type: env-binding - properties: - envs: - - name: test - placement: # selecting the namespace (in local cluster) to deploy to - namespaceSelector: - name: TEST_NAMESPACE - selector: - components: - - data-worker - - - name: staging - placement: # selecting the cluster to deploy to - clusterSelector: - name: cluster-worker - - - name: prod - placement: # selecting both namespace and cluster to deploy to - clusterSelector: - name: cluster-worker - namespaceSelector: - name: PROD_NAMESPACE - patch: # overlay patch on above components - components: - - name: hello-world-server - type: webservice - traits: - - type: scaler - properties: - replicas: 3 - - workflow: - steps: - # deploy to test env - - name: deploy-test - type: deploy2env - properties: - policy: example-multi-env-policy - env: test - - # deploy to staging env - - name: deploy-staging - type: deploy2env - properties: - policy: example-multi-env-policy - env: staging - - # deploy to prod env - - name: deploy-prod - type: deploy2env - properties: - policy: example-multi-env-policy - env: prod diff --git a/test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml b/test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml deleted file mode 100644 index 3e4012284..000000000 --- a/test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Application -metadata: - name: example-lite-app - namespace: default -spec: - components: - - name: data-worker - type: worker - properties: - image: busybox - cmd: - - sleep - - '1000000' - policies: - - name: example-multi-env-policy - type: env-binding - properties: - envs: - - name: test - placement: - clusterSelector: - name: TEST_CLUSTER_NAME - - workflow: - steps: - # deploy to test env - - name: deploy-test - type: deploy2env - properties: - policy: example-multi-env-policy - env: test diff --git a/test/e2e-test/definition_revision_test.go b/test/e2e-test/definition_revision_test.go index 8d3297fc5..a4acde59f 100644 --- a/test/e2e-test/definition_revision_test.go +++ b/test/e2e-test/definition_revision_test.go @@ -28,10 +28,7 @@ import ( batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/yaml" "github.com/oam-dev/kubevela/apis/core.oam.dev/common" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" @@ -352,339 +349,6 @@ var _ = Describe("Test application of the specified definition version", func() }, 30*time.Second, 3*time.Second).Should(Succeed()) }) - PIt("Test deploy application which containing helm module", func() { - var ( - appName = "test-helm" - compName = "worker" - ) - - helmworkerV1 := HELMWorker.DeepCopy() - helmworkerV1.SetNamespace(namespace) - helmworkerV1.Spec.Workload.Definition = common.WorkloadGVK{ - APIVersion: "batch/v1beta1", - Kind: "CronJob", - } - helmworkerV1.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.1.4", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://stefanprodan.github.io/podinfo", - }), - }, - } - Expect(k8sClient.Create(ctx, helmworkerV1)).Should(Succeed()) - - helmworkerV1DefRev := new(v1beta1.DefinitionRevision) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: "helm-worker-v1", Namespace: namespace}, helmworkerV1DefRev) - }, 15*time.Second, time.Second).Should(BeNil()) - - helmworkerV2 := new(v1beta1.ComponentDefinition) - Eventually(func() error { - err := k8sClient.Get(ctx, client.ObjectKey{Name: "helm-worker", Namespace: namespace}, helmworkerV2) - if err != nil { - return err - } - helmworkerV2.Spec.Workload.Definition = common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - } - helmworkerV2.Spec.Workload.Type = "deployments.apps" - helmworkerV2.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.2.0", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://stefanprodan.github.io/podinfo", - }), - }, - } - return k8sClient.Update(ctx, helmworkerV2) - }, 15*time.Second, time.Second).Should(BeNil()) - - helmworkerV2DefRev := new(v1beta1.DefinitionRevision) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: "helm-worker-v2", Namespace: namespace}, helmworkerV2DefRev) - }, 15*time.Second, time.Second).Should(BeNil()) - - app := v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: "helm-worker", - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }), - Traits: []common.ApplicationTrait{ - { - Type: "label", - Properties: util.Object2RawExtension(map[string]interface{}{ - "labels": map[string]string{ - "hello": "world", - }, - }), - }, - }, - }, - }, - }, - } - - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, app.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully by Helm") - deploy := &appsv1.Deployment{} - deployName := fmt.Sprintf("%s-%s-podinfo", appName, compName) - Eventually(func() bool { - err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - if err != nil { - return false - } - DeployLabels := deploy.GetLabels() - return DeployLabels["helm.sh/chart"] == "podinfo-5.2.0" - }, 120*time.Second, 5*time.Second).Should(BeTrue()) - - By("Verify trait is applied to the workload") - Eventually(func() bool { - deploy := &appsv1.Deployment{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil { - return false - } - By("Verify patch trait is applied") - templateLabels := deploy.GetLabels() - return templateLabels["hello"] == "world" - }, 200*time.Second, 10*time.Second).Should(BeTrue()) - - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: "helm-worker@v1", - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }), - }, - }, - }, - } - - By("Create application") - Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed()) - - By("Verify the workload(deployment) is update successfully by Helm") - deploy = &appsv1.Deployment{} - Eventually(func() bool { - err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - if err != nil { - return false - } - DeployLabels := deploy.GetLabels() - return DeployLabels["helm.sh/chart"] != "podinfo-5.1.4" - }, 120*time.Second, 5*time.Second).Should(BeTrue()) - }) - - It("Test deploy application which containing kube module", func() { - var ( - appName = "test-kube-app" - compName = "worker" - ) - - kubeworkerV1 := KUBEWorker.DeepCopy() - kubeworkerV1.Spec.Workload.Definition = common.WorkloadGVK{ - APIVersion: "apps/v1", - Kind: "Deployment", - } - kubeworkerV1.Spec.Schematic = &common.Schematic{ - KUBE: &common.Kube{ - Template: generateTemplate(KUBEWorkerV1Template), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - Required: pointer.Bool(true), - Description: pointer.String("test description"), - }, - }, - }, - } - kubeworkerV1.SetNamespace(namespace) - Expect(k8sClient.Create(ctx, kubeworkerV1)).Should(Succeed()) - - kubeworkerV1DefRev := new(v1beta1.DefinitionRevision) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: "kube-worker-v1", Namespace: namespace}, kubeworkerV1DefRev) - }, 15*time.Second, time.Second).Should(BeNil()) - - kubeworkerV2 := new(v1beta1.ComponentDefinition) - Eventually(func() error { - err := k8sClient.Get(ctx, client.ObjectKey{Name: "kube-worker", Namespace: namespace}, kubeworkerV2) - if err != nil { - return err - } - kubeworkerV2.Spec.Workload.Definition = common.WorkloadGVK{ - APIVersion: "batch/v1", - Kind: "Job", - } - kubeworkerV2.Spec.Workload.Type = "jobs.batch" - kubeworkerV2.Spec.Schematic = &common.Schematic{ - KUBE: &common.Kube{ - Template: generateTemplate(KUBEWorkerV2Template), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - Required: pointer.Bool(true), - Description: pointer.String("test description"), - }, - }, - }, - } - return k8sClient.Update(ctx, kubeworkerV2) - }, 15*time.Second, time.Second).Should(BeNil()) - - kubeworkerV2DefRev := new(v1beta1.DefinitionRevision) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: "kube-worker-v2", Namespace: namespace}, kubeworkerV2DefRev) - }, 15*time.Second, time.Second).Should(BeNil()) - - app := v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: "kube-worker", - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": "busybox", - }), - Traits: []common.ApplicationTrait{ - { - Type: "label", - Properties: util.Object2RawExtension(map[string]interface{}{ - "labels": map[string]string{ - "hello": "world", - }, - }), - }, - }, - }, - }, - }, - } - - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, app.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(job) is created successfully") - job := &batchv1.Job{} - jobName := compName - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: jobName, Namespace: namespace}, job) - }, 30*time.Second, 3*time.Second).Should(Succeed()) - - By("Verify trait is applied to the workload") - Labels := job.GetLabels() - Expect(Labels["hello"]).Should(Equal("world")) - - By("Update Application and Specify the Definition version in Application") - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: "kube-worker@v1", - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": "nginx", - }), - Traits: []common.ApplicationTrait{ - { - Type: "label", - Properties: util.Object2RawExtension(map[string]interface{}{ - "labels": map[string]string{ - "hello": "kubevela", - }, - }), - }, - }, - }, - }, - }, - } - Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully") - deploy := &appsv1.Deployment{} - deployName := compName - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - }, 30*time.Second, 3*time.Second).Should(Succeed()) - - By("Verify trait is applied to the workload") - webserviceV1Labels := deploy.GetLabels() - Expect(webserviceV1Labels["hello"]).Should(Equal("kubevela")) - - By("Application specifies the wrong version of the Definition, it will raise an error") - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: "kube-worker@a1", - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": "nginx", - }), - }, - }, - }, - } - Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(HaveOccurred()) - }) - // refer to https://github.com/oam-dev/kubevela/discussions/1810#discussioncomment-914295 It("Test k8s resources created by application whether with correct label", func() { var ( @@ -892,11 +556,6 @@ var exposeWithNoTemplate = &v1beta1.TraitDefinition{ }, } -func generateTemplate(template string) runtime.RawExtension { - b, _ := yaml.YAMLToJSON([]byte(template)) - return runtime.RawExtension{Raw: b} -} - var webServiceV1Template = `output: { apiVersion: "apps/v1" kind: "Deployment" diff --git a/test/e2e-test/helm_app_test.go b/test/e2e-test/helm_app_test.go deleted file mode 100644 index d335a3424..000000000 --- a/test/e2e-test/helm_app_test.go +++ /dev/null @@ -1,387 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package controllers_test - -import ( - "context" - "errors" - "fmt" - "strings" - "time" - - "github.com/oam-dev/kubevela/apis/types" - - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" - "github.com/oam-dev/kubevela/pkg/oam/util" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" -) - -var _ = Describe("Test application containing helm module", func() { - ctx := context.Background() - var ( - appName = "test-app" - compName = "test-comp" - cdName = "webapp-chart" - wdName = "webapp-chart-wd" - tdName = "virtualgroup" - ) - var namespace string - var app v1beta1.Application - var ns corev1.Namespace - - BeforeEach(func() { - namespace = randomNamespaceName("helm-e2e-test") - ns = corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}} - Eventually( - func() error { - return k8sClient.Create(ctx, &ns) - }, - time.Second*3, time.Millisecond*300).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - - cd := v1beta1.ComponentDefinition{} - cd.SetName(cdName) - cd.SetNamespace(namespace) - cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"} - cd.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.1.4", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://charts.kubevela.net/example/", - }), - }, - } - Expect(k8sClient.Create(ctx, &cd)).Should(Succeed()) - - By("Install a patch trait used to test CUE module") - td := v1beta1.TraitDefinition{} - td.SetName(tdName) - td.SetNamespace(namespace) - td.Spec.AppliesToWorkloads = []string{"deployments.apps"} - td.Spec.Schematic = &common.Schematic{ - CUE: &common.CUE{ - Template: `patch: { - spec: template: { - metadata: labels: { - if parameter.type == "namespace" { - "app.namespace.virtual.group": parameter.group - } - if parameter.type == "cluster" { - "app.cluster.virtual.group": parameter.group - } - } - } - } - parameter: { - group: *"default" | string - type: *"namespace" | string - }`, - }, - } - Expect(k8sClient.Create(ctx, &td)).Should(Succeed()) - - By("Add 'deployments.apps' to scaler's appliesToWorkloads") - scalerTd := v1beta1.TraitDefinition{} - Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed()) - scalerTd.Spec.AppliesToWorkloads = []string{"deployments.apps", "webservice", "worker"} - scalerTd.SetResourceVersion("") - Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed()) - }) - - AfterEach(func() { - By("Clean up resources after a test") - - k8sClient.DeleteAllOf(ctx, &v1beta1.Application{}, client.InNamespace(namespace)) - k8sClient.DeleteAllOf(ctx, &v1beta1.ComponentDefinition{}, client.InNamespace(namespace)) - k8sClient.DeleteAllOf(ctx, &v1beta1.WorkloadDefinition{}, client.InNamespace(namespace)) - k8sClient.DeleteAllOf(ctx, &v1beta1.TraitDefinition{}, client.InNamespace(namespace)) - By(fmt.Sprintf("Delete the entire namespaceName %s", ns.Name)) - Expect(k8sClient.Delete(ctx, &ns, client.PropagationPolicy(metav1.DeletePropagationForeground))).Should(Succeed()) - By("Remove 'deployments.apps' from scaler's appliesToWorkloads") - scalerTd := v1beta1.TraitDefinition{} - Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed()) - scalerTd.Spec.AppliesToWorkloads = []string{"webservice", "worker"} - scalerTd.SetResourceVersion("") - Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed()) - }) - - PIt("Test deploy an application containing helm module", func() { - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: cdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }), - Traits: []common.ApplicationTrait{ - { - Type: "scaler", - Properties: util.Object2RawExtension(map[string]interface{}{ - "replicas": 0, - }), - }, - { - Type: tdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "group": "my-group", - "type": "cluster", - }), - }, - }, - }, - }, - }, - } - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, app.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully by Helm") - deploy := &appsv1.Deployment{} - deployName := fmt.Sprintf("%s-%s-podinfo", appName, compName) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - }, 120*time.Second, 5*time.Second).Should(Succeed()) - - By("Verify two traits are applied to the workload") - Eventually(func() bool { - deploy := &appsv1.Deployment{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil { - return false - } - By("Verify patch trait is applied") - templateLabels := deploy.Spec.Template.Labels - if templateLabels["app.cluster.virtual.group"] != "my-group" { - return false - } - By("Verify scaler trait is applied") - if *deploy.Spec.Replicas != 0 { - return false - } - By("Verify application's settings override chart default values") - // the default value of 'image.tag' is 5.1.4 in the chart, but settings reset it to 5.1.2 - return strings.HasSuffix(deploy.Spec.Template.Spec.Containers[0].Image, "5.1.2") - // it takes pretty long time to fetch chart and install the Helm release - }, 120*time.Second, 10*time.Second).Should(BeTrue()) - - By("Update the application") - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: cdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.3", // change 5.1.2 => 5.1.3 - }, - }), - Traits: []common.ApplicationTrait{ - { - Type: "scaler", - Properties: util.Object2RawExtension(map[string]interface{}{ - "replicas": 1, // change 0 => 1 - }), - }, - { - Type: tdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "group": "my-group-0", // change my-group => my-group-0 - "type": "cluster", - }), - }, - }, - }, - }, - }, - } - Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed()) - - By("Verify the changes are applied to the workload") - Eventually(func() bool { - deploy := &appsv1.Deployment{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil { - return false - } - By("Verify new patch trait is applied") - templateLabels := deploy.Spec.Template.Labels - if templateLabels["app.cluster.virtual.group"] != "my-group-0" { - return false - } - By("Verify new scaler trait is applied") - if *deploy.Spec.Replicas != 1 { - return false - } - By("Verify new application's settings override chart default values") - return strings.HasSuffix(deploy.Spec.Template.Spec.Containers[0].Image, "5.1.3") - }, 120*time.Second, 10*time.Second).Should(BeTrue()) - }) - - It("Test deploy an application containing helm module defined by workloadDefinition", func() { - - workloaddef := v1beta1.WorkloadDefinition{} - workloaddef.SetName(wdName) - workloaddef.SetNamespace(namespace) - workloaddef.Spec.Reference = common.DefinitionReference{Name: "deployments.apps", Version: "v1"} - workloaddef.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.1.4", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://charts.kubevela.net/example/", - }), - }, - } - By("register workloadDefinition") - Expect(k8sClient.Create(ctx, &workloaddef)).Should(Succeed()) - - appTestName := "test-app-refer-to-workloaddef" - appTest := v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appTestName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: wdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }), - }, - }, - }, - } - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, appTest.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully by Helm") - deploy := &appsv1.Deployment{} - deployName := fmt.Sprintf("%s-%s-podinfo", appTestName, compName) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - }, 240*time.Second, 5*time.Second).Should(Succeed()) - }) - - It("Test deploy an application containing helm module and the component refer to autodetect type workload", func() { - cd := v1beta1.ComponentDefinition{} - cd.SetName("podinfo") - cd.SetNamespace(namespace) - cd.Spec.Schematic = &common.Schematic{ - HELM: &common.Helm{ - Release: *util.Object2RawExtension(map[string]interface{}{ - "chart": map[string]interface{}{ - "spec": map[string]interface{}{ - "chart": "podinfo", - "version": "5.1.4", - }, - }, - }), - Repository: *util.Object2RawExtension(map[string]interface{}{ - "url": "https://charts.kubevela.net/example/", - }), - }, - } - cd.Spec.Workload.Type = types.AutoDetectWorkloadDefinition - Expect(k8sClient.Create(ctx, &cd)).Should(Succeed()) - - newAppName := "test-autodetect" - newApp := v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: newAppName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: "podinfo", - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": map[string]interface{}{ - "tag": "5.1.2", - }, - }), - }, - }, - }, - } - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, newApp.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully by Helm") - deploy := &appsv1.Deployment{} - deployName := fmt.Sprintf("%s-%s-podinfo", newAppName, compName) - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - }, 120*time.Second, 5*time.Second).Should(Succeed()) - }) - - It("Test store JSON schema of Helm Chart in ConfigMap", func() { - By("Get the ConfigMap") - cmName := fmt.Sprintf("component-schema-%s", cdName) - Eventually(func() error { - cm := &corev1.ConfigMap{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: cmName, Namespace: namespace}, cm); err != nil { - return err - } - if cm.Data[types.OpenapiV3JSONSchema] == "" { - return errors.New("json schema is not found in the ConfigMap") - } - return nil - }, 60*time.Second, 500*time.Millisecond).Should(Succeed()) - }) -}) diff --git a/test/e2e-test/kube_app_test.go b/test/e2e-test/kube_app_test.go deleted file mode 100644 index 668dc468f..000000000 --- a/test/e2e-test/kube_app_test.go +++ /dev/null @@ -1,357 +0,0 @@ -/* -Copyright 2021 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package controllers_test - -import ( - "context" - "errors" - "fmt" - "time" - - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/utils/pointer" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/yaml" - - "github.com/oam-dev/kubevela/apis/core.oam.dev/common" - "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" - "github.com/oam-dev/kubevela/apis/types" - "github.com/oam-dev/kubevela/pkg/oam/util" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" -) - -var _ = Describe("Test application containing kube module", func() { - ctx := context.Background() - var ( - appName = "test-app" - compName = "test-comp" - cdName = "test-kube-worker" - wdName = "test-kube-worker-wd" - tdName = "test-virtualgroup" - ) - var namespace string - var app v1beta1.Application - var ns corev1.Namespace - - var testTemplate = func() runtime.RawExtension { - yamlStr := `apiVersion: apps/v1 -kind: Deployment -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - ports: - - containerPort: 80 ` - b, _ := yaml.YAMLToJSON([]byte(yamlStr)) - return runtime.RawExtension{Raw: b} - } - - BeforeEach(func() { - namespace = randomNamespaceName("kube-e2e-test") - ns = corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}} - Eventually( - func() error { - return k8sClient.Create(ctx, &ns) - }, - time.Second*3, time.Millisecond*300).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) - - cd := v1beta1.ComponentDefinition{} - cd.SetName(cdName) - cd.SetNamespace(namespace) - cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"} - cd.Spec.Schematic = &common.Schematic{ - KUBE: &common.Kube{ - Template: testTemplate(), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - Required: pointer.Bool(true), - Description: pointer.String("test description"), - }, - }, - }, - } - Expect(k8sClient.Create(ctx, &cd)).Should(Succeed()) - - By("Install a patch trait used to test CUE module") - td := v1beta1.TraitDefinition{} - td.SetName(tdName) - td.SetNamespace(namespace) - td.Spec.AppliesToWorkloads = []string{"deployments.apps"} - td.Spec.Schematic = &common.Schematic{ - CUE: &common.CUE{ - Template: `patch: { - spec: template: { - metadata: labels: { - if parameter.type == "namespace" { - "app.namespace.virtual.group": parameter.group - } - if parameter.type == "cluster" { - "app.cluster.virtual.group": parameter.group - } - } - } - } - parameter: { - group: *"default" | string - type: *"namespace" | string - }`, - }, - } - Expect(k8sClient.Create(ctx, &td)).Should(Succeed()) - - By("Verify ComponentDefinition and TraitDefinition are created successfully") - Eventually(func() error { - if err := k8sClient.Get(ctx, client.ObjectKey{Name: cdName, Namespace: namespace}, &v1beta1.ComponentDefinition{}); err != nil { - return err - } - if err := k8sClient.Get(ctx, client.ObjectKey{Name: tdName, Namespace: namespace}, &v1beta1.TraitDefinition{}); err != nil { - return err - } - return nil - }, 20*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Add 'deployments.apps' to scaler's appliesToWorkloads") - scalerTd := v1beta1.TraitDefinition{} - Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed()) - scalerTd.Spec.AppliesToWorkloads = []string{"deployments.apps", "webservice", "worker"} - scalerTd.SetResourceVersion("") - Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed()) - }) - - AfterEach(func() { - By("Clean up resources after a test") - k8sClient.DeleteAllOf(ctx, &v1beta1.Application{}, client.InNamespace(namespace)) - k8sClient.DeleteAllOf(ctx, &v1beta1.ComponentDefinition{}, client.InNamespace(namespace)) - k8sClient.DeleteAllOf(ctx, &v1beta1.WorkloadDefinition{}, client.InNamespace(namespace)) - k8sClient.DeleteAllOf(ctx, &v1beta1.TraitDefinition{}, client.InNamespace(namespace)) - By(fmt.Sprintf("Delete the entire namespaceName %s", ns.Name)) - Expect(k8sClient.Delete(ctx, &ns, client.PropagationPolicy(metav1.DeletePropagationForeground))).Should(Succeed()) - - By("Remove 'deployments.apps' from scaler's appliesToWorkloads") - scalerTd := v1beta1.TraitDefinition{} - Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed()) - scalerTd.Spec.AppliesToWorkloads = []string{"webservice", "worker"} - scalerTd.SetResourceVersion("") - Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed()) - }) - - It("Test deploy an application containing kube module", func() { - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: cdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": "nginx:1.14.0", - }), - Traits: []common.ApplicationTrait{ - { - Type: "scaler", - Properties: util.Object2RawExtension(map[string]interface{}{ - "replicas": 2, - }), - }, - { - Type: tdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "group": "my-group", - "type": "cluster", - }), - }, - }, - }, - }, - }, - } - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, app.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully") - deploy := &appsv1.Deployment{} - deployName := compName - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - }, 30*time.Second, 3*time.Second).Should(Succeed()) - - By("Verify two traits are applied to the workload") - Eventually(func() bool { - deploy := &appsv1.Deployment{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil { - return false - } - By("Verify patch trait is applied") - templateLabels := deploy.Spec.Template.Labels - if templateLabels["app.cluster.virtual.group"] != "my-group" { - return false - } - By("Verify scaler trait is applied") - if *deploy.Spec.Replicas != 2 { - return false - } - By("Verify parameter is applied") - return deploy.Spec.Template.Spec.Containers[0].Image == "nginx:1.14.0" - }, 15*time.Second, 3*time.Second).Should(BeTrue()) - - By("Update the application") - app = v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: cdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": "nginx:1.14.1", // nginx:1.14.0 => nginx:1.14.1 - }), - Traits: []common.ApplicationTrait{ - { - Type: "scaler", - Properties: util.Object2RawExtension(map[string]interface{}{ - "replicas": 3, // change 2 => 3 - }), - }, - { - Type: tdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "group": "my-group-0", // change my-group => my-group-0 - "type": "cluster", - }), - }, - }, - }, - }, - }, - } - Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully") - deploy = &appsv1.Deployment{} - deployName = compName - - By("Verify the changes are applied to the workload") - Eventually(func() bool { - deploy := &appsv1.Deployment{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil { - return false - } - By("Verify new patch trait is applied") - templateLabels := deploy.Spec.Template.Labels - if templateLabels["app.cluster.virtual.group"] != "my-group-0" { - return false - } - By("Verify new scaler trait is applied") - if *deploy.Spec.Replicas != 3 { - return false - } - By("Verify new parameter is applied") - return deploy.Spec.Template.Spec.Containers[0].Image == "nginx:1.14.1" - }, 60*time.Second, 10*time.Second).Should(BeTrue()) - }) - - It("Test deploy an application containing kube module defined by workloadDefinition", func() { - workloaddef := v1beta1.WorkloadDefinition{} - workloaddef.SetName(wdName) - workloaddef.SetNamespace(namespace) - workloaddef.Spec.Reference = common.DefinitionReference{Name: "deployments.apps", Version: "v1"} - workloaddef.Spec.Schematic = &common.Schematic{ - KUBE: &common.Kube{ - Template: testTemplate(), - Parameters: []common.KubeParameter{ - { - Name: "image", - ValueType: common.StringType, - FieldPaths: []string{"spec.template.spec.containers[0].image"}, - Required: pointer.Bool(true), - Description: pointer.String("test description"), - }, - }, - }, - } - By("register workloadDefinition") - Expect(k8sClient.Create(ctx, &workloaddef)).Should(Succeed()) - - appTestName := "test-app-refer-to-workloaddef" - appTest := v1beta1.Application{ - ObjectMeta: metav1.ObjectMeta{ - Name: appTestName, - Namespace: namespace, - }, - Spec: v1beta1.ApplicationSpec{ - Components: []common.ApplicationComponent{ - { - Name: compName, - Type: cdName, - Properties: util.Object2RawExtension(map[string]interface{}{ - "image": "nginx:1.14.0", - }), - }, - }, - }, - } - By("Create application") - Eventually(func() error { - return k8sClient.Create(ctx, appTest.DeepCopy()) - }, 10*time.Second, 500*time.Millisecond).Should(Succeed()) - - By("Verify the workload(deployment) is created successfully") - deploy := &appsv1.Deployment{} - deployName := compName - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy) - }, 15*time.Second, 3*time.Second).Should(Succeed()) - }) - - It("Test store JSON schema of Kube parameter in ConfigMap", func() { - By("Get the ConfigMap") - cmName := fmt.Sprintf("component-schema-%s", cdName) - Eventually(func() error { - cm := &corev1.ConfigMap{} - if err := k8sClient.Get(ctx, client.ObjectKey{Name: cmName, Namespace: namespace}, cm); err != nil { - return err - } - if cm.Data[types.OpenapiV3JSONSchema] == "" { - return errors.New("json schema is not found in the ConfigMap") - } - return nil - }, 60*time.Second, 5*time.Second).Should(Succeed()) - }) -})