fixed deployment update
This commit is contained in:
parent
cc43885279
commit
83ff9af4d6
@ -342,28 +342,41 @@ class K8sClient:
|
|||||||
def get_deployment_yaml(self, namespace: str, name: str) -> Optional[str]:
|
def get_deployment_yaml(self, namespace: str, name: str) -> Optional[str]:
|
||||||
"""Get deployment as YAML string."""
|
"""Get deployment as YAML string."""
|
||||||
try:
|
try:
|
||||||
from kubernetes import utils
|
import yaml
|
||||||
|
|
||||||
deployment = self.apps_v1.read_namespaced_deployment(name, namespace)
|
deployment = self.apps_v1.read_namespaced_deployment(name, namespace)
|
||||||
|
|
||||||
# Convert to dict and remove managed fields and status
|
# Use ApiClient to properly serialize the object
|
||||||
deployment_dict = deployment.to_dict()
|
api_client = client.ApiClient()
|
||||||
|
deployment_dict = api_client.sanitize_for_serialization(deployment)
|
||||||
|
|
||||||
# Remove fields that shouldn't be edited
|
# Remove fields that shouldn't be edited
|
||||||
if 'metadata' in deployment_dict:
|
if 'metadata' in deployment_dict:
|
||||||
deployment_dict['metadata'].pop('managed_fields', None)
|
deployment_dict['metadata'].pop('managedFields', None)
|
||||||
deployment_dict['metadata'].pop('resource_version', None)
|
deployment_dict['metadata'].pop('resourceVersion', None)
|
||||||
deployment_dict['metadata'].pop('uid', None)
|
deployment_dict['metadata'].pop('uid', None)
|
||||||
deployment_dict['metadata'].pop('self_link', None)
|
deployment_dict['metadata'].pop('selfLink', None)
|
||||||
deployment_dict['metadata'].pop('creation_timestamp', None)
|
deployment_dict['metadata'].pop('creationTimestamp', None)
|
||||||
deployment_dict['metadata'].pop('generation', None)
|
deployment_dict['metadata'].pop('generation', None)
|
||||||
|
|
||||||
# Remove status
|
# Remove status
|
||||||
deployment_dict.pop('status', None)
|
deployment_dict.pop('status', None)
|
||||||
|
|
||||||
# Convert to YAML
|
# Custom YAML representer to avoid ugly formatting
|
||||||
import yaml
|
def represent_none(self, _):
|
||||||
yaml_str = yaml.dump(deployment_dict, default_flow_style=False, sort_keys=False)
|
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
|
return yaml_str
|
||||||
except ApiException as e:
|
except ApiException as e:
|
||||||
console.print(f"[red]Error reading deployment:[/red] {e}")
|
console.print(f"[red]Error reading deployment:[/red] {e}")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user