Repository navigation
Conversation
7cd039d to
b69cdc1
Compare
ebe76ec to
5660716
Compare
5660716 to
697020d
Compare
|
|
ebaec87 to
2891cbb
Compare
2768536 to
0d69f5d
Compare
0d69f5d to
b463e46
Compare
35606b8 to
8fce68b
Compare
marckong
left a comment
There was a problem hiding this comment.
Review: comment (don't merge as-is). The sync itself is correct and consistent with hosting 614aed52, and it keeps the durable-approvals operations intact. The generated contract change does expose two places where the hand-written SDK code no longer matches it (inline). Checked by reading the diff and the SDK source at this head; I did not run generation or tests locally. CI note: Quality Gate and Mutation Gate failed once on _durable_engine mutation and passed on rerun, which looks like a flake. Not checked: SDK-side validation of the widened timeout_seconds ranges.
| minimum: 30 | ||
| maximum: 28800 | ||
| description: Inherits the template TTL when omitted (3600 seconds for a new template). | ||
| idle_timeout_seconds: |
There was a problem hiding this comment.
[P1] The SDK still sends idle_timeout_seconds, which the contract removes here.
CreateSandboxSessionRequest has additionalProperties: false upstream, and hosting #1743 removed the idle-timeout fields from the API and SDK bindings. Sandboxes.create in src/volcano_sdk/sandboxes.py:68 still loops over ("max_duration_seconds", "idle_timeout_seconds"), and SandboxCreateOptions still declares the field (sandbox_models.py:31).
Callers who pass it will have the request rejected by schema validation (exact status not confirmed). The bot's "Deleted Endpoints: None" report doesn't surface removed properties. Remove the option and the loop entry, and add a test, in a companion change landed with or before this PR.
| memory_mb: int | ||
| created_at: datetime.datetime | ||
| expires_at: datetime.datetime | ||
| expires_at: datetime.datetime | None |
There was a problem hiding this comment.
[P2] expires_at is now nullable, but session decoding rejects null.
SandboxSession in sandbox_session.py:89 and _update at :166 apply timestamp() from _sandbox.py to expires_at. timestamp() is built to require an aware timestamp, so I expect it to raise on None. I only read its start, so this is inferred. The public property is typed datetime (:113).
Local mode with unlimited lifetime returns null, so creating, getting or refreshing such a session would fail. Cloud always returns an expiry, so it isn't affected. sandbox_id is also nullable now, but the SDK doesn't read it.
Hosting #1743 notes that published-client decoding wasn't validated. Make expires_at datetime | None and add a test.
8fce68b to
2066a06
Compare
2066a06 to
d1fc741
Compare
Summary
API change report
Public API
New Endpoints: 6
GET /capabilities
GET /projects/{id}/variable-environments
POST /projects/{id}/variable-environments
DELETE /projects/{id}/variable-environments/{environmentId}
GET /projects/{id}/variable-environments/{environmentId}
PATCH /projects/{id}/variable-environments/{environmentId}
Deleted Endpoints: None
Modified Endpoints: 17
POST /durable-approvals
limited to 64 KiB.
' to 'Any JSON value to show the person deciding. A number's exponent must
be between -324 and 324, and a number too large or too precise to
store is refused with
400. Numbers are read back written out infull, so the exponents' absolute values may total at most 65,536.
The whole request is limited to 64 KiB.
'
GET /projects/{id}/auth/config
PUT /projects/{id}/auth/config
POST /projects/{id}/auth/config/test-email
to_emailusing the project'spersisted
auth_configSMTP credentials. Ifhtml_bodyortext_bodyis supplied, the override path is taken: thosevalues (plus optional
subject) are rendered throughhtml/text templates against the project's
Dataandused as the body — used by the template editor's "Send Test"
affordance to preview an unsaved template. With both bodies
omitted, a hardcoded diagnostic message is sent and any
subjectfield is ignored. Sendingsubjectalone (nobodies) is rejected with 400 to avoid a silently-dropped
subject or a blank message. Also rejects with 400 if
email_enabled=falseorsmtp_hostis empty.' to 'Sends a diagnostic email to
to_emailusing the project'spersisted
auth_configSMTP credentials. Ifhtml_bodyortext_bodyis supplied, the override path is taken: thosevalues (plus optional
subject) are rendered throughhtml/text templates against the project's
Dataandused as the body — used by the template editor's "Send Test"
affordance to preview an unsaved template. With both bodies
omitted, a hardcoded diagnostic message is sent and any
subjectfield is ignored. Sendingsubjectalone (nobodies) is rejected with 400 to avoid a silently-dropped
subject or a blank message. Also rejects with 400 if
email_enabled=false,smtp_hostis empty, or the savedsmtp_passwordcan't be read and must be set again.'
GET /projects/{id}/config
PUT /projects/{id}/config
GET /projects/{id}/domains
_acme-challengeCNAME that authorizes certificate issuance and renewal. Otherwise it names the_volcanoTXT record that proves ownership of the hostname's registrable domain, and reads return the CNAME once Volcano sees that record. Usually empty for BYOC.'GET /projects/{id}/frontends/{frontendId}/domain
_acme-challengeCNAME that authorizes certificate issuance and renewal. Otherwise it names the_volcanoTXT record that proves ownership of the hostname's registrable domain, and reads return the CNAME once Volcano sees that record. Usually empty for BYOC.'POST /projects/{id}/frontends/{frontendId}/domain
_acme-challengeCNAME that authorizes certificate issuance and renewal. Otherwise it names the_volcanoTXT record that proves ownership of the hostname's registrable domain, and reads return the CNAME once Volcano sees that record. Usually empty for BYOC.'_acme-challengeCNAME that authorizes certificate issuance and renewal. Otherwise it names the_volcanoTXT record that proves ownership of the hostname's registrable domain, and reads return the CNAME once Volcano sees that record. Usually empty for BYOC.'POST /projects/{id}/sandbox-executions
GET /projects/{id}/sandbox-sessions
POST /projects/{id}/sandbox-sessions
DELETE /sandbox-sessions/{sessionId}
GET /sandbox-sessions/{sessionId}
POST /sandbox-sessions/{sessionId}/exec
POST /sandbox-sessions/{sessionId}/resume
POST /sandbox-sessions/{sessionId}/suspend
Validation