From 12c0b0863d2a93f7544afcaf3288c7c82db5d899 Mon Sep 17 00:00:00 2001 From: DilaraOflaz Date: Mon, 8 Jul 2024 12:46:48 +0100 Subject: [PATCH] Add annotations parameter at the app (deployment/job/..) level --- kubetools/kubernetes/config/__init__.py | 23 ++++++++++++++--------- kubetools/kubernetes/config/container.py | 3 --- tests/configs/basic_app/kubetools.yml | 8 ++++---- tests/configs/dependencies/kubetools.yml | 4 ++-- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/kubetools/kubernetes/config/__init__.py b/kubetools/kubernetes/config/__init__.py index 71d3126..2d2fc3c 100644 --- a/kubetools/kubernetes/config/__init__.py +++ b/kubetools/kubernetes/config/__init__.py @@ -181,9 +181,10 @@ def generate_kubernetes_configs_for_project( deployment_name=name, default_registry=default_registry, ) - app_annotations = copy_and_update(base_annotations) - for container_name, data in containers.items(): - app_annotations.update(data.get('annotations', {})) + app_annotations = copy_and_update( + base_annotations, + dependency.get('annotations', {}), + ) if container_ports: services.append(make_service_config( @@ -227,9 +228,8 @@ def generate_kubernetes_configs_for_project( app_annotations = copy_and_update( base_annotations, per_deployment_annotations.get(name), + deployment.get('annotations', {}), ) - for container_name, data in containers.items(): - app_annotations.update(data.get('annotations', {})) if container_ports: services.append(make_service_config( @@ -298,12 +298,16 @@ def generate_kubernetes_configs_for_project( node_selector_labels = job_spec.get('nodeSelector', None) service_account_name = job_spec.get('serviceAccountName', None) secrets = job_spec.get('secrets', None) + app_annotations = copy_and_update( + base_annotations, + job_spec.get('annotations', {}), + ) jobs.append(make_job_config( job_spec, app_name=project_name, labels=job_labels, - annotations=base_annotations, + annotations=app_annotations, envvars=job_envvars, node_selector_labels=node_selector_labels, service_account_name=service_account_name, @@ -329,9 +333,10 @@ def generate_kubernetes_configs_for_project( default_registry=default_registry, ) - app_annotations = copy_and_update(base_annotations) - for container_name, data in containers.items(): - app_annotations.update(data.get('annotations', {})) + app_annotations = copy_and_update( + base_annotations, + cronjob.get('annotations', {}), + ) schedule = cronjob['schedule'] concurrency_policy = cronjob['concurrency_policy'] diff --git a/kubetools/kubernetes/config/container.py b/kubetools/kubernetes/config/container.py index 8fa7187..9fb8cbd 100644 --- a/kubetools/kubernetes/config/container.py +++ b/kubetools/kubernetes/config/container.py @@ -128,9 +128,6 @@ def make_container_config( 'readonly': True, }) - # Remove annotations from container data - if 'annotations' in container: - container.pop('annotations') # Finally, attach all remaining data container_data.update(container) diff --git a/tests/configs/basic_app/kubetools.yml b/tests/configs/basic_app/kubetools.yml index 5d4c135..c30a9b9 100644 --- a/tests/configs/basic_app/kubetools.yml +++ b/tests/configs/basic_app/kubetools.yml @@ -28,6 +28,8 @@ deployments: httpGet: path: /ping generic-app-with-annotations: + annotations: + imageregistry: "https://hub.docker.com/" containers: webserver: command: [uwsgi, --ini, /etc/uwsgi.conf] @@ -36,8 +38,6 @@ deployments: timeoutSeconds: 5 httpGet: path: /ping - annotations: - imageregistry: "https://hub.docker.com/" cronjobs: @@ -48,10 +48,10 @@ cronjobs: generic-container: containerContext: generic-context generic-cronjob-with-annotations: + annotations: + imageregistry: "https://hub.docker.com/" schedule: "*/1 * * * *" concurrency_policy: "Allow" containers: generic-container: containerContext: generic-context - annotations: - imageregistry: "https://hub.docker.com/" diff --git a/tests/configs/dependencies/kubetools.yml b/tests/configs/dependencies/kubetools.yml index d3eb9fb..a1d5bca 100644 --- a/tests/configs/dependencies/kubetools.yml +++ b/tests/configs/dependencies/kubetools.yml @@ -21,11 +21,11 @@ dependencies: containerContext: memcache memcache-with-annotations: + annotations: + imageregistry: https://hub.docker.com/ containers: memcache-with-annotations: containerContext: memcache - annotations: - imageregistry: https://hub.docker.com/ elasticsearch: conditions: