fixed deployment update

This commit is contained in:
vy.boyko 2025-10-26 21:38:29 +03:00
parent cc43885279
commit 83ff9af4d6

View File

@ -342,28 +342,41 @@ class K8sClient:
def get_deployment_yaml(self, namespace: str, name: str) -> Optional[str]:
"""Get deployment as YAML string."""
try:
from kubernetes import utils
import yaml
deployment = self.apps_v1.read_namespaced_deployment(name, namespace)
# Convert to dict and remove managed fields and status
deployment_dict = deployment.to_dict()
# Use ApiClient to properly serialize the object
api_client = client.ApiClient()
deployment_dict = api_client.sanitize_for_serialization(deployment)
# Remove fields that shouldn't be edited
if 'metadata' in deployment_dict:
deployment_dict['metadata'].pop('managed_fields', None)
deployment_dict['metadata'].pop('resource_version', None)
deployment_dict['metadata'].pop('managedFields', None)
deployment_dict['metadata'].pop('resourceVersion', None)
deployment_dict['metadata'].pop('uid', None)
deployment_dict['metadata'].pop('self_link', None)
deployment_dict['metadata'].pop('creation_timestamp', None)
deployment_dict['metadata'].pop('selfLink', None)
deployment_dict['metadata'].pop('creationTimestamp', None)
deployment_dict['metadata'].pop('generation', None)
# Remove status
deployment_dict.pop('status', None)
# Convert to YAML
import yaml
yaml_str = yaml.dump(deployment_dict, default_flow_style=False, sort_keys=False)
# Custom YAML representer to avoid ugly formatting
def represent_none(self, _):
return self.represent_scalar('tag:yaml.org,2002:null', '')
yaml.add_representer(type(None), represent_none)
# Convert to YAML with proper indentation
yaml_str = yaml.dump(
deployment_dict,
default_flow_style=False,
sort_keys=False,
indent=2,
allow_unicode=True,
explicit_start=False
)
return yaml_str
except ApiException as e:
console.print(f"[red]Error reading deployment:[/red] {e}")