From 4247e983fcaa57a713db06ff44e71f6287c7f184 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Thu, 6 Jun 2024 22:03:04 -0500 Subject: [PATCH 01/10] update crates to support newer k8s version --- charts/tembo-operator/templates/crd.yaml | 143 ++- tembo-operator/Cargo.lock | 890 ++++++++++-------- tembo-operator/Cargo.toml | 57 +- tembo-operator/justfile | 4 +- .../scripts/reset-local-test-cluster.sh | 4 +- tembo-operator/src/apis/coredb_types.rs | 12 +- tembo-operator/src/app_service/types.rs | 3 +- tembo-operator/src/controller.rs | 52 +- tembo-operator/src/defaults.rs | 1 + tembo-operator/src/fixtures.rs | 17 +- 10 files changed, 699 insertions(+), 484 deletions(-) diff --git a/charts/tembo-operator/templates/crd.yaml b/charts/tembo-operator/templates/crd.yaml index 9ba6ad65d..c607667aa 100644 --- a/charts/tembo-operator/templates/crd.yaml +++ b/charts/tembo-operator/templates/crd.yaml @@ -40,7 +40,7 @@ spec: description: |- A AffinityConfiguration provides a way to configure the CoreDB instance to run on specific nodes in the cluster based off of nodeSelector, nodeAffinity and tolerations - For more informaton on AffinityConfiguration please see the [Cloudnative-PG documentation](https://cloudnative-pg.io/documentation/1.22/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration) + For more information on AffinityConfiguration please see the [Cloudnative-PG documentation](https://cloudnative-pg.io/documentation/1.22/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration) **Default**: ```yaml apiVersion: coredb.io/v1alpha1 kind: CoreDB metadata: name: test-db-restore spec: affinityConfiguration: podAntiAffinityType: preferred topologyKey: topology.kubernetes.io/zone ``` nullable: true @@ -780,6 +780,23 @@ spec: memory: 256Mi description: Defines the resources to allocate to the container. You define this in the same manner as you would for all Kubernetes containers. See the [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + + 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 limits: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." @@ -790,7 +807,7 @@ spec: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." type: string - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object routing: @@ -1097,7 +1114,7 @@ spec: description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: - description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string type: object ephemeral: @@ -1133,7 +1150,7 @@ spec: annotations: additionalProperties: type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations' type: object creationTimestamp: description: |- @@ -1173,7 +1190,7 @@ spec: labels: additionalProperties: type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels' type: object managedFields: description: ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like "ci-cd". The set of fields is always in the version that the workflow used when modifying the object. @@ -1205,13 +1222,13 @@ spec: type: object type: array name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names' type: string namespace: description: |- Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces + Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces type: string ownerReferences: description: List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. @@ -1231,10 +1248,10 @@ spec: description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string name: - description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names' type: string uid: - description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids' type: string required: - apiVersion @@ -1256,7 +1273,7 @@ spec: description: |- UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids + Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids type: string type: object spec: @@ -1268,7 +1285,7 @@ spec: type: string type: array dataSource: - description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.' + description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef 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: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. @@ -1285,12 +1302,14 @@ spec: type: object dataSourceRef: description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef + dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. - * While DataSource ignores disallowed values (dropping them), DataSourceRef + * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. + * 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: apiGroup: description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. @@ -1301,6 +1320,9 @@ spec: name: description: Name is the name of resource being referenced 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: - kind - name @@ -1308,6 +1330,23 @@ spec: resources: description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + + 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 limits: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." @@ -1318,7 +1357,7 @@ spec: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." type: string - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: @@ -1927,11 +1966,11 @@ spec: default: destinationPath: s3:// encryption: AES256 - retentionPolicy: '30' - schedule: 0 0 * * * endpointURL: null + retentionPolicy: '30' s3Credentials: inheritFromIAMRole: true + schedule: 0 0 * * * volumeSnapshot: enabled: false description: |- @@ -1950,7 +1989,7 @@ spec: nullable: true type: string endpointURL: - description: The S3 compatable endpoint URL + description: The S3 compatible endpoint URL nullable: true type: string retentionPolicy: @@ -2043,10 +2082,10 @@ spec: default: enabled: false pooler: - poolMode: transaction parameters: default_pool_size: '50' max_client_conn: '5000' + poolMode: transaction resources: limits: cpu: 100m @@ -2068,10 +2107,10 @@ spec: type: boolean pooler: default: - poolMode: transaction parameters: default_pool_size: '50' max_client_conn: '5000' + poolMode: transaction resources: limits: cpu: 100m @@ -2119,16 +2158,14 @@ spec: limits: additionalProperties: description: IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number. - format: int-or-string - type: string + x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' nullable: true type: object requests: additionalProperties: description: IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number. - format: int-or-string - type: string + x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' nullable: true type: object @@ -2138,7 +2175,7 @@ spec: extensions: default: [] description: |- - A list of extensions to enable on the CoreDB instance. This list should be a lits of extension names that are already available on the Postgres instance you are running. To install extensions at runtime please see the `trunk_installs` field. + A list of extensions to enable on the CoreDB instance. This list should be a list of extension names that are already available on the Postgres instance you are running. To install extensions at runtime please see the `trunk_installs` field. **Default**: [] items: @@ -2316,6 +2353,23 @@ spec: **Requests Default**: 500m CPU and 512Mi memory. properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + + 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 limits: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." @@ -2326,7 +2380,7 @@ spec: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." type: string - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object restore: @@ -2344,7 +2398,7 @@ spec: nullable: true type: string endpointURL: - description: endpointURL is the S3 compatable endpoint URL + description: endpointURL is the S3 compatible endpoint URL nullable: true type: string recoveryTargetTime: @@ -2467,7 +2521,7 @@ spec: annotations: additionalProperties: type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations' type: object creationTimestamp: description: |- @@ -2507,7 +2561,7 @@ spec: labels: additionalProperties: type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels' type: object managedFields: description: ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like "ci-cd". The set of fields is always in the version that the workflow used when modifying the object. @@ -2539,13 +2593,13 @@ spec: type: object type: array name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names' type: string namespace: description: |- Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces + Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces type: string ownerReferences: description: List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. @@ -2565,10 +2619,10 @@ spec: description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string name: - description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names' type: string uid: - description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids' type: string required: - apiVersion @@ -2590,7 +2644,7 @@ spec: description: |- UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids + Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids type: string type: object type: object @@ -2654,7 +2708,7 @@ spec: description: |- The topologySpreadConstraints provides a way to spread matching pods among the given topology - For more information see the Kubernetes documentation on [Topology Spread Constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) Tembo is compatable with the `v1` version of the TopologySpreadConstraints up to [Kubernetes 1.25](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#topologyspreadconstraint-v1-core) + For more information see the Kubernetes documentation on [Topology Spread Constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) Tembo is compatible with the `v1` version of the TopologySpreadConstraints up to [Kubernetes 1.28](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#topologyspreadconstraint-v1-core) **Default**: `None` items: @@ -2829,6 +2883,23 @@ spec: description: ResourceRequirements describes the compute resource requirements. nullable: true properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + + 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 limits: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." @@ -2839,7 +2910,7 @@ spec: additionalProperties: description: "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n ::= \"e\" | \"E\" ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation." type: string - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object running: diff --git a/tembo-operator/Cargo.lock b/tembo-operator/Cargo.lock index 4032fd3cc..03f02a25b 100644 --- a/tembo-operator/Cargo.lock +++ b/tembo-operator/Cargo.lock @@ -21,16 +21,16 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d223b13fd481fc0d1f83bb12659ae774d9e3601814c68a0bc539731698cca743" +checksum = "4eb9843d84c775696c37d9a418bbb01b932629d01870722c0f13eb3f95e2536d" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", "ahash", - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.5.0", "brotli", "bytes", @@ -39,8 +39,8 @@ dependencies = [ "encoding_rs", "flate2", "futures-core", - "h2", - "http", + "h2 0.3.25", + "http 0.2.12", "httparse", "httpdate", "itoa", @@ -70,13 +70,15 @@ dependencies = [ [[package]] name = "actix-router" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" dependencies = [ "bytestring", - "http", + "cfg-if", + "http 0.2.12", "regex", + "regex-lite", "serde", "tracing", ] @@ -131,9 +133,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.5.1" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a6556ddebb638c2358714d853257ed226ece6023ef9364f23f0c70737ea984" +checksum = "b1cf67dadb19d7c95e5a299e2dda24193b89d5d4f33a3b9800888ede9e19aa32" dependencies = [ "actix-codec", "actix-http", @@ -160,6 +162,7 @@ dependencies = [ "once_cell", "pin-project-lite", "regex", + "regex-lite", "serde", "serde_json", "serde_urlencoded", @@ -233,6 +236,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -264,6 +273,18 @@ dependencies = [ "serde_json", ] +[[package]] +name = "async-broadcast" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-stream" version = "0.3.5" @@ -297,6 +318,12 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.2.0" @@ -314,9 +341,9 @@ dependencies = [ "bitflags 1.3.2", "bytes", "futures-util", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", "itoa", "matchit", "memchr", @@ -340,8 +367,8 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 0.2.12", + "http-body 0.4.6", "mime", "rustversion", "tower-layer", @@ -376,21 +403,15 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.20.0" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -415,9 +436,9 @@ dependencies = [ [[package]] name = "brotli" -version = "3.5.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -426,9 +447,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -479,9 +500,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.35" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -492,6 +513,15 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "controller" version = "0.49.0" @@ -499,13 +529,14 @@ dependencies = [ "actix-web", "anyhow", "assert-json-diff", - "base64 0.21.7", + "base64 0.22.1", + "bytes", "chrono", "futures", "futures-util", - "http", - "hyper", - "itertools 0.11.0", + "http 1.1.0", + "hyper 1.3.1", + "itertools 0.13.0", "k8s-openapi", "kube", "lazy_static", @@ -585,9 +616,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -610,9 +641,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.4" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -620,40 +651,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.4" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 1.0.109", + "syn 2.0.55", ] [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 1.0.109", -] - -[[package]] -name = "dashmap" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" -dependencies = [ - "cfg-if", - "hashbrown 0.14.3", - "lock_api", - "once_cell", - "parking_lot_core", + "syn 2.0.55", ] [[package]] @@ -705,27 +723,6 @@ dependencies = [ "crypto-common", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dyn-clone" version = "1.0.17" @@ -747,18 +744,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "enum-as-inner" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.55", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -775,6 +760,27 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "fastrand" version = "2.0.2" @@ -948,7 +954,26 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.12", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", "indexmap 2.2.6", "slab", "tokio", @@ -967,6 +992,10 @@ name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "heck" @@ -981,66 +1010,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] -name = "hickory-proto" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091a6fbccf4860009355e3efc52ff4acf37a63489aad7435372d44ceeb6fbbcf" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.4.0", - "ipnet", - "once_cell", - "rand", - "thiserror", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "hickory-resolver" -version = "0.24.0" +name = "home" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35b8f021164e6a984c9030023544c57789c51760065cd510572fedcfb04164e8" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "cfg-if", - "futures-util", - "hickory-proto", - "ipconfig", - "lru-cache", - "once_cell", - "parking_lot", - "rand", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "tracing", + "windows-sys 0.52.0", ] [[package]] -name = "hostname" -version = "0.3.1" +name = "http" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "libc", - "match_cfg", - "winapi", + "bytes", + "fnv", + "itoa", ] [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1054,15 +1047,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.12", "pin-project-lite", ] [[package]] -name = "http-range-header" -version = "0.3.1" +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", + "pin-project-lite", +] [[package]] name = "httparse" @@ -1086,9 +1096,9 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.25", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1101,21 +1111,42 @@ dependencies = [ ] [[package]] -name = "hyper-openssl" -version = "0.9.2" +name = "hyper" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee5d7a8f718585d1c3c61dfde28ef5b0bb14734b4db13f5ada856cdc6c612b" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" dependencies = [ - "http", - "hyper", - "linked_hash_set", - "once_cell", - "openssl", - "openssl-sys", - "parking_lot", + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", "tokio", - "tokio-openssl", - "tower-layer", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.3.1", + "hyper-util", + "log", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", ] [[package]] @@ -1124,23 +1155,59 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper", + "hyper 0.14.28", "pin-project-lite", "tokio", "tokio-io-timeout", ] +[[package]] +name = "hyper-timeout" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +dependencies = [ + "hyper 1.3.1", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-tls" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", - "hyper", + "http-body-util", + "hyper 1.3.1", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.3.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1172,16 +1239,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.5.0" @@ -1222,18 +1279,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "ipconfig" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" -dependencies = [ - "socket2", - "widestring", - "windows-sys 0.48.0", - "winreg", -] - [[package]] name = "ipnet" version = "2.9.0" @@ -1251,9 +1296,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -1295,24 +1340,27 @@ dependencies = [ ] [[package]] -name = "jsonpath_lib" -version = "0.3.0" +name = "jsonpath-rust" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +checksum = "19d8fe85bd70ff715f31ce8c739194b423d79811a19602115d611a3ec85d6200" dependencies = [ - "log", - "serde", + "lazy_static", + "once_cell", + "pest", + "pest_derive", + "regex", "serde_json", + "thiserror", ] [[package]] name = "k8s-openapi" -version = "0.18.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd990069640f9db34b3b0f7a1afc62a05ffaa3be9b66aa3c313f58346df7f788" +checksum = "19501afb943ae5806548bc3ebd7f3374153ca057a38f480ef30adfde5ef09755" dependencies = [ - "base64 0.21.7", - "bytes", + "base64 0.22.1", "chrono", "schemars", "serde", @@ -1322,9 +1370,9 @@ dependencies = [ [[package]] name = "kube" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14bd236a6f6ddeac3fefa2863eb4e363cb3a2c49d66619e181b5b8f8f0787575" +checksum = "264461a7ebf4fb0fcf23e4c7e4f9387c5696ee61d003de207d9b5a895ff37bfa" dependencies = [ "k8s-openapi", "kube-client", @@ -1335,28 +1383,30 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04a28620131ca89b2509e52f5e1b71bfa3e61a50321836b2ae373bc18e0309e6" +checksum = "47164ad6c47398ee4bdf90509c7b44026229721cb1377eb4623a1ec2a00a85e9" dependencies = [ - "base64 0.20.0", + "base64 0.22.1", "bytes", "chrono", - "dirs-next", "either", "futures", - "http", - "http-body", - "hyper", - "hyper-openssl", - "hyper-timeout", - "jsonpath_lib", + "home", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-rustls", + "hyper-timeout 0.5.1", + "hyper-util", + "jsonpath-rust", "k8s-openapi", "kube-core", - "openssl", "pem", - "pin-project", "rand", + "rustls", + "rustls-pemfile", "secrecy", "serde", "serde_json", @@ -1372,16 +1422,15 @@ dependencies = [ [[package]] name = "kube-core" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8227a989f1eeee3bcbf045165d6aca462af3744ecd4dfdcfba81051fb7de428e" +checksum = "2797d3044a238825432129cd9537e12c2a6dacbbb5352381af5ea55e1505ed4f" dependencies = [ "chrono", "form_urlencoded", - "http", + "http 1.1.0", "json-patch", "k8s-openapi", - "once_cell", "schemars", "serde", "serde_json", @@ -1390,28 +1439,31 @@ dependencies = [ [[package]] name = "kube-derive" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d227fcf3e12f53ea1a38d4766a8c29f8b27795579e4146464effb88d52dd99" +checksum = "fcf837edaa0c478f85e9a3cddb17fa80d58a57c1afa722b3a9e55753ea162f41" dependencies = [ "darling", "proc-macro2", "quote", "serde_json", - "syn 1.0.109", + "syn 2.0.55", ] [[package]] name = "kube-runtime" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6834a4a1f53a8528d5f346cdd141a77dbda31beb33dab4bf24fa4ecf6c508744" +checksum = "e463e89a1fb222c65a5469b568803153d1bf13d084a8dd42b659e6cca66edc6e" dependencies = [ "ahash", + "async-broadcast", + "async-stream", "async-trait", "backoff", "derivative", "futures", + "hashbrown 0.14.3", "json-patch", "k8s-openapi", "kube-client", @@ -1444,32 +1496,6 @@ version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" -[[package]] -name = "libredox" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" -dependencies = [ - "bitflags 2.5.0", - "libc", - "redox_syscall", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linked_hash_set" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "linux-raw-sys" version = "0.4.13" @@ -1509,21 +1535,6 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.1.0" @@ -1686,9 +1697,9 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f" +checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" dependencies = [ "opentelemetry_api", "opentelemetry_sdk", @@ -1696,16 +1707,17 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af72d59a4484654ea8eb183fea5ae4eb6a41d7ac3e3bae5f4d2a282a3a7d3ca" +checksum = "7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275" dependencies = [ "async-trait", - "futures", - "futures-util", - "http", - "opentelemetry", + "futures-core", + "http 0.2.12", "opentelemetry-proto", + "opentelemetry-semantic-conventions", + "opentelemetry_api", + "opentelemetry_sdk", "prost", "thiserror", "tokio", @@ -1714,27 +1726,35 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045f8eea8c0fa19f7d48e7bc3128a39c2e5c533d5c61298c548dfefc1064474c" +checksum = "b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb" dependencies = [ - "futures", - "futures-util", - "opentelemetry", + "opentelemetry_api", + "opentelemetry_sdk", "prost", "tonic", ] +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269" +dependencies = [ + "opentelemetry", +] + [[package]] name = "opentelemetry_api" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" dependencies = [ - "fnv", "futures-channel", "futures-util", "indexmap 1.9.3", + "js-sys", "once_cell", "pin-project-lite", "thiserror", @@ -1743,24 +1763,23 @@ dependencies = [ [[package]] name = "opentelemetry_sdk" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1" +checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" dependencies = [ "async-trait", "crossbeam-channel", - "dashmap", - "fnv", "futures-channel", "futures-executor", "futures-util", "once_cell", "opentelemetry_api", + "ordered-float 3.9.2", "percent-encoding", "rand", + "regex", + "serde_json", "thiserror", - "tokio", - "tokio-stream", ] [[package]] @@ -1772,12 +1791,27 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + [[package]] name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.12.1" @@ -1818,11 +1852,12 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pem" -version = "1.1.1" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", + "serde", ] [[package]] @@ -1831,6 +1866,51 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "pest_meta" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "pin-project" version = "1.1.5" @@ -1922,9 +2002,9 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if", "fnv", @@ -1964,12 +2044,6 @@ version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "1.0.35" @@ -2049,17 +2123,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_users" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" -dependencies = [ - "getrandom", - "libredox", - "thiserror", -] - [[package]] name = "regex" version = "1.10.4" @@ -2092,6 +2155,12 @@ dependencies = [ "regex-syntax 0.8.2", ] +[[package]] +name = "regex-lite" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -2106,21 +2175,22 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2", - "hickory-resolver", - "http", - "http-body", - "hyper", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", "hyper-tls", + "hyper-util", "ipnet", "js-sys", "log", @@ -2146,13 +2216,18 @@ dependencies = [ ] [[package]] -name = "resolv-conf" -version = "0.7.0" +name = "ring" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ - "hostname", - "quick-error", + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -2183,13 +2258,59 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.23.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a218f0f6d05669de4eabfb24f31ce802035c952429d037507b4a4a39f0e60c5b" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -2298,7 +2419,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float", + "ordered-float 2.10.1", "serde", ] @@ -2330,7 +2451,6 @@ version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ - "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -2372,6 +2492,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -2415,11 +2546,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" @@ -2443,6 +2580,12 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "syn" version = "1.0.109" @@ -2582,9 +2725,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -2611,9 +2754,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", @@ -2631,14 +2774,13 @@ dependencies = [ ] [[package]] -name = "tokio-openssl" -version = "0.6.4" +name = "tokio-rustls" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffab79df67727f6acf57f1ff743091873c24c579b1e2ce4d8f53e47ded4d63d" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "futures-util", - "openssl", - "openssl-sys", + "rustls", + "rustls-pki-types", "tokio", ] @@ -2668,9 +2810,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" dependencies = [ "futures-util", "log", @@ -2695,34 +2837,30 @@ dependencies = [ [[package]] name = "tonic" -version = "0.8.3" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ - "async-stream", "async-trait", "axum", - "base64 0.13.1", + "base64 0.21.7", "bytes", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", + "h2 0.3.25", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", + "hyper-timeout 0.4.1", "percent-encoding", "pin-project", "prost", - "prost-derive", "tokio", "tokio-stream", - "tokio-util", "tower", "tower-layer", "tower-service", "tracing", - "tracing-futures", ] [[package]] @@ -2747,18 +2885,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "base64 0.21.7", "bitflags 2.5.0", "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", "mime", "pin-project-lite", "tower-layer", @@ -2825,16 +2961,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.1.4" @@ -2859,9 +2985,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00a39dcf9bfc1742fa4d6215253b33a6e474be78275884c216fc2a06267b3600" +checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19" dependencies = [ "once_cell", "opentelemetry", @@ -2919,14 +3045,14 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 1.1.0", "httparse", "log", "rand", @@ -2942,6 +3068,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -2969,6 +3101,12 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.0" @@ -2976,7 +3114,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", ] @@ -3125,12 +3263,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "widestring" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" - [[package]] name = "winapi" version = "0.3.9" @@ -3296,9 +3428,9 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winreg" -version = "0.50.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ "cfg-if", "windows-sys 0.48.0", diff --git a/tembo-operator/Cargo.toml b/tembo-operator/Cargo.toml index 8f96a9916..93feb7a1e 100644 --- a/tembo-operator/Cargo.toml +++ b/tembo-operator/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "controller" description = "Tembo Operator for Postgres" -version = "0.49.0" +version = "0.50.0" edition = "2021" default-run = "controller" license = "Apache-2.0" @@ -26,49 +26,50 @@ default = [] telemetry = ["tonic", "opentelemetry-otlp"] [dependencies] -actix-web = "4.3.1" -futures = "0.3.28" -tokio = { version = "1.28.2", features = ["macros", "rt-multi-thread"] } -k8s-openapi = { version = "0.18.0", features = [ - "v1_25", +actix-web = "4.4" +futures = "0.3" +tokio = { version = "1.32", features = ["macros", "rt-multi-thread"] } +k8s-openapi = { version = "0.22.0", features = [ + "v1_28", "schemars", ], default-features = false } -schemars = { version = "0.8.12", features = ["chrono"] } -serde = { version = "1.0.180", features = ["derive"] } -serde_json = "1.0.104" +schemars = { version = "0.8", features = ["chrono"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" serde_yaml = "0.9.25" -prometheus = "0.13.3" -chrono = { version = "0.4.26", features = ["serde"] } -tracing = "0.1.37" -tracing-subscriber = { version = "0.3.17", features = ["json", "env-filter"] } -tracing-opentelemetry = "0.19.0" -opentelemetry = { version = "0.19.0", features = ["trace", "rt-tokio"] } -opentelemetry-otlp = { version = "0.12.0", features = [ +prometheus = "0.13.4" +chrono = { version = "0.4.38", features = ["serde"] } +tracing = "0.1" +tracing-subscriber = { version = "0.3.18", features = ["json", "env-filter"] } +tracing-opentelemetry = "0.20" +opentelemetry = { version = "0.20", features = ["trace", "metrics"] } +opentelemetry-otlp = { version = "0.13.0", features = [ "tokio", ], optional = true } -tonic = { version = "0.8.0", optional = true } # 0.9 blocked on opentelemetry-otlp release -thiserror = "1.0.44" -passwords = "3.1.13" -regex = "1.9.1" +tonic = { version = "0.9", optional = true } # 0.9 blocked on opentelemetry-otlp release +thiserror = "1.0" +passwords = "3.1" +regex = "1" lazy_static = "1.4.0" -itertools = "0.11.0" -base64 = "0.21.2" -semver = "1.0.18" -anyhow = "1.0.72" +itertools = "0.13" +base64 = "0.22" +semver = "1.0" +anyhow = "1.0" rand = "0.8.5" -reqwest = { version = "0.11.20", features = ["json", "trust-dns"] } +reqwest = { version = "0.12", features = ["json", "trust-dns"] } utoipa = "3.5.0" strum = { version = "0.26.2", features = ["derive"] } [dev-dependencies] assert-json-diff = "2.0.2" -http = "0.2.9" -hyper = "0.14.27" +http = "1" +hyper = "1" rand = "0.8.5" tower-test = "0.4.0" futures-util = "0.3" regex = "1" +bytes = "1" [dependencies.kube] features = ["runtime", "client", "derive", "ws"] -version = "0.84.0" +version = "0.91" diff --git a/tembo-operator/justfile b/tembo-operator/justfile index 94a3268c1..ba11077d1 100644 --- a/tembo-operator/justfile +++ b/tembo-operator/justfile @@ -3,7 +3,7 @@ ORG := "localhost:5001" VERSION := `git rev-parse HEAD` SEMVER_VERSION := `grep version Cargo.toml | awk -F"\"" '{print $2}' | head -n 1` NAMESPACE := "default" -KUBE_VERSION := env_var_or_default('KUBE_VERSION', '1.25.8') +KUBE_VERSION := env_var_or_default('KUBE_VERSION', '1.28.9') STORAGE_CLASS_NAME := "standard" default: @@ -14,7 +14,7 @@ generate-crd: cargo run --bin crdgen > ../charts/tembo-operator/templates/crd.yaml install-calico: - helm upgrade --install --create-namespace --namespace=tigera-operator --version=3.26.1 --values=./testdata/calico.yaml calico projectcalico/tigera-operator + helm upgrade --install --create-namespace --namespace=tigera-operator --version=3.28.0 --values=./testdata/calico.yaml calico projectcalico/tigera-operator install-traefik: kubectl create namespace traefik || true diff --git a/tembo-operator/scripts/reset-local-test-cluster.sh b/tembo-operator/scripts/reset-local-test-cluster.sh index 50f197b68..927e3ab86 100755 --- a/tembo-operator/scripts/reset-local-test-cluster.sh +++ b/tembo-operator/scripts/reset-local-test-cluster.sh @@ -1,13 +1,13 @@ #!/bin/bash # directory of this script -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) set -xe # Create new cluster kind delete cluster || true -kind create cluster --image=kindest/node:v1.25.8 +kind create cluster --image=kindest/node:v1.28.9 # Label the default namespace as safe to run tests kubectl label namespace default safe-to-run-coredb-tests=true diff --git a/tembo-operator/src/apis/coredb_types.rs b/tembo-operator/src/apis/coredb_types.rs index 455886d3c..c74cadcdc 100644 --- a/tembo-operator/src/apis/coredb_types.rs +++ b/tembo-operator/src/apis/coredb_types.rs @@ -222,7 +222,7 @@ pub struct Backup { #[serde(default = "defaults::default_backup_schedule")] pub schedule: Option, - /// The S3 compatable endpoint URL + /// The S3 compatible endpoint URL #[serde(default, rename = "endpointURL")] pub endpoint_url: Option, @@ -255,7 +255,7 @@ pub struct Backup { /// inheritFromIAMRole: true /// ``` /// -/// For more information plese read through the [cloudnative-pg documentation](https://cloudnative-pg.io/documentation/1.20/recovery/#pitr-from-an-object-store) +/// For more information please read through the [cloudnative-pg documentation](https://cloudnative-pg.io/documentation/1.20/recovery/#pitr-from-an-object-store) #[derive(Deserialize, Serialize, Clone, Debug, Default, JsonSchema)] pub struct Restore { /// The name of the instance you wish to restore. This maps to the `Backup` @@ -282,7 +282,7 @@ pub struct Restore { #[serde(rename = "recoveryTargetTime")] pub recovery_target_time: Option, - /// endpointURL is the S3 compatable endpoint URL + /// endpointURL is the S3 compatible endpoint URL #[serde(default, rename = "endpointURL")] pub endpoint_url: Option, @@ -454,7 +454,7 @@ pub struct CoreDBSpec { pub uid: i32, /// A list of extensions to enable on the CoreDB instance. - /// This list should be a lits of extension names that are already available + /// This list should be a list of extension names that are already available /// on the Postgres instance you are running. To install extensions at runtime /// please see the `trunk_installs` field. /// @@ -567,7 +567,7 @@ pub struct CoreDBSpec { /// A AffinityConfiguration provides a way to configure the CoreDB instance to run /// on specific nodes in the cluster based off of nodeSelector, nodeAffinity and tolerations /// - /// For more informaton on AffinityConfiguration please see the [Cloudnative-PG documentation](https://cloudnative-pg.io/documentation/1.22/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration) + /// For more information on AffinityConfiguration please see the [Cloudnative-PG documentation](https://cloudnative-pg.io/documentation/1.22/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration) /// /// **Default**: /// ```yaml @@ -589,7 +589,7 @@ pub struct CoreDBSpec { /// The topologySpreadConstraints provides a way to spread matching pods among the given topology /// /// For more information see the Kubernetes documentation on [Topology Spread Constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) - /// Tembo is compatable with the `v1` version of the TopologySpreadConstraints up to [Kubernetes 1.25](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#topologyspreadconstraint-v1-core) + /// Tembo is compatible with the `v1` version of the TopologySpreadConstraints up to [Kubernetes 1.28](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#topologyspreadconstraint-v1-core) /// /// **Default**: `None` #[serde(rename = "topologySpreadConstraints")] diff --git a/tembo-operator/src/app_service/types.rs b/tembo-operator/src/app_service/types.rs index 3773036f4..c4bfad93a 100644 --- a/tembo-operator/src/app_service/types.rs +++ b/tembo-operator/src/app_service/types.rs @@ -147,6 +147,7 @@ pub fn default_resources() -> ResourceRequirements { ResourceRequirements { limits: Some(limits), requests: Some(requests), + ..ResourceRequirements::default() } } @@ -159,7 +160,7 @@ pub struct AppMetrics { } // Secrets are injected into the container as environment variables -// ths allows users to map these secrets to environment variable of their choice +// this allows users to map these secrets to environment variable of their choice #[derive(Clone, Debug, Serialize, Deserialize, ToSchema, JsonSchema, PartialEq)] pub struct EnvVar { pub name: String, diff --git a/tembo-operator/src/controller.rs b/tembo-operator/src/controller.rs index 01b33af8d..ab87c246e 100644 --- a/tembo-operator/src/controller.rs +++ b/tembo-operator/src/controller.rs @@ -1199,11 +1199,11 @@ mod test { // Test the error_policy function, we need to mock the ctx and cdb to mimic a 429 error code use crate::{error_policy, Error}; + use bytes::Bytes; use futures::pin_mut; use http::{Request, Response, StatusCode}; - use hyper::Body; use k8s_openapi::api::core::v1::Pod; - use kube::{api::Api, Client}; + use kube::{api::Api, client::Body, Client}; use serde_json::json; use tower_test::mock; @@ -1226,21 +1226,21 @@ mod test { pin_mut!(handle); if let Some((_request, send)) = handle.next_request().await { // We don't check the specifics of the request here, focusing on the response + let response_body = json!({ + "kind": "Status", + "apiVersion": "v1", + "metadata": {}, + "status": "Failure", + "message": "Too Many Requests", + "reason": "TooManyRequests", + "code": 429 + }) + .to_string(); + send.send_response( Response::builder() .status(StatusCode::TOO_MANY_REQUESTS) - .body(Body::from( - json!({ - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "Too Many Requests", - "reason": "TooManyRequests", - "code": 429 - }) - .to_string(), - )) + .body(Body::from(Bytes::from(response_body))) .unwrap(), ); } @@ -1289,21 +1289,21 @@ mod test { let spawned = tokio::spawn(async move { pin_mut!(handle); if let Some((_request, send)) = handle.next_request().await { + let response_body = json!({ + "kind": "Status", + "apiVersion": "v1", + "metadata": {}, + "status": "Failure", + "message": "Not Found", + "reason": "NotFound", + "code": 404 + }) + .to_string(); + send.send_response( Response::builder() .status(StatusCode::NOT_FOUND) - .body(Body::from( - json!({ - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "Not Found", - "reason": "NotFound", - "code": 404 - }) - .to_string(), - )) + .body(Body::from(Bytes::from(response_body))) .unwrap(), ); } diff --git a/tembo-operator/src/defaults.rs b/tembo-operator/src/defaults.rs index 04a70c198..d32ef23b2 100644 --- a/tembo-operator/src/defaults.rs +++ b/tembo-operator/src/defaults.rs @@ -42,6 +42,7 @@ pub fn default_resources() -> ResourceRequirements { ResourceRequirements { limits: Some(limits), requests: Some(requests), + ..ResourceRequirements::default() } } diff --git a/tembo-operator/src/fixtures.rs b/tembo-operator/src/fixtures.rs index f5aa394bc..08aed48cf 100644 --- a/tembo-operator/src/fixtures.rs +++ b/tembo-operator/src/fixtures.rs @@ -6,9 +6,10 @@ use crate::{ use assert_json_diff::assert_json_include; use futures::pin_mut; use http::{Request, Response}; -use hyper::{body::to_bytes, Body}; use k8s_openapi::api::core::v1::{Pod, Secret}; -use kube::{api::ObjectMeta, core::ObjectList, Client, Resource, ResourceExt}; +use kube::{ + api::ObjectList, api::ObjectMeta, client::Body, core::TypeMeta, Client, Resource, ResourceExt, +}; use prometheus::Registry; use std::sync::Arc; use tokio::task::JoinHandle; @@ -63,7 +64,7 @@ impl ApiServerVerifier { { "op": "test", "path": "/metadata/finalizers", "value": null }, { "op": "add", "path": "/metadata/finalizers", "value": vec![COREDB_FINALIZER] } ]); - let req_body = to_bytes(request.into_body()).await.unwrap(); + let req_body = request.into_body().collect_bytes().await.unwrap(); let runtime_patch: serde_json::Value = serde_json::from_slice(&req_body).expect("valid coredb from runtime"); assert_json_include!(actual: runtime_patch, expected: expected_patch); @@ -93,6 +94,10 @@ impl ApiServerVerifier { let obj: ObjectList = ObjectList { metadata: Default::default(), items: vec![], + types: TypeMeta { + kind: "Secret".to_string(), + api_version: "v1".to_string(), + }, }; let response = serde_json::to_vec(&obj).unwrap(); send.send_response(Response::builder().body(Body::from(response)).unwrap()); @@ -162,6 +167,10 @@ impl ApiServerVerifier { let obj: ObjectList = ObjectList { metadata: Default::default(), items: vec![pod], + types: TypeMeta { + kind: "Pod".to_string(), + api_version: "v1".to_string(), + }, }; let response = serde_json::to_vec(&obj).unwrap(); send.send_response(Response::builder().body(Body::from(response)).unwrap()); @@ -179,7 +188,7 @@ impl ApiServerVerifier { coredb.name_any() ) ); - let req_body = to_bytes(request.into_body()).await.unwrap(); + let req_body = request.into_body().collect_bytes().await.unwrap(); let json: serde_json::Value = serde_json::from_slice(&req_body).expect("patch_status object is json"); let status_json = json.get("status").expect("status object").clone(); From 60cf12557abde6ed415f232154233227f97cbf86 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Thu, 6 Jun 2024 22:10:06 -0500 Subject: [PATCH 02/10] bump helm chart, fix CI --- .github/workflows/operator.yaml | 10 +++++----- charts/tembo-operator/Chart.yaml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/operator.yaml b/.github/workflows/operator.yaml index 7e0e19e3d..fa32ac88e 100644 --- a/.github/workflows/operator.yaml +++ b/.github/workflows/operator.yaml @@ -16,14 +16,14 @@ on: branches: - main paths: - - '.github/workflows/operator.yaml' - - 'tembo-operator/**' + - ".github/workflows/operator.yaml" + - "tembo-operator/**" push: branches: - main paths: - - '.github/workflows/operator.yaml' - - 'tembo-operator/**' + - ".github/workflows/operator.yaml" + - "tembo-operator/**" jobs: functional_test: @@ -39,7 +39,7 @@ jobs: # Go here for a list of versions: # https://github.com/kubernetes-sigs/kind/releases kube_version: - - '1.25.8' + - "1.28.9" steps: - uses: actions/checkout@v4 - name: Install system dependencies diff --git a/charts/tembo-operator/Chart.yaml b/charts/tembo-operator/Chart.yaml index ef2ec8b7e..13bb95996 100644 --- a/charts/tembo-operator/Chart.yaml +++ b/charts/tembo-operator/Chart.yaml @@ -3,7 +3,7 @@ name: tembo-operator description: "Helm chart to deploy the tembo-operator" type: application icon: https://cloud.tembo.io/images/TemboElephant.png -version: 0.7.0 +version: 0.8.0 home: https://tembo.io sources: - https://github.com/tembo-io/tembo From 0b3f3c93b7ae660f5897009758f8b25602e20407 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Fri, 7 Jun 2024 10:35:53 -0500 Subject: [PATCH 03/10] update conductor to use new k8s apis, metrics --- .github/workflows/conductor.yaml | 2 +- conductor/Cargo.lock | 1073 ++++++++++++++++-------------- conductor/Cargo.toml | 43 +- conductor/justfile | 2 +- conductor/src/main.rs | 107 +-- conductor/src/monitoring.rs | 2 +- 6 files changed, 634 insertions(+), 595 deletions(-) diff --git a/.github/workflows/conductor.yaml b/.github/workflows/conductor.yaml index 9eb9d6da7..91e106950 100644 --- a/.github/workflows/conductor.yaml +++ b/.github/workflows/conductor.yaml @@ -32,7 +32,7 @@ jobs: fail-fast: false matrix: kube_version: - - "1.25.8" + - "1.28.9" steps: - uses: actions/checkout@v4 - name: Install system dependencies diff --git a/conductor/Cargo.lock b/conductor/Cargo.lock index 53a7a6ff9..9dfee4e9f 100644 --- a/conductor/Cargo.lock +++ b/conductor/Cargo.lock @@ -103,7 +103,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "socket2 0.5.4", + "socket2 0.5.7", "tokio", "tracing", ] @@ -164,7 +164,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.5.4", + "socket2 0.5.7", "time", "url", ] @@ -183,15 +183,15 @@ dependencies = [ [[package]] name = "actix-web-opentelemetry" -version = "0.13.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaa592a5b9b3d96101434bca1024c6da6c23630163aec485428e613cd7100dcf" +checksum = "923b53a2a54dd0b6fb3e737a036b497321b693d16c120806ba4009478f06109b" dependencies = [ "actix-http", "actix-web", "futures-util", - "opentelemetry 0.18.0", - "opentelemetry-prometheus", + "opentelemetry 0.23.0", + "opentelemetry-prometheus 0.16.0", "opentelemetry-semantic-conventions", "prometheus", "serde", @@ -281,12 +281,95 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" + +[[package]] +name = "anstyle-parse" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "anyhow" version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +[[package]] +name = "async-broadcast" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + [[package]] name = "async-trait" version = "0.1.73" @@ -529,10 +612,10 @@ dependencies = [ "http 0.2.9", "http-body 0.4.5", "hyper 0.14.27", - "hyper-rustls", + "hyper-rustls 0.23.2", "lazy_static", "pin-project-lite", - "rustls", + "rustls 0.20.9", "tokio", "tower", "tracing", @@ -665,12 +748,6 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "base64" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" - [[package]] name = "base64" version = "0.21.4" @@ -790,9 +867,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -800,7 +877,22 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets", + "windows-targets 0.52.5", +] + +[[package]] +name = "colorchoice" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", ] [[package]] @@ -820,11 +912,13 @@ dependencies = [ "k8s-openapi", "kube", "log", - "opentelemetry 0.18.0", - "opentelemetry-prometheus", + "opentelemetry 0.20.0", + "opentelemetry-prometheus 0.13.0", + "opentelemetry_sdk 0.20.0", "pgmq", + "prometheus", "rand", - "reqwest 0.12.3", + "reqwest", "schemars", "serde", "serde_json", @@ -836,23 +930,23 @@ dependencies = [ [[package]] name = "controller" -version = "0.48.0" +version = "0.50.0" dependencies = [ "actix-web", "anyhow", - "base64 0.21.4", + "base64 0.22.0", "chrono", "futures", - "itertools", + "itertools 0.13.0", "k8s-openapi", "kube", "lazy_static", - "opentelemetry 0.19.0", + "opentelemetry 0.20.0", "passwords", "prometheus", "rand", "regex", - "reqwest 0.11.20", + "reqwest", "schemars", "semver", "serde", @@ -974,9 +1068,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.4" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -984,40 +1078,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.4" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 1.0.109", + "syn 2.0.59", ] [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 1.0.109", -] - -[[package]] -name = "dashmap" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" -dependencies = [ - "cfg-if", - "hashbrown 0.14.3", - "lock_api", - "once_cell", - "parking_lot_core 0.9.8", + "syn 2.0.59", ] [[package]] @@ -1076,16 +1157,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -1097,17 +1168,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dotenvy" version = "0.15.7" @@ -1139,28 +1199,26 @@ dependencies = [ ] [[package]] -name = "enum-as-inner" -version = "0.5.1" +name = "env_filter" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 1.0.109", + "log", + "regex", ] [[package]] name = "env_logger" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" dependencies = [ + "anstream", + "anstyle", + "env_filter", "humantime", - "is-terminal", "log", - "regex", - "termcolor", ] [[package]] @@ -1177,7 +1235,7 @@ checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1196,6 +1254,27 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + [[package]] name = "fastrand" version = "1.9.0" @@ -1384,6 +1463,12 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "h2" version = "0.3.21" @@ -1487,14 +1572,12 @@ dependencies = [ ] [[package]] -name = "hostname" -version = "0.3.1" +name = "home" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "libc", - "match_cfg", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1553,12 +1636,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-range-header" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" - [[package]] name = "httparse" version = "1.8.0" @@ -1621,24 +1698,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-openssl" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee5d7a8f718585d1c3c61dfde28ef5b0bb14734b4db13f5ada856cdc6c612b" -dependencies = [ - "http 0.2.9", - "hyper 0.14.27", - "linked_hash_set", - "once_cell", - "openssl", - "openssl-sys", - "parking_lot 0.12.1", - "tokio", - "tokio-openssl", - "tower-layer", -] - [[package]] name = "hyper-rustls" version = "0.23.2" @@ -1648,35 +1707,42 @@ dependencies = [ "http 0.2.9", "hyper 0.14.27", "log", - "rustls", - "rustls-native-certs", + "rustls 0.20.9", + "rustls-native-certs 0.6.3", "tokio", - "tokio-rustls", + "tokio-rustls 0.23.4", ] [[package]] -name = "hyper-timeout" -version = "0.4.1" +name = "hyper-rustls" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ - "hyper 0.14.27", - "pin-project-lite", + "futures-util", + "http 1.1.0", + "hyper 1.3.1", + "hyper-util", + "log", + "rustls 0.23.7", + "rustls-native-certs 0.7.0", + "rustls-pki-types", "tokio", - "tokio-io-timeout", + "tokio-rustls 0.26.0", + "tower-service", ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper-timeout" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "bytes", - "hyper 0.14.27", - "native-tls", + "hyper 1.3.1", + "hyper-util", + "pin-project-lite", "tokio", - "tokio-native-tls", + "tower-service", ] [[package]] @@ -1708,7 +1774,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.3.1", "pin-project-lite", - "socket2 0.5.4", + "socket2 0.5.7", "tokio", "tower", "tower-service", @@ -1744,17 +1810,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.4.0" @@ -1795,18 +1850,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "ipconfig" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" -dependencies = [ - "socket2 0.5.4", - "widestring", - "windows-sys", - "winreg 0.50.0", -] - [[package]] name = "ipnet" version = "2.8.0" @@ -1814,15 +1857,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] -name = "is-terminal" -version = "0.4.9" +name = "is_terminal_polyfill" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi", - "rustix", - "windows-sys", -] +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" @@ -1833,6 +1871,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -1870,39 +1917,39 @@ dependencies = [ ] [[package]] -name = "jsonpath_lib" -version = "0.3.0" +name = "jsonpath-rust" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +checksum = "19d8fe85bd70ff715f31ce8c739194b423d79811a19602115d611a3ec85d6200" dependencies = [ - "log", - "serde", + "lazy_static", + "once_cell", + "pest", + "pest_derive", + "regex", "serde_json", + "thiserror", ] [[package]] name = "k8s-openapi" -version = "0.18.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd990069640f9db34b3b0f7a1afc62a05ffaa3be9b66aa3c313f58346df7f788" +checksum = "19501afb943ae5806548bc3ebd7f3374153ca057a38f480ef30adfde5ef09755" dependencies = [ - "base64 0.21.4", - "bytes", + "base64 0.22.0", "chrono", - "http 0.2.9", - "percent-encoding", "schemars", "serde", "serde-value", "serde_json", - "url", ] [[package]] name = "kube" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14bd236a6f6ddeac3fefa2863eb4e363cb3a2c49d66619e181b5b8f8f0787575" +checksum = "264461a7ebf4fb0fcf23e4c7e4f9387c5696ee61d003de207d9b5a895ff37bfa" dependencies = [ "k8s-openapi", "kube-client", @@ -1913,28 +1960,30 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04a28620131ca89b2509e52f5e1b71bfa3e61a50321836b2ae373bc18e0309e6" +checksum = "47164ad6c47398ee4bdf90509c7b44026229721cb1377eb4623a1ec2a00a85e9" dependencies = [ - "base64 0.20.0", + "base64 0.22.0", "bytes", "chrono", - "dirs-next", "either", "futures", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.27", - "hyper-openssl", + "home", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-rustls 0.27.2", "hyper-timeout", - "jsonpath_lib", + "hyper-util", + "jsonpath-rust", "k8s-openapi", "kube-core", - "openssl", "pem", - "pin-project", "rand", + "rustls 0.23.7", + "rustls-pemfile 2.1.2", "secrecy", "serde", "serde_json", @@ -1950,16 +1999,15 @@ dependencies = [ [[package]] name = "kube-core" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8227a989f1eeee3bcbf045165d6aca462af3744ecd4dfdcfba81051fb7de428e" +checksum = "2797d3044a238825432129cd9537e12c2a6dacbbb5352381af5ea55e1505ed4f" dependencies = [ "chrono", "form_urlencoded", - "http 0.2.9", + "http 1.1.0", "json-patch", "k8s-openapi", - "once_cell", "schemars", "serde", "serde_json", @@ -1968,28 +2016,31 @@ dependencies = [ [[package]] name = "kube-derive" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d227fcf3e12f53ea1a38d4766a8c29f8b27795579e4146464effb88d52dd99" +checksum = "fcf837edaa0c478f85e9a3cddb17fa80d58a57c1afa722b3a9e55753ea162f41" dependencies = [ "darling", "proc-macro2", "quote", "serde_json", - "syn 1.0.109", + "syn 2.0.59", ] [[package]] name = "kube-runtime" -version = "0.84.0" +version = "0.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6834a4a1f53a8528d5f346cdd141a77dbda31beb33dab4bf24fa4ecf6c508744" +checksum = "e463e89a1fb222c65a5469b568803153d1bf13d084a8dd42b659e6cca66edc6e" dependencies = [ "ahash 0.8.11", + "async-broadcast", + "async-stream", "async-trait", "backoff", "derivative", "futures", + "hashbrown 0.14.3", "json-patch", "k8s-openapi", "kube-client", @@ -2018,24 +2069,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.148" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linked_hash_set" -version = "0.1.4" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" -dependencies = [ - "linked-hash-map", -] +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "linux-raw-sys" @@ -2072,43 +2108,22 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] -name = "lru-cache" -version = "0.1.2" +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "linked-hash-map", + "regex-automata 0.1.10", ] [[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "md-5" -version = "0.10.5" +name = "md-5" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ @@ -2144,14 +2159,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", "wasi", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2232,9 +2247,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" @@ -2282,70 +2297,70 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e" +checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" dependencies = [ - "opentelemetry_api 0.18.0", - "opentelemetry_sdk 0.18.0", + "opentelemetry_api", + "opentelemetry_sdk 0.20.0", ] [[package]] name = "opentelemetry" -version = "0.19.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f" +checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" dependencies = [ - "opentelemetry_api 0.19.0", - "opentelemetry_sdk 0.19.0", + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", ] [[package]] name = "opentelemetry-prometheus" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c3d833835a53cf91331d2cfb27e9121f5a95261f31f08a1f79ab31688b8da8" +checksum = "c7d81bc254e2d572120363a2b16cdb0d715d301b5789be0cfc26ad87e4e10e53" dependencies = [ - "opentelemetry 0.18.0", + "once_cell", + "opentelemetry_api", + "opentelemetry_sdk 0.20.0", "prometheus", "protobuf", ] [[package]] -name = "opentelemetry-semantic-conventions" -version = "0.10.0" +name = "opentelemetry-prometheus" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b02e0230abb0ab6636d18e2ba8fa02903ea63772281340ccac18e0af3ec9eeb" +checksum = "5e1a24eafe47b693cb938f8505f240dc26c71db60df9aca376b4f857e9653ec7" dependencies = [ - "opentelemetry 0.18.0", + "once_cell", + "opentelemetry 0.23.0", + "opentelemetry_sdk 0.23.0", + "prometheus", + "protobuf", ] [[package]] -name = "opentelemetry_api" -version = "0.18.0" +name = "opentelemetry-semantic-conventions" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c24f96e21e7acc813c7a8394ee94978929db2bcc46cf6b5014fc612bf7760c22" -dependencies = [ - "fnv", - "futures-channel", - "futures-util", - "indexmap 1.9.3", - "js-sys", - "once_cell", - "pin-project-lite", - "thiserror", -] +checksum = "1869fb4bb9b35c5ba8a1e40c9b128a7b4c010d07091e864a29da19e4fe2ca4d7" [[package]] name = "opentelemetry_api" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" dependencies = [ - "fnv", "futures-channel", "futures-util", "indexmap 1.9.3", + "js-sys", "once_cell", "pin-project-lite", "thiserror", @@ -2354,21 +2369,21 @@ dependencies = [ [[package]] name = "opentelemetry_sdk" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca41c4933371b61c2a2f214bf16931499af4ec90543604ec828f7a625c09113" +checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" dependencies = [ "async-trait", "crossbeam-channel", - "dashmap", - "fnv", "futures-channel", "futures-executor", "futures-util", "once_cell", - "opentelemetry_api 0.18.0", + "opentelemetry_api", + "ordered-float 3.9.2", "percent-encoding", "rand", + "regex", "thiserror", "tokio", "tokio-stream", @@ -2376,24 +2391,20 @@ dependencies = [ [[package]] name = "opentelemetry_sdk" -version = "0.19.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1" +checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" dependencies = [ "async-trait", - "crossbeam-channel", - "dashmap", - "fnv", "futures-channel", "futures-executor", "futures-util", + "glob", + "lazy_static", "once_cell", - "opentelemetry_api 0.19.0", - "percent-encoding", - "rand", + "opentelemetry 0.23.0", + "ordered-float 4.2.0", "thiserror", - "tokio", - "tokio-stream", ] [[package]] @@ -2405,6 +2416,24 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-float" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" +dependencies = [ + "num-traits", +] + [[package]] name = "outref" version = "0.5.1" @@ -2417,6 +2446,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.11.2" @@ -2462,7 +2497,7 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -2482,11 +2517,12 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pem" -version = "1.1.1" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64 0.13.1", + "base64 0.22.0", + "serde", ] [[package]] @@ -2495,6 +2531,51 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +[[package]] +name = "pest" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "pest_meta" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "pgmq" version = "0.16.3" @@ -2596,9 +2677,9 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if", "fnv", @@ -2615,12 +2696,6 @@ version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "1.0.36" @@ -2764,44 +2839,6 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" -[[package]] -name = "reqwest" -version = "0.11.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" -dependencies = [ - "base64 0.21.4", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.21", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.27", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-native-tls", - "tower-service", - "trust-dns-resolver", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg 0.50.0", -] - [[package]] name = "reqwest" version = "0.12.3" @@ -2818,7 +2855,7 @@ dependencies = [ "http-body 1.0.0", "http-body-util", "hyper 1.3.1", - "hyper-tls 0.6.0", + "hyper-tls", "hyper-util", "ipnet", "js-sys", @@ -2841,17 +2878,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.52.0", -] - -[[package]] -name = "resolv-conf" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" -dependencies = [ - "hostname", - "quick-error", + "winreg", ] [[package]] @@ -2880,7 +2907,7 @@ dependencies = [ "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2908,7 +2935,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2923,6 +2950,21 @@ dependencies = [ "webpki", ] +[[package]] +name = "rustls" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b" +dependencies = [ + "log", + "once_cell", + "ring 0.17.7", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + [[package]] name = "rustls-native-certs" version = "0.6.3" @@ -2935,6 +2977,19 @@ dependencies = [ "security-framework", ] +[[package]] +name = "rustls-native-certs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.1.2", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -2960,6 +3015,17 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +[[package]] +name = "rustls-webpki" +version = "0.102.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +dependencies = [ + "ring 0.17.7", + "rustls-pki-types", + "untrusted 0.9.0", +] + [[package]] name = "rustversion" version = "1.0.16" @@ -2978,7 +3044,7 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -3076,7 +3142,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float", + "ordered-float 2.10.0", "serde", ] @@ -3108,7 +3174,6 @@ version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ - "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -3206,12 +3271,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3232,7 +3297,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" dependencies = [ - "itertools", + "itertools 0.11.0", "nom", "unicode_categories", ] @@ -3265,7 +3330,7 @@ dependencies = [ "dirs", "dotenvy", "either", - "event-listener", + "event-listener 2.5.3", "futures-channel", "futures-core", "futures-intrusive", @@ -3345,9 +3410,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" @@ -3436,32 +3501,23 @@ dependencies = [ "fastrand 2.0.0", "redox_syscall 0.3.5", "rustix", - "windows-sys", -] - -[[package]] -name = "termcolor" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" -dependencies = [ - "winapi-util", + "windows-sys 0.48.0", ] [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", @@ -3523,9 +3579,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -3535,26 +3591,16 @@ dependencies = [ "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.7", "tokio-macros", - "windows-sys", -] - -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", @@ -3572,26 +3618,25 @@ dependencies = [ ] [[package]] -name = "tokio-openssl" -version = "0.6.3" +name = "tokio-rustls" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08f9ffb7809f1b20c1b398d92acf4cc719874b3b2b2d9ea2f09b4a80350878a" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "futures-util", - "openssl", - "openssl-sys", + "rustls 0.20.9", "tokio", + "webpki", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls", + "rustls 0.23.7", + "rustls-pki-types", "tokio", - "webpki", ] [[package]] @@ -3607,9 +3652,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" dependencies = [ "futures-util", "log", @@ -3651,18 +3696,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "base64 0.21.4", "bitflags 2.4.0", "bytes", - "futures-core", - "futures-util", - "http 0.2.9", - "http-body 0.4.5", - "http-range-header", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", "mime", "pin-project-lite", "tower-layer", @@ -3727,17 +3770,28 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-opentelemetry" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00a39dcf9bfc1742fa4d6215253b33a6e474be78275884c216fc2a06267b3600" +checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19" dependencies = [ "once_cell", - "opentelemetry 0.19.0", + "opentelemetry 0.20.0", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.3", "tracing-subscriber", ] @@ -3753,9 +3807,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -3768,7 +3822,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", "tracing-serde", ] @@ -3781,51 +3835,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "trust-dns-proto" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", - "lazy_static", - "rand", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" -dependencies = [ - "cfg-if", - "futures-util", - "ipconfig", - "lazy_static", - "lru-cache", - "parking_lot 0.12.1", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "tracing", - "trust-dns-proto", -] - [[package]] name = "try-lock" version = "0.2.4" @@ -3834,14 +3843,14 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" dependencies = [ "byteorder", "bytes", "data-encoding", - "http 0.2.9", + "http 1.1.0", "httparse", "log", "rand", @@ -3857,6 +3866,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "unicode-bidi" version = "0.3.13" @@ -3915,7 +3930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna", "percent-encoding", ] @@ -3931,6 +3946,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "utoipa" version = "3.5.0" @@ -4090,12 +4111,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "widestring" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" - [[package]] name = "winapi" version = "0.3.9" @@ -4112,15 +4127,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4133,7 +4139,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -4142,7 +4148,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", ] [[package]] @@ -4151,13 +4166,29 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -4166,36 +4197,78 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4203,14 +4276,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "winreg" -version = "0.50.0" +name = "windows_x86_64_msvc" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", -] +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winreg" @@ -4219,7 +4288,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ "cfg-if", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -4250,9 +4319,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zstd" diff --git a/conductor/Cargo.toml b/conductor/Cargo.toml index df7723d84..a58f3daf2 100644 --- a/conductor/Cargo.toml +++ b/conductor/Cargo.toml @@ -9,31 +9,38 @@ publish = false [dependencies] aws-config = "0.55.1" aws-sdk-cloudformation = "0.26.0" -base64 = "0.21.0" -chrono = { version = "0.4.24", features = [ "serde" ] } -controller = {path = "../tembo-operator", package = "controller"} -env_logger = "0.10.0" -futures = "0.3.28" -k8s-openapi = { version = "0.18.0", features = ["v1_25", "schemars"] } -log = "0.4.17" +base64 = "0.21" +chrono = { version = "0.4", features = ["serde"] } +controller = { path = "../tembo-operator", package = "controller" } +env_logger = "0.11" +futures = "0.3" +k8s-openapi = { version = "0.22.0", features = ["v1_28", "schemars"] } +log = "0.4" pgmq = "0.16.1" -schemars = "0.8.12" -serde = { version = "1.0.160", features = ["derive"] } -serde_json = "1.0.96" -thiserror = "1.0.40" -tokio = {version = "1.28.0", features = ["full"]} +schemars = "0.8" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +thiserror = "1.0" +tokio = { version = "1.28.0", features = ["full"] } actix-web = "4.3.0" -actix-web-opentelemetry = { version = "0.13.0", features = ["metrics-prometheus"] } -opentelemetry = { version = "0.18", features = ["metrics", "rt-tokio-current-thread"] } -opentelemetry-prometheus = "0.11" +actix-web-opentelemetry = { version = "0.18.0", features = [ + "metrics-prometheus", +] } +opentelemetry = { version = "0.20", features = ["metrics"] } +opentelemetry_sdk = { version = "0.20", features = [ + "metrics", + "rt-tokio-current-thread", +] } +opentelemetry-prometheus = "0.13" #otel-prometheus needs to support the same version as otel and otel_sdk +prometheus = "0.13" sqlx = "0.6.3" -anyhow = "1.0.82" +anyhow = "1.0" serde_yaml = "0.9.34" -reqwest = { version = "0.12.3", features = ["json"] } +reqwest = { version = "0.12", features = ["json"] } [dependencies.kube] features = ["runtime", "client", "derive"] -version = "0.84.0" +version = "0.91.0" [dev-dependencies] diff --git a/conductor/justfile b/conductor/justfile index b3e5aa5d4..9518e9f44 100644 --- a/conductor/justfile +++ b/conductor/justfile @@ -2,7 +2,7 @@ NAME := "conductor" VERSION := `git rev-parse HEAD` SEMVER_VERSION := `grep version Cargo.toml | awk -F"\"" '{print $2}' | head -n 1` NAMESPACE := "default" -KUBE_VERSION := env_var_or_default('KUBE_VERSION', '1.25.8') +KUBE_VERSION := env_var_or_default('KUBE_VERSION', '1.28.9') RUST_LOG := "info" default: diff --git a/conductor/src/main.rs b/conductor/src/main.rs index a4ff0d2d7..fe2c282e6 100644 --- a/conductor/src/main.rs +++ b/conductor/src/main.rs @@ -14,9 +14,8 @@ use controller::apis::coredb_types::{ use k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta; use kube::Client; use log::{debug, error, info, warn}; -use opentelemetry::sdk::export::metrics::aggregation; -use opentelemetry::sdk::metrics::{controllers, processors, selectors}; -use opentelemetry::{global, KeyValue}; +use opentelemetry::{metrics::MeterProvider as _, KeyValue}; +use opentelemetry_sdk::metrics::MeterProvider; use pgmq::{Message, PGMQueueExt}; use sqlx::error::Error; use sqlx::postgres::PgPoolOptions; @@ -155,9 +154,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { } } - metrics - .conductor_total - .add(&opentelemetry::Context::current(), 1, &[]); + metrics.conductor_total.add(1, &[]); // note: messages are recycled on purpose // but absurdly high read_ct means its probably never going to get processed @@ -169,9 +166,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { queue .archive(&control_plane_events_queue, read_msg.msg_id) .await?; - metrics - .conductor_errors - .add(&opentelemetry::Context::current(), 1, &[]); + metrics.conductor_errors.add(1, &[]); // this is what we'll send back to control-plane let error_event = types::StateToControlPlane { @@ -210,9 +205,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { .archive(&control_plane_events_queue, read_msg.msg_id) .await .expect("error archiving message from queue"); - metrics - .conductor_errors - .add(&opentelemetry::Context::current(), 1, &[]); + metrics.conductor_errors.add(1, &[]); continue; } // spec.expect() should be safe here - since above we continue in loop when it is None @@ -252,11 +245,9 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { REQUEUE_VT_SEC_SHORT, ) .await?; - metrics.conductor_requeues.add( - &opentelemetry::Context::current(), - 1, - &[KeyValue::new("queue_duration", "short")], - ); + metrics + .conductor_requeues + .add(1, &[KeyValue::new("queue_duration", "short")]); continue; } _ => { @@ -271,11 +262,9 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { REQUEUE_VT_SEC_LONG, ) .await?; - metrics.conductor_requeues.add( - &opentelemetry::Context::current(), - 1, - &[KeyValue::new("queue_duration", "long")], - ); + metrics + .conductor_requeues + .add(1, &[KeyValue::new("queue_duration", "long")]); continue; } }, @@ -333,11 +322,9 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { REQUEUE_VT_SEC_SHORT, ) .await?; - metrics.conductor_requeues.add( - &opentelemetry::Context::current(), - 1, - &[KeyValue::new("queue_duration", "short")], - ); + metrics + .conductor_requeues + .add(1, &[KeyValue::new("queue_duration", "short")]); continue; } _ => { @@ -352,11 +339,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { REQUEUE_VT_SEC_LONG, ) .await?; - metrics.conductor_errors.add( - &opentelemetry::Context::current(), - 1, - &[], - ); + metrics.conductor_errors.add(1, &[]); continue; } } @@ -481,9 +464,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { } _ => { warn!("Unhandled event_type: {:?}", read_msg.message.event_type); - metrics - .conductor_errors - .add(&opentelemetry::Context::current(), 1, &[]); + metrics.conductor_errors.add(1, &[]); continue; } }; @@ -500,9 +481,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { .await .expect("error archiving message from queue"); - metrics - .conductor_completed - .add(&opentelemetry::Context::current(), 1, &[]); + metrics.conductor_completed.add(1, &[]); info!("{}: archived: {:?}", read_msg.msg_id, archived); } @@ -521,11 +500,9 @@ async fn requeue_short( REQUEUE_VT_SEC_SHORT, ) .await?; - metrics.conductor_requeues.add( - &opentelemetry::Context::current(), - 1, - &[KeyValue::new("queue_duration", "short")], - ); + metrics + .conductor_requeues + .add(1, &[KeyValue::new("queue_duration", "short")]); Ok(()) } @@ -536,17 +513,17 @@ async fn requeue_short( async fn main() -> std::io::Result<()> { env_logger::init(); - let controller = controllers::basic( - processors::factory( - selectors::simple::histogram([1.0, 2.0, 5.0, 10.0, 20.0, 50.0]), - aggregation::cumulative_temporality_selector(), - ) - .with_memory(true), - ) - .build(); + // Build Prometheus metrics exporter + let registry = prometheus::Registry::new(); + let exporter = opentelemetry_prometheus::exporter() + .with_registry(registry.clone()) + .build() + .expect("Failed to create Prometheus metrics exporter"); + + let provider = MeterProvider::builder().with_reader(exporter).build(); + + let meter = provider.meter("conductor"); - let exporter = opentelemetry_prometheus::exporter(controller).init(); - let meter = global::meter("actix_web"); let custom_metrics = CustomMetrics::new(&meter); let background_threads: Arc>>> = @@ -572,19 +549,11 @@ async fn main() -> std::io::Result<()> { Err(ConductorError::PgmqError(pgmq::errors::PgmqError::DatabaseError( Error::PoolTimedOut, ))) => { - custom_metrics_copy.clone().conductor_errors.add( - &opentelemetry::Context::current(), - 1, - &[], - ); + custom_metrics_copy.clone().conductor_errors.add(1, &[]); panic!("sqlx PoolTimedOut error -- forcing pod restart, error") } Err(err) => { - custom_metrics_copy.clone().conductor_errors.add( - &opentelemetry::Context::current(), - 1, - &[], - ); + custom_metrics_copy.clone().conductor_errors.add(1, &[]); error!("error in conductor: {:?}", err); } } @@ -604,11 +573,7 @@ async fn main() -> std::io::Result<()> { match run_status_reporter(custom_metrics_copy.clone()).await { Ok(_) => {} Err(err) => { - custom_metrics_copy.clone().conductor_errors.add( - &opentelemetry::Context::current(), - 1, - &[], - ); + custom_metrics_copy.clone().conductor_errors.add(1, &[]); error!("error in conductor: {:?}", err); } } @@ -625,9 +590,7 @@ async fn main() -> std::io::Result<()> { background_threads_locked.push(tokio::spawn(async move { let custom_metrics = &custom_metrics_copy; if let Err(err) = run_metrics_reporter().await { - custom_metrics - .conductor_errors - .add(&opentelemetry::Context::current(), 1, &[]); + custom_metrics.conductor_errors.add(1, &[]); error!("error in metrics_reporter: {err}") } @@ -651,7 +614,7 @@ async fn main() -> std::io::Result<()> { .wrap(RequestTracing::new()) .route( "/metrics", - web::get().to(PrometheusMetricsHandler::new(exporter.clone())), + web::get().to(PrometheusMetricsHandler::new(registry.clone())), ) .service(web::scope("/health").service(background_threads_running)) }) diff --git a/conductor/src/monitoring.rs b/conductor/src/monitoring.rs index c3c582e67..62d497938 100644 --- a/conductor/src/monitoring.rs +++ b/conductor/src/monitoring.rs @@ -24,7 +24,7 @@ impl CustomMetrics { .init(); let conductor_completed = meter .u64_counter("conductor_completed") - .with_description("Number of messages sucessfully processed in conductor") + .with_description("Number of messages successfully processed in conductor") .init(); Self { conductor_total, From 80a56a428dc965703bfb55919f4a574b629924cb Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Fri, 7 Jun 2024 10:49:40 -0500 Subject: [PATCH 04/10] rename conductor_total to conductor --- conductor/src/main.rs | 2 +- conductor/src/monitoring.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conductor/src/main.rs b/conductor/src/main.rs index fe2c282e6..980aa7998 100644 --- a/conductor/src/main.rs +++ b/conductor/src/main.rs @@ -154,7 +154,7 @@ async fn run(metrics: CustomMetrics) -> Result<(), ConductorError> { } } - metrics.conductor_total.add(1, &[]); + metrics.conductor.add(1, &[]); // note: messages are recycled on purpose // but absurdly high read_ct means its probably never going to get processed diff --git a/conductor/src/monitoring.rs b/conductor/src/monitoring.rs index 62d497938..2d5de330f 100644 --- a/conductor/src/monitoring.rs +++ b/conductor/src/monitoring.rs @@ -2,7 +2,7 @@ use opentelemetry::metrics::{Counter, Meter}; #[derive(Clone)] pub struct CustomMetrics { - pub conductor_total: Counter, + pub conductor: Counter, pub conductor_requeues: Counter, pub conductor_errors: Counter, pub conductor_completed: Counter, @@ -10,7 +10,7 @@ pub struct CustomMetrics { impl CustomMetrics { pub fn new(meter: &Meter) -> Self { - let conductor_total = meter + let conductor = meter .u64_counter("conductor_total") .with_description("Total number of dequeues in conductor") .init(); @@ -27,7 +27,7 @@ impl CustomMetrics { .with_description("Number of messages successfully processed in conductor") .init(); Self { - conductor_total, + conductor, conductor_requeues, conductor_errors, conductor_completed, From bae4bcc9d310c48c7cc7c3977f50adc5724771d0 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Fri, 7 Jun 2024 14:45:53 -0500 Subject: [PATCH 05/10] attempt to fix container download slowness --- .github/workflows/operator.yaml | 4 ++++ tembo-operator/Cargo.lock | 2 +- tembo-operator/justfile | 4 ++++ tembo-operator/tests/integration_tests.rs | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/operator.yaml b/.github/workflows/operator.yaml index fa32ac88e..c49a1ec54 100644 --- a/.github/workflows/operator.yaml +++ b/.github/workflows/operator.yaml @@ -71,6 +71,10 @@ jobs: set -xe export KUBE_VERSION=${{ matrix.kube_version }} just start-kind + - name: Pre-load docker images into cluster + run: | + set -xe + just run-load-images - name: Run functional / integration tests run: | set -xe diff --git a/tembo-operator/Cargo.lock b/tembo-operator/Cargo.lock index 03f02a25b..4417a33c7 100644 --- a/tembo-operator/Cargo.lock +++ b/tembo-operator/Cargo.lock @@ -524,7 +524,7 @@ dependencies = [ [[package]] name = "controller" -version = "0.49.0" +version = "0.50.0" dependencies = [ "actix-web", "anyhow", diff --git a/tembo-operator/justfile b/tembo-operator/justfile index ba11077d1..9ea9735cb 100644 --- a/tembo-operator/justfile +++ b/tembo-operator/justfile @@ -203,6 +203,10 @@ forward-tempo: forward-grafana: kubectl port-forward -n monitoring svc/promstack-grafana 8000:80 +# pre-load container images into Kind +run-load-images: + ./scripts/load_docker_images.sh + # mode: makefile # End: # vim: set ft=make : diff --git a/tembo-operator/tests/integration_tests.rs b/tembo-operator/tests/integration_tests.rs index 504e84dda..05788a0e1 100644 --- a/tembo-operator/tests/integration_tests.rs +++ b/tembo-operator/tests/integration_tests.rs @@ -1,4 +1,5 @@ // Include the #[gnore] macro on slow tests +// // That way, 'cargo test' does not run them by default. // To run just these tests, use 'cargo test -- --ignored' // To run all tests, use 'cargo test -- --include-ignored' @@ -2149,6 +2150,9 @@ mod test { psql_with_retry(context.clone(), coredb_resource.clone(), "\\dx".to_string()).await; assert!(result.stdout.clone().unwrap().contains("plpgsql")); + pod_ready_and_running(pods.clone(), pod_name_primary.clone()).await; + pod_ready_and_running(pods.clone(), pod_name_secondary.clone()).await; + // Assert that both pods are replicating successfully let result = psql_with_retry( context.clone(), From 1bef602c83692e5b1a1909f7363d4a232d70065f Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Fri, 7 Jun 2024 14:51:35 -0500 Subject: [PATCH 06/10] add in container image script --- .github/workflows/operator.yaml | 2 +- tembo-operator/scripts/load_docker_images.sh | 25 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100755 tembo-operator/scripts/load_docker_images.sh diff --git a/.github/workflows/operator.yaml b/.github/workflows/operator.yaml index c49a1ec54..8a166af5d 100644 --- a/.github/workflows/operator.yaml +++ b/.github/workflows/operator.yaml @@ -50,7 +50,7 @@ jobs: - uses: azure/setup-helm@v3 - uses: extractions/setup-just@v1 - name: Install kind - uses: helm/kind-action@v1.7.0 + uses: helm/kind-action@v1.10.0 with: install_only: true - uses: dtolnay/rust-toolchain@stable diff --git a/tembo-operator/scripts/load_docker_images.sh b/tembo-operator/scripts/load_docker_images.sh new file mode 100755 index 000000000..dc155d936 --- /dev/null +++ b/tembo-operator/scripts/load_docker_images.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# List of images +# These are taken from tests/integration_tests.rs and src/defaults.rs +images=( + "quay.io/tembo/standard-cnpg:16-a0a5ab5" + "quay.io/tembo/standard-cnpg:14-a0a5ab5" + "quay.io/tembo/standard-cnpg:15-a0a5ab5" + "postgrest/postgrest:v10.0.0" + "crccheck/hello-world:latest" + "ghcr.io/ferretdb/ferretdb" + "quay.io/tembo/standard-cnpg:15-120cc24" + "prom/blackbox-exporter" +) + +# Loop through each image +for image in "${images[@]}"; do + echo "Pulling image: $image" + docker pull "$image" + + echo "Loading image into kind cluster: $image" + kind load docker-image "$image" +done + +echo "All images have been pulled and loaded into the kind cluster." From 1dd4ff751966445c3cce52a24121e8aaa0dd6869 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Fri, 7 Jun 2024 16:12:31 -0500 Subject: [PATCH 07/10] use the same cnpg image for all tests --- tembo-operator/scripts/load_docker_images.sh | 1 - tembo-operator/tests/integration_tests.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tembo-operator/scripts/load_docker_images.sh b/tembo-operator/scripts/load_docker_images.sh index dc155d936..d4e7d4d56 100755 --- a/tembo-operator/scripts/load_docker_images.sh +++ b/tembo-operator/scripts/load_docker_images.sh @@ -9,7 +9,6 @@ images=( "postgrest/postgrest:v10.0.0" "crccheck/hello-world:latest" "ghcr.io/ferretdb/ferretdb" - "quay.io/tembo/standard-cnpg:15-120cc24" "prom/blackbox-exporter" ) diff --git a/tembo-operator/tests/integration_tests.rs b/tembo-operator/tests/integration_tests.rs index 05788a0e1..f743068db 100644 --- a/tembo-operator/tests/integration_tests.rs +++ b/tembo-operator/tests/integration_tests.rs @@ -5384,7 +5384,7 @@ CREATE EVENT TRIGGER pgrst_watch "name": name }, "spec": { - "image": "quay.io/tembo/standard-cnpg:15-120cc24", + "image": "quay.io/tembo/standard-cnpg:15-a0a5ab5", "replicas": replicas, "trunk_installs": [ { From 0e77280f1dbb71c7c454e384e8c667b61da378bb Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Sun, 9 Jun 2024 11:43:04 -0500 Subject: [PATCH 08/10] attempt to fix tests --- tembo-operator/tests/integration_tests.rs | 41 +++++++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/tembo-operator/tests/integration_tests.rs b/tembo-operator/tests/integration_tests.rs index f743068db..2f9ed5880 100644 --- a/tembo-operator/tests/integration_tests.rs +++ b/tembo-operator/tests/integration_tests.rs @@ -349,7 +349,7 @@ mod test { inverse: bool, ) -> PsqlOutput { // Wait up to 200 seconds - for _ in 1..40 { + for _ in 1..60 { thread::sleep(Duration::from_millis(5000)); // Assert extension no longer created let result = coredb_resource @@ -424,6 +424,31 @@ mod test { println!("Found pod ready: {}", pod_name); } + async fn wait_for_pod_with_label(pods: &Api, label_selector: &str) -> Option { + let timeout = Duration::from_secs(TIMEOUT_SECONDS_START_POD); + let mut interval = tokio::time::interval(Duration::from_secs(5)); + + let start = tokio::time::Instant::now(); + while start.elapsed() < timeout { + let lp = ListParams::default().labels(label_selector); + match pods.list(&lp).await { + Ok(pod_list) => { + for pod in pod_list { + if let Some(name) = pod.metadata.name { + println!("Found pooler pod: {}", name); + return Some(name); + } + } + } + Err(e) => { + eprintln!("Error listing pods: {}", e); + } + } + interval.tick().await; + } + None + } + pub fn is_backup_completed() -> impl Condition + 'static { move |obj: Option<&Backup>| { if let Some(backup) = &obj { @@ -3680,6 +3705,10 @@ mod test { let patch = Patch::Apply(&coredb_json); let _coredb_resource = coredbs.patch(cdb_name, ¶ms, &patch).await.unwrap(); + let pods: Api = Api::namespaced(client.clone(), &namespace); + let pod_name = format!("{}-1", cdb_name); + pod_ready_and_running(pods.clone(), pod_name).await; + // assert we created three Deployments, with the names we provided let deployment_items: Vec = list_resources(client.clone(), cdb_name, &namespace, 3) @@ -5058,9 +5087,15 @@ CREATE EVENT TRIGGER pgrst_watch // Check for pooler service let pooler_services: Api = Api::namespaced(client.clone(), &namespace); + let pooler_pod_name = wait_for_pod_with_label(&pods, "cnpg.io/podRole=pooler").await; + if let Some(pooler_pod_name) = pooler_pod_name { + pod_ready_and_running(pods.clone(), pooler_pod_name.clone()).await; + println!("Found pooler pod: {}", pooler_pod_name); + } else { + println!("No pooler pod found with the specified label."); + } let _pooler_service = pooler_services.get(&pooler_name).await.unwrap(); println!("Found pooler service: {}", pooler_name); - // Check for pooler secret let pooler_secrets: Api = Api::namespaced(client.clone(), &namespace); let _pooler_secret = pooler_secrets.get(&pooler_name).await.unwrap(); @@ -5503,7 +5538,7 @@ CREATE EVENT TRIGGER pgrst_watch let cluster_api: Api = Api::namespaced(client.clone(), &namespace); let cluster = cluster_api.get(name).await.unwrap(); let image = cluster.spec.image.clone(); - assert_eq!(image, "quay.io/tembo/standard-cnpg:15-120cc24"); + assert_eq!(image, "quay.io/tembo/standard-cnpg:15-a0a5ab5"); // CLEANUP TEST // Cleanup CoreDB From 44c21374593f25e98c0d3f918cdfe7a8022577d4 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Sun, 9 Jun 2024 12:43:00 -0500 Subject: [PATCH 09/10] fix tests --- .github/workflows/operator.yaml | 2 +- tembo-operator/tests/integration_tests.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/operator.yaml b/.github/workflows/operator.yaml index 8a166af5d..6eb2270c8 100644 --- a/.github/workflows/operator.yaml +++ b/.github/workflows/operator.yaml @@ -83,7 +83,7 @@ jobs: # Start the operator in the background cargo run > operator-output.txt 2>&1 & # Run the tests - cargo test --jobs 1 -- --ignored --nocapture + cargo test --jobs 1 -- --test-threads=1 --ignored --nocapture - name: Debugging information if: always() run: | diff --git a/tembo-operator/tests/integration_tests.rs b/tembo-operator/tests/integration_tests.rs index 2f9ed5880..26f00bc0a 100644 --- a/tembo-operator/tests/integration_tests.rs +++ b/tembo-operator/tests/integration_tests.rs @@ -982,7 +982,7 @@ mod test { let cdb_name = coredb_resource.metadata.name.clone().unwrap(); let metrics_url = format!("https://{}.localhost:8443/metrics", cdb_name); - let response = http_get_with_retry(&metrics_url, None, 100, 5) + let response = http_get_with_retry(&metrics_url, None, 200, 10) .await .unwrap(); let response_code = response.status(); From fb781d2ba0b3dbfd69a5302f78a42bb53623def9 Mon Sep 17 00:00:00 2001 From: Nick Hudson Date: Wed, 6 Nov 2024 06:52:35 -0600 Subject: [PATCH 10/10] bump cnpg, fix linter issues --- .github/workflows/operator.yaml | 4 ---- charts/tembo-operator/Chart.lock | 6 +++--- charts/tembo-operator/Chart.yaml | 4 ++-- .../charts/cloudnative-pg-0.21.6.tgz | Bin 149763 -> 0 bytes .../charts/cloudnative-pg-0.22.1.tgz | Bin 0 -> 157858 bytes conductor/Cargo.toml | 5 ++++- tembo-operator/src/telemetry.rs | 4 +++- 7 files changed, 12 insertions(+), 11 deletions(-) delete mode 100644 charts/tembo-operator/charts/cloudnative-pg-0.21.6.tgz create mode 100644 charts/tembo-operator/charts/cloudnative-pg-0.22.1.tgz diff --git a/.github/workflows/operator.yaml b/.github/workflows/operator.yaml index dbf354665..25522e5ca 100644 --- a/.github/workflows/operator.yaml +++ b/.github/workflows/operator.yaml @@ -39,11 +39,7 @@ jobs: # Go here for a list of versions: # https://github.com/kubernetes-sigs/kind/releases kube_version: -<<<<<<< HEAD - - "1.28.9" -======= - "1.29.8" ->>>>>>> main steps: - uses: actions/checkout@v4 - name: Install system dependencies diff --git a/charts/tembo-operator/Chart.lock b/charts/tembo-operator/Chart.lock index ba2804e61..f2621b222 100644 --- a/charts/tembo-operator/Chart.lock +++ b/charts/tembo-operator/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: cloudnative-pg repository: https://cloudnative-pg.github.io/charts - version: 0.21.6 -digest: sha256:3922d990e9dec07c6dda1f7b8799e9cfd2ef28450357f5a3f260a3d4773e5db2 -generated: "2024-09-04T09:47:10.610286988-05:00" + version: 0.22.1 +digest: sha256:3154534b59a8f8aa31308f2c3a13358241708a677a46f9012d19f69425ce882f +generated: "2024-11-06T04:00:20.503317805-06:00" diff --git a/charts/tembo-operator/Chart.yaml b/charts/tembo-operator/Chart.yaml index c635b1f73..1bff5aefd 100644 --- a/charts/tembo-operator/Chart.yaml +++ b/charts/tembo-operator/Chart.yaml @@ -3,7 +3,7 @@ name: tembo-operator description: "Helm chart to deploy the tembo-operator" type: application icon: https://cloud.tembo.io/images/TemboElephant.png -version: 0.8.0 +version: 0.9.0 home: https://tembo.io sources: - https://github.com/tembo-io/tembo @@ -17,6 +17,6 @@ maintainers: url: https://tembocommunity.slack.com dependencies: - name: cloudnative-pg - version: 0.21.6 + version: 0.22.1 repository: https://cloudnative-pg.github.io/charts condition: cloudnative-pg.enabled diff --git a/charts/tembo-operator/charts/cloudnative-pg-0.21.6.tgz b/charts/tembo-operator/charts/cloudnative-pg-0.21.6.tgz deleted file mode 100644 index 3028f0f661cc36320178b718b9c535025a815aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149763 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
T>lMlN9(qSIwu5 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Ǝ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 diff --git a/charts/tembo-operator/charts/cloudnative-pg-0.22.1.tgz b/charts/tembo-operator/charts/cloudnative-pg-0.22.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3d7d7e972f2c8cdad8f283f76c295447cbfa8e2e GIT binary patch literal 157858 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%0A1X@-5y@XMk+5l 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 literal 0 HcmV?d00001 diff --git a/conductor/Cargo.toml b/conductor/Cargo.toml index a60bb9e53..deffb81c0 100644 --- a/conductor/Cargo.toml +++ b/conductor/Cargo.toml @@ -14,7 +14,10 @@ chrono = { version = "0.4", features = ["serde"] } controller = { path = "../tembo-operator", package = "controller" } env_logger = "0.11" futures = "0.3" -k8s-openapi = { version = "0.23.0", features = ["v1_29", "latest"] } +k8s-openapi = { version = "0.23", features = [ + "v1_29", + "schemars", +], default-features = false } log = "0.4" pgmq = "0.28.2" schemars = "0.8" diff --git a/tembo-operator/src/telemetry.rs b/tembo-operator/src/telemetry.rs index 520271248..808f6eb68 100644 --- a/tembo-operator/src/telemetry.rs +++ b/tembo-operator/src/telemetry.rs @@ -27,7 +27,9 @@ fn resource() -> Resource { fn init_tracer() -> sdktrace::Tracer { use opentelemetry_otlp::WithExportConfig; let endpoint = std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Needs an otel collector"); - let exporter = opentelemetry_otlp::new_exporter().tonic().with_endpoint(endpoint); + let exporter = opentelemetry_otlp::new_exporter() + .tonic() + .with_endpoint(endpoint); let provider = opentelemetry_otlp::new_pipeline() .tracing()