Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the
📝 WalkthroughWalkthroughThis pull request updates the CI/CD workflow to use Node.js 24 and significantly extends the cloud-controlplane API schema. The schema changes introduce support for Serverless Private Link lifecycle management with new public schemas (AIGateway, PlainConfig) and comprehensive ServerlessPrivateLink families including creation, deletion, update, and listing operations. The scope system is expanded to track dataplane resources with new ScopeResourceType enum values for MCP servers, AI agents, and AI gateway components. AuthenticationConfiguration is updated to support SASL/PLAIN configuration alongside existing SASL/SCRAM options, and various example payloads are updated to reflect these additions. Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In `@cloud-controlplane/cloud-controlplane.yaml`:
- Around line 5161-5163: The example YAML contains an undefined field "oxla" in
the Cluster examples; either add a corresponding property to the Cluster schema
(e.g., add an optional "oxla" field with its type and description in the Cluster
schema) or remove "oxla" from all cluster example blocks so examples match the
Cluster schema; search for "oxla" and the "Cluster" schema and update the schema
definition or prune the example entries accordingly.
- Around line 3554-3613: Update the ServerlessPrivateLink-related schemas to use
snake_case: rename the property "cloudprovider" to "cloud_provider" wherever it
appears (e.g., in ServerlessPrivateLink and ServerlessPrivateLinkCreate schema
property lists) and adjust any required arrays that list "cloudprovider" to
instead list "cloud_provider"; ensure all $ref usages or schema property names
referencing CloudProvider remain unchanged except for the property key name swap
so the schema and required validation match the rest of the spec.
🧹 Nitpick comments (1)
cloud-controlplane/cloud-controlplane.yaml (1)
2868-2876: MarkPlainConfig.passwordas writeOnly (and format: password).
It’s a secret; make the contract explicit that it’s request-only.🔐 Proposed adjustment
PlainConfig: properties: password: title: Password + format: password + writeOnly: true type: string
| properties: | ||
| aws_config: | ||
| $ref: '#/components/schemas/ServerlessPrivateLink.AWS' | ||
| cloudprovider: | ||
| $ref: '#/components/schemas/CloudProvider' | ||
| created_at: | ||
| format: date-time | ||
| type: string | ||
| id: | ||
| type: string | ||
| name: | ||
| type: string | ||
| resource_group_id: | ||
| type: string | ||
| serverless_region: | ||
| type: string | ||
| state: | ||
| $ref: '#/components/schemas/ServerlessPrivateLink.State' | ||
| status: | ||
| $ref: '#/components/schemas/ServerlessPrivateLinkStatus' | ||
| updated_at: | ||
| format: date-time | ||
| type: string | ||
| type: object | ||
| ServerlessPrivateLink.AWS: | ||
| properties: | ||
| allowed_principals: | ||
| items: | ||
| type: string | ||
| type: array | ||
| type: object | ||
| ServerlessPrivateLink.State: | ||
| description: |2- | ||
| - STATE_CREATING: Private link is being created. | ||
| - STATE_READY: Private link is ready to use. | ||
| - STATE_DELETING: Private link is being deleted. | ||
| - STATE_FAILED: Private link is in an error state. | ||
| - STATE_UPDATING: Private link is in an updating state. | ||
| enum: | ||
| - STATE_CREATING | ||
| - STATE_READY | ||
| - STATE_DELETING | ||
| - STATE_FAILED | ||
| - STATE_UPDATING | ||
| type: string | ||
| ServerlessPrivateLinkCreate: | ||
| properties: | ||
| aws_config: | ||
| $ref: '#/components/schemas/ServerlessPrivateLinkCreate.AWS' | ||
| cloudprovider: | ||
| $ref: '#/components/schemas/CloudProvider' | ||
| name: | ||
| type: string | ||
| resource_group_id: | ||
| type: string | ||
| serverless_region: | ||
| type: string | ||
| required: | ||
| - cloudprovider | ||
| type: object |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's check if the file exists and examine the lines in question
if [ -f "cloud-controlplane/cloud-controlplane.yaml" ]; then
echo "=== Lines 3554-3613 from cloud-controlplane.yaml ==="
sed -n '3554,3613p' cloud-controlplane/cloud-controlplane.yaml
else
echo "File not found at expected path"
find . -name "cloud-controlplane.yaml" -type f 2>/dev/null | head -5
fiRepository: redpanda-data/api-docs
Length of output: 1871
🏁 Script executed:
# Search for cloudprovider vs cloud_provider occurrences in the YAML
echo "=== Occurrences of 'cloudprovider' in YAML files ==="
rg 'cloudprovider' --type yaml -n
echo ""
echo "=== Occurrences of 'cloud_provider' in YAML files ==="
rg 'cloud_provider' --type yaml -n | head -30Repository: redpanda-data/api-docs
Length of output: 2828
🏁 Script executed:
# Look for proto files that might define the actual contract
echo "=== Proto files in the repository ==="
find . -name "*.proto" -type f 2>/dev/null | head -10Repository: redpanda-data/api-docs
Length of output: 103
🏁 Script executed:
# Look at specific schemas that use cloud_provider to see the pattern
echo "=== Example: Cluster schema (around line 471) ==="
sed -n '465,480p' cloud-controlplane/cloud-controlplane.yaml
echo ""
echo "=== Example: ClusterCreate schema (around line 722) ==="
sed -n '715,735p' cloud-controlplane/cloud-controlplane.yaml
echo ""
echo "=== Example: ClusterUpdate schema (around line 2401) ==="
sed -n '2395,2415p' cloud-controlplane/cloud-controlplane.yamlRepository: redpanda-data/api-docs
Length of output: 2844
🏁 Script executed:
# Check if there's any documentation or comments about field naming
rg 'snake_case|camelCase|naming' cloud-controlplane/cloud-controlplane.yaml -B2 -A2 | head -30Repository: redpanda-data/api-docs
Length of output: 885
Rename cloudprovider to cloud_provider in ServerlessPrivateLink schemas.
The field uses camelCase, while the entire OpenAPI specification consistently uses snake_case (cloud_provider appears 27+ times across Cluster, Network, and other schemas). This inconsistency will confuse clients and likely cause request failures if the backend expects snake_case field names.
Required changes
ServerlessPrivateLink:
properties:
aws_config:
$ref: '#/components/schemas/ServerlessPrivateLink.AWS'
- cloudprovider:
+ cloud_provider:
$ref: '#/components/schemas/CloudProvider'
@@
ServerlessPrivateLinkCreate:
properties:
aws_config:
$ref: '#/components/schemas/ServerlessPrivateLinkCreate.AWS'
- cloudprovider:
+ cloud_provider:
$ref: '#/components/schemas/CloudProvider'
@@
required:
- - cloudprovider
+ - cloud_provider📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| properties: | |
| aws_config: | |
| $ref: '#/components/schemas/ServerlessPrivateLink.AWS' | |
| cloudprovider: | |
| $ref: '#/components/schemas/CloudProvider' | |
| created_at: | |
| format: date-time | |
| type: string | |
| id: | |
| type: string | |
| name: | |
| type: string | |
| resource_group_id: | |
| type: string | |
| serverless_region: | |
| type: string | |
| state: | |
| $ref: '#/components/schemas/ServerlessPrivateLink.State' | |
| status: | |
| $ref: '#/components/schemas/ServerlessPrivateLinkStatus' | |
| updated_at: | |
| format: date-time | |
| type: string | |
| type: object | |
| ServerlessPrivateLink.AWS: | |
| properties: | |
| allowed_principals: | |
| items: | |
| type: string | |
| type: array | |
| type: object | |
| ServerlessPrivateLink.State: | |
| description: |2- | |
| - STATE_CREATING: Private link is being created. | |
| - STATE_READY: Private link is ready to use. | |
| - STATE_DELETING: Private link is being deleted. | |
| - STATE_FAILED: Private link is in an error state. | |
| - STATE_UPDATING: Private link is in an updating state. | |
| enum: | |
| - STATE_CREATING | |
| - STATE_READY | |
| - STATE_DELETING | |
| - STATE_FAILED | |
| - STATE_UPDATING | |
| type: string | |
| ServerlessPrivateLinkCreate: | |
| properties: | |
| aws_config: | |
| $ref: '#/components/schemas/ServerlessPrivateLinkCreate.AWS' | |
| cloudprovider: | |
| $ref: '#/components/schemas/CloudProvider' | |
| name: | |
| type: string | |
| resource_group_id: | |
| type: string | |
| serverless_region: | |
| type: string | |
| required: | |
| - cloudprovider | |
| type: object | |
| properties: | |
| aws_config: | |
| $ref: '#/components/schemas/ServerlessPrivateLink.AWS' | |
| cloud_provider: | |
| $ref: '#/components/schemas/CloudProvider' | |
| created_at: | |
| format: date-time | |
| type: string | |
| id: | |
| type: string | |
| name: | |
| type: string | |
| resource_group_id: | |
| type: string | |
| serverless_region: | |
| type: string | |
| state: | |
| $ref: '#/components/schemas/ServerlessPrivateLink.State' | |
| status: | |
| $ref: '#/components/schemas/ServerlessPrivateLinkStatus' | |
| updated_at: | |
| format: date-time | |
| type: string | |
| type: object | |
| ServerlessPrivateLink.AWS: | |
| properties: | |
| allowed_principals: | |
| items: | |
| type: string | |
| type: array | |
| type: object | |
| ServerlessPrivateLink.State: | |
| description: |2- | |
| - STATE_CREATING: Private link is being created. | |
| - STATE_READY: Private link is ready to use. | |
| - STATE_DELETING: Private link is being deleted. | |
| - STATE_FAILED: Private link is in an error state. | |
| - STATE_UPDATING: Private link is in an updating state. | |
| enum: | |
| - STATE_CREATING | |
| - STATE_READY | |
| - STATE_DELETING | |
| - STATE_FAILED | |
| - STATE_UPDATING | |
| type: string | |
| ServerlessPrivateLinkCreate: | |
| properties: | |
| aws_config: | |
| $ref: '#/components/schemas/ServerlessPrivateLinkCreate.AWS' | |
| cloud_provider: | |
| $ref: '#/components/schemas/CloudProvider' | |
| name: | |
| type: string | |
| resource_group_id: | |
| type: string | |
| serverless_region: | |
| type: string | |
| required: | |
| - cloud_provider | |
| type: object |
🤖 Prompt for AI Agents
In `@cloud-controlplane/cloud-controlplane.yaml` around lines 3554 - 3613, Update
the ServerlessPrivateLink-related schemas to use snake_case: rename the property
"cloudprovider" to "cloud_provider" wherever it appears (e.g., in
ServerlessPrivateLink and ServerlessPrivateLinkCreate schema property lists) and
adjust any required arrays that list "cloudprovider" to instead list
"cloud_provider"; ensure all $ref usages or schema property names referencing
CloudProvider remain unchanged except for the property key name swap so the
schema and required validation match the rest of the spec.
| network_id: cjb69k1c4vs45df9bee0 | ||
| oxla: null | ||
| prometheus: |
There was a problem hiding this comment.
Remove or define oxla in cluster examples.
The example includes oxla, but the Cluster schema doesn’t define it. Either add the schema field or drop it from all examples.
🧹 Example cleanup
network_id: cjb69k1c4vs45df9bee0
- oxla: null
prometheus:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| network_id: cjb69k1c4vs45df9bee0 | |
| oxla: null | |
| prometheus: | |
| network_id: cjb69k1c4vs45df9bee0 | |
| prometheus: |
🤖 Prompt for AI Agents
In `@cloud-controlplane/cloud-controlplane.yaml` around lines 5161 - 5163, The
example YAML contains an undefined field "oxla" in the Cluster examples; either
add a corresponding property to the Cluster schema (e.g., add an optional "oxla"
field with its type and description in the Cluster schema) or remove "oxla" from
all cluster example blocks so examples match the Cluster schema; search for
"oxla" and the "Cluster" schema and update the schema definition or prune the
example entries accordingly.
🤖 Redpanda/cloud-controlplane API structural change detectedStructural change detailsAdded (5)
Modified (25)
Powered by Bump.sh |
Our automated import for the Cloud API is erroring out #52 (see https://github.com/redpanda-data/api-docs/actions/runs/21609773679) Changing to Node.js version in the GitHub workflow appears to resolve this, but we encounter a different error from the OpenAPI validation in the Bump GitHub action.
This branch is to try and consolidate the changes that we want:
I'm sending this PR over to the Bump.sh team for troubleshooting and determining what the right next steps are.