From 63243973cbe62b2bce9155dee8507f2fc5cb413c Mon Sep 17 00:00:00 2001 From: Alexander Ulyanov Date: Thu, 16 May 2024 16:43:11 +0200 Subject: [PATCH 01/10] feat: add support for gpu enabled k8s node group and nvidia gpu operator --- .../180-nvidia-gpu-operator.yaml | 28 ++++++++ .../ml-services/gpu-operator/application.yaml | 70 +++++++++++++++++++ platform/terraform/modules/cloud_aws/main.tf | 44 ++++++++++-- .../terraform/modules/cloud_aws/variables.tf | 1 + platform/terraform/modules/cloud_azure/aks.tf | 28 +++++--- .../modules/cloud_azure/variables.tf | 1 + tools/cli/commands/setup.py | 1 + tools/cli/services/cloud/aws/aws_manager.py | 4 ++ .../cli/services/cloud/azure/azure_manager.py | 10 +++ .../services/cloud/cloud_provider_manager.py | 8 +++ 10 files changed, 180 insertions(+), 15 deletions(-) create mode 100644 platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/180-nvidia-gpu-operator.yaml create mode 100644 platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/ml-services/gpu-operator/application.yaml diff --git a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/180-nvidia-gpu-operator.yaml b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/180-nvidia-gpu-operator.yaml new file mode 100644 index 00000000..3ac26295 --- /dev/null +++ b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/180-nvidia-gpu-operator.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: nvidia-gpu-operator-components + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: '180' +spec: + project: core + source: + repoURL: + path: gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/ml-services/gpu-operator + targetRevision: HEAD + destination: + server: https://kubernetes.default.svc + namespace: gpu-operator + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + retry: + limit: 10 + backoff: + duration: 30s + maxDuration: 15m0s + factor: 2 diff --git a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/ml-services/gpu-operator/application.yaml b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/ml-services/gpu-operator/application.yaml new file mode 100644 index 00000000..e23eb870 --- /dev/null +++ b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/ml-services/gpu-operator/application.yaml @@ -0,0 +1,70 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: nvidia-gpu-operator + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: '180' +spec: + project: core + source: + repoURL: https://helm.ngc.nvidia.com/nvidia + chart: gpu-operator + targetRevision: v24.3.0 + helm: + values: |- + daemonsets: + labels: + cg-devx.cost-allocation.cost-center: platform + cg-devx.metadata.owner: -admin + cg-devx.metadata.service: ml.gpu-operator + cg-devx.metadata.chart-version: 24.3.0 + cg-devx.metadata.version: 24.3.0 + parameters: + # set tolerations to work on gpu enabled node groups + # node-feature-discovery.worker + - name: "node-feature-discovery.worker.tolerations[0].key" + value: "group-type" + - name: "node-feature-discovery.worker.tolerations[0].value" + value: "gpu-enabled" + - name: "node-feature-discovery.worker.tolerations[0].operator" + value: "Equal" + - name: "node-feature-discovery.worker.tolerations[0].effect" + value: "NoSchedule" + # deamonset + - name: "daemonsets.tolerations[0].key" + value: "group-type" + - name: "daemonsets.tolerations[0].value" + value: "gpu-enabled" + - name: "daemonsets.tolerations[0].operator" + value: "Equal" + - name: "daemonsets.tolerations[0].effect" + value: "NoSchedule" + # operator + - name: "operator.tolerations[0].key" + value: "group-type" + - name: "operator.tolerations[0].value" + value: "gpu-enabled" + - name: "operator.tolerations[0].operator" + value: "Equal" + - name: "operator.tolerations[0].effect" + value: "NoSchedule" + # + destination: + server: 'https://kubernetes.default.svc' + namespace: gpu-operator + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + managedNamespaceMetadata: + labels: + "pod-security.kubernetes.io/enforce": "privileged" + retry: + limit: 5 + backoff: + duration: 5s + maxDuration: 5m0s + factor: 2 diff --git a/platform/terraform/modules/cloud_aws/main.tf b/platform/terraform/modules/cloud_aws/main.tf index c278b819..f2ca292c 100644 --- a/platform/terraform/modules/cloud_aws/main.tf +++ b/platform/terraform/modules/cloud_aws/main.tf @@ -22,11 +22,28 @@ locals { instance_types = node_group.instance_types capacity_type = upper(node_group.capacity_type) labels = merge( - { "node.kubernetes.io/lifecycle" = "${node_group.capacity_type}" }, - var.cluster_node_labels + var.cluster_node_labels, + { "node.kubernetes.io/lifecycle" = "${node_group.capacity_type}" } + ) + ami_type = node_group.gpu_enabled == true ? "BOTTLEROCKET_x86_64_NVIDIA" : "BOTTLEROCKET_x86_64" + taints = merge(node_group.capacity_type == "spot" ? + { + capacity_type_spot = { + key = "capacity-type-spot" + value = "true" + effect = "PREFER_NO_SCHEDULE" + } + } : + { + }, + node_group.gpu_enabled == true ? { + group_type = { + key = "group-type" + value = "gpu-enabled" + effect = "NO_SCHEDULE" + } + } : {} ) - - } ] @@ -50,7 +67,24 @@ locals { "'" ] ) - + taints = merge(node_group.capacity_type == "spot" ? + { + capacity_type_spot = { + key = "capacity-type-spot" + value = "true" + effect = "PREFER_NO_SCHEDULE" + } + } : + { + }, + node_group.gpu_enabled == true ? { + group_type = { + key = "group-type" + value = "gpu-enabled" + effect = "NO_SCHEDULE" + } + } : {} + ) } ] } diff --git a/platform/terraform/modules/cloud_aws/variables.tf b/platform/terraform/modules/cloud_aws/variables.tf index 7cea73bb..11d82c1c 100644 --- a/platform/terraform/modules/cloud_aws/variables.tf +++ b/platform/terraform/modules/cloud_aws/variables.tf @@ -59,6 +59,7 @@ variable "node_groups" { min_size = optional(number, 3) max_size = optional(number, 6) desired_size = optional(number, 4) + gpu_enabled = optional(bool, false) })) default = [ { diff --git a/platform/terraform/modules/cloud_azure/aks.tf b/platform/terraform/modules/cloud_azure/aks.tf index ff56fa26..e1e6b593 100644 --- a/platform/terraform/modules/cloud_azure/aks.tf +++ b/platform/terraform/modules/cloud_azure/aks.tf @@ -37,8 +37,8 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" { enable_host_encryption = false enable_node_public_ip = false node_count = local.default_node_group.desired_size - min_count = local.enable_native_auto_scaling? local.default_node_group.min_size : null - max_count = local.enable_native_auto_scaling? local.default_node_group.max_size : null + min_count = local.enable_native_auto_scaling ? local.default_node_group.min_size : null + max_count = local.enable_native_auto_scaling ? local.default_node_group.max_size : null max_pods = local.max_pods tags = local.tags } @@ -97,14 +97,22 @@ resource "azurerm_kubernetes_cluster_node_pool" "node_pool" { kubernetes_cluster_id = azurerm_kubernetes_cluster.aks_cluster.id - name = each.key - vm_size = each.value.instance_types - zones = local.azs - vnet_subnet_id = azurerm_subnet.private_subnet.id - max_count = each.value.max_size - min_count = each.value.min_size - node_count = each.value.desired_size - node_labels = var.cluster_node_labels + name = each.key + vm_size = each.value.instance_types + zones = local.azs + vnet_subnet_id = azurerm_subnet.private_subnet.id + max_count = each.value.max_size + min_count = each.value.min_size + node_count = each.value.desired_size + node_labels = var.cluster_node_labels + node_taints = each.value.gpu_enabled == true ? { + # should set dynamically to allow node group selection on pod level + group_type = { + key = "group-type" + value = "gpu-enabled" + effect = "NO_SCHEDULE" + } + } : {} orchestrator_version = var.cluster_version tags = local.tags enable_node_public_ip = false diff --git a/platform/terraform/modules/cloud_azure/variables.tf b/platform/terraform/modules/cloud_azure/variables.tf index 92176f29..6d48af92 100644 --- a/platform/terraform/modules/cloud_azure/variables.tf +++ b/platform/terraform/modules/cloud_azure/variables.tf @@ -46,6 +46,7 @@ variable "node_groups" { min_size = optional(number, 3) max_size = optional(number, 5) desired_size = optional(number, 3) + gpu_enabled = optional(bool, false) })) default = [ { diff --git a/tools/cli/commands/setup.py b/tools/cli/commands/setup.py index d32731e4..96572631 100644 --- a/tools/cli/commands/setup.py +++ b/tools/cli/commands/setup.py @@ -261,6 +261,7 @@ def setup( p.fragments["# "] = cloud_man.create_sidecar_annotation() p.fragments["# "] = cloud_man.create_kubecost_annotation() + p.fragments["# "] = cloud_man.create_gpu_operator_parameters() # dns zone info for external dns dns_zone_name, is_dns_zone_private = dns_man.get_domain_zone(p.parameters[""]) diff --git a/tools/cli/services/cloud/aws/aws_manager.py b/tools/cli/services/cloud/aws/aws_manager.py index 3095eb42..cb0cbe97 100644 --- a/tools/cli/services/cloud/aws/aws_manager.py +++ b/tools/cli/services/cloud/aws/aws_manager.py @@ -188,3 +188,7 @@ def create_autoscaler_snippet(self, cluster_name: str, node_groups=[]): @trace() def create_kubecost_annotation(self): return '''amazon-web-services: true''' + + @trace() + def create_gpu_operator_parameters(self): + return '' diff --git a/tools/cli/services/cloud/azure/azure_manager.py b/tools/cli/services/cloud/azure/azure_manager.py index 3c7c889e..dcde5f78 100644 --- a/tools/cli/services/cloud/azure/azure_manager.py +++ b/tools/cli/services/cloud/azure/azure_manager.py @@ -281,3 +281,13 @@ def create_iac_pr_automation_config_snippet(self): @trace() def create_kubecost_annotation(self): return '''azure-cloud-services: true''' + + @trace() + def create_gpu_operator_parameters(self): + return '''# azure + - name: "driver.enabled" + value: "false" + - name: "toolkit.enabled" + value: "false" + - name: "operator.runtimeClass" + value: "nvidia-container-runtime"''' diff --git a/tools/cli/services/cloud/cloud_provider_manager.py b/tools/cli/services/cloud/cloud_provider_manager.py index 7b2a38de..1728e77b 100644 --- a/tools/cli/services/cloud/cloud_provider_manager.py +++ b/tools/cli/services/cloud/cloud_provider_manager.py @@ -171,3 +171,11 @@ def create_kubecost_annotation(self): :return: KubeCost configuration section """ pass + + @abstractmethod + def create_gpu_operator_parameters(self): + """ + Creates Cloud Provider specific configuration section for Nvidia GPU operator + :return: Additional GPU operator parameters + """ + pass From 2c316029c4cdabae7a14809d3d430be533e6a3e9 Mon Sep 17 00:00:00 2001 From: Alexander Ulyanov Date: Mon, 3 Jun 2024 19:17:44 +0200 Subject: [PATCH 02/10] feat: add support for optional services flags (AKA feature flags) and make gpu operator optional --- .../cc-cluster/core-services/0-registry.yaml | 3 +- tools/cli/commands/setup.py | 31 +++++++++++++++--- tools/cli/common/const/parameter_names.py | 1 + tools/cli/common/enums/optional_services.py | 32 +++++++++++++++++++ .../common/utils/optional_services_manager.py | 17 ++++++++++ .../services/k8s/delivery_service_manager.py | 7 ++-- 6 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 tools/cli/common/enums/optional_services.py create mode 100644 tools/cli/common/utils/optional_services_manager.py diff --git a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/0-registry.yaml b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/0-registry.yaml index 08388a9e..b78dcf57 100644 --- a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/0-registry.yaml +++ b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/0-registry.yaml @@ -11,6 +11,7 @@ spec: repoURL: path: gitops-pipelines/delivery/clusters/cc-cluster/core-services targetRevision: HEAD + # destination: server: https://kubernetes.default.svc namespace: argocd @@ -25,4 +26,4 @@ spec: backoff: duration: 5s maxDuration: 5m0s - factor: 2 \ No newline at end of file + factor: 2 diff --git a/tools/cli/commands/setup.py b/tools/cli/commands/setup.py index 96572631..916e7395 100644 --- a/tools/cli/commands/setup.py +++ b/tools/cli/commands/setup.py @@ -6,7 +6,7 @@ import hvac import yaml from alive_progress import alive_bar - +from typing import List from common.const.common_path import LOCAL_TF_FOLDER_VCS, LOCAL_TF_FOLDER_HOSTING_PROVIDER, \ LOCAL_TF_FOLDER_SECRETS_MANAGER, LOCAL_TF_FOLDER_USERS, LOCAL_TF_FOLDER_CORE_SERVICES from common.const.const import GITOPS_REPOSITORY_URL, GITOPS_REPOSITORY_BRANCH, KUBECTL_VERSION, PLATFORM_USER_NAME, \ @@ -17,7 +17,7 @@ CLOUD_ACCOUNT_ACCESS_SECRET, CLOUD_REGION, PRIMARY_CLUSTER_NAME, DNS_REGISTRAR, DNS_REGISTRAR_ACCESS_TOKEN, \ DNS_REGISTRAR_ACCESS_KEY, DNS_REGISTRAR_ACCESS_SECRET, DOMAIN_NAME, GIT_PROVIDER, GIT_ORGANIZATION_NAME, \ GIT_ACCESS_TOKEN, GITOPS_REPOSITORY_NAME, GITOPS_REPOSITORY_TEMPLATE_URL, GITOPS_REPOSITORY_TEMPLATE_BRANCH, \ - DEMO_WORKLOAD + DEMO_WORKLOAD, OPTIONAL_SERVICES from common.enums.cloud_providers import CloudProviders from common.enums.dns_registrars import DnsRegistrars from common.enums.git_providers import GitProviders @@ -28,6 +28,7 @@ set_envs, unset_envs, wait, wait_http_endpoint_readiness, prepare_git_provider_env_vars from common.utils.generators import random_string_generator from common.utils.k8s_utils import find_pod_by_name_fragment, get_kr8s_pod_instance_by_name +from common.utils.optional_services_manager import OptionalServices, build_argo_exclude_string from services.cloud.cloud_provider_manager import CloudProviderManager from services.dependency_manager import DependencyManager from services.dns.dns_provider_manager import DNSManager @@ -69,6 +70,8 @@ default=GITOPS_REPOSITORY_BRANCH, type=click.STRING) @click.option('--setup-demo-workload', '-dw', 'install_demo', help='Setup demo workload', default=False, is_flag=True) +@click.option('--optional-services', '-ops', 'optional_services', help='Optional services', type=click.STRING, + multiple=True) @click.option('--config-file', '-f', 'config', help='Load parameters from file', type=click.File(mode='r')) @click.option('--verbosity', type=click.Choice( ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], @@ -79,7 +82,7 @@ def setup( cloud_region: str, cluster_name: str, dns_reg: DnsRegistrars, dns_reg_token: str, dns_reg_key: str, dns_reg_secret: str, domain: str, git_provider: GitProviders, git_org: str, git_token: str, gitops_repo_name: str, gitops_template_url: str, gitops_template_branch: str, install_demo: bool, - config: click.File, verbosity: str + optional_services: List[str], config: click.File, verbosity: str ): """Creates new CG DevX installation.""" click.echo("Setup CG DevX installation...") @@ -120,7 +123,8 @@ def setup( GITOPS_REPOSITORY_NAME: gitops_repo_name, GITOPS_REPOSITORY_TEMPLATE_URL: gitops_template_url, GITOPS_REPOSITORY_TEMPLATE_BRANCH: gitops_template_branch, - DEMO_WORKLOAD: install_demo + DEMO_WORKLOAD: install_demo, + OPTIONAL_SERVICES: optional_services }) # validate parameters @@ -584,7 +588,8 @@ def setup( ]) # deploy registry app - cd_man.create_core_application(argocd_core_project_name, p.parameters[""]) + cd_man.create_core_application(argocd_core_project_name, p.parameters[""], + p.parameters[""]) bar() p.set_checkpoint("k8s-delivery") @@ -937,6 +942,15 @@ def show_credentials(p): @trace() def prepare_parameters(p): # TODO: move to appropriate place + + exclude_string = build_argo_exclude_string(p.get_input_param(OPTIONAL_SERVICES)) + p.parameters[""] = exclude_string + if exclude_string: + p.fragments["# "] = """directory: + exclude: '{}'""" + else: + p.fragments["# "] = "" + p.parameters[""] = p.get_input_param(OWNER_EMAIL).lower() p.parameters[""] = p.cloud_provider p.parameters[""] = p.get_input_param(PRIMARY_CLUSTER_NAME) @@ -1024,4 +1038,11 @@ def setup_param_validator(params: StateStore) -> bool: click.echo("Cloud account keys validation error: should specify only one of profile or key + secret") return False + if params.get_input_param(OPTIONAL_SERVICES): + incorrect_services = [v for v in params.get_input_param(OPTIONAL_SERVICES) if not OptionalServices.has_value(v)] + if incorrect_services: + click.echo( + f"Features list parsing error: unsupported features found - {str.join(', ', incorrect_services)}") + return False + return True diff --git a/tools/cli/common/const/parameter_names.py b/tools/cli/common/const/parameter_names.py index 520ad43d..d4bed75e 100644 --- a/tools/cli/common/const/parameter_names.py +++ b/tools/cli/common/const/parameter_names.py @@ -17,3 +17,4 @@ GITOPS_REPOSITORY_TEMPLATE_URL = 'gitops-template-url' GITOPS_REPOSITORY_TEMPLATE_BRANCH = 'gitops-template-branch' DEMO_WORKLOAD = 'setup-demo-workload' +OPTIONAL_SERVICES = 'optional-services' diff --git a/tools/cli/common/enums/optional_services.py b/tools/cli/common/enums/optional_services.py new file mode 100644 index 00000000..70dd9245 --- /dev/null +++ b/tools/cli/common/enums/optional_services.py @@ -0,0 +1,32 @@ +"""Optional CG DevX platform services enums.""" +import enum + +from common.const.const import DEFAULT_ENUM_VALUE + + +class OptionalServices(str, enum.Enum): + """List of all CG DevX platform optional services.""" + + NvidiaGpuOperator = "nvidia-gpu-operator" + + @classmethod + def has_value(cls, value) -> bool: + """ + Check if value defined. + + :param value: Value + :return: True or False + """ + return value in cls._value2member_map_ + + @classmethod + def can_ignore(cls, value): + """ + Check if the state passed from the request is 'unknown' and event can be ignored. + + :param value: str + :return: return True if the state is unknown, otherwise return False. + """ + if value == DEFAULT_ENUM_VALUE: + return True + return False diff --git a/tools/cli/common/utils/optional_services_manager.py b/tools/cli/common/utils/optional_services_manager.py new file mode 100644 index 00000000..3db9e094 --- /dev/null +++ b/tools/cli/common/utils/optional_services_manager.py @@ -0,0 +1,17 @@ +from common.enums.optional_services import OptionalServices + +OPTIONAL_SERVICES_MAP = { + OptionalServices.NvidiaGpuOperator: ["180-nvidia-gpu-operator.yaml"] +} + + +def build_argo_exclude_string(services: [str]) -> str: + if not services: + services = [] + oc_to_ignore = OPTIONAL_SERVICES_MAP.copy() + for svc in services: + oc_to_ignore.pop(svc) + if oc_to_ignore: + return str.join(", ", *oc_to_ignore.values()) + else: + return "" diff --git a/tools/cli/services/k8s/delivery_service_manager.py b/tools/cli/services/k8s/delivery_service_manager.py index a39eb70a..a804e952 100644 --- a/tools/cli/services/k8s/delivery_service_manager.py +++ b/tools/cli/services/k8s/delivery_service_manager.py @@ -94,7 +94,7 @@ def create_project(self, project_name: str, repos=None): return self._create_argocd_object(argo_proj_cr, "appprojects") - def create_core_application(self, project_name: str, repo_url: str): + def create_core_application(self, project_name: str, repo_url: str, exclude: str = ""): argo_app_cr = { "apiVersion": "argoproj.io/v1alpha1", "kind": "Application", @@ -107,7 +107,7 @@ def create_core_application(self, project_name: str, repo_url: str): "source": { "repoURL": repo_url, "path": ARGOCD_REGISTRY_APP_PATH, - "targetRevision": "HEAD", + "targetRevision": "HEAD" }, "destination": { "server": "https://kubernetes.default.svc", @@ -132,6 +132,9 @@ def create_core_application(self, project_name: str, repo_url: str): }, } + if exclude: + argo_app_cr["spec"]["source"]["directory"] = {"exclude": f"{{{exclude}}}"} + return self._create_argocd_object(argo_app_cr, "applications") def create_argocd_bootstrap_job(self, sa_name: str): From 17336cdcf22c126b2f7c28fc6a492f7faae592b3 Mon Sep 17 00:00:00 2001 From: Serg Shalavin Date: Thu, 13 Jun 2024 13:10:38 +0200 Subject: [PATCH 03/10] k8s to 1.30, aws lb timeout to 600, default disk size to 100, cert manager to 1.15 --- .../kube-system/cert-manager/application.yaml | 6 +++++- .../modules/cloud_aws/TERRAFORM-README.md | 2 +- platform/terraform/modules/cloud_aws/main.tf | 1 + .../terraform/modules/cloud_aws/variables.tf | 16 +++++++++++++-- .../modules/cloud_azure/TERRAFORM-README.md | 2 +- platform/terraform/modules/cloud_azure/aks.tf | 20 ++++++++++--------- .../modules/cloud_azure/variables.tf | 2 +- tools/cli/common/const/const.py | 2 +- tools/cli/services/cloud/aws/aws_manager.py | 2 +- 9 files changed, 36 insertions(+), 17 deletions(-) diff --git a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/kube-system/cert-manager/application.yaml b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/kube-system/cert-manager/application.yaml index e6d195e8..9be0ae9a 100644 --- a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/kube-system/cert-manager/application.yaml +++ b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/kube-system/cert-manager/application.yaml @@ -9,7 +9,7 @@ spec: project: core source: repoURL: https://charts.jetstack.io - targetRevision: v1.11.0 + targetRevision: v1.15.0 helm: values: |- serviceAccount: @@ -18,6 +18,10 @@ spec: annotations: : "" installCRDs: true + securityContext: + fsGroup: 1001 + extraArgs: + - --leader-elect=false commonLabels: cg-devx.cost-allocation.cost-center: platform cg-devx.metadata.owner: -admin diff --git a/platform/terraform/modules/cloud_aws/TERRAFORM-README.md b/platform/terraform/modules/cloud_aws/TERRAFORM-README.md index 377574c3..03e6307b 100644 --- a/platform/terraform/modules/cloud_aws/TERRAFORM-README.md +++ b/platform/terraform/modules/cloud_aws/TERRAFORM-README.md @@ -59,7 +59,7 @@ | [cluster\_network\_cidr](#input\_cluster\_network\_cidr) | n/a | `string` | `"10.0.0.0/16"` | no | | [cluster\_node\_labels](#input\_cluster\_node\_labels) | (Optional) EKS node labels | `map(any)` |
{
"provisioned-by": "cg-devx"
}
| no | | [cluster\_ssh\_public\_key](#input\_cluster\_ssh\_public\_key) | (Optional) SSH public key to access worker nodes. | `string` | `""` | no | -| [cluster\_version](#input\_cluster\_version) | (Optional) Specifies the EKS Kubernetes version | `string` | `"1.29"` | no | +| [cluster\_version](#input\_cluster\_version) | (Optional) Specifies the EKS Kubernetes version | `string` | `"1.30"` | no | | [domain\_name](#input\_domain\_name) | Specifies the platform domain name | `string` | n/a | yes | | [node\_group\_type](#input\_node\_group\_type) | n/a | `string` | `"EKS"` | no | | [node\_groups](#input\_node\_groups) | n/a |
list(object({
name = optional(string, "default")
instance_types = optional(list(string), ["m5.large"])
capacity_type = optional(string, "on_demand")
min_size = optional(number, 3)
max_size = optional(number, 6)
desired_size = optional(number, 4)
}))
|
[
{
"capacity_type": "on_demand",
"desired_size": 4,
"instance_types": [
"m5.large"
],
"max_size": 6,
"min_size": 3,
"name": "default"
}
]
| no | diff --git a/platform/terraform/modules/cloud_aws/main.tf b/platform/terraform/modules/cloud_aws/main.tf index f2ca292c..a6e21e00 100644 --- a/platform/terraform/modules/cloud_aws/main.tf +++ b/platform/terraform/modules/cloud_aws/main.tf @@ -19,6 +19,7 @@ locals { min_size = node_group.min_size max_size = node_group.max_size desired_size = node_group.desired_size + disk_size = node_group.disk_size instance_types = node_group.instance_types capacity_type = upper(node_group.capacity_type) labels = merge( diff --git a/platform/terraform/modules/cloud_aws/variables.tf b/platform/terraform/modules/cloud_aws/variables.tf index 11d82c1c..194bf9ec 100644 --- a/platform/terraform/modules/cloud_aws/variables.tf +++ b/platform/terraform/modules/cloud_aws/variables.tf @@ -38,7 +38,7 @@ variable "cluster_name" { variable "cluster_version" { type = string - default = "1.29" + default = "1.30" description = "(Optional) Specifies the EKS Kubernetes version" } @@ -59,6 +59,7 @@ variable "node_groups" { min_size = optional(number, 3) max_size = optional(number, 6) desired_size = optional(number, 4) + disk_size = optional(number, 50) gpu_enabled = optional(bool, false) })) default = [ @@ -69,7 +70,18 @@ variable "node_groups" { min_size = 3 max_size = 6 desired_size = 4 - } + disk_size = 100 + }, + # { + # name = "ml-node-group" + # instance_types = ["g5.xlarge"] + # gpu_enabled = true + # capacity_type = "on_demand" + # min_size = 0 + # max_size = 1 + # desired_size = 1 + # disk_size = 30 + # }, ] } diff --git a/platform/terraform/modules/cloud_azure/TERRAFORM-README.md b/platform/terraform/modules/cloud_azure/TERRAFORM-README.md index d999b995..d55d03e8 100644 --- a/platform/terraform/modules/cloud_azure/TERRAFORM-README.md +++ b/platform/terraform/modules/cloud_azure/TERRAFORM-README.md @@ -69,7 +69,7 @@ | [cluster\_network\_cidr](#input\_cluster\_network\_cidr) | n/a | `string` | `"10.1.0.0/16"` | no | | [cluster\_node\_labels](#input\_cluster\_node\_labels) | (Optional) Specifies the AKS node labels | `map(string)` |
{
"provisioned-by": "cg-devx"
}
| no | | [cluster\_ssh\_public\_key](#input\_cluster\_ssh\_public\_key) | (Required) Specifies the SSH public key for AKS worker nodes. | `string` | `""` | no | -| [cluster\_version](#input\_cluster\_version) | (Optional) Specifies the AKS Kubernetes version | `string` | `"1.29"` | no | +| [cluster\_version](#input\_cluster\_version) | (Optional) Specifies the AKS Kubernetes version | `string` | `"1.30"` | no | | [domain\_name](#input\_domain\_name) | Specifies the platform domain name | `string` | n/a | yes | | [enable\_native\_auto\_scaling](#input\_enable\_native\_auto\_scaling) | Enables AKS native autoscaling feature. | `bool` | `false` | no | | [node\_groups](#input\_node\_groups) | n/a |
list(object({
name = optional(string, "default")
instance_types = optional(list(string), ["Standard_B2ms"])
capacity_type = optional(string, "Regular")
min_size = optional(number, 3)
max_size = optional(number, 5)
desired_size = optional(number, 3)
}))
|
[
{
"capacity_type": "on_demand",
"desired_size": 3,
"instance_types": [
"Standard_B2ms"
],
"max_size": 5,
"min_size": 3,
"name": "default"
}
]
| no | diff --git a/platform/terraform/modules/cloud_azure/aks.tf b/platform/terraform/modules/cloud_azure/aks.tf index e1e6b593..de2c5898 100644 --- a/platform/terraform/modules/cloud_azure/aks.tf +++ b/platform/terraform/modules/cloud_azure/aks.tf @@ -40,6 +40,7 @@ resource "azurerm_kubernetes_cluster" "aks_cluster" { min_count = local.enable_native_auto_scaling ? local.default_node_group.min_size : null max_count = local.enable_native_auto_scaling ? local.default_node_group.max_size : null max_pods = local.max_pods + os_disk_size_gb = local.default_node_group.disc_size tags = local.tags } @@ -97,15 +98,16 @@ resource "azurerm_kubernetes_cluster_node_pool" "node_pool" { kubernetes_cluster_id = azurerm_kubernetes_cluster.aks_cluster.id - name = each.key - vm_size = each.value.instance_types - zones = local.azs - vnet_subnet_id = azurerm_subnet.private_subnet.id - max_count = each.value.max_size - min_count = each.value.min_size - node_count = each.value.desired_size - node_labels = var.cluster_node_labels - node_taints = each.value.gpu_enabled == true ? { + name = each.key + vm_size = each.value.instance_types + zones = local.azs + vnet_subnet_id = azurerm_subnet.private_subnet.id + max_count = each.value.max_size + min_count = each.value.min_size + node_count = each.value.desired_size + os_disk_size_gb = each.value.disc_size + node_labels = var.cluster_node_labels + node_taints = each.value.gpu_enabled == true ? { # should set dynamically to allow node group selection on pod level group_type = { key = "group-type" diff --git a/platform/terraform/modules/cloud_azure/variables.tf b/platform/terraform/modules/cloud_azure/variables.tf index 6d48af92..8d6cc5f2 100644 --- a/platform/terraform/modules/cloud_azure/variables.tf +++ b/platform/terraform/modules/cloud_azure/variables.tf @@ -34,7 +34,7 @@ variable "cluster_name" { variable "cluster_version" { type = string - default = "1.29" + default = "1.30" description = "(Optional) Specifies the AKS Kubernetes version" } diff --git a/tools/cli/common/const/const.py b/tools/cli/common/const/const.py index 87014c20..44194500 100644 --- a/tools/cli/common/const/const.py +++ b/tools/cli/common/const/const.py @@ -10,7 +10,7 @@ PLATFORM_USER_NAME = "cgdevx-bot" FALLBACK_AUTHOR_EMAIL = "cg-devx-automation@cloudgeometry.io" ARGOCD_REGISTRY_APP_PATH = "gitops-pipelines/delivery/clusters/cc-cluster/core-services" -KUBECTL_VERSION = "1.29.4" +KUBECTL_VERSION = "1.30.2" TERRAFORM_VERSION = "1.6.4" GITLAB_TF_REQUIRED_PROVIDER_VERSION = "16.7.0" GITHUB_TF_REQUIRED_PROVIDER_VERSION = "5.42.0" diff --git a/tools/cli/services/cloud/aws/aws_manager.py b/tools/cli/services/cloud/aws/aws_manager.py index cb0cbe97..e8eb4190 100644 --- a/tools/cli/services/cloud/aws/aws_manager.py +++ b/tools/cli/services/cloud/aws/aws_manager.py @@ -162,7 +162,7 @@ def evaluate_permissions(self) -> bool: @trace() def create_ingress_annotations(self) -> str: return '''service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" - service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"''' + service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"''' @trace() def create_additional_labels(self) -> str: From e5a68f73c2d89e4ce2e4516aa09bef5691604592 Mon Sep 17 00:00:00 2001 From: Serg Shalavin Date: Thu, 13 Jun 2024 22:14:24 +0200 Subject: [PATCH 04/10] return 60 sec idle timeout, enable defaultStorageClass in the aws csi addon, example of node grops hosting provider main.tf --- platform/terraform/hosting_provider/main.tf | 23 +++++++++++++++++++ platform/terraform/modules/cloud_aws/eks.tf | 5 ++++ .../terraform/modules/cloud_aws/variables.tf | 11 --------- tools/cli/services/cloud/aws/aws_manager.py | 2 +- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/platform/terraform/hosting_provider/main.tf b/platform/terraform/hosting_provider/main.tf index 89447af6..ad669059 100644 --- a/platform/terraform/hosting_provider/main.tf +++ b/platform/terraform/hosting_provider/main.tf @@ -36,4 +36,27 @@ module "hosting-provider" { cluster_node_labels = local.labels domain_name = local.domain_name workloads = var.workloads + ## Example of node groups for the AWS cloud hosting provider + ## Please note that for the GPU node, you need to check node type availability + ## in your region and send service quota-increasing request to the support + # node_groups = [ + # { + # name = "default" + # instance_types = ["m5.large"] + # capacity_type = "on_demand" + # min_size = 3 + # max_size = 6 + # disk_size = 100 + # desired_size = 4 + # }, + # # { + # # name = "ml-node-group" + # # instance_types = ["g5.xlarge"] + # # gpu_enabled = true + # # capacity_type = "on_demand" + # # min_size = 0 + # # max_size = 1 + # # desired_size = 1 + # # }, + # ] } diff --git a/platform/terraform/modules/cloud_aws/eks.tf b/platform/terraform/modules/cloud_aws/eks.tf index bd70da06..22293e3e 100644 --- a/platform/terraform/modules/cloud_aws/eks.tf +++ b/platform/terraform/modules/cloud_aws/eks.tf @@ -39,6 +39,11 @@ module "eks" { aws-ebs-csi-driver = { most_recent = true service_account_role_arn = module.ebs_csi_irsa_role.iam_role_arn + configuration_values = jsonencode({ + defaultStorageClass = { + enabled = true + } + }) } } diff --git a/platform/terraform/modules/cloud_aws/variables.tf b/platform/terraform/modules/cloud_aws/variables.tf index 194bf9ec..abdf44be 100644 --- a/platform/terraform/modules/cloud_aws/variables.tf +++ b/platform/terraform/modules/cloud_aws/variables.tf @@ -70,18 +70,7 @@ variable "node_groups" { min_size = 3 max_size = 6 desired_size = 4 - disk_size = 100 }, - # { - # name = "ml-node-group" - # instance_types = ["g5.xlarge"] - # gpu_enabled = true - # capacity_type = "on_demand" - # min_size = 0 - # max_size = 1 - # desired_size = 1 - # disk_size = 30 - # }, ] } diff --git a/tools/cli/services/cloud/aws/aws_manager.py b/tools/cli/services/cloud/aws/aws_manager.py index e8eb4190..cb0cbe97 100644 --- a/tools/cli/services/cloud/aws/aws_manager.py +++ b/tools/cli/services/cloud/aws/aws_manager.py @@ -162,7 +162,7 @@ def evaluate_permissions(self) -> bool: @trace() def create_ingress_annotations(self) -> str: return '''service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" - service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"''' + service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"''' @trace() def create_additional_labels(self) -> str: From 0187cd62fcd73463453efcaa91bd0ce4b56862a1 Mon Sep 17 00:00:00 2001 From: Serg Shalavin Date: Fri, 14 Jun 2024 15:56:08 +0200 Subject: [PATCH 05/10] kaniko sed fix --- .../cluster-workflow-templates/kaniko-s3-p-cwft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/argo-workflows/cluster-workflow-templates/kaniko-s3-p-cwft.yaml b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/argo-workflows/cluster-workflow-templates/kaniko-s3-p-cwft.yaml index bde58b80..b10d515d 100644 --- a/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/argo-workflows/cluster-workflow-templates/kaniko-s3-p-cwft.yaml +++ b/platform/gitops-pipelines/delivery/clusters/cc-cluster/core-services/components/argo-workflows/cluster-workflow-templates/kaniko-s3-p-cwft.yaml @@ -41,7 +41,7 @@ spec: if [ $REGISTRY_MIRROR != NOMIRROR ] then cd /build/$WL_SERVICE_DIR - sed -r -i.orig "s/FROM\s+(\S+(\/)\S+)/FROM $DOCKERHUB_PROXY_PREFIX\/\1/;s/FROM\s+(\S+)/FROM $DOCKERHUB_PROXY_PREFIX\/library\/\1/" Dockerfile + sed -r -i.orig "s/FROM\s+(\S+(\/)\S+)/FROM $DOCKERHUB_PROXY_PREFIX\/\1/;/\//! s/FROM\s+(\S+)/FROM $DOCKERHUB_PROXY_PREFIX\/library\/\1/" Dockerfile cat Dockerfile fi cd /build From 4642ee77ff3d0a5c81026c87322ce42224fbbeb5 Mon Sep 17 00:00:00 2001 From: Mikhail Turetskii Date: Tue, 18 Jun 2024 17:53:11 +0300 Subject: [PATCH 06/10] chore(cli): update kr8s library to version 0.16.1 --- tools/poetry.lock | 338 ++++++++++++++++++++++--------------------- tools/pyproject.toml | 2 +- 2 files changed, 171 insertions(+), 169 deletions(-) diff --git a/tools/poetry.lock b/tools/poetry.lock index 563936a6..c36b26ea 100644 --- a/tools/poetry.lock +++ b/tools/poetry.lock @@ -39,13 +39,13 @@ files = [ [[package]] name = "anyio" -version = "4.3.0" +version = "4.4.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, ] [package.dependencies] @@ -105,13 +105,13 @@ files = [ [[package]] name = "azure-core" -version = "1.30.1" +version = "1.30.2" description = "Microsoft Azure Core Library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "azure-core-1.30.1.tar.gz", hash = "sha256:26273a254131f84269e8ea4464f3560c731f29c0c1f69ac99010845f239c1a8f"}, - {file = "azure_core-1.30.1-py3-none-any.whl", hash = "sha256:7c5ee397e48f281ec4dd773d67a0a47a0962ed6fa833036057f9ea067f688e74"}, + {file = "azure-core-1.30.2.tar.gz", hash = "sha256:a14dc210efcd608821aa472d9fb8e8d035d29b68993819147bc290a8ac224472"}, + {file = "azure_core-1.30.2-py3-none-any.whl", hash = "sha256:cf019c1ca832e96274ae85abd3d9f752397194d9fea3b41487290562ac8abe4a"}, ] [package.dependencies] @@ -251,19 +251,19 @@ isodate = ">=0.6.1,<1.0.0" [[package]] name = "azure-mgmt-storage" -version = "21.1.0" +version = "21.2.0" description = "Microsoft Azure Storage Management Client Library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "azure-mgmt-storage-21.1.0.tar.gz", hash = "sha256:d6d3c0e917c988bc9ed0472477d3ef3f90886009eb1d97a711944f8375630162"}, - {file = "azure_mgmt_storage-21.1.0-py3-none-any.whl", hash = "sha256:593f2544fc4f05750c4fe7ca4d83c32ea1e9d266e57899bbf79ce5940124e8cc"}, + {file = "azure-mgmt-storage-21.2.0.tar.gz", hash = "sha256:287c9840b01be931819d403da7ed52bd62fd077b0529dd470e6dbc4fede4b20d"}, + {file = "azure_mgmt_storage-21.2.0-py3-none-any.whl", hash = "sha256:36b8ef99390b179dc60007b8f017f47a39d030c52e0ca16080012465faf6be51"}, ] [package.dependencies] -azure-common = ">=1.1,<2.0" -azure-mgmt-core = ">=1.3.2,<2.0.0" -isodate = ">=0.6.1,<1.0.0" +azure-common = ">=1.1" +azure-mgmt-core = ">=1.3.2" +isodate = ">=0.6.1" [[package]] name = "azure-mgmt-subscription" @@ -352,13 +352,13 @@ files = [ [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -580,43 +580,43 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", [[package]] name = "cryptography" -version = "42.0.5" +version = "42.0.8" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, - {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, - {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, - {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, - {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, - {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, - {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, ] [package.dependencies] @@ -832,13 +832,13 @@ gitdb = ">=4.0.1,<5" [[package]] name = "google-auth" -version = "2.29.0" +version = "2.30.0" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google-auth-2.29.0.tar.gz", hash = "sha256:672dff332d073227550ffc7457868ac4218d6c500b155fe6cc17d2b13602c360"}, - {file = "google_auth-2.29.0-py2.py3-none-any.whl", hash = "sha256:d452ad095688cd52bae0ad6fafe027f6a6d6f560e810fec20914e17a09526415"}, + {file = "google-auth-2.30.0.tar.gz", hash = "sha256:ab630a1320f6720909ad76a7dbdb6841cdf5c66b328d690027e4867bdfb16688"}, + {file = "google_auth-2.30.0-py2.py3-none-any.whl", hash = "sha256:8df7da660f62757388b8a7f249df13549b3373f24388cb5d2f1dd91cc18180b5"}, ] [package.dependencies] @@ -872,20 +872,20 @@ protobuf = ">=3.0.0b3" [[package]] name = "googleapis-common-protos" -version = "1.56.1" +version = "1.63.1" description = "Common protobufs used in Google APIs" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.56.1.tar.gz", hash = "sha256:6b5ee59dc646eb61a8eb65ee1db186d3df6687c8804830024f32573298bca19b"}, - {file = "googleapis_common_protos-1.56.1-py2.py3-none-any.whl", hash = "sha256:ddcd955b5bb6589368f659fa475373faa1ed7d09cde5ba25e88513d87007e174"}, + {file = "googleapis-common-protos-1.63.1.tar.gz", hash = "sha256:c6442f7a0a6b2a80369457d79e6672bb7dcbaab88e0848302497e3ec80780a6a"}, + {file = "googleapis_common_protos-1.63.1-py2.py3-none-any.whl", hash = "sha256:0e1c2cdfcbc354b76e4a211a35ea35d6926a835cba1377073c4861db904a1877"}, ] [package.dependencies] -protobuf = ">=3.15.0" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" [package.extras] -grpc = ["grpcio (>=1.0.0)"] +grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grapheme" @@ -932,61 +932,61 @@ oauth2client = ">=1.4.11" [[package]] name = "grpcio" -version = "1.63.0" +version = "1.64.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.63.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2e93aca840c29d4ab5db93f94ed0a0ca899e241f2e8aec6334ab3575dc46125c"}, - {file = "grpcio-1.63.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:91b73d3f1340fefa1e1716c8c1ec9930c676d6b10a3513ab6c26004cb02d8b3f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b3afbd9d6827fa6f475a4f91db55e441113f6d3eb9b7ebb8fb806e5bb6d6bd0d"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f3f6883ce54a7a5f47db43289a0a4c776487912de1a0e2cc83fdaec9685cc9f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf8dae9cc0412cb86c8de5a8f3be395c5119a370f3ce2e69c8b7d46bb9872c8d"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e1559fd3b3b4468486b26b0af64a3904a8dbc78d8d936af9c1cf9636eb3e8b"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5c039ef01516039fa39da8a8a43a95b64e288f79f42a17e6c2904a02a319b357"}, - {file = "grpcio-1.63.0-cp310-cp310-win32.whl", hash = "sha256:ad2ac8903b2eae071055a927ef74121ed52d69468e91d9bcbd028bd0e554be6d"}, - {file = "grpcio-1.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:b2e44f59316716532a993ca2966636df6fbe7be4ab6f099de6815570ebe4383a"}, - {file = "grpcio-1.63.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:f28f8b2db7b86c77916829d64ab21ff49a9d8289ea1564a2b2a3a8ed9ffcccd3"}, - {file = "grpcio-1.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:65bf975639a1f93bee63ca60d2e4951f1b543f498d581869922910a476ead2f5"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b5194775fec7dc3dbd6a935102bb156cd2c35efe1685b0a46c67b927c74f0cfb"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4cbb2100ee46d024c45920d16e888ee5d3cf47c66e316210bc236d5bebc42b3"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff737cf29b5b801619f10e59b581869e32f400159e8b12d7a97e7e3bdeee6a2"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd1e68776262dd44dedd7381b1a0ad09d9930ffb405f737d64f505eb7f77d6c7"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f45f27f516548e23e4ec3fbab21b060416007dbe768a111fc4611464cc773f"}, - {file = "grpcio-1.63.0-cp311-cp311-win32.whl", hash = "sha256:878b1d88d0137df60e6b09b74cdb73db123f9579232c8456f53e9abc4f62eb3c"}, - {file = "grpcio-1.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:756fed02dacd24e8f488f295a913f250b56b98fb793f41d5b2de6c44fb762434"}, - {file = "grpcio-1.63.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:93a46794cc96c3a674cdfb59ef9ce84d46185fe9421baf2268ccb556f8f81f57"}, - {file = "grpcio-1.63.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7b19dfc74d0be7032ca1eda0ed545e582ee46cd65c162f9e9fc6b26ef827dc6"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8064d986d3a64ba21e498b9a376cbc5d6ab2e8ab0e288d39f266f0fca169b90d"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:219bb1848cd2c90348c79ed0a6b0ea51866bc7e72fa6e205e459fedab5770172"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d60cd1d58817bc5985fae6168d8b5655c4981d448d0f5b6194bbcc038090d2"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e350cb096e5c67832e9b6e018cf8a0d2a53b2a958f6251615173165269a91b0"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:56cdf96ff82e3cc90dbe8bac260352993f23e8e256e063c327b6cf9c88daf7a9"}, - {file = "grpcio-1.63.0-cp312-cp312-win32.whl", hash = "sha256:3a6d1f9ea965e750db7b4ee6f9fdef5fdf135abe8a249e75d84b0a3e0c668a1b"}, - {file = "grpcio-1.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:d2497769895bb03efe3187fb1888fc20e98a5f18b3d14b606167dacda5789434"}, - {file = "grpcio-1.63.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:fdf348ae69c6ff484402cfdb14e18c1b0054ac2420079d575c53a60b9b2853ae"}, - {file = "grpcio-1.63.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a3abfe0b0f6798dedd2e9e92e881d9acd0fdb62ae27dcbbfa7654a57e24060c0"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6ef0ad92873672a2a3767cb827b64741c363ebaa27e7f21659e4e31f4d750280"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b416252ac5588d9dfb8a30a191451adbf534e9ce5f56bb02cd193f12d8845b7f"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b77eaefc74d7eb861d3ffbdf91b50a1bb1639514ebe764c47773b833fa2d91"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b005292369d9c1f80bf70c1db1c17c6c342da7576f1c689e8eee4fb0c256af85"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cdcda1156dcc41e042d1e899ba1f5c2e9f3cd7625b3d6ebfa619806a4c1aadda"}, - {file = "grpcio-1.63.0-cp38-cp38-win32.whl", hash = "sha256:01799e8649f9e94ba7db1aeb3452188048b0019dc37696b0f5ce212c87c560c3"}, - {file = "grpcio-1.63.0-cp38-cp38-win_amd64.whl", hash = "sha256:6a1a3642d76f887aa4009d92f71eb37809abceb3b7b5a1eec9c554a246f20e3a"}, - {file = "grpcio-1.63.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:75f701ff645858a2b16bc8c9fc68af215a8bb2d5a9b647448129de6e85d52bce"}, - {file = "grpcio-1.63.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cacdef0348a08e475a721967f48206a2254a1b26ee7637638d9e081761a5ba86"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:0697563d1d84d6985e40ec5ec596ff41b52abb3fd91ec240e8cb44a63b895094"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6426e1fb92d006e47476d42b8f240c1d916a6d4423c5258ccc5b105e43438f61"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48cee31bc5f5a31fb2f3b573764bd563aaa5472342860edcc7039525b53e46a"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:50344663068041b34a992c19c600236e7abb42d6ec32567916b87b4c8b8833b3"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:259e11932230d70ef24a21b9fb5bb947eb4703f57865a404054400ee92f42f5d"}, - {file = "grpcio-1.63.0-cp39-cp39-win32.whl", hash = "sha256:a44624aad77bf8ca198c55af811fd28f2b3eaf0a50ec5b57b06c034416ef2d0a"}, - {file = "grpcio-1.63.0-cp39-cp39-win_amd64.whl", hash = "sha256:166e5c460e5d7d4656ff9e63b13e1f6029b122104c1633d5f37eaea348d7356d"}, - {file = "grpcio-1.63.0.tar.gz", hash = "sha256:f3023e14805c61bc439fb40ca545ac3d5740ce66120a678a3c6c2c55b70343d1"}, + {file = "grpcio-1.64.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:55697ecec192bc3f2f3cc13a295ab670f51de29884ca9ae6cd6247df55df2502"}, + {file = "grpcio-1.64.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3b64ae304c175671efdaa7ec9ae2cc36996b681eb63ca39c464958396697daff"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:bac71b4b28bc9af61efcdc7630b166440bbfbaa80940c9a697271b5e1dabbc61"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c024ffc22d6dc59000faf8ad781696d81e8e38f4078cb0f2630b4a3cf231a90"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7cd5c1325f6808b8ae31657d281aadb2a51ac11ab081ae335f4f7fc44c1721d"}, + {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0a2813093ddb27418a4c99f9b1c223fab0b053157176a64cc9db0f4557b69bd9"}, + {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2981c7365a9353f9b5c864595c510c983251b1ab403e05b1ccc70a3d9541a73b"}, + {file = "grpcio-1.64.1-cp310-cp310-win32.whl", hash = "sha256:1262402af5a511c245c3ae918167eca57342c72320dffae5d9b51840c4b2f86d"}, + {file = "grpcio-1.64.1-cp310-cp310-win_amd64.whl", hash = "sha256:19264fc964576ddb065368cae953f8d0514ecc6cb3da8903766d9fb9d4554c33"}, + {file = "grpcio-1.64.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:58b1041e7c870bb30ee41d3090cbd6f0851f30ae4eb68228955d973d3efa2e61"}, + {file = "grpcio-1.64.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bbc5b1d78a7822b0a84c6f8917faa986c1a744e65d762ef6d8be9d75677af2ca"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5841dd1f284bd1b3d8a6eca3a7f062b06f1eec09b184397e1d1d43447e89a7ae"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8caee47e970b92b3dd948371230fcceb80d3f2277b3bf7fbd7c0564e7d39068e"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73819689c169417a4f978e562d24f2def2be75739c4bed1992435d007819da1b"}, + {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6503b64c8b2dfad299749cad1b595c650c91e5b2c8a1b775380fcf8d2cbba1e9"}, + {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1de403fc1305fd96cfa75e83be3dee8538f2413a6b1685b8452301c7ba33c294"}, + {file = "grpcio-1.64.1-cp311-cp311-win32.whl", hash = "sha256:d4d29cc612e1332237877dfa7fe687157973aab1d63bd0f84cf06692f04c0367"}, + {file = "grpcio-1.64.1-cp311-cp311-win_amd64.whl", hash = "sha256:5e56462b05a6f860b72f0fa50dca06d5b26543a4e88d0396259a07dc30f4e5aa"}, + {file = "grpcio-1.64.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:4657d24c8063e6095f850b68f2d1ba3b39f2b287a38242dcabc166453e950c59"}, + {file = "grpcio-1.64.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:62b4e6eb7bf901719fce0ca83e3ed474ae5022bb3827b0a501e056458c51c0a1"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:ee73a2f5ca4ba44fa33b4d7d2c71e2c8a9e9f78d53f6507ad68e7d2ad5f64a22"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:198908f9b22e2672a998870355e226a725aeab327ac4e6ff3a1399792ece4762"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39b9d0acaa8d835a6566c640f48b50054f422d03e77e49716d4c4e8e279665a1"}, + {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5e42634a989c3aa6049f132266faf6b949ec2a6f7d302dbb5c15395b77d757eb"}, + {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1a82e0b9b3022799c336e1fc0f6210adc019ae84efb7321d668129d28ee1efb"}, + {file = "grpcio-1.64.1-cp312-cp312-win32.whl", hash = "sha256:55260032b95c49bee69a423c2f5365baa9369d2f7d233e933564d8a47b893027"}, + {file = "grpcio-1.64.1-cp312-cp312-win_amd64.whl", hash = "sha256:c1a786ac592b47573a5bb7e35665c08064a5d77ab88a076eec11f8ae86b3e3f6"}, + {file = "grpcio-1.64.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:a011ac6c03cfe162ff2b727bcb530567826cec85eb8d4ad2bfb4bd023287a52d"}, + {file = "grpcio-1.64.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4d6dab6124225496010bd22690f2d9bd35c7cbb267b3f14e7a3eb05c911325d4"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:a5e771d0252e871ce194d0fdcafd13971f1aae0ddacc5f25615030d5df55c3a2"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3c1b90ab93fed424e454e93c0ed0b9d552bdf1b0929712b094f5ecfe7a23ad"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20405cb8b13fd779135df23fabadc53b86522d0f1cba8cca0e87968587f50650"}, + {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0cc79c982ccb2feec8aad0e8fb0d168bcbca85bc77b080d0d3c5f2f15c24ea8f"}, + {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a3a035c37ce7565b8f4f35ff683a4db34d24e53dc487e47438e434eb3f701b2a"}, + {file = "grpcio-1.64.1-cp38-cp38-win32.whl", hash = "sha256:1257b76748612aca0f89beec7fa0615727fd6f2a1ad580a9638816a4b2eb18fd"}, + {file = "grpcio-1.64.1-cp38-cp38-win_amd64.whl", hash = "sha256:0a12ddb1678ebc6a84ec6b0487feac020ee2b1659cbe69b80f06dbffdb249122"}, + {file = "grpcio-1.64.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:75dbbf415026d2862192fe1b28d71f209e2fd87079d98470db90bebe57b33179"}, + {file = "grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e3d9f8d1221baa0ced7ec7322a981e28deb23749c76eeeb3d33e18b72935ab62"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5f8b75f64d5d324c565b263c67dbe4f0af595635bbdd93bb1a88189fc62ed2e5"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c84ad903d0d94311a2b7eea608da163dace97c5fe9412ea311e72c3684925602"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:940e3ec884520155f68a3b712d045e077d61c520a195d1a5932c531f11883489"}, + {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f10193c69fc9d3d726e83bbf0f3d316f1847c3071c8c93d8090cf5f326b14309"}, + {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac15b6c2c80a4d1338b04d42a02d376a53395ddf0ec9ab157cbaf44191f3ffdd"}, + {file = "grpcio-1.64.1-cp39-cp39-win32.whl", hash = "sha256:03b43d0ccf99c557ec671c7dede64f023c7da9bb632ac65dbc57f166e4970040"}, + {file = "grpcio-1.64.1-cp39-cp39-win_amd64.whl", hash = "sha256:ed6091fa0adcc7e4ff944090cf203a52da35c37a130efa564ded02b7aff63bcd"}, + {file = "grpcio-1.64.1.tar.gz", hash = "sha256:8d51dd1c59d5fa0f34266b80a3805ec29a1f26425c2a54736133f6d87fc4968a"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.63.0)"] +protobuf = ["grpcio-tools (>=1.64.1)"] [[package]] name = "h11" @@ -1128,13 +1128,13 @@ files = [ [[package]] name = "kr8s" -version = "0.14.4" +version = "0.16.1" description = "A Kubernetes API library" optional = false python-versions = ">=3.8" files = [ - {file = "kr8s-0.14.4-py3-none-any.whl", hash = "sha256:440d31a00da1ed5e59b3e9812eb7404022400417ab4aa575abf1c8d3a6fbab53"}, - {file = "kr8s-0.14.4.tar.gz", hash = "sha256:d96fc937a14116511234c797ba92459bc691f7295acfc01ff84763e3f3aea094"}, + {file = "kr8s-0.16.1-py3-none-any.whl", hash = "sha256:89f81798bbff63dbd651d8c866c7a9071509369ad5b5bd1bc24522b8d6ba80f6"}, + {file = "kr8s-0.16.1.tar.gz", hash = "sha256:2a86a2117fcb788a35e33ba0177d92b96b183bff678dba9b472f58bfdace2350"}, ] [package.dependencies] @@ -1143,7 +1143,7 @@ asyncache = ">=0.3.1" cryptography = ">=35" exceptiongroup = {version = ">=1.2.0", markers = "python_version < \"3.12\""} httpx = ">=0.24.1" -httpx-ws = ">=0.5.1" +httpx-ws = ">=0.5.2" python-box = ">=7.0.1" python-jsonpath = ">=0.7.1" pyyaml = ">=6.0" @@ -1205,22 +1205,22 @@ files = [ [[package]] name = "msal" -version = "1.28.0" +version = "1.28.1" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false python-versions = ">=3.7" files = [ - {file = "msal-1.28.0-py3-none-any.whl", hash = "sha256:3064f80221a21cd535ad8c3fafbb3a3582cd9c7e9af0bb789ae14f726a0ca99b"}, - {file = "msal-1.28.0.tar.gz", hash = "sha256:80bbabe34567cb734efd2ec1869b2d98195c927455369d8077b3c542088c5c9d"}, + {file = "msal-1.28.1-py3-none-any.whl", hash = "sha256:563c2d70de77a2ca9786aab84cb4e133a38a6897e6676774edc23d610bfc9e7b"}, + {file = "msal-1.28.1.tar.gz", hash = "sha256:d72bbfe2d5c2f2555f4bc6205be4450ddfd12976610dd9a16a9ab0f05c68b64d"}, ] [package.dependencies] -cryptography = ">=0.6,<45" +cryptography = ">=2.5,<45" PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} requests = ">=2.0.0,<3" [package.extras] -broker = ["pymsalruntime (>=0.13.2,<0.15)"] +broker = ["pymsalruntime (>=0.13.2,<0.17)"] [[package]] name = "msal-extensions" @@ -1298,13 +1298,13 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -1349,22 +1349,22 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p [[package]] name = "protobuf" -version = "5.26.1" +version = "5.27.1" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, - {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, - {file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"}, - {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"}, - {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"}, - {file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"}, - {file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"}, - {file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"}, - {file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"}, - {file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"}, - {file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"}, + {file = "protobuf-5.27.1-cp310-abi3-win32.whl", hash = "sha256:3adc15ec0ff35c5b2d0992f9345b04a540c1e73bfee3ff1643db43cc1d734333"}, + {file = "protobuf-5.27.1-cp310-abi3-win_amd64.whl", hash = "sha256:25236b69ab4ce1bec413fd4b68a15ef8141794427e0b4dc173e9d5d9dffc3bcd"}, + {file = "protobuf-5.27.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4e38fc29d7df32e01a41cf118b5a968b1efd46b9c41ff515234e794011c78b17"}, + {file = "protobuf-5.27.1-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:917ed03c3eb8a2d51c3496359f5b53b4e4b7e40edfbdd3d3f34336e0eef6825a"}, + {file = "protobuf-5.27.1-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:ee52874a9e69a30271649be88ecbe69d374232e8fd0b4e4b0aaaa87f429f1631"}, + {file = "protobuf-5.27.1-cp38-cp38-win32.whl", hash = "sha256:7a97b9c5aed86b9ca289eb5148df6c208ab5bb6906930590961e08f097258107"}, + {file = "protobuf-5.27.1-cp38-cp38-win_amd64.whl", hash = "sha256:f6abd0f69968792da7460d3c2cfa7d94fd74e1c21df321eb6345b963f9ec3d8d"}, + {file = "protobuf-5.27.1-cp39-cp39-win32.whl", hash = "sha256:dfddb7537f789002cc4eb00752c92e67885badcc7005566f2c5de9d969d3282d"}, + {file = "protobuf-5.27.1-cp39-cp39-win_amd64.whl", hash = "sha256:39309898b912ca6febb0084ea912e976482834f401be35840a008da12d189340"}, + {file = "protobuf-5.27.1-py3-none-any.whl", hash = "sha256:4ac7249a1530a2ed50e24201d6630125ced04b30619262f06224616e0030b6cf"}, + {file = "protobuf-5.27.1.tar.gz", hash = "sha256:df5e5b8e39b7d1c25b186ffdf9f44f40f810bbcc9d2b71d9d3156fee5a9adf15"}, ] [[package]] @@ -1488,13 +1488,13 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2024.5" +version = "2024.7" description = "Community maintained hooks for PyInstaller" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller_hooks_contrib-2024.5-py2.py3-none-any.whl", hash = "sha256:0852249b7fb1e9394f8f22af2c22fa5294c2c0366157969f98c96df62410c4c6"}, - {file = "pyinstaller_hooks_contrib-2024.5.tar.gz", hash = "sha256:aa5dee25ea7ca317ad46fa16b5afc8dba3b0e43f2847e498930138885efd3cab"}, + {file = "pyinstaller_hooks_contrib-2024.7-py2.py3-none-any.whl", hash = "sha256:8bf0775771fbaf96bcd2f4dfd6f7ae6c1dd1b1efe254c7e50477b3c08e7841d8"}, + {file = "pyinstaller_hooks_contrib-2024.7.tar.gz", hash = "sha256:fd5f37dcf99bece184e40642af88be16a9b89613ecb958a8bd1136634fc9fac5"}, ] [package.dependencies] @@ -1537,25 +1537,28 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "python-box" -version = "7.1.1" +version = "7.2.0" description = "Advanced Python dictionaries with dot notation access" optional = false python-versions = ">=3.8" files = [ - {file = "python-box-7.1.1.tar.gz", hash = "sha256:2a3df244a5a79ac8f8447b5d11b5be0f2747d7b141cb2866060081ae9b53cc50"}, - {file = "python_box-7.1.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:81ed1ec0f0ff2370227fc07277c5baca46d190a4747631bad7eb6ab1630fb7d9"}, - {file = "python_box-7.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8891735b4148e84d348c6eadd2f127152f751c9603e35d43a1f496183a291ac4"}, - {file = "python_box-7.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:0036fd47d388deaca8ebd65aea905f88ee6ef91d1d8ce34898b66f1824afbe80"}, - {file = "python_box-7.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aabf8b9ae5dbc8ba431d8cbe0d4cfe737a25d52d68b0f5f2ff34915c21a2c1db"}, - {file = "python_box-7.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c046608337e723ae4de3206db5d1e1202ed166da2dfdc70c1f9361e72ace5633"}, - {file = "python_box-7.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:f9266795e9c233874fb5b34fa994054b4fb0371881678e6ec45aec17fc95feac"}, - {file = "python_box-7.1.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:f76b5b7f0cdc07bfdd4200dc24e6e33189bb2ae322137a2b7110fd41891a3157"}, - {file = "python_box-7.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ea13c98e05a3ec0ff26f254986a17290b69b5ade209fad081fd628f8fcfaa08"}, - {file = "python_box-7.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3f346e332dba16df0b0543d319d9e7ce07d93e5ae152175302894352aa2d28"}, - {file = "python_box-7.1.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:24c4ec0ee0278f66321100aaa9c615413da27a14ff43d376a2a3b4665e1d9494"}, - {file = "python_box-7.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d95e5eec4fc8f3fc5c9cc7347fc2eb4f9187c853d34c90b1658d1eff96cd4eac"}, - {file = "python_box-7.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:a0f1333c42e81529b6f68c192050df9d4505b803be7ac47f114036b98707f7cf"}, - {file = "python_box-7.1.1-py3-none-any.whl", hash = "sha256:63b609555554d7a9d4b6e725f8e78ef1717c67e7d386200e03422ad612338df8"}, + {file = "python_box-7.2.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:6bdeec791e25258351388b3029a3ec5da302bb9ed3be175493c43cdc6c47f5e3"}, + {file = "python_box-7.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c449f7b3756a71479fa9c61a86e344ac00ed782a66d7662590f0afa294249d18"}, + {file = "python_box-7.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:6b0d61f182d394106d963232854e495b51edc178faa5316a797be1178212d7e0"}, + {file = "python_box-7.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e2d752de8c1204255bf7b0c814c59ef48293c187a7e9fdcd2fefa28024b72032"}, + {file = "python_box-7.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8a6c35ea356a386077935958a5debcd5b229b9a1b3b26287a52dfe1a7e65d99"}, + {file = "python_box-7.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:32ed58ec4d9e5475efe69f9c7d773dfea90a6a01979e776da93fd2b0a5d04429"}, + {file = "python_box-7.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2a2d664c6a27f7515469b6f1e461935a2038ee130b7d194b4b4db4e85d363618"}, + {file = "python_box-7.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8a5a7365db1aaf600d3e8a2747fcf6833beb5d45439a54318548f02e302e3ec"}, + {file = "python_box-7.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:739f827056ea148cbea3122d4617c994e829b420b1331183d968b175304e3a4f"}, + {file = "python_box-7.2.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:2617ef3c3d199f55f63c908f540a4dc14ced9b18533a879e6171c94a6a436f23"}, + {file = "python_box-7.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffd866bed03087b1d8340014da8c3aaae19135767580641df1b4ae6fff6ac0aa"}, + {file = "python_box-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:9681f059e7e92bdf20782cd9ea6e533d4711fc7b8c57a462922a025d46add4d0"}, + {file = "python_box-7.2.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:6b59b1e2741c9ceecdf5a5bd9b90502c24650e609cd824d434fed3b6f302b7bb"}, + {file = "python_box-7.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23fae825d809ae7520fdeac88bb52be55a3b63992120a00e381783669edf589"}, + {file = "python_box-7.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:573b1abdcb7bd745fa404444f060ee62fc35a74f067181e55dcb43cfe92f2827"}, + {file = "python_box-7.2.0-py3-none-any.whl", hash = "sha256:a3c90832dd772cb0197fdb5bc06123b6e1b846899a1b53d9c39450d27a584829"}, + {file = "python_box-7.2.0.tar.gz", hash = "sha256:551af20bdab3a60a2a21e3435120453c4ca32f7393787c3a5036e1d9fc6a0ede"}, ] [package.extras] @@ -1688,13 +1691,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1758,19 +1761,18 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.5.1" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -1818,24 +1820,24 @@ files = [ [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "urllib3" -version = "1.26.18" +version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, + {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, ] [package.extras] @@ -1876,4 +1878,4 @@ h11 = ">=0.9.0,<1" [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "2e4c0932f90eeb181fe6213a913205ac4fafb2755ba6b65930a0c367c721ac9f" +content-hash = "ee6d2ea3228ff8ed864d164e56c31be50e99f1844ceb12e2e961453e6d23641a" diff --git a/tools/pyproject.toml b/tools/pyproject.toml index 2940437c..1786994f 100644 --- a/tools/pyproject.toml +++ b/tools/pyproject.toml @@ -36,7 +36,7 @@ ghrepo = "0.7.0" dnspython = "2.4.2" hvac = "1.2.1" alive-progress = "^3.1.5" -kr8s = "^0.14.2" +kr8s = "^0.16.1" [tool.poetry.dev-dependencies] flake8 = "6.1.0" From 2bb303443d481d8d267146a3f9bba3ed9f6547f7 Mon Sep 17 00:00:00 2001 From: Serg Shalavin Date: Wed, 19 Jun 2024 02:46:30 +0200 Subject: [PATCH 07/10] default nodes on AL2023_x86_64_STANDARD --- platform/terraform/modules/cloud_aws/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/terraform/modules/cloud_aws/main.tf b/platform/terraform/modules/cloud_aws/main.tf index a6e21e00..b12a8c28 100644 --- a/platform/terraform/modules/cloud_aws/main.tf +++ b/platform/terraform/modules/cloud_aws/main.tf @@ -26,7 +26,7 @@ locals { var.cluster_node_labels, { "node.kubernetes.io/lifecycle" = "${node_group.capacity_type}" } ) - ami_type = node_group.gpu_enabled == true ? "BOTTLEROCKET_x86_64_NVIDIA" : "BOTTLEROCKET_x86_64" + ami_type = node_group.gpu_enabled == true ? "BOTTLEROCKET_x86_64_NVIDIA" : "AL2023_x86_64_STANDARD" taints = merge(node_group.capacity_type == "spot" ? { capacity_type_spot = { From 2ab5dbf09700c5ff7fa609e31afa2accb018d8b2 Mon Sep 17 00:00:00 2001 From: Alexander Ulyanov Date: Thu, 20 Jun 2024 21:29:15 +0200 Subject: [PATCH 08/10] docs: add link to quickstart --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 30f5da09..9e52adda 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -[//]: # (![GitHub](https://img.shields.io/github/license/CloudGeometry/cg-devx-core)) +![GitHub](https://img.shields.io/github/license/CloudGeometry/cg-devx-core) +[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) +![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/cloudgeometry/cg-devx-core) +![GitHub Tag](https://img.shields.io/github/v/tag/cloudgeometry/cg-devx-core) +![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cgdevxcli) +![PyPI - Downloads](https://img.shields.io/pypi/dm/cgdevxcli) -[//]: # ([![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)) > **WORK IN PROGRESS**: Repository is under active development, breaking changes are expected. @@ -19,6 +23,8 @@ CG DevX is an all-in-one platform designed to simplify and enhance the developme cloud-native applications. Whether you are an experienced platform engineer or just a beginner DevOps starting your cloud-native journey, CG DevX provides the tools and capabilities to empower your team and streamline your workflows. +Do you want to try it yourself? Follow our [quickstart guide](QUICKSTART.md). + For comprehensive list of features please see this [page](https://cloudgeometry.github.io/cg-devx-docs/capabilities/capabilities/). From 521958106427b611f85fb5bf7e1750b15f8ca131 Mon Sep 17 00:00:00 2001 From: Serg Shalavin Date: Fri, 21 Jun 2024 11:33:57 +0200 Subject: [PATCH 09/10] return back to AL2_x86_64 for default node group, setuptools to 69.5 --- platform/terraform/modules/cloud_aws/main.tf | 2 +- tools/poetry.lock | 13 +++++++------ tools/pyproject.toml | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/platform/terraform/modules/cloud_aws/main.tf b/platform/terraform/modules/cloud_aws/main.tf index b12a8c28..f4bb4f15 100644 --- a/platform/terraform/modules/cloud_aws/main.tf +++ b/platform/terraform/modules/cloud_aws/main.tf @@ -26,7 +26,7 @@ locals { var.cluster_node_labels, { "node.kubernetes.io/lifecycle" = "${node_group.capacity_type}" } ) - ami_type = node_group.gpu_enabled == true ? "BOTTLEROCKET_x86_64_NVIDIA" : "AL2023_x86_64_STANDARD" + ami_type = node_group.gpu_enabled == true ? "BOTTLEROCKET_x86_64_NVIDIA" : "AL2_x86_64" taints = merge(node_group.capacity_type == "spot" ? { capacity_type_spot = { diff --git a/tools/poetry.lock b/tools/poetry.lock index c36b26ea..9fc9dca5 100644 --- a/tools/poetry.lock +++ b/tools/poetry.lock @@ -1761,18 +1761,19 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "setuptools" -version = "70.0.0" +version = "69.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -1878,4 +1879,4 @@ h11 = ">=0.9.0,<1" [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "ee6d2ea3228ff8ed864d164e56c31be50e99f1844ceb12e2e961453e6d23641a" +content-hash = "d1fb457e35434611db81c28edd53802b8cbe93f5942b7f0a24cb0c7c085b070c" diff --git a/tools/pyproject.toml b/tools/pyproject.toml index 1786994f..b7482473 100644 --- a/tools/pyproject.toml +++ b/tools/pyproject.toml @@ -37,6 +37,7 @@ dnspython = "2.4.2" hvac = "1.2.1" alive-progress = "^3.1.5" kr8s = "^0.16.1" +setuptools = "^69.5.1" [tool.poetry.dev-dependencies] flake8 = "6.1.0" From ca1efc0de4bdd0b68713a203a2ddc9b4b6b26bbb Mon Sep 17 00:00:00 2001 From: Alexander Ulyanov Date: Mon, 24 Jun 2024 19:36:57 +0200 Subject: [PATCH 10/10] Update README.md --- tools/cli/commands/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/cli/commands/README.md b/tools/cli/commands/README.md index 6dab5bda..95e1f668 100644 --- a/tools/cli/commands/README.md +++ b/tools/cli/commands/README.md @@ -47,9 +47,14 @@ checkpoints) and could be re-run | -gtu, --gitops-template-url | TEXT | GitOps repository template url | | -gtb, --gitops-template-branch | TEXT | GitOps repository template branch | | -dw, --setup-demo-workload | Flag | Setup demo workload | +| -ops, --optional-services | TEXT | Setup optional services | | -f, --config-file | FILENAME | Load parameters from file | | --verbosity | [DEBUG, INFO, WARNING, ERROR, CRITICAL] | Set the logging verbosity level, default CRITICAL | +**Available Optional Services**: + +- nvidia-gpu-operator + > **Note!**: For all names use kebab-case. `parameters.yaml` file example @@ -143,4 +148,4 @@ The cleanup process could still fail. If you have any issues, please try restarting the process. If it fails to delete your K8s cluster, please try deleting Load Balancer(s) manually and restart the process. For GitHub, external action runners should be removed prior to repository deletion. -If it fails to delete your GitOps repo - please check and remove runners and restart the process. \ No newline at end of file +If it fails to delete your GitOps repo - please check and remove runners and restart the process.