diff --git a/changes/3697.feature.md b/changes/3697.feature.md new file mode 100644 index 00000000000..6d16f4b5514 --- /dev/null +++ b/changes/3697.feature.md @@ -0,0 +1 @@ +Handle `None` arguments properly in `ContainerRegistryNode` GQL API. diff --git a/src/ai/backend/manager/models/gql_models/container_registry.py b/src/ai/backend/manager/models/gql_models/container_registry.py index fabda6098de..7b0d3c77dd4 100644 --- a/src/ai/backend/manager/models/gql_models/container_registry.py +++ b/src/ai/backend/manager/models/gql_models/container_registry.py @@ -331,12 +331,12 @@ async def mutate( url: str, type: ContainerRegistryType, registry_name: str, - is_global: bool | UndefinedType = Undefined, - project: str | UndefinedType = Undefined, - username: str | UndefinedType = Undefined, - password: str | UndefinedType = Undefined, - ssl_verify: bool | UndefinedType = Undefined, - extra: dict | UndefinedType = Undefined, + is_global: bool | UndefinedType | None = Undefined, + project: str | UndefinedType | None = Undefined, + username: str | UndefinedType | None = Undefined, + password: str | UndefinedType | None = Undefined, + ssl_verify: bool | UndefinedType | None = Undefined, + extra: dict | UndefinedType | None = Undefined, ) -> CreateContainerRegistryNode: ctx: GraphQueryContext = info.context @@ -347,7 +347,7 @@ async def mutate( } def _set_if_set(name: str, val: Any) -> None: - if val is not Undefined: + if val is not Undefined and val is not None: input_config[name] = val _set_if_set("project", project) @@ -402,22 +402,22 @@ async def mutate( root, info: graphene.ResolveInfo, id: str, - url: str | UndefinedType = Undefined, - type: ContainerRegistryType | UndefinedType = Undefined, - registry_name: str | UndefinedType = Undefined, - is_global: bool | UndefinedType = Undefined, - project: str | UndefinedType = Undefined, - username: str | UndefinedType = Undefined, - password: str | UndefinedType = Undefined, - ssl_verify: bool | UndefinedType = Undefined, - extra: dict | UndefinedType = Undefined, + url: str | UndefinedType | None = Undefined, + type: ContainerRegistryType | UndefinedType | None = Undefined, + registry_name: str | UndefinedType | None = Undefined, + is_global: bool | UndefinedType | None = Undefined, + project: str | UndefinedType | None = Undefined, + username: str | UndefinedType | None = Undefined, + password: str | UndefinedType | None = Undefined, + ssl_verify: bool | UndefinedType | None = Undefined, + extra: dict | UndefinedType | None = Undefined, ) -> ModifyContainerRegistryNode: ctx: GraphQueryContext = info.context input_config: dict[str, Any] = {} def _set_if_set(name: str, val: Any) -> None: - if val is not Undefined: + if val is not Undefined and val is not None: input_config[name] = val _set_if_set("url", url) diff --git a/src/ai/backend/manager/models/gql_models/container_registry_v2.py b/src/ai/backend/manager/models/gql_models/container_registry_v2.py index 26e4f868b91..b29560ba56a 100644 --- a/src/ai/backend/manager/models/gql_models/container_registry_v2.py +++ b/src/ai/backend/manager/models/gql_models/container_registry_v2.py @@ -77,7 +77,7 @@ async def mutate( } def _set_if_set(name: str, val: Any) -> None: - if val is not Undefined: + if val is not Undefined and val is not None: input_config[name] = val _set_if_set("project", props.project) @@ -149,7 +149,7 @@ async def mutate( input_config: dict[str, Any] = {} def _set_if_set(name: str, val: Any) -> None: - if val is not Undefined: + if val is not Undefined and val is not None: input_config[name] = val _set_if_set("url", props.url)