feat: Support for canary deployments in gRPC controller#1081
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 18810603c6
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| message CanaryInfoResponse { | ||
| CanaryInfo info = 1; |
There was a problem hiding this comment.
Regenerate the canary response schema consistently
When clients generate code from this committed .proto, CanaryInfoResponse is a wrapper containing info, but the committed Python artifacts describe CanaryInfoResponse itself as the scalar canary-info message with active/revision/ratio/runners fields (for example controller_pb2.pyi defines those fields directly). In a mixed environment where a non-Python server or client is generated from controller.proto, the CanaryInfo RPC response wire shape disagrees with the published Python package, so Python clients will ignore the length-delimited info field or other clients will miss the direct scalar fields. Please regenerate the artifacts from this schema or rename/split the messages so the source proto and generated files match.
Useful? React with 👍 / 👎.
| enum DeploymentStrategy { | ||
| RECREATE = 0; | ||
| ROLLING = 1; | ||
| CANARY = 2; |
There was a problem hiding this comment.
Add CANARY to SDK strategy handling
Adding CANARY to the shared DeploymentStrategy enum makes it a valid value for fields like RegisterApplicationRequest.deployment_strategy and SetAliasRequest.deployment_strategy, but the Python SDK/CLI still only allows "recreate" and "rolling" (projects/fal/src/fal/sdk.py:52, projects/fal/src/fal/sdk.py:462-484, and CLI choices in projects/fal/src/fal/cli/apps.py:385-386). In those paths, a user trying to select the newly advertised canary strategy is rejected by argparse or hits DeploymentStrategy[deployment_strategy.upper()] with no enum member, so the public Python tooling cannot send this new proto value.
Useful? React with 👍 / 👎.
No description provided.