Update kubernetes libs to latest (#2834)

- k8s.io/api v0.28.1
- k8s.io/apiextensions-apiserver v0.28.1
- k8s.io/apimachinery v0.28.1
- k8s.io/client-go v0.28.1
- k8s.io/metrics v0.28.1
- sigs.k8s.io/controller-runtime v0.16.1
- sigs.k8s.io/controller-tools v0.13.0

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2023-09-23 09:10:51 +05:30
committed by GitHub
parent 997493351a
commit 3bcda55aa8
44 changed files with 2455 additions and 835 deletions
+2 -2
View File
@@ -64,7 +64,7 @@ codegen: controller-gen-install
### CRDs ### CRDs
controller-gen-install: controller-gen-install:
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.10.0 go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.13.0
generate-crds: controller-gen-install generate-crds: controller-gen-install
controller-gen crd \ controller-gen crd \
@@ -99,7 +99,7 @@ generate-cli-docs:
go run tools/cmd-docs/main.go -o "../fission.io/content/en/docs/reference/fission-cli" go run tools/cmd-docs/main.go -o "../fission.io/content/en/docs/reference/fission-cli"
install-crd-ref-docs: install-crd-ref-docs:
go install github.com/elastic/crd-ref-docs@v0.0.8 go install github.com/elastic/crd-ref-docs@v0.0.9
generate-crd-ref-docs: install-crd-ref-docs generate-crd-ref-docs: install-crd-ref-docs
# crd-ref-docs: https://github.com/elastic/crd-ref-docs # crd-ref-docs: https://github.com/elastic/crd-ref-docs
+6 -4
View File
@@ -91,8 +91,8 @@ func runBuilderMgr(ctx context.Context, logger *zap.Logger, storageSvcUrl string
return buildermgr.Start(ctx, logger, storageSvcUrl) return buildermgr.Start(ctx, logger, storageSvcUrl)
} }
func runLogger(ctx context.Context, logger *zap.Logger) { func runLogger(ctx context.Context, logger *zap.Logger) error {
functionLogger.Start(ctx, logger) return functionLogger.Start(ctx, logger)
} }
func getPort(logger *zap.Logger, portArg interface{}) int { func getPort(logger *zap.Logger, portArg interface{}) int {
@@ -315,8 +315,10 @@ Options:
} }
if arguments["--logger"] == true { if arguments["--logger"] == true {
runLogger(ctx, logger) err = runLogger(ctx, logger)
logger.Error("logger exited") if err != nil {
logger.Error("logger exited", zap.Error(err))
}
return return
} }
+4 -1
View File
@@ -74,7 +74,10 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
logger.Fatal("failed to connect to remote message queue server", zap.Error(err)) logger.Fatal("failed to connect to remote message queue server", zap.Error(err))
} }
mqtMgr := mqtrigger.MakeMessageQueueTriggerManager(logger, fissionClient, mqType, mq) mqtMgr := mqtrigger.MakeMessageQueueTriggerManager(logger, fissionClient, mqType, mq)
mqtMgr.Run(ctx) err = mqtMgr.Run(ctx)
if err != nil {
return err
}
return nil return nil
} }
+1 -2
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: canaryconfigs.fission.io name: canaryconfigs.fission.io
spec: spec:
group: fission.io group: fission.io
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: httptriggers.fission.io name: httptriggers.fission.io
spec: spec:
group: fission.io group: fission.io
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: kuberneteswatchtriggers.fission.io name: kuberneteswatchtriggers.fission.io
spec: spec:
group: fission.io group: fission.io
+441 -119
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: messagequeuetriggers.fission.io name: messagequeuetriggers.fission.io
spec: spec:
group: fission.io group: fission.io
@@ -1250,7 +1249,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1349,7 +1351,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1431,8 +1436,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -1464,7 +1468,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1639,8 +1645,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -1672,7 +1677,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1762,10 +1769,54 @@ spec:
format: int32 format: int32
type: integer type: integer
type: object type: object
resizePolicy:
description: Resources resize policy for the container.
items:
description: ContainerResizePolicy represents resource
resize policy for the container.
properties:
resourceName:
description: 'Name of the resource to which this resource
resize policy applies. Supported values: cpu, memory.'
type: string
restartPolicy:
description: Restart policy to apply when specified
resource is resized. If not specified, it defaults
to NotRequired.
type: string
required:
- resourceName
- restartPolicy
type: object
type: array
x-kubernetes-list-type: atomic
resources: resources:
description: 'Compute Resources required by this container. description: 'Compute Resources required by this container.
Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
properties: properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate. \n This field
is immutable. It can only be set for containers."
items:
description: ResourceClaim references one entry in
PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where
this field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -1787,9 +1838,30 @@ spec:
of compute resources required. If Requests is omitted of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is for a container, it defaults to Limits if that is
explicitly specified, otherwise to an implementation-defined explicitly specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
restartPolicy:
description: 'RestartPolicy defines the restart behavior
of individual containers in a pod. This field may only
be set for init containers, and the only allowed value
is "Always". For non-init containers or when this field
is not specified, the restart behavior is defined by the
Pod''s restart policy and the container type. Setting
the RestartPolicy as "Always" for the init container will
have the following effect: this init container will be
continually restarted on exit until all regular containers
have terminated. Once all regular containers have completed,
all init containers with restartPolicy "Always" will be
shut down. This lifecycle differs from normal init containers
and is often referred to as a "sidecar" container. Although
this init container still starts in the init container
sequence, it does not wait for the container to complete
before proceeding to the next init container. Instead,
the next init container starts immediately after this
init container is started, or after any startupProbe has
successfully completed.'
type: string
securityContext: securityContext:
description: 'SecurityContext defines the security options description: 'SecurityContext defines the security options
the container should be run with. If set, the fields of the container should be run with. If set, the fields of
@@ -1914,7 +1986,8 @@ spec:
The profile must be preconfigured on the node The profile must be preconfigured on the node
to work. Must be a descending path, relative to to work. Must be a descending path, relative to
the kubelet's configured seccomp profile location. the kubelet's configured seccomp profile location.
Must only be set if type is "Localhost". Must be set if type is "Localhost". Must NOT be
set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp description: "type indicates which kind of seccomp
@@ -1947,15 +2020,11 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container description: HostProcess determines if a container
should be run as a 'Host Process' container. This should be run as a 'Host Process' container. All
field is alpha-level and will only be honored of a Pod's containers must have the same effective
by components that enable the WindowsHostProcessContainers HostProcess value (it is not allowed to have a
feature flag. Setting this field without the feature mix of HostProcess containers and non-HostProcess
flag will result in errors when validating the containers). In addition, if HostProcess is true
Pod. All of a Pod's containers must have the same
effective HostProcess value (it is not allowed
to have a mix of HostProcess containers and non-HostProcess
containers). In addition, if HostProcess is true
then HostNetwork must also be set to true. then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
@@ -2004,8 +2073,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -2037,7 +2105,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2557,7 +2627,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2656,7 +2729,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2736,8 +2812,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -2769,7 +2844,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2935,8 +3012,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -2968,7 +3044,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -3058,11 +3136,55 @@ spec:
format: int32 format: int32
type: integer type: integer
type: object type: object
resizePolicy:
description: Resources resize policy for the container.
items:
description: ContainerResizePolicy represents resource
resize policy for the container.
properties:
resourceName:
description: 'Name of the resource to which this resource
resize policy applies. Supported values: cpu, memory.'
type: string
restartPolicy:
description: Restart policy to apply when specified
resource is resized. If not specified, it defaults
to NotRequired.
type: string
required:
- resourceName
- restartPolicy
type: object
type: array
x-kubernetes-list-type: atomic
resources: resources:
description: Resources are not allowed for ephemeral containers. description: Resources are not allowed for ephemeral containers.
Ephemeral containers use spare resources already allocated Ephemeral containers use spare resources already allocated
to the pod. to the pod.
properties: properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate. \n This field
is immutable. It can only be set for containers."
items:
description: ResourceClaim references one entry in
PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where
this field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -3084,9 +3206,15 @@ spec:
of compute resources required. If Requests is omitted of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is for a container, it defaults to Limits if that is
explicitly specified, otherwise to an implementation-defined explicitly specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
restartPolicy:
description: Restart policy for the container to manage
the restart behavior of each container within a pod. This
may only be set for init containers. You cannot set this
field on ephemeral containers.
type: string
securityContext: securityContext:
description: 'Optional: SecurityContext defines the security description: 'Optional: SecurityContext defines the security
options the ephemeral container should be run with. If options the ephemeral container should be run with. If
@@ -3211,7 +3339,8 @@ spec:
The profile must be preconfigured on the node The profile must be preconfigured on the node
to work. Must be a descending path, relative to to work. Must be a descending path, relative to
the kubelet's configured seccomp profile location. the kubelet's configured seccomp profile location.
Must only be set if type is "Localhost". Must be set if type is "Localhost". Must NOT be
set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp description: "type indicates which kind of seccomp
@@ -3244,15 +3373,11 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container description: HostProcess determines if a container
should be run as a 'Host Process' container. This should be run as a 'Host Process' container. All
field is alpha-level and will only be honored of a Pod's containers must have the same effective
by components that enable the WindowsHostProcessContainers HostProcess value (it is not allowed to have a
feature flag. Setting this field without the feature mix of HostProcess containers and non-HostProcess
flag will result in errors when validating the containers). In addition, if HostProcess is true
Pod. All of a Pod's containers must have the same
effective HostProcess value (it is not allowed
to have a mix of HostProcess containers and non-HostProcess
containers). In addition, if HostProcess is true
then HostNetwork must also be set to true. then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
@@ -3293,8 +3418,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -3326,7 +3450,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -3877,7 +4003,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -3976,7 +4105,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4058,8 +4190,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -4091,7 +4222,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4266,8 +4399,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -4299,7 +4431,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4389,10 +4523,54 @@ spec:
format: int32 format: int32
type: integer type: integer
type: object type: object
resizePolicy:
description: Resources resize policy for the container.
items:
description: ContainerResizePolicy represents resource
resize policy for the container.
properties:
resourceName:
description: 'Name of the resource to which this resource
resize policy applies. Supported values: cpu, memory.'
type: string
restartPolicy:
description: Restart policy to apply when specified
resource is resized. If not specified, it defaults
to NotRequired.
type: string
required:
- resourceName
- restartPolicy
type: object
type: array
x-kubernetes-list-type: atomic
resources: resources:
description: 'Compute Resources required by this container. description: 'Compute Resources required by this container.
Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
properties: properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate. \n This field
is immutable. It can only be set for containers."
items:
description: ResourceClaim references one entry in
PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where
this field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -4414,9 +4592,30 @@ spec:
of compute resources required. If Requests is omitted of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is for a container, it defaults to Limits if that is
explicitly specified, otherwise to an implementation-defined explicitly specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
restartPolicy:
description: 'RestartPolicy defines the restart behavior
of individual containers in a pod. This field may only
be set for init containers, and the only allowed value
is "Always". For non-init containers or when this field
is not specified, the restart behavior is defined by the
Pod''s restart policy and the container type. Setting
the RestartPolicy as "Always" for the init container will
have the following effect: this init container will be
continually restarted on exit until all regular containers
have terminated. Once all regular containers have completed,
all init containers with restartPolicy "Always" will be
shut down. This lifecycle differs from normal init containers
and is often referred to as a "sidecar" container. Although
this init container still starts in the init container
sequence, it does not wait for the container to complete
before proceeding to the next init container. Instead,
the next init container starts immediately after this
init container is started, or after any startupProbe has
successfully completed.'
type: string
securityContext: securityContext:
description: 'SecurityContext defines the security options description: 'SecurityContext defines the security options
the container should be run with. If set, the fields of the container should be run with. If set, the fields of
@@ -4541,7 +4740,8 @@ spec:
The profile must be preconfigured on the node The profile must be preconfigured on the node
to work. Must be a descending path, relative to to work. Must be a descending path, relative to
the kubelet's configured seccomp profile location. the kubelet's configured seccomp profile location.
Must only be set if type is "Localhost". Must be set if type is "Localhost". Must NOT be
set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp description: "type indicates which kind of seccomp
@@ -4574,15 +4774,11 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container description: HostProcess determines if a container
should be run as a 'Host Process' container. This should be run as a 'Host Process' container. All
field is alpha-level and will only be honored of a Pod's containers must have the same effective
by components that enable the WindowsHostProcessContainers HostProcess value (it is not allowed to have a
feature flag. Setting this field without the feature mix of HostProcess containers and non-HostProcess
flag will result in errors when validating the containers). In addition, if HostProcess is true
Pod. All of a Pod's containers must have the same
effective HostProcess value (it is not allowed
to have a mix of HostProcess containers and non-HostProcess
containers). In addition, if HostProcess is true
then HostNetwork must also be set to true. then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
@@ -4631,8 +4827,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -4664,7 +4859,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4966,9 +5163,56 @@ spec:
- conditionType - conditionType
type: object type: object
type: array type: array
resourceClaims:
description: "ResourceClaims defines which ResourceClaims must
be allocated and reserved before the Pod is allowed to start.
The resources will be made available to those containers which
consume them by name. \n This is an alpha field and requires
enabling the DynamicResourceAllocation feature gate. \n This
field is immutable."
items:
description: PodResourceClaim references exactly one ResourceClaim
through a ClaimSource. It adds a name to it that uniquely
identifies the ResourceClaim inside the Pod. Containers that
need access to the ResourceClaim reference it with this name.
properties:
name:
description: Name uniquely identifies this resource claim
inside the pod. This must be a DNS_LABEL.
type: string
source:
description: Source describes where to find the ResourceClaim.
properties:
resourceClaimName:
description: ResourceClaimName is the name of a ResourceClaim
object in the same namespace as this pod.
type: string
resourceClaimTemplateName:
description: "ResourceClaimTemplateName is the name
of a ResourceClaimTemplate object in the same namespace
as this pod. \n The template will be used to create
a new ResourceClaim, which will be bound to this pod.
When this pod is deleted, the ResourceClaim will also
be deleted. The pod name and resource name, along
with a generated component, will be used to form a
unique name for the ResourceClaim, which will be recorded
in pod.status.resourceClaimStatuses. \n This field
is immutable and no changes will be made to the corresponding
ResourceClaim by the control plane after creating
the ResourceClaim."
type: string
type: object
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
restartPolicy: restartPolicy:
description: 'Restart policy for all containers within the pod. description: 'Restart policy for all containers within the pod.
One of Always, OnFailure, Never. Default to Always. More info: One of Always, OnFailure, Never. In some contexts, only a subset
of those values may be permitted. Default to Always. More info:
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy'
type: string type: string
runtimeClassName: runtimeClassName:
@@ -4984,6 +5228,29 @@ spec:
scheduler. If not specified, the pod will be dispatched by default scheduler. If not specified, the pod will be dispatched by default
scheduler. scheduler.
type: string type: string
schedulingGates:
description: "SchedulingGates is an opaque list of values that
if specified will block scheduling the pod. If schedulingGates
is not empty, the pod will stay in the SchedulingGated state
and the scheduler will not attempt to schedule the pod. \n SchedulingGates
can only be set at pod creation time, and be removed only afterwards.
\n This is a beta feature enabled by the PodSchedulingReadiness
feature gate."
items:
description: PodSchedulingGate is associated to a Pod to guard
its scheduling.
properties:
name:
description: Name of the scheduling gate. Each scheduling
gate must have a unique name field.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
securityContext: securityContext:
description: 'SecurityContext holds pod-level security attributes description: 'SecurityContext holds pod-level security attributes
and common container settings. Optional: Defaults to empty. See and common container settings. Optional: Defaults to empty. See
@@ -5075,7 +5342,8 @@ spec:
in a file on the node should be used. The profile must in a file on the node should be used. The profile must
be preconfigured on the node to work. Must be a descending be preconfigured on the node to work. Must be a descending
path, relative to the kubelet's configured seccomp profile path, relative to the kubelet's configured seccomp profile
location. Must only be set if type is "Localhost". location. Must be set if type is "Localhost". Must NOT
be set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp profile description: "type indicates which kind of seccomp profile
@@ -5090,9 +5358,13 @@ spec:
supplementalGroups: supplementalGroups:
description: A list of groups applied to the first process description: A list of groups applied to the first process
run in each container, in addition to the container's primary run in each container, in addition to the container's primary
GID. If unspecified, no groups will be added to any container. GID, the fsGroup (if specified), and group memberships defined
Note that this field cannot be set when spec.os.name is in the container image for the uid of the container process.
windows. If unspecified, no additional groups are added to any container.
Note that group memberships defined in the container image
for the uid of the container process are still effective,
even if they are not included in this list. Note that this
field cannot be set when spec.os.name is windows.
items: items:
format: int64 format: int64
type: integer type: integer
@@ -5136,15 +5408,12 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container should description: HostProcess determines if a container should
be run as a 'Host Process' container. This field is be run as a 'Host Process' container. All of a Pod's
alpha-level and will only be honored by components that containers must have the same effective HostProcess
enable the WindowsHostProcessContainers feature flag. value (it is not allowed to have a mix of HostProcess
Setting this field without the feature flag will result containers and non-HostProcess containers). In addition,
in errors when validating the Pod. All of a Pod's containers if HostProcess is true then HostNetwork must also be
must have the same effective HostProcess value (it is set to true.
not allowed to have a mix of HostProcess containers
and non-HostProcess containers). In addition, if HostProcess
is true then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
description: The UserName in Windows to run the entrypoint description: The UserName in Windows to run the entrypoint
@@ -5299,14 +5568,19 @@ spec:
type: object type: object
x-kubernetes-map-type: atomic x-kubernetes-map-type: atomic
matchLabelKeys: matchLabelKeys:
description: MatchLabelKeys is a set of pod label keys to description: "MatchLabelKeys is a set of pod label keys
select the pods over which spreading will be calculated. to select the pods over which spreading will be calculated.
The keys are used to lookup values from the incoming pod The keys are used to lookup values from the incoming pod
labels, those key-value labels are ANDed with labelSelector labels, those key-value labels are ANDed with labelSelector
to select the group of existing pods over which spreading to select the group of existing pods over which spreading
will be calculated for the incoming pod. Keys that don't will be calculated for the incoming pod. The same key
exist in the incoming pod labels will be ignored. A null is forbidden to exist in both MatchLabelKeys and LabelSelector.
or empty list means only match against labelSelector. MatchLabelKeys cannot be set when LabelSelector isn't
set. Keys that don't exist in the incoming pod labels
will be ignored. A null or empty list means only match
against labelSelector. \n This is a beta field and requires
the MatchLabelKeysInPodTopologySpread feature gate to
be enabled (enabled by default)."
items: items:
type: string type: string
type: array type: array
@@ -5366,7 +5640,7 @@ spec:
- Ignore: nodeAffinity/nodeSelector are ignored. All nodes - Ignore: nodeAffinity/nodeSelector are ignored. All nodes
are included in the calculations. \n If this value is are included in the calculations. \n If this value is
nil, the behavior is equivalent to the Honor policy. This nil, the behavior is equivalent to the Honor policy. This
is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread
feature flag." feature flag."
type: string type: string
nodeTaintsPolicy: nodeTaintsPolicy:
@@ -5376,8 +5650,8 @@ spec:
tainted nodes for which the incoming pod has a toleration, tainted nodes for which the incoming pod has a toleration,
are included. - Ignore: node taints are ignored. All nodes are included. - Ignore: node taints are ignored. All nodes
are included. \n If this value is nil, the behavior is are included. \n If this value is nil, the behavior is
equivalent to the Ignore policy. This is a alpha-level equivalent to the Ignore policy. This is a beta-level
feature enabled by the NodeInclusionPolicyInPodTopologySpread feature default enabled by the NodeInclusionPolicyInPodTopologySpread
feature flag." feature flag."
type: string type: string
topologyKey: topologyKey:
@@ -5825,7 +6099,7 @@ spec:
value between the SizeLimit specified here and the value between the SizeLimit specified here and the
sum of memory limits of all containers in a pod. The sum of memory limits of all containers in a pod. The
default is nil which means that the limit is undefined. default is nil which means that the limit is undefined.
More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true x-kubernetes-int-or-string: true
type: object type: object
@@ -5900,10 +6174,13 @@ spec:
If the provisioner or an external controller If the provisioner or an external controller
can support the specified data source, it can support the specified data source, it
will create a new volume based on the contents will create a new volume based on the contents
of the specified data source. If the AnyVolumeDataSource of the specified data source. When the AnyVolumeDataSource
feature gate is enabled, this field will always feature gate is enabled, dataSource contents
have the same contents as the DataSourceRef will be copied to dataSourceRef, and dataSourceRef
field.' contents will be copied to dataSource when
dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef
will not be copied to dataSource.'
properties: properties:
apiGroup: apiGroup:
description: APIGroup is the group for the description: APIGroup is the group for the
@@ -5929,29 +6206,37 @@ spec:
description: 'dataSourceRef specifies the object description: 'dataSourceRef specifies the object
from which to populate the volume with data, from which to populate the volume with data,
if a non-empty volume is desired. This may if a non-empty volume is desired. This may
be any local object from a non-empty API group be any object from a non-empty API group (non
(non core object) or a PersistentVolumeClaim core object) or a PersistentVolumeClaim object.
object. When this field is specified, volume When this field is specified, volume binding
binding will only succeed if the type of the will only succeed if the type of the specified
specified object matches some installed volume object matches some installed volume populator
populator or dynamic provisioner. This field or dynamic provisioner. This field will replace
will replace the functionality of the DataSource the functionality of the dataSource field
field and as such if both fields are non-empty, and as such if both fields are non-empty,
they must have the same value. For backwards they must have the same value. For backwards
compatibility, both fields (DataSource and compatibility, when namespace isn''t specified
DataSourceRef) will be set to the same value in dataSourceRef, both fields (dataSource
automatically if one of them is empty and and dataSourceRef) will be set to the same
the other is non-empty. There are two important value automatically if one of them is empty
differences between DataSource and DataSourceRef: and the other is non-empty. When namespace
* While DataSource only allows two specific is specified in dataSourceRef, dataSource
types of objects, DataSourceRef allows any isn''t set to the same value and must be empty.
non-core object, as well as PersistentVolumeClaim There are three important differences between
objects. * While DataSource ignores disallowed dataSource and dataSourceRef: * While dataSource
values (dropping them), DataSourceRef preserves only allows two specific types of objects,
all values, and generates an error if a disallowed dataSourceRef allows any non-core object,
value is specified. (Beta) Using this field as well as PersistentVolumeClaim objects.
requires the AnyVolumeDataSource feature gate * While dataSource ignores disallowed values
to be enabled.' (dropping them), dataSourceRef preserves all
values, and generates an error if a disallowed
value is specified. * While dataSource only
allows local objects, dataSourceRef allows
objects in any namespaces. (Beta) Using this
field requires the AnyVolumeDataSource feature
gate to be enabled. (Alpha) Using the namespace
field of dataSourceRef requires the CrossNamespaceVolumeDataSource
feature gate to be enabled.'
properties: properties:
apiGroup: apiGroup:
description: APIGroup is the group for the description: APIGroup is the group for the
@@ -5968,11 +6253,21 @@ spec:
description: Name is the name of resource description: Name is the name of resource
being referenced being referenced
type: string type: string
namespace:
description: Namespace is the namespace
of resource being referenced Note that
when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant
object is required in the referent namespace
to allow that namespace's owner to accept
the reference. See the ReferenceGrant
documentation for details. (Alpha) This
field requires the CrossNamespaceVolumeDataSource
feature gate to be enabled.
type: string
required: required:
- kind - kind
- name - name
type: object type: object
x-kubernetes-map-type: atomic
resources: resources:
description: 'resources represents the minimum description: 'resources represents the minimum
resources the volume should have. If RecoverVolumeExpansionFailure resources the volume should have. If RecoverVolumeExpansionFailure
@@ -5982,6 +6277,32 @@ spec:
capacity recorded in the status field of the capacity recorded in the status field of the
claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
properties: properties:
claims:
description: "Claims lists the names of
resources, defined in spec.resourceClaims,
that are used by this container. \n This
is an alpha field and requires enabling
the DynamicResourceAllocation feature
gate. \n This field is immutable. It can
only be set for containers."
items:
description: ResourceClaim references
one entry in PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name
of one entry in pod.spec.resourceClaims
of the Pod where this field is used.
It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -6005,7 +6326,8 @@ spec:
If Requests is omitted for a container, If Requests is omitted for a container,
it defaults to Limits if that is explicitly it defaults to Limits if that is explicitly
specified, otherwise to an implementation-defined specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
selector: selector:
+1 -2
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: packages.fission.io name: packages.fission.io
spec: spec:
group: fission.io group: fission.io
+1 -2
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: timetriggers.fission.io name: timetriggers.fission.io
spec: spec:
group: fission.io group: fission.io
+35 -41
View File
@@ -27,8 +27,8 @@ require (
github.com/minio/minio-go v6.0.14+incompatible github.com/minio/minio-go v6.0.14+incompatible
github.com/ory/dockertest v3.3.5+incompatible github.com/ory/dockertest v3.3.5+incompatible
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.15.1 github.com/prometheus/client_golang v1.16.0
github.com/prometheus/common v0.43.0 github.com/prometheus/common v0.44.0
github.com/robfig/cron/v3 v3.0.1 github.com/robfig/cron/v3 v3.0.1
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06
github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b
@@ -43,29 +43,21 @@ require (
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.15.1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.15.1
go.opentelemetry.io/otel/sdk v1.15.1 go.opentelemetry.io/otel/sdk v1.15.1
go.opentelemetry.io/otel/trace v1.15.1 go.opentelemetry.io/otel/trace v1.15.1
go.uber.org/zap v1.24.0 go.uber.org/zap v1.25.0
golang.org/x/net v0.10.0 golang.org/x/net v0.14.0
google.golang.org/grpc v1.55.0 google.golang.org/grpc v1.55.0
k8s.io/api v0.25.4 k8s.io/api v0.28.1
k8s.io/apiextensions-apiserver v0.25.4 k8s.io/apiextensions-apiserver v0.28.1
k8s.io/apimachinery v0.25.4 k8s.io/apimachinery v0.28.1
k8s.io/client-go v0.25.4 k8s.io/client-go v0.28.1
k8s.io/metrics v0.25.4 k8s.io/metrics v0.28.1
sigs.k8s.io/controller-runtime v0.13.1 sigs.k8s.io/controller-runtime v0.16.1
sigs.k8s.io/controller-tools v0.10.0 sigs.k8s.io/controller-tools v0.13.0
sigs.k8s.io/yaml v1.3.0 sigs.k8s.io/yaml v1.3.0
) )
require ( require (
cloud.google.com/go/compute v1.18.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.27 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect
@@ -91,7 +83,7 @@ require (
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
github.com/eapache/queue v1.1.0 // indirect github.com/eapache/queue v1.1.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect
github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect
github.com/felixge/httpsnoop v1.0.3 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect
@@ -99,19 +91,19 @@ require (
github.com/go-ini/ini v1.66.4 // indirect github.com/go-ini/ini v1.66.4 // indirect
github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-logr/zapr v1.2.3 // indirect github.com/go-logr/zapr v1.2.4 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.1 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.22.3 // indirect github.com/go-openapi/swag v0.22.3 // indirect
github.com/gobuffalo/flect v0.3.0 // indirect github.com/gobuffalo/flect v1.0.2 // indirect
github.com/goccy/go-yaml v1.11.0 // indirect github.com/goccy/go-yaml v1.11.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect github.com/golang/snappy v0.0.4 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/gofuzz v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.3.0 // indirect github.com/google/uuid v1.3.0 // indirect
github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3 // indirect
@@ -152,7 +144,7 @@ require (
github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/client_model v0.4.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect github.com/prometheus/procfs v0.10.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sergi/go-diff v1.1.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect
@@ -168,31 +160,33 @@ require (
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.1 // indirect go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.1 // indirect
go.opentelemetry.io/otel/metric v0.38.1 // indirect go.opentelemetry.io/otel/metric v0.38.1 // indirect
go.opentelemetry.io/proto/otlp v0.19.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.7.0 // indirect golang.org/x/crypto v0.12.0 // indirect
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
golang.org/x/image v0.5.0 // indirect golang.org/x/image v0.5.0 // indirect
golang.org/x/mod v0.10.0 // indirect golang.org/x/mod v0.12.0 // indirect
golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect
golang.org/x/sys v0.8.0 // indirect golang.org/x/sys v0.11.0 // indirect
golang.org/x/term v0.8.0 // indirect golang.org/x/term v0.11.0 // indirect
golang.org/x/text v0.9.0 // indirect golang.org/x/text v0.12.0 // indirect
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.8.0 // indirect golang.org/x/tools v0.12.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect
google.golang.org/protobuf v1.30.0 // indirect google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools v2.2.0+incompatible // indirect gotest.tools v2.2.0+incompatible // indirect
k8s.io/component-base v0.25.4 // indirect k8s.io/component-base v0.28.1 // indirect
k8s.io/klog/v2 v2.90.1 // indirect k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a // indirect k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
) )
+87 -104
View File
@@ -20,10 +20,6 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY=
cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
@@ -39,30 +35,15 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7
github.com/Azure/azure-sdk-for-go v32.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v32.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= 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-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+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.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A=
github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.20 h1:gJ3E98kMpFB1MFqQCvA1yFab8vthOeD4VlFRQULxahg=
github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
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.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
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.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.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE=
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
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.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
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 v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
@@ -100,8 +81,9 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY
github.com/aws/aws-sdk-go v1.23.4/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.4/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.42.34 h1:fqGAiKmCSRY1rEa4G9VqgkKKbNmLKYq5dKmLtQkvYi8= github.com/aws/aws-sdk-go v1.42.34 h1:fqGAiKmCSRY1rEa4G9VqgkKKbNmLKYq5dKmLtQkvYi8=
github.com/aws/aws-sdk-go v1.42.34/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= github.com/aws/aws-sdk-go v1.42.34/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc=
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -180,8 +162,6 @@ github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
github.com/elastic/crd-ref-docs v0.0.8 h1:Sy0A24E+L5aCj/8BGTgxkumCSNeckg4650d96o7QHiU= github.com/elastic/crd-ref-docs v0.0.8 h1:Sy0A24E+L5aCj/8BGTgxkumCSNeckg4650d96o7QHiU=
github.com/elastic/crd-ref-docs v0.0.8/go.mod h1:Jd1XDGgrvHzd/+qCf4SwBnOnLl4RaFRjind0ORnHovo= github.com/elastic/crd-ref-docs v0.0.8/go.mod h1:Jd1XDGgrvHzd/+qCf4SwBnOnLl4RaFRjind0ORnHovo=
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-openapi/v2 v2.9.1 h1:Of8B1rXdG81il5TTiSY+9Qrh7pYOr8aLdynHIpvo7fM= github.com/emicklei/go-restful-openapi/v2 v2.9.1 h1:Of8B1rXdG81il5TTiSY+9Qrh7pYOr8aLdynHIpvo7fM=
github.com/emicklei/go-restful-openapi/v2 v2.9.1/go.mod h1:VKNgZyYviM1hnyrjD9RDzP2RuE94xTXxV+u6MGN4v4k= github.com/emicklei/go-restful-openapi/v2 v2.9.1/go.mod h1:VKNgZyYviM1hnyrjD9RDzP2RuE94xTXxV+u6MGN4v4k=
github.com/emicklei/go-restful/v3 v3.7.3/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.7.3/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
@@ -196,9 +176,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= github.com/evanphx/json-patch v5.6.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 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww=
github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
@@ -237,16 +216,16 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8=
github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
@@ -261,8 +240,10 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA=
github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54= github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54=
github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -271,8 +252,6 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
@@ -317,8 +296,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/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.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -332,8 +311,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -343,6 +322,8 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/readahead v0.0.0-20161222183148-eaceba169032/go.mod h1:qYysrqQXuV4tzsizt4oOQ6mrBZQ0xnQXP3ylXX8Jk5Y= github.com/google/readahead v0.0.0-20161222183148-eaceba169032/go.mod h1:qYysrqQXuV4tzsizt4oOQ6mrBZQ0xnQXP3ylXX8Jk5Y=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -442,7 +423,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -506,10 +486,10 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU= github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=
@@ -536,8 +516,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/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-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.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -545,12 +525,12 @@ github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUo
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
github.com/prometheus/common v0.43.0/go.mod h1:NCvr5cQIh3Y/gy73/RdVtC9r8xxrxwJnB+2lB3BxrFc= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
@@ -592,7 +572,6 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 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/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.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.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -630,6 +609,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
@@ -668,9 +648,7 @@ 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.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
go.uber.org/atomic v1.4.0/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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 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/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
@@ -678,9 +656,9 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= 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/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= 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-20180904163835-0709b304e793/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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -690,15 +668,14 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/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-20190306152737-a1d7652674e8/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-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -709,6 +686,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-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/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.5.0 h1:5JMiNunQeQw++mMOz48/ISeNu3Iweh/JaZU8ZLqHRrI= golang.org/x/image v0.5.0 h1:5JMiNunQeQw++mMOz48/ISeNu3Iweh/JaZU8ZLqHRrI=
@@ -731,10 +710,11 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= 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.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/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-20180826012351-8a410e7b638d/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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -778,16 +758,16 @@ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfS
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= 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-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-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-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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-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-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -798,9 +778,10 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/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-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -857,15 +838,15 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 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.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -876,13 +857,13 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.4.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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-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-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20180221164845-07fd8470d635/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-20180917221912-90fa682c2a6e/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-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -899,7 +880,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/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-20191012152004-8de300cfc20a/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-20191113191852-77e3bb0ad9e7/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-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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -927,18 +907,19 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss=
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.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.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -993,10 +974,13 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 h1:9NWlQfY2ePejTmfwUH1OWwmznFa+0kKcHGPDvcPza9M=
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk=
google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 h1:m8v1xLLLzMe1m5P+gCTF8nJB9epwZQUBERm20Oy1poQ=
google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -1057,7 +1041,6 @@ 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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-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.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -1070,32 +1053,32 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= 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= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.25.4 h1:3YO8J4RtmG7elEgaWMb4HgmpS2CfY1QlaOz9nwB+ZSs= k8s.io/api v0.28.1 h1:i+0O8k2NPBCPYaMB+uCkseEbawEt/eFaiRqUx8aB108=
k8s.io/api v0.25.4/go.mod h1:IG2+RzyPQLllQxnhzD8KQNEu4c4YvyDTpSMztf4A0OQ= k8s.io/api v0.28.1/go.mod h1:uBYwID+66wiL28Kn2tBjBYQdEU0Xk0z5qF8bIBqk/Dg=
k8s.io/apiextensions-apiserver v0.25.4 h1:7hu9pF+xikxQuQZ7/30z/qxIPZc2J1lFElPtr7f+B6U= k8s.io/apiextensions-apiserver v0.28.1 h1:l2ThkBRjrWpw4f24uq0Da2HaEgqJZ7pcgiEUTKSmQZw=
k8s.io/apiextensions-apiserver v0.25.4/go.mod h1:bkSGki5YBoZWdn5pWtNIdGvDrrsRWlmnvl9a+tAw5vQ= k8s.io/apiextensions-apiserver v0.28.1/go.mod h1:sVvrI+P4vxh2YBBcm8n2ThjNyzU4BQGilCQ/JAY5kGs=
k8s.io/apimachinery v0.25.4 h1:CtXsuaitMESSu339tfhVXhQrPET+EiWnIY1rcurKnAc= k8s.io/apimachinery v0.28.1 h1:EJD40og3GizBSV3mkIoXQBsws32okPOy+MkRyzh6nPY=
k8s.io/apimachinery v0.25.4/go.mod h1:jaF9C/iPNM1FuLl7Zuy5b9v+n35HGSh6AQ4HYRkCqwo= k8s.io/apimachinery v0.28.1/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw=
k8s.io/client-go v0.25.4 h1:3RNRDffAkNU56M/a7gUfXaEzdhZlYhoW8dgViGy5fn8= k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8=
k8s.io/client-go v0.25.4/go.mod h1:8trHCAC83XKY0wsBIpbirZU4NTUpbuhc2JnI7OruGZw= k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE=
k8s.io/component-base v0.25.4 h1:n1bjg9Yt+G1C0WnIDJmg2fo6wbEU1UGMRiQSjmj7hNQ= k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
k8s.io/component-base v0.25.4/go.mod h1:nnZJU8OP13PJEm6/p5V2ztgX2oyteIaAGKGMYb2L2cY= k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a h1:gmovKNur38vgoWfGtP5QOGNOA7ki4n6qNYoFAgMlNvg= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ=
k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
k8s.io/metrics v0.25.4 h1:Kq2vLaeKkksyYCuvEjg5kJbTb/BAawUgci3xasfL+nA= k8s.io/metrics v0.28.1 h1:Q0AsAEZKlAzhqrvfoGyHjz2qAFlef0SqfGJ1YWJ+ITU=
k8s.io/metrics v0.25.4/go.mod h1:cFxN3gbdb0nld4IGHHM51qKHUCcXvzkKh3z1g2YriL8= k8s.io/metrics v0.28.1/go.mod h1:8lKkAajigcZWu0o9XCEBr++YVCzT48q1ck+f9CEBhZY=
k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/controller-runtime v0.13.1 h1:tUsRCSJVM1QQOOeViGeX3GMT3dQF1eePPw6sEE3xSlg= sigs.k8s.io/controller-runtime v0.16.1 h1:+15lzrmHsE0s2kNl0Dl8cTchI5Cs8qofo5PGcPrV9z0=
sigs.k8s.io/controller-runtime v0.13.1/go.mod h1:Zbz+el8Yg31jubvAEyglRZGdLAjplZl+PgtYNI6WNTI= sigs.k8s.io/controller-runtime v0.16.1/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU=
sigs.k8s.io/controller-tools v0.10.0 h1:0L5DTDTFB67jm9DkfrONgTGmfc/zYow0ZaHyppizU2U= sigs.k8s.io/controller-tools v0.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI=
sigs.k8s.io/controller-tools v0.10.0/go.mod h1:uvr0EW6IsprfB0jpQq6evtKy+hHyHCXNfdWI5ONPx94= sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
+7 -6
View File
@@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -50,19 +51,19 @@ func (r *CanaryConfig) Default() {
var _ webhook.Validator = &CanaryConfig{} var _ webhook.Validator = &CanaryConfig{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *CanaryConfig) ValidateCreate() error { func (r *CanaryConfig) ValidateCreate() (admission.Warnings, error) {
canaryconfiglog.Debug("validate create", zap.String("name", r.Name)) canaryconfiglog.Debug("validate create", zap.String("name", r.Name))
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *CanaryConfig) ValidateUpdate(old runtime.Object) error { func (r *CanaryConfig) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
canaryconfiglog.Debug("validate update", zap.String("name", r.Name)) canaryconfiglog.Debug("validate update", zap.String("name", r.Name))
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *CanaryConfig) ValidateDelete() error { func (r *CanaryConfig) ValidateDelete() (admission.Warnings, error) {
canaryconfiglog.Debug("validate delete", zap.String("name", r.Name)) canaryconfiglog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
+8 -7
View File
@@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -49,24 +50,24 @@ func (r *Environment) Default() {
var _ webhook.Validator = &Environment{} var _ webhook.Validator = &Environment{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *Environment) ValidateCreate() error { func (r *Environment) ValidateCreate() (admission.Warnings, error) {
environmentlog.Debug("validate create", zap.String("name", r.Name)) environmentlog.Debug("validate create", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("Environment", err) err = AggregateValidationErrors("Environment", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *Environment) ValidateUpdate(old runtime.Object) error { func (r *Environment) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
environmentlog.Debug("validate update", zap.String("name", r.Name)) environmentlog.Debug("validate update", zap.String("name", r.Name))
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *Environment) ValidateDelete() error { func (r *Environment) ValidateDelete() (admission.Warnings, error) {
environmentlog.Debug("validate delete", zap.String("name", r.Name)) environmentlog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
+13 -12
View File
@@ -23,6 +23,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -50,55 +51,55 @@ func (r *Function) Default() {
var _ webhook.Validator = &Function{} var _ webhook.Validator = &Function{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *Function) ValidateCreate() error { func (r *Function) ValidateCreate() (admission.Warnings, error) {
functionlog.Debug("validate create", zap.String("name", r.Name)) functionlog.Debug("validate create", zap.String("name", r.Name))
for _, cnfMap := range r.Spec.ConfigMaps { for _, cnfMap := range r.Spec.ConfigMaps {
if cnfMap.Namespace != r.ObjectMeta.Namespace { if cnfMap.Namespace != r.ObjectMeta.Namespace {
err := fmt.Errorf("ConfigMap's [%s] and function's Namespace [%s] are different. ConfigMap needs to be present in the same namespace as function", cnfMap.Namespace, r.ObjectMeta.Namespace) err := fmt.Errorf("ConfigMap's [%s] and function's Namespace [%s] are different. ConfigMap needs to be present in the same namespace as function", cnfMap.Namespace, r.ObjectMeta.Namespace)
return AggregateValidationErrors("Function", err) return nil, AggregateValidationErrors("Function", err)
} }
} }
for _, secret := range r.Spec.Secrets { for _, secret := range r.Spec.Secrets {
if secret.Namespace != r.ObjectMeta.Namespace { if secret.Namespace != r.ObjectMeta.Namespace {
err := fmt.Errorf("secret [%s] and function's Namespace [%s] are different. Secret needs to be present in the same namespace as function", secret.Namespace, r.ObjectMeta.Namespace) err := fmt.Errorf("secret [%s] and function's Namespace [%s] are different. Secret needs to be present in the same namespace as function", secret.Namespace, r.ObjectMeta.Namespace)
return AggregateValidationErrors("Function", err) return nil, AggregateValidationErrors("Function", err)
} }
} }
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
return AggregateValidationErrors("Function", err) return nil, AggregateValidationErrors("Function", err)
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *Function) ValidateUpdate(old runtime.Object) error { func (r *Function) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
functionlog.Debug("validate update", zap.String("name", r.Name)) functionlog.Debug("validate update", zap.String("name", r.Name))
for _, cnfMap := range r.Spec.ConfigMaps { for _, cnfMap := range r.Spec.ConfigMaps {
if cnfMap.Namespace != r.ObjectMeta.Namespace { if cnfMap.Namespace != r.ObjectMeta.Namespace {
err := fmt.Errorf("ConfigMap's [%s] and function's Namespace [%s] are different. ConfigMap needs to be present in the same namespace as function", cnfMap.Namespace, r.ObjectMeta.Namespace) err := fmt.Errorf("ConfigMap's [%s] and function's Namespace [%s] are different. ConfigMap needs to be present in the same namespace as function", cnfMap.Namespace, r.ObjectMeta.Namespace)
return AggregateValidationErrors("Function", err) return nil, AggregateValidationErrors("Function", err)
} }
} }
for _, secret := range r.Spec.Secrets { for _, secret := range r.Spec.Secrets {
if secret.Namespace != r.ObjectMeta.Namespace { if secret.Namespace != r.ObjectMeta.Namespace {
err := fmt.Errorf("secret [%s] and function's Namespace [%s] are different. Secret needs to be present in the same namespace as function", secret.Namespace, r.ObjectMeta.Namespace) err := fmt.Errorf("secret [%s] and function's Namespace [%s] are different. Secret needs to be present in the same namespace as function", secret.Namespace, r.ObjectMeta.Namespace)
return AggregateValidationErrors("Function", err) return nil, AggregateValidationErrors("Function", err)
} }
} }
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
return AggregateValidationErrors("Function", err) return nil, AggregateValidationErrors("Function", err)
} }
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *Function) ValidateDelete() error { func (r *Function) ValidateDelete() (admission.Warnings, error) {
functionlog.Debug("validate delete", zap.String("name", r.Name)) functionlog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
+9 -8
View File
@@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -49,31 +50,31 @@ func (r *HTTPTrigger) Default() {
var _ webhook.Validator = &HTTPTrigger{} var _ webhook.Validator = &HTTPTrigger{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (t *HTTPTrigger) ValidateCreate() error { func (t *HTTPTrigger) ValidateCreate() (admission.Warnings, error) {
httptriggerlog.Debug("validate create", zap.String("name", t.Name)) httptriggerlog.Debug("validate create", zap.String("name", t.Name))
err := t.Validate() err := t.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("HTTPTrigger", err) err = AggregateValidationErrors("HTTPTrigger", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *HTTPTrigger) ValidateUpdate(old runtime.Object) error { func (r *HTTPTrigger) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
httptriggerlog.Debug("validate update", zap.String("name", r.Name)) httptriggerlog.Debug("validate update", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("HTTPTrigger", err) err = AggregateValidationErrors("HTTPTrigger", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *HTTPTrigger) ValidateDelete() error { func (r *HTTPTrigger) ValidateDelete() (admission.Warnings, error) {
httptriggerlog.Debug("validate delete", zap.String("name", r.Name)) httptriggerlog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
@@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -49,24 +50,24 @@ func (r *KubernetesWatchTrigger) Default() {
var _ webhook.Validator = &KubernetesWatchTrigger{} var _ webhook.Validator = &KubernetesWatchTrigger{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *KubernetesWatchTrigger) ValidateCreate() error { func (r *KubernetesWatchTrigger) ValidateCreate() (admission.Warnings, error) {
kuberneteswatchtriggerlog.Debug("validate create", zap.String("name", r.Name)) kuberneteswatchtriggerlog.Debug("validate create", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("Watch", err) err = AggregateValidationErrors("Watch", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *KubernetesWatchTrigger) ValidateUpdate(old runtime.Object) error { func (r *KubernetesWatchTrigger) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
// WATCH UPDATE NOT IMPLEMENTED // WATCH UPDATE NOT IMPLEMENTED
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *KubernetesWatchTrigger) ValidateDelete() error { func (r *KubernetesWatchTrigger) ValidateDelete() (admission.Warnings, error) {
kuberneteswatchtriggerlog.Debug("validate delete", zap.String("name", r.Name)) kuberneteswatchtriggerlog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
@@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -49,29 +50,29 @@ func (r *MessageQueueTrigger) Default() {
var _ webhook.Validator = &MessageQueueTrigger{} var _ webhook.Validator = &MessageQueueTrigger{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *MessageQueueTrigger) ValidateCreate() error { func (r *MessageQueueTrigger) ValidateCreate() (admission.Warnings, error) {
messagequeuetriggerlog.Debug("validate create", zap.String("name", r.Name)) messagequeuetriggerlog.Debug("validate create", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("MessageQueueTrigger", err) err = AggregateValidationErrors("MessageQueueTrigger", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *MessageQueueTrigger) ValidateUpdate(old runtime.Object) error { func (r *MessageQueueTrigger) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
messagequeuetriggerlog.Debug("validate update", zap.String("name", r.Name)) messagequeuetriggerlog.Debug("validate update", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("MessageQueueTrigger", err) err = AggregateValidationErrors("MessageQueueTrigger", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *MessageQueueTrigger) ValidateDelete() error { func (r *MessageQueueTrigger) ValidateDelete() (admission.Warnings, error) {
messagequeuetriggerlog.Debug("validate delete", zap.String("name", r.Name)) messagequeuetriggerlog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
+11 -10
View File
@@ -24,6 +24,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
ferror "github.com/fission/fission/pkg/error" ferror "github.com/fission/fission/pkg/error"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
@@ -56,43 +57,43 @@ func (r *Package) Default() {
var _ webhook.Validator = &Package{} var _ webhook.Validator = &Package{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *Package) ValidateCreate() error { func (r *Package) ValidateCreate() (admission.Warnings, error) {
packagelog.Debug("validate create", zap.String("name", r.Name)) packagelog.Debug("validate create", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("Package", err) err = AggregateValidationErrors("Package", err)
return err return nil, err
} }
// Ensure size limits // Ensure size limits
if len(r.Spec.Source.Literal) > int(ArchiveLiteralSizeLimit) { if len(r.Spec.Source.Literal) > int(ArchiveLiteralSizeLimit) {
err := ferror.MakeError(ferror.ErrorInvalidArgument, err := ferror.MakeError(ferror.ErrorInvalidArgument,
fmt.Sprintf("Package literal larger than %s", humanize.Bytes(uint64(ArchiveLiteralSizeLimit)))) fmt.Sprintf("Package literal larger than %s", humanize.Bytes(uint64(ArchiveLiteralSizeLimit))))
return err return nil, err
} }
if len(r.Spec.Deployment.Literal) > int(ArchiveLiteralSizeLimit) { if len(r.Spec.Deployment.Literal) > int(ArchiveLiteralSizeLimit) {
err := ferror.MakeError(ferror.ErrorInvalidArgument, err := ferror.MakeError(ferror.ErrorInvalidArgument,
fmt.Sprintf("Package literal larger than %s", humanize.Bytes(uint64(ArchiveLiteralSizeLimit)))) fmt.Sprintf("Package literal larger than %s", humanize.Bytes(uint64(ArchiveLiteralSizeLimit))))
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *Package) ValidateUpdate(old runtime.Object) error { func (r *Package) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
packagelog.Debug("validate update", zap.String("name", r.Name)) packagelog.Debug("validate update", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("Package", err) err = AggregateValidationErrors("Package", err)
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *Package) ValidateDelete() error { func (r *Package) ValidateDelete() (admission.Warnings, error) {
packagelog.Debug("validate delete", zap.String("name", r.Name)) packagelog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
+11 -10
View File
@@ -21,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
ferror "github.com/fission/fission/pkg/error" ferror "github.com/fission/fission/pkg/error"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
@@ -50,42 +51,42 @@ func (r *TimeTrigger) Default() {
var _ webhook.Validator = &TimeTrigger{} var _ webhook.Validator = &TimeTrigger{}
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type // ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *TimeTrigger) ValidateCreate() error { func (r *TimeTrigger) ValidateCreate() (admission.Warnings, error) {
timetriggerlog.Debug("validate create", zap.String("name", r.Name)) timetriggerlog.Debug("validate create", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("TimeTrigger", err) err = AggregateValidationErrors("TimeTrigger", err)
return err return nil, err
} }
err = IsValidCronSpec(r.Spec.Cron) err = IsValidCronSpec(r.Spec.Cron)
if err != nil { if err != nil {
err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger cron spec is not valid") err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger cron spec is not valid")
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type // ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *TimeTrigger) ValidateUpdate(old runtime.Object) error { func (r *TimeTrigger) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
timetriggerlog.Debug("validate update", zap.String("name", r.Name)) timetriggerlog.Debug("validate update", zap.String("name", r.Name))
err := r.Validate() err := r.Validate()
if err != nil { if err != nil {
err = AggregateValidationErrors("TimeTrigger", err) err = AggregateValidationErrors("TimeTrigger", err)
return err return nil, err
} }
err = IsValidCronSpec(r.Spec.Cron) err = IsValidCronSpec(r.Spec.Cron)
if err != nil { if err != nil {
err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger cron spec is not valid") err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger cron spec is not valid")
return err return nil, err
} }
return nil return nil, nil
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type // ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *TimeTrigger) ValidateDelete() error { func (r *TimeTrigger) ValidateDelete() (admission.Warnings, error) {
timetriggerlog.Debug("validate delete", zap.String("name", r.Name)) timetriggerlog.Debug("validate delete", zap.String("name", r.Name))
return nil return nil, nil
} }
@@ -1,5 +1,4 @@
//go:build !ignore_autogenerated //go:build !ignore_autogenerated
// +build !ignore_autogenerated
/* /*
Copyright The Fission Authors. Copyright The Fission Authors.
+8 -2
View File
@@ -59,13 +59,19 @@ func Start(ctx context.Context, logger *zap.Logger, storageSvcUrl string) error
logger.Warn("error reading data for pod spec patch", zap.String("path", fv1.BuilderPodSpecPath), zap.Error(err)) logger.Warn("error reading data for pod spec patch", zap.String("path", fv1.BuilderPodSpecPath), zap.Error(err))
} }
envWatcher := makeEnvironmentWatcher(ctx, bmLogger, fissionClient, kubernetesClient, fetcherConfig, podSpecPatch) envWatcher, err := makeEnvironmentWatcher(ctx, bmLogger, fissionClient, kubernetesClient, fetcherConfig, podSpecPatch)
envWatcher.Run(ctx) envWatcher.Run(ctx)
if err != nil {
return err
}
pkgWatcher := makePackageWatcher(bmLogger, fissionClient, pkgWatcher := makePackageWatcher(bmLogger, fissionClient,
kubernetesClient, storageSvcUrl, kubernetesClient, storageSvcUrl,
utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.Pods), utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.Pods),
utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.PackagesResource)) utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.PackagesResource))
pkgWatcher.Run(ctx) err = pkgWatcher.Run(ctx)
if err != nil {
return err
}
return nil return nil
} }
+18 -15
View File
@@ -23,7 +23,6 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
appsv1 "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
@@ -81,7 +80,7 @@ func makeEnvironmentWatcher(
fissionClient versioned.Interface, fissionClient versioned.Interface,
kubernetesClient kubernetes.Interface, kubernetesClient kubernetes.Interface,
fetcherConfig *fetcherConfig.Config, fetcherConfig *fetcherConfig.Config,
podSpecPatch *apiv1.PodSpec) *environmentWatcher { podSpecPatch *apiv1.PodSpec) (*environmentWatcher, error) {
useIstio := false useIstio := false
enableIstio := os.Getenv("ENABLE_ISTIO") enableIstio := os.Getenv("ENABLE_ISTIO")
@@ -108,8 +107,11 @@ func makeEnvironmentWatcher(
envWatchInformer: utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.EnvironmentResource), envWatchInformer: utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.EnvironmentResource),
} }
envWatcher.EnvWatchEventHandlers(ctx) err := envWatcher.EnvWatchEventHandlers(ctx)
return envWatcher if err != nil {
return nil, err
}
return envWatcher, nil
} }
func (env *environmentWatcher) getDeploymentLabels(envName string) map[string]string { func (env *environmentWatcher) getDeploymentLabels(envName string) map[string]string {
@@ -134,9 +136,9 @@ func (envw *environmentWatcher) Run(ctx context.Context) {
} }
} }
func (envw *environmentWatcher) EnvWatchEventHandlers(ctx context.Context) { func (envw *environmentWatcher) EnvWatchEventHandlers(ctx context.Context) error {
for _, informer := range envw.envWatchInformer { for _, informer := range envw.envWatchInformer {
informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
envObj := obj.(*fv1.Environment) envObj := obj.(*fv1.Environment)
envw.AddUpdateBuilder(ctx, envObj) envw.AddUpdateBuilder(ctx, envObj)
@@ -153,7 +155,11 @@ func (envw *environmentWatcher) EnvWatchEventHandlers(ctx context.Context) {
envw.DeleteBuilder(ctx, envObj) envw.DeleteBuilder(ctx, envObj)
}, },
}) })
if err != nil {
return err
}
} }
return nil
} }
func (envw *environmentWatcher) AddUpdateBuilder(ctx context.Context, env *fv1.Environment) { func (envw *environmentWatcher) AddUpdateBuilder(ctx context.Context, env *fv1.Environment) {
@@ -252,9 +258,7 @@ func (envw *environmentWatcher) createBuilder(ctx context.Context, env *fv1.Envi
if len(svcList) == 0 { if len(svcList) == 0 {
svc, err = envw.createBuilderService(ctx, env, ns) svc, err = envw.createBuilderService(ctx, env, ns)
if err != nil { if err != nil {
return nil, errors.Wrap(err, return nil, fmt.Errorf("error creating builder service for environment in namespace %s %s: %w", env.ObjectMeta.Name, ns, err)
fmt.Sprintf("error creating builder service for environment in namespace %s %s", env.ObjectMeta.Name, ns))
} }
} else if len(svcList) == 1 { } else if len(svcList) == 1 {
svc = &svcList[0] svc = &svcList[0]
@@ -270,8 +274,7 @@ func (envw *environmentWatcher) createBuilder(ctx context.Context, env *fv1.Envi
if len(deployList) == 0 { if len(deployList) == 0 {
deploy, err = envw.createBuilderDeployment(ctx, env, ns) deploy, err = envw.createBuilderDeployment(ctx, env, ns)
if err != nil { if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("error creating builder deployment for environment in namespace %s %s", env.ObjectMeta.Name, ns)) return nil, fmt.Errorf("error creating builder deployment for environment in namespace %s %s: %w", env.ObjectMeta.Name, ns, err)
} }
} else if len(deployList) == 1 { } else if len(deployList) == 1 {
deploy = &deployList[0] deploy = &deployList[0]
@@ -291,7 +294,7 @@ func (envw *environmentWatcher) deleteBuilderServiceByName(ctx context.Context,
Services(namespace). Services(namespace).
Delete(ctx, name, delOpt) Delete(ctx, name, delOpt)
if err != nil { if err != nil {
return errors.Wrapf(err, "error deleting builder service %s.%s", name, namespace) return fmt.Errorf("error deleting builder service %s.%s: %w", name, namespace, err)
} }
return nil return nil
} }
@@ -301,7 +304,7 @@ func (envw *environmentWatcher) deleteBuilderDeploymentByName(ctx context.Contex
Deployments(namespace). Deployments(namespace).
Delete(ctx, name, delOpt) Delete(ctx, name, delOpt)
if err != nil { if err != nil {
return errors.Wrapf(err, "error deleting builder deployment %s.%s", name, namespace) return fmt.Errorf("error deleting builder deployment %s.%s: %w", name, namespace, err)
} }
return nil return nil
} }
@@ -313,7 +316,7 @@ func (envw *environmentWatcher) getBuilderServiceList(ctx context.Context, sel m
LabelSelector: labels.Set(sel).AsSelector().String(), LabelSelector: labels.Set(sel).AsSelector().String(),
}) })
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error getting builder service list") return nil, fmt.Errorf("error getting builder service list for namespace %s: %w", ns, err)
} }
return svcList.Items, nil return svcList.Items, nil
} }
@@ -367,7 +370,7 @@ func (envw *environmentWatcher) getBuilderDeploymentList(ctx context.Context, se
LabelSelector: labels.Set(sel).AsSelector().String(), LabelSelector: labels.Set(sel).AsSelector().String(),
}) })
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error getting builder deployment list") return nil, fmt.Errorf("error getting builder deployment list for namespace %s: %w", ns, err)
} }
return deployList.Items, nil return deployList.Items, nil
} }
+7 -2
View File
@@ -308,15 +308,20 @@ func (pkgw *packageWatcher) packageInformerHandler(ctx context.Context) k8sCache
} }
} }
func (pkgw *packageWatcher) Run(ctx context.Context) { func (pkgw *packageWatcher) Run(ctx context.Context) error {
go metrics.ServeMetrics(ctx, pkgw.logger) go metrics.ServeMetrics(ctx, pkgw.logger)
for _, podInformer := range pkgw.podInformer { for _, podInformer := range pkgw.podInformer {
go podInformer.Run(ctx.Done()) go podInformer.Run(ctx.Done())
} }
for _, pkgInformer := range pkgw.pkgInformer { for _, pkgInformer := range pkgw.pkgInformer {
pkgInformer.AddEventHandler(pkgw.packageInformerHandler(ctx)) _, err := pkgInformer.AddEventHandler(pkgw.packageInformerHandler(ctx))
if err != nil {
pkgw.logger.Fatal("error adding package informer handler", zap.Error(err))
return err
}
go pkgInformer.Run(ctx.Done()) go pkgInformer.Run(ctx.Done())
} }
return nil
} }
// setInitialBuildStatus sets initial build status to a package if it is empty. // setInitialBuildStatus sets initial build status to a package if it is empty.
+20 -14
View File
@@ -18,13 +18,13 @@ package canaryconfigmgr
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"net/url" "net/url"
"os" "os"
"strings" "strings"
"time" "time"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
k8serrors "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -78,7 +78,7 @@ func MakeCanaryConfigMgr(ctx context.Context, logger *zap.Logger, fissionClient
_, err := url.Parse(prometheusSvc) _, err := url.Parse(prometheusSvc)
if err != nil { if err != nil {
return nil, errors.Errorf("prometheus service url not found/invalid, can't create canary config manager: %v", prometheusSvc) return nil, fmt.Errorf("prometheus service url not found/invalid, can't create canary config manager: %s", prometheusSvc)
} }
promClient, err := MakePrometheusClient(logger, prometheusSvc) promClient, err := MakePrometheusClient(logger, prometheusSvc)
@@ -94,13 +94,16 @@ func MakeCanaryConfigMgr(ctx context.Context, logger *zap.Logger, fissionClient
canaryCfgCancelFuncMap: makecanaryConfigCancelFuncMap(), canaryCfgCancelFuncMap: makecanaryConfigCancelFuncMap(),
} }
configMgr.canaryConfigInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.CanaryConfigResource) configMgr.canaryConfigInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.CanaryConfigResource)
configMgr.CanaryConfigEventHandlers(ctx) err = configMgr.CanaryConfigEventHandlers(ctx)
if err != nil {
return nil, err
}
return configMgr, nil return configMgr, nil
} }
func (canaryCfgMgr *canaryConfigMgr) CanaryConfigEventHandlers(ctx context.Context) { func (canaryCfgMgr *canaryConfigMgr) CanaryConfigEventHandlers(ctx context.Context) error {
for _, informer := range canaryCfgMgr.canaryConfigInformer { for _, informer := range canaryCfgMgr.canaryConfigInformer {
informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
canaryConfig := obj.(*fv1.CanaryConfig) canaryConfig := obj.(*fv1.CanaryConfig)
if canaryConfig.Status.Status == fv1.CanaryConfigStatusPending { if canaryConfig.Status.Status == fv1.CanaryConfigStatusPending {
@@ -126,7 +129,11 @@ func (canaryCfgMgr *canaryConfigMgr) CanaryConfigEventHandlers(ctx context.Conte
}, },
}) })
if err != nil {
return err
}
} }
return nil
} }
func (canaryCfgMgr *canaryConfigMgr) Run(ctx context.Context) { func (canaryCfgMgr *canaryConfigMgr) Run(ctx context.Context) {
@@ -374,9 +381,8 @@ func (canaryCfgMgr *canaryConfigMgr) updateHttpTriggerWithRetries(ctx context.Co
for i := 0; i < maxRetries; i++ { for i := 0; i < maxRetries; i++ {
triggerObj, err := canaryCfgMgr.fissionClient.CoreV1().HTTPTriggers(triggerNamespace).Get(ctx, triggerName, metav1.GetOptions{}) triggerObj, err := canaryCfgMgr.fissionClient.CoreV1().HTTPTriggers(triggerNamespace).Get(ctx, triggerName, metav1.GetOptions{})
if err != nil { if err != nil {
e := "error getting http trigger object" canaryCfgMgr.logger.Error("error getting http trigger object", zap.Error(err), zap.String("trigger_name", triggerName), zap.String("trigger_namespace", triggerNamespace))
canaryCfgMgr.logger.Error(e, zap.Error(err), zap.String("trigger_name", triggerName), zap.String("trigger_namespace", triggerNamespace)) return fmt.Errorf("error getting http trigger object: %w", err)
return errors.Wrap(err, e)
} }
triggerObj.Spec.FunctionReference.FunctionWeights = fnWeights triggerObj.Spec.FunctionReference.FunctionWeights = fnWeights
@@ -394,11 +400,11 @@ func (canaryCfgMgr *canaryConfigMgr) updateHttpTriggerWithRetries(ctx context.Co
continue continue
default: default:
e := "error updating http trigger" e := "error updating http trigger"
canaryCfgMgr.logger.Error(e, canaryCfgMgr.logger.Error("error updating http trigger",
zap.Error(err), zap.Error(err),
zap.String("trigger_name", triggerName), zap.String("trigger_name", triggerName),
zap.String("trigger_namespace", triggerNamespace)) zap.String("trigger_namespace", triggerNamespace))
return errors.Wrapf(err, "%s: %s.%s", e, triggerName, triggerNamespace) return fmt.Errorf("%s: %s.%s %w", e, triggerName, triggerNamespace, err)
} }
} }
@@ -415,7 +421,7 @@ func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfigStatusWithRetries(ctx con
zap.String("name", cfgName), zap.String("name", cfgName),
zap.String("namespace", cfgNamespace), zap.String("namespace", cfgNamespace),
zap.String("status", status)) zap.String("status", status))
return errors.Wrap(err, e) return fmt.Errorf("%s: %s.%s %w", e, cfgName, cfgNamespace, err)
} }
canaryCfgMgr.logger.Info("updating status of canary config", canaryCfgMgr.logger.Info("updating status of canary config",
@@ -444,7 +450,7 @@ func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfigStatusWithRetries(ctx con
zap.Error(err), zap.Error(err),
zap.String("name", cfgName), zap.String("name", cfgName),
zap.String("namespace", cfgNamespace)) zap.String("namespace", cfgNamespace))
return errors.Wrapf(err, "%s: %s.%s", e, cfgName, cfgNamespace) return fmt.Errorf("%s: %s.%s %w", e, cfgName, cfgNamespace, err)
} }
} }
@@ -558,11 +564,11 @@ func StartCanaryServer(ctx context.Context, logger *zap.Logger, unitTestFlag boo
clientGen := crd.NewClientGenerator() clientGen := crd.NewClientGenerator()
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission client") return fmt.Errorf("failed to get fission client: %w", err)
} }
kubernetesClient, err := clientGen.GetKubernetesClient() kubernetesClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get kubernetes client") return fmt.Errorf("failed to get kubernetes client: %w", err)
} }
err = ConfigureFeatures(ctx, cLogger, unitTestFlag, fissionClient, kubernetesClient) err = ConfigureFeatures(ctx, cLogger, unitTestFlag, fissionClient, kubernetesClient)
+10 -4
View File
@@ -42,20 +42,26 @@ type (
func MakeConfigSecretController(ctx context.Context, logger *zap.Logger, fissionClient versioned.Interface, func MakeConfigSecretController(ctx context.Context, logger *zap.Logger, fissionClient versioned.Interface,
kubernetesClient kubernetes.Interface, types map[fv1.ExecutorType]executortype.ExecutorType, kubernetesClient kubernetes.Interface, types map[fv1.ExecutorType]executortype.ExecutorType,
configmapInformer, configmapInformer,
secretInformer map[string]cache.SharedIndexInformer) *ConfigSecretController { secretInformer map[string]cache.SharedIndexInformer) (*ConfigSecretController, error) {
logger.Debug("Creating ConfigMap & Secret Controller") logger.Debug("Creating ConfigMap & Secret Controller")
cmsController := &ConfigSecretController{ cmsController := &ConfigSecretController{
logger: logger, logger: logger,
fissionClient: fissionClient, fissionClient: fissionClient,
} }
for _, informer := range configmapInformer { for _, informer := range configmapInformer {
informer.AddEventHandler(ConfigMapEventHandlers(ctx, logger, fissionClient, kubernetesClient, types)) _, err := informer.AddEventHandler(ConfigMapEventHandlers(ctx, logger, fissionClient, kubernetesClient, types))
if err != nil {
return nil, err
}
} }
for _, informer := range secretInformer { for _, informer := range secretInformer {
informer.AddEventHandler(SecretEventHandlers(ctx, logger, fissionClient, kubernetesClient, types)) _, err := informer.AddEventHandler(SecretEventHandlers(ctx, logger, fissionClient, kubernetesClient, types))
if err != nil {
return nil, err
}
} }
return cmsController return cmsController, nil
} }
func refreshPods(ctx context.Context, logger *zap.Logger, funcs []fv1.Function, types map[fv1.ExecutorType]executortype.ExecutorType) { func refreshPods(ctx context.Context, logger *zap.Logger, funcs []fv1.Function, types map[fv1.ExecutorType]executortype.ExecutorType) {
+4 -1
View File
@@ -356,7 +356,10 @@ func StartExecutor(ctx context.Context, logger *zap.Logger, port int) error {
configMapInformer := utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.ConfigMaps) configMapInformer := utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.ConfigMaps)
secretInformer := utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.Secrets) secretInformer := utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.Secrets)
cms := cms.MakeConfigSecretController(ctx, logger, fissionClient, kubernetesClient, executorTypes, configMapInformer, secretInformer) cms, err := cms.MakeConfigSecretController(ctx, logger, fissionClient, kubernetesClient, executorTypes, configMapInformer, secretInformer)
if err != nil {
return fmt.Errorf("error creating configmap and secret controller: %w", err)
}
fissionInformers := make([]k8sCache.SharedIndexInformer, 0) fissionInformers := make([]k8sCache.SharedIndexInformer, 0)
for _, informer := range configMapInformer { for _, informer := range configMapInformer {
@@ -140,7 +140,10 @@ func MakeContainer(
caaf.svcListerSynced[ns] = informerFactory.Core().V1().Services().Informer().HasSynced caaf.svcListerSynced[ns] = informerFactory.Core().V1().Services().Informer().HasSynced
} }
for _, factory := range finformerFactory { for _, factory := range finformerFactory {
factory.Core().V1().Functions().Informer().AddEventHandler(caaf.FuncInformerHandler(ctx)) _, err := factory.Core().V1().Functions().Informer().AddEventHandler(caaf.FuncInformerHandler(ctx))
if err != nil {
return nil, errors.Wrap(err, "failed to add event handler for function informer")
}
} }
return caaf, nil return caaf, nil
} }
@@ -148,10 +148,16 @@ func MakeNewDeploy(
nd.svcListerSynced[ns] = informerFactory.Core().V1().Services().Informer().HasSynced nd.svcListerSynced[ns] = informerFactory.Core().V1().Services().Informer().HasSynced
} }
for _, factory := range finformerFactory { for _, factory := range finformerFactory {
factory.Core().V1().Functions().Informer().AddEventHandler(nd.FunctionEventHandlers(ctx)) _, err := factory.Core().V1().Functions().Informer().AddEventHandler(nd.FunctionEventHandlers(ctx))
if err != nil {
return nil, err
}
} }
for _, factory := range finformerFactory { for _, factory := range finformerFactory {
factory.Core().V1().Environments().Informer().AddEventHandler(nd.EnvEventHandlers(ctx)) _, err := factory.Core().V1().Environments().Informer().AddEventHandler(nd.EnvEventHandlers(ctx))
if err != nil {
return nil, err
}
} }
return nd, nil return nd, nil
} }
+20 -10
View File
@@ -134,9 +134,11 @@ func MakeGenericPoolManager(ctx context.Context,
enableIstio = istio enableIstio = istio
} }
poolPodC := NewPoolPodController(ctx, gpmLogger, kubernetesClient, poolPodC, err := NewPoolPodController(ctx, gpmLogger, kubernetesClient,
enableIstio, finformerFactory, gpmInformerFactory) enableIstio, finformerFactory, gpmInformerFactory)
if err != nil {
return nil, err
}
gpm := &GenericPoolManager{ gpm := &GenericPoolManager{
logger: gpmLogger, logger: gpmLogger,
pools: make(map[string]*GenericPool), pools: make(map[string]*GenericPool),
@@ -177,8 +179,8 @@ func (gpm *GenericPoolManager) Run(ctx context.Context) {
} }
go gpm.service() go gpm.service()
gpm.poolPodC.InjectGpm(gpm) gpm.poolPodC.InjectGpm(gpm)
go gpm.WebsocketStartEventChecker(ctx, gpm.kubernetesClient) go gpm.WebsocketStartEventChecker(ctx, gpm.kubernetesClient) //nolint:errcheck
go gpm.NoActiveConnectionEventChecker(ctx, gpm.kubernetesClient) go gpm.NoActiveConnectionEventChecker(ctx, gpm.kubernetesClient) //nolint:errcheck
go gpm.idleObjectReaper(ctx) go gpm.idleObjectReaper(ctx)
go gpm.poolPodC.Run(ctx, ctx.Done()) go gpm.poolPodC.Run(ctx, ctx.Done())
} }
@@ -205,13 +207,13 @@ func (gpm *GenericPoolManager) GetFuncSvc(ctx context.Context, fn *fv1.Function)
env, err := gpm.getFunctionEnv(ctx, fn) env, err := gpm.getFunctionEnv(ctx, fn)
if err != nil { if err != nil {
fErr = err fErr = err
return return nil, fErr
} }
pool, created, err := gpm.getPool(ctx, env) pool, created, err := gpm.getPool(ctx, env)
if err != nil { if err != nil {
fErr = err fErr = err
return return nil, fErr
} }
if created { if created {
@@ -695,13 +697,13 @@ func (gpm *GenericPoolManager) doIdleObjectReaper(ctx context.Context) {
} }
// WebsocketStartEventChecker checks if the pod has emitted a websocket connection start event // WebsocketStartEventChecker checks if the pod has emitted a websocket connection start event
func (gpm *GenericPoolManager) WebsocketStartEventChecker(ctx context.Context, kubeClient kubernetes.Interface) { func (gpm *GenericPoolManager) WebsocketStartEventChecker(ctx context.Context, kubeClient kubernetes.Interface) error {
stopper := make(chan struct{}) stopper := make(chan struct{})
defer close(stopper) defer close(stopper)
var wg wait.Group var wg wait.Group
for _, informer := range utils.GetInformerEventChecker(ctx, kubeClient, "WsConnectionStarted") { for _, informer := range utils.GetInformerEventChecker(ctx, kubeClient, "WsConnectionStarted") {
informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
mObj := obj.(metav1.Object) mObj := obj.(metav1.Object)
gpm.logger.Info("Websocket event detected for pod", gpm.logger.Info("Websocket event detected for pod",
@@ -718,19 +720,23 @@ func (gpm *GenericPoolManager) WebsocketStartEventChecker(ctx context.Context, k
} }
}, },
}) })
if err != nil {
return err
}
wg.StartWithChannel(stopper, informer.Run) wg.StartWithChannel(stopper, informer.Run)
} }
wg.Wait() wg.Wait()
return nil
} }
// NoActiveConnectionEventChecker checks if the pod has emitted an inactive event // NoActiveConnectionEventChecker checks if the pod has emitted an inactive event
func (gpm *GenericPoolManager) NoActiveConnectionEventChecker(ctx context.Context, kubeClient kubernetes.Interface) { func (gpm *GenericPoolManager) NoActiveConnectionEventChecker(ctx context.Context, kubeClient kubernetes.Interface) error {
stopper := make(chan struct{}) stopper := make(chan struct{})
defer close(stopper) defer close(stopper)
var wg wait.Group var wg wait.Group
for _, informer := range utils.GetInformerEventChecker(ctx, kubeClient, "NoActiveConnections") { for _, informer := range utils.GetInformerEventChecker(ctx, kubeClient, "NoActiveConnections") {
informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
mObj := obj.(metav1.Object) mObj := obj.(metav1.Object)
gpm.logger.Info("Inactive event detected for pod", gpm.logger.Info("Inactive event detected for pod",
@@ -758,9 +764,13 @@ func (gpm *GenericPoolManager) NoActiveConnectionEventChecker(ctx context.Contex
}, },
}) })
if err != nil {
return err
}
wg.StartWithChannel(stopper, informer.Run) wg.StartWithChannel(stopper, informer.Run)
} }
wg.Wait() wg.Wait()
return nil
} }
func (gpm *GenericPoolManager) DumpDebugInfo(ctx context.Context) error { func (gpm *GenericPoolManager) DumpDebugInfo(ctx context.Context) error {
@@ -71,7 +71,7 @@ func NewPoolPodController(ctx context.Context, logger *zap.Logger,
kubernetesClient kubernetes.Interface, kubernetesClient kubernetes.Interface,
enableIstio bool, enableIstio bool,
finformerFactory map[string]genInformer.SharedInformerFactory, finformerFactory map[string]genInformer.SharedInformerFactory,
gpmInformerFactory map[string]k8sInformers.SharedInformerFactory) *PoolPodController { gpmInformerFactory map[string]k8sInformers.SharedInformerFactory) (*PoolPodController, error) {
logger = logger.Named("pool_pod_controller") logger = logger.Named("pool_pod_controller")
p := &PoolPodController{ p := &PoolPodController{
logger: logger, logger: logger,
@@ -88,30 +88,39 @@ func NewPoolPodController(ctx context.Context, logger *zap.Logger,
} }
if p.enableIstio { if p.enableIstio {
for _, factory := range finformerFactory { for _, factory := range finformerFactory {
factory.Core().V1().Functions().Informer().AddEventHandler(FunctionEventHandlers(ctx, p.logger, p.kubernetesClient, p.nsResolver.ResolveNamespace(p.nsResolver.FunctionNamespace), p.enableIstio)) _, err := factory.Core().V1().Functions().Informer().AddEventHandler(FunctionEventHandlers(ctx, p.logger, p.kubernetesClient, p.nsResolver.ResolveNamespace(p.nsResolver.FunctionNamespace), p.enableIstio))
if err != nil {
return nil, err
}
} }
} }
for ns, informer := range finformerFactory { for ns, informer := range finformerFactory {
informer.Core().V1().Environments().Informer().AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.Core().V1().Environments().Informer().AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: p.enqueueEnvAdd, AddFunc: p.enqueueEnvAdd,
UpdateFunc: p.enqueueEnvUpdate, UpdateFunc: p.enqueueEnvUpdate,
DeleteFunc: p.enqueueEnvDelete, DeleteFunc: p.enqueueEnvDelete,
}) })
if err != nil {
return nil, err
}
p.envLister[ns] = informer.Core().V1().Environments().Lister() p.envLister[ns] = informer.Core().V1().Environments().Lister()
p.envListerSynced[ns] = informer.Core().V1().Environments().Informer().HasSynced p.envListerSynced[ns] = informer.Core().V1().Environments().Informer().HasSynced
} }
for ns, informerFactory := range gpmInformerFactory { for ns, informerFactory := range gpmInformerFactory {
informerFactory.Apps().V1().ReplicaSets().Informer().AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informerFactory.Apps().V1().ReplicaSets().Informer().AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: p.handleRSAdd, AddFunc: p.handleRSAdd,
UpdateFunc: p.handleRSUpdate, UpdateFunc: p.handleRSUpdate,
DeleteFunc: p.handleRSDelete, DeleteFunc: p.handleRSDelete,
}) })
if err != nil {
return nil, err
}
p.podListerSynced[ns] = informerFactory.Core().V1().Pods().Informer().HasSynced p.podListerSynced[ns] = informerFactory.Core().V1().Pods().Informer().HasSynced
p.podLister[ns] = informerFactory.Core().V1().Pods().Lister() p.podLister[ns] = informerFactory.Core().V1().Pods().Lister()
} }
p.logger.Info("pool pod controller handlers registered") p.logger.Info("pool pod controller handlers registered")
return p return p, nil
} }
func (p *PoolPodController) InjectGpm(gpm *GenericPoolManager) { func (p *PoolPodController) InjectGpm(gpm *GenericPoolManager) {
@@ -51,8 +51,11 @@ func TestPoolPodControllerPodCleanup(t *testing.T) {
} }
gpmInformerFactory := utils.GetInformerFactoryByExecutor(kubernetesClient, executorLabel, time.Minute*30) gpmInformerFactory := utils.GetInformerFactoryByExecutor(kubernetesClient, executorLabel, time.Minute*30)
ppc := NewPoolPodController(ctx, logger, kubernetesClient, false, ppc, err := NewPoolPodController(ctx, logger, kubernetesClient, false,
factory, gpmInformerFactory) factory, gpmInformerFactory)
if err != nil {
t.Fatalf("Error creating pool pod controller: %v", err)
}
executorInstanceID := strings.ToLower(uniuri.NewLen(8)) executorInstanceID := strings.ToLower(uniuri.NewLen(8))
metricsClient := metricsclient.NewSimpleClientset() metricsClient := metricsclient.NewSimpleClientset()
@@ -38,7 +38,10 @@ func (gp *GenericPool) setupReadyPodController() error {
podInformer := informerFactory.Core().V1().Pods() podInformer := informerFactory.Core().V1().Pods()
gp.readyPodLister = podInformer.Lister() gp.readyPodLister = podInformer.Lister()
gp.readyPodListerSynced = podInformer.Informer().HasSynced gp.readyPodListerSynced = podInformer.Informer().HasSynced
podInformer.Informer().AddEventHandler(gp.readyPodEventHandlers()) _, err = podInformer.Informer().AddEventHandler(gp.readyPodEventHandlers())
if err != nil {
return err
}
go podInformer.Informer().Run(gp.stopReadyPodControllerCh) go podInformer.Informer().Run(gp.stopReadyPodControllerCh)
gp.logger.Info("readyPod controller started", zap.String("env", gp.env.ObjectMeta.Name), zap.String("envID", string(gp.env.ObjectMeta.UID))) gp.logger.Info("readyPod controller started", zap.String("env", gp.env.ObjectMeta.Name), zap.String("envID", string(gp.env.ObjectMeta.UID)))
return nil return nil
+4 -1
View File
@@ -44,7 +44,10 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
poster := publisher.MakeWebhookPublisher(logger, routerUrl) poster := publisher.MakeWebhookPublisher(logger, routerUrl)
kubeWatch := MakeKubeWatcher(ctx, logger, kubeClient, poster) kubeWatch := MakeKubeWatcher(ctx, logger, kubeClient, poster)
ws := MakeWatchSync(ctx, logger, fissionClient, kubeWatch) ws, err := MakeWatchSync(ctx, logger, fissionClient, kubeWatch)
if err != nil {
return errors.Wrap(err, "error making watch sync")
}
ws.Run(ctx) ws.Run(ctx)
return nil return nil
+12 -5
View File
@@ -37,15 +37,18 @@ type (
} }
) )
func MakeWatchSync(ctx context.Context, logger *zap.Logger, client versioned.Interface, kubeWatcher *KubeWatcher) *WatchSync { func MakeWatchSync(ctx context.Context, logger *zap.Logger, client versioned.Interface, kubeWatcher *KubeWatcher) (*WatchSync, error) {
ws := &WatchSync{ ws := &WatchSync{
logger: logger.Named("watch_sync"), logger: logger.Named("watch_sync"),
client: client, client: client,
kubeWatcher: kubeWatcher, kubeWatcher: kubeWatcher,
} }
ws.kubeWatcherInformer = utils.GetInformersForNamespaces(client, time.Minute*30, fv1.KubernetesWatchResource) ws.kubeWatcherInformer = utils.GetInformersForNamespaces(client, time.Minute*30, fv1.KubernetesWatchResource)
ws.KubeWatcherEventHandlers(ctx) err := ws.KubeWatcherEventHandlers(ctx)
return ws if err != nil {
return nil, err
}
return ws, nil
} }
func (ws *WatchSync) Run(ctx context.Context) { func (ws *WatchSync) Run(ctx context.Context) {
@@ -54,9 +57,9 @@ func (ws *WatchSync) Run(ctx context.Context) {
} }
} }
func (ws *WatchSync) KubeWatcherEventHandlers(ctx context.Context) { func (ws *WatchSync) KubeWatcherEventHandlers(ctx context.Context) error {
for _, informer := range ws.kubeWatcherInformer { for _, informer := range ws.kubeWatcherInformer {
informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
objKubeWatcher := obj.(*fv1.KubernetesWatchTrigger) objKubeWatcher := obj.(*fv1.KubernetesWatchTrigger)
ws.kubeWatcher.addWatch(ctx, objKubeWatcher) //nolint: errCheck ws.kubeWatcher.addWatch(ctx, objKubeWatcher) //nolint: errCheck
@@ -66,5 +69,9 @@ func (ws *WatchSync) KubeWatcherEventHandlers(ctx context.Context) {
ws.kubeWatcher.removeWatch(objKubeWatcher) //nolint: errCheck ws.kubeWatcher.removeWatch(objKubeWatcher) //nolint: errCheck
}, },
}) })
if err != nil {
return err
}
} }
return nil
} }
+7 -4
View File
@@ -19,7 +19,6 @@ package logger
import ( import (
"context" "context"
"fmt" "fmt"
"log"
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
@@ -157,7 +156,7 @@ func symlinkReaper(zapLogger *zap.Logger) {
} }
} }
func Start(ctx context.Context, logger *zap.Logger) { func Start(ctx context.Context, logger *zap.Logger) error {
if _, err := os.Stat(fissionSymlinkPath); os.IsNotExist(err) { if _, err := os.Stat(fissionSymlinkPath); os.IsNotExist(err) {
logger.Info("symlink path not exist, create it", logger.Info("symlink path not exist, create it",
zap.String("fissionSymlinkPath", fissionSymlinkPath)) zap.String("fissionSymlinkPath", fissionSymlinkPath))
@@ -171,15 +170,19 @@ func Start(ctx context.Context, logger *zap.Logger) {
clientGen := crd.NewClientGenerator() clientGen := crd.NewClientGenerator()
kubernetesClient, err := clientGen.GetKubernetesClient() kubernetesClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
log.Fatalf("Error starting pod watcher: %v", err) return err
} }
var wg wait.Group var wg wait.Group
for _, podInformer := range utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.Pods) { for _, podInformer := range utils.GetK8sInformersForNamespaces(kubernetesClient, time.Minute*30, fv1.Pods) {
podInformer.AddEventHandler(podInformerHandlers(logger)) _, err := podInformer.AddEventHandler(podInformerHandlers(logger))
if err != nil {
return err
}
wg.StartWithChannel(ctx.Done(), podInformer.Run) wg.StartWithChannel(ctx.Done(), podInformer.Run)
} }
wg.Wait() wg.Wait()
logger.Error("Stop watching pod changes") logger.Error("Stop watching pod changes")
return nil
} }
+6 -2
View File
@@ -78,16 +78,20 @@ func MakeMessageQueueTriggerManager(logger *zap.Logger,
return &mqTriggerMgr return &mqTriggerMgr
} }
func (mqt *MessageQueueTriggerManager) Run(ctx context.Context) { func (mqt *MessageQueueTriggerManager) Run(ctx context.Context) error {
go mqt.service() go mqt.service()
for _, informer := range utils.GetInformersForNamespaces(mqt.fissionClient, time.Minute*30, fv1.MessageQueueResource) { for _, informer := range utils.GetInformersForNamespaces(mqt.fissionClient, time.Minute*30, fv1.MessageQueueResource) {
informer.AddEventHandler(mqt.mqtInformerHandlers()) _, err := informer.AddEventHandler(mqt.mqtInformerHandlers())
if err != nil {
return err
}
go informer.Run(ctx.Done()) go informer.Run(ctx.Done())
if ok := k8sCache.WaitForCacheSync(ctx.Done(), informer.HasSynced); !ok { if ok := k8sCache.WaitForCacheSync(ctx.Done(), informer.HasSynced); !ok {
mqt.logger.Fatal("failed to wait for caches to sync") mqt.logger.Fatal("failed to wait for caches to sync")
} }
} }
go metrics.ServeMetrics(ctx, mqt.logger) go metrics.ServeMetrics(ctx, mqt.logger)
return nil
} }
func (mqt *MessageQueueTriggerManager) service() { func (mqt *MessageQueueTriggerManager) service() {
+4 -1
View File
@@ -167,7 +167,10 @@ func StartScalerManager(ctx context.Context, logger *zap.Logger, routerURL strin
} }
for _, informer := range utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.MessageQueueResource) { for _, informer := range utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.MessageQueueResource) {
informer.AddEventHandler(mqTriggerEventHandlers(ctx, logger, kubeClient, routerURL)) _, err := informer.AddEventHandler(mqTriggerEventHandlers(ctx, logger, kubeClient, routerURL))
if err != nil {
return err
}
go informer.Run(ctx.Done()) go informer.Run(ctx.Done())
if ok := k8sCache.WaitForCacheSync(ctx.Done(), informer.HasSynced); !ok { if ok := k8sCache.WaitForCacheSync(ctx.Done(), informer.HasSynced); !ok {
logger.Fatal("failed to wait for caches to sync") logger.Fatal("failed to wait for caches to sync")
+22 -8
View File
@@ -64,7 +64,7 @@ type HTTPTriggerSet struct {
} }
func makeHTTPTriggerSet(logger *zap.Logger, fmap *functionServiceMap, fissionClient versioned.Interface, func makeHTTPTriggerSet(logger *zap.Logger, fmap *functionServiceMap, fissionClient versioned.Interface,
kubeClient kubernetes.Interface, executor *executorClient.Client, params *tsRoundTripperParams, isDebugEnv bool, unTapServiceTimeout time.Duration, actionThrottler *throttler.Throttler) *HTTPTriggerSet { kubeClient kubernetes.Interface, executor *executorClient.Client, params *tsRoundTripperParams, isDebugEnv bool, unTapServiceTimeout time.Duration, actionThrottler *throttler.Throttler) (*HTTPTriggerSet, error) {
httpTriggerSet := &HTTPTriggerSet{ httpTriggerSet := &HTTPTriggerSet{
logger: logger.Named("http_trigger_set"), logger: logger.Named("http_trigger_set"),
@@ -82,9 +82,15 @@ func makeHTTPTriggerSet(logger *zap.Logger, fmap *functionServiceMap, fissionCli
} }
httpTriggerSet.triggerInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.HttpTriggerResource) httpTriggerSet.triggerInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.HttpTriggerResource)
httpTriggerSet.funcInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.FunctionResource) httpTriggerSet.funcInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.FunctionResource)
httpTriggerSet.addTriggerHandlers() err := httpTriggerSet.addTriggerHandlers()
httpTriggerSet.addFunctionHandlers() if err != nil {
return httpTriggerSet return nil, err
}
err = httpTriggerSet.addFunctionHandlers()
if err != nil {
return nil, err
}
return httpTriggerSet, nil
} }
func (ts *HTTPTriggerSet) subscribeRouter(ctx context.Context, mr *mutableRouter) { func (ts *HTTPTriggerSet) subscribeRouter(ctx context.Context, mr *mutableRouter) {
@@ -290,9 +296,9 @@ func (ts *HTTPTriggerSet) updateTriggerStatusFailed(ht *fv1.HTTPTrigger, err err
// TODO // TODO
} }
func (ts *HTTPTriggerSet) addTriggerHandlers() { func (ts *HTTPTriggerSet) addTriggerHandlers() error {
for _, triggerInformer := range ts.triggerInformer { for _, triggerInformer := range ts.triggerInformer {
triggerInformer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := triggerInformer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
trigger := obj.(*fv1.HTTPTrigger) trigger := obj.(*fv1.HTTPTrigger)
go createIngress(context.Background(), ts.logger, trigger, ts.kubeClient) go createIngress(context.Background(), ts.logger, trigger, ts.kubeClient)
@@ -315,13 +321,17 @@ func (ts *HTTPTriggerSet) addTriggerHandlers() {
ts.syncTriggers() ts.syncTriggers()
}, },
}) })
if err != nil {
return err
}
} }
return nil
} }
func (ts *HTTPTriggerSet) addFunctionHandlers() { func (ts *HTTPTriggerSet) addFunctionHandlers() error {
for _, funcInformer := range ts.funcInformer { for _, funcInformer := range ts.funcInformer {
funcInformer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := funcInformer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
ts.syncTriggers() ts.syncTriggers()
}, },
@@ -353,7 +363,11 @@ func (ts *HTTPTriggerSet) addFunctionHandlers() {
ts.syncTriggers() ts.syncTriggers()
}, },
}) })
if err != nil {
return err
}
} }
return nil
} }
func (ts *HTTPTriggerSet) runInformer(ctx context.Context, informer map[string]k8sCache.SharedIndexInformer) { func (ts *HTTPTriggerSet) runInformer(ctx context.Context, informer map[string]k8sCache.SharedIndexInformer) {
+4 -2
View File
@@ -200,7 +200,7 @@ func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string
zap.Bool("default", displayAccessLog)) zap.Bool("default", displayAccessLog))
} }
triggers := makeHTTPTriggerSet(logger.Named("triggerset"), fmap, fissionClient, kubeClient, executor, &tsRoundTripperParams{ triggers, err := makeHTTPTriggerSet(logger.Named("triggerset"), fmap, fissionClient, kubeClient, executor, &tsRoundTripperParams{
timeout: timeout, timeout: timeout,
timeoutExponent: timeoutExponent, timeoutExponent: timeoutExponent,
disableKeepAlive: disableKeepAlive, disableKeepAlive: disableKeepAlive,
@@ -208,7 +208,9 @@ func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string
maxRetries: maxRetries, maxRetries: maxRetries,
svcAddrRetryCount: svcAddrRetryCount, svcAddrRetryCount: svcAddrRetryCount,
}, isDebugEnv, unTapServiceTimeout, throttler.MakeThrottler(svcAddrUpdateTimeout)) }, isDebugEnv, unTapServiceTimeout, throttler.MakeThrottler(svcAddrUpdateTimeout))
if err != nil {
logger.Fatal("error making HTTP trigger set", zap.Error(err))
}
go metrics.ServeMetrics(ctx, logger) go metrics.ServeMetrics(ctx, logger)
logger.Info("starting router", zap.Int("port", port)) logger.Info("starting router", zap.Int("port", port))
+4 -2
View File
@@ -39,8 +39,10 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
} }
poster := publisher.MakeWebhookPublisher(logger, routerUrl) poster := publisher.MakeWebhookPublisher(logger, routerUrl)
timerSync := MakeTimerSync(ctx, logger, fissionClient, MakeTimer(logger, poster)) timerSync, err := MakeTimerSync(ctx, logger, fissionClient, MakeTimer(logger, poster))
if err != nil {
return errors.Wrap(err, "error making timer sync")
}
timerSync.Run(ctx) timerSync.Run(ctx)
return nil return nil
} }
+12 -5
View File
@@ -38,15 +38,18 @@ type (
} }
) )
func MakeTimerSync(ctx context.Context, logger *zap.Logger, fissionClient versioned.Interface, timer *Timer) *TimerSync { func MakeTimerSync(ctx context.Context, logger *zap.Logger, fissionClient versioned.Interface, timer *Timer) (*TimerSync, error) {
ws := &TimerSync{ ws := &TimerSync{
logger: logger.Named("timer_sync"), logger: logger.Named("timer_sync"),
fissionClient: fissionClient, fissionClient: fissionClient,
timer: timer, timer: timer,
} }
ws.timeTriggerInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.TimeTriggerResource) ws.timeTriggerInformer = utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.TimeTriggerResource)
ws.TimeTriggerEventHandlers(ctx) err := ws.TimeTriggerEventHandlers(ctx)
return ws if err != nil {
return nil, err
}
return ws, nil
} }
func (ws *TimerSync) Run(ctx context.Context) { func (ws *TimerSync) Run(ctx context.Context) {
@@ -89,9 +92,9 @@ func (ws *TimerSync) DeleteTimeTrigger(timeTrigger *fv1.TimeTrigger) {
} }
} }
func (ws *TimerSync) TimeTriggerEventHandlers(ctx context.Context) { func (ws *TimerSync) TimeTriggerEventHandlers(ctx context.Context) error {
for _, informer := range ws.timeTriggerInformer { for _, informer := range ws.timeTriggerInformer {
informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{ _, err := informer.AddEventHandler(k8sCache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) { AddFunc: func(obj interface{}) {
timeTrigger := obj.(*fv1.TimeTrigger) timeTrigger := obj.(*fv1.TimeTrigger)
ws.AddUpdateTimeTrigger(timeTrigger) ws.AddUpdateTimeTrigger(timeTrigger)
@@ -108,5 +111,9 @@ func (ws *TimerSync) TimeTriggerEventHandlers(ctx context.Context) {
ws.DeleteTimeTrigger(timeTrigger) ws.DeleteTimeTrigger(timeTrigger)
}, },
}) })
if err != nil {
return err
}
} }
return nil
} }
+13 -5
View File
@@ -27,6 +27,8 @@ import (
_ "k8s.io/client-go/plugin/pkg/client/auth" _ "k8s.io/client-go/plugin/pkg/client/auth"
"sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/manager"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
"sigs.k8s.io/controller-runtime/pkg/webhook"
v1 "github.com/fission/fission/pkg/apis/core/v1" v1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/generated/clientset/versioned/scheme" "github.com/fission/fission/pkg/generated/clientset/versioned/scheme"
@@ -45,12 +47,18 @@ func Start(ctx context.Context, logger *zap.Logger, port int) (err error) {
if metricsAddr == "" { if metricsAddr == "" {
metricsAddr = ":8080" metricsAddr = ":8080"
} }
mgrOpt := manager.Options{
Scheme: scheme.Scheme,
Metrics: metricsserver.Options{
BindAddress: metricsAddr,
},
WebhookServer: webhook.NewServer(webhook.Options{
Port: port,
}),
}
// Setup a Manager // Setup a Manager
mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{ mgr, err := manager.New(config.GetConfigOrDie(), mgrOpt)
Scheme: scheme.Scheme,
Port: port,
MetricsBindAddress: metricsAddr,
})
if err != nil { if err != nil {
wLogger.Error("unable to set up overall controller manager", zap.Error(err)) wLogger.Error("unable to set up overall controller manager", zap.Error(err))
return err return err