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.
2066a06 to
d1fc741
Compare
d1fc741 to
0123ed9
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: 18
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
feature_unavailablewith 404 means sandboxes are not available in this environment.' to 'Request refused or unavailable. Errors include invalid input (400), unauthenticated (401), forbidden (403), not found (404), conflicting retry (409), capacity exhausted (429), and temporarily unavailable (503). Codefeature_unavailablewith 404 means sandboxes are not available in this environment. Codesandbox_plan_limit_exceeded(403) means the requested resources exceed the plan. Codesandbox_allowance_exhausted(429) means the remaining allowance or credits cannot admit the operation.'GET /projects/{id}/sandbox-sessions
POST /projects/{id}/sandbox-sessions
feature_unavailablewith 404 means sandboxes are not available in this environment.' to 'Request refused or unavailable. Errors include invalid input (400), unauthenticated (401), forbidden (403), not found (404), conflicting retry (409), capacity exhausted (429), and temporarily unavailable (503). Codefeature_unavailablewith 404 means sandboxes are not available in this environment. Codesandbox_plan_limit_exceeded(403) means the requested resources exceed the plan. Codesandbox_allowance_exhausted(429) means the remaining allowance or credits cannot admit the operation.'GET /projects/{id}/usage
"Durable Executions", "Durable Operations", "Durable Compute (MB-Seconds)",
"Build Seconds",
"Bandwidth Ingress (Bytes)", "Bandwidth Egress (Bytes)",
"Bandwidth Total (Bytes)", or "Database Storage (Bytes)"). Byte-based metrics are
reported in bytes. "Bandwidth Total (Bytes)" is derived (ingress + egress) and
is not billed separately. The three durable metrics are
counted separately from "Function & Frontend Invocations", which covers standard
invocations only. Operations and compute are counted when an execution finishes,
so they appear in the window the execution completed in rather than the one it
started in. "Durable Compute (MB-Seconds)" reports the memory the execution ran
at times the time it spent running, in megabyte-seconds; the allowance for it is
published in gigabyte-seconds, which is 1024 of these.
"Sandbox Running (MiB-Seconds)", "Sandbox Suspended (Seconds)", and
"Sandbox Uncertain (MiB-Seconds)" are preview-only usage; they do not
debit credits. Running reports configured memory times observed runtime,
not measured CPU or elastic memory consumption. Uncertain includes
observation gaps and unconfirmed state transitions. Suspended reports
duration, not snapshot size. Local sessions do not contribute.
Totals are rounded down after aggregating millisecond measurements.
"Database Storage (Bytes)" is a current observed gauge,
not a cumulative counter. It is the sum of the latest samples exposed as
storage_bytesby the project's database list, so it includes what eachdatabase's branches and backups hold, and it inherits that field's lag
behind a live measurement.
' to 'Metric name (for example, "Function & Frontend Invocations", "Frontend Requests",
"Durable Executions", "Durable Operations", "Durable Compute (MB-Seconds)",
"Build Seconds",
"Bandwidth Ingress (Bytes)", "Bandwidth Egress (Bytes)",
"Bandwidth Total (Bytes)", or "Database Storage (Bytes)"). Byte-based metrics are
reported in bytes. "Bandwidth Total (Bytes)" is derived (ingress + egress) and
is not billed separately. The three durable metrics are
counted separately from "Function & Frontend Invocations", which covers standard
invocations only. Operations and compute are counted when an execution finishes,
so they appear in the window the execution completed in rather than the one it
started in. "Durable Compute (MB-Seconds)" reports the memory the execution ran
at times the time it spent running, in megabyte-seconds; the allowance for it is
published in gigabyte-seconds, which is 1024 of these.
"Sandbox Running (MiB-Seconds)", "Sandbox Suspended (Seconds)", and
"Sandbox Uncertain (MiB-Seconds)" report cloud Sandbox usage. Running
reports configured baseline memory times confirmed runtime, not measured
CPU or elastic memory consumption. For sessions admitted after the pricing
release, confirmed running time consumes the account's runtime allowance;
SUPERAGENT overage debits credits according to the account's pricing terms.
Suspended time and uncertain usage do not consume runtime allowance or
debit credits. Uncertain includes observation gaps and unconfirmed state
transitions. Suspended reports duration, not snapshot size; snapshot costs
are included in runtime pricing. Local and platform image-validation
sessions do not contribute. Existing preview sessions remain unbilled,
and preview history is never charged retroactively. Displayed totals are
rounded down after aggregating millisecond measurements; billing uses
unrounded measurements in the monthly account billing cycle.
"Database Storage (Bytes)" is a current observed gauge,
not a cumulative counter. It is the sum of the latest samples exposed as
storage_bytesby the project's database list, so it includes what eachdatabase's branches and backups hold, and it inherits that field's lag
behind a live measurement.
'
DELETE /sandbox-sessions/{sessionId}
GET /sandbox-sessions/{sessionId}
POST /sandbox-sessions/{sessionId}/exec
POST /sandbox-sessions/{sessionId}/resume
feature_unavailablewith 404 means sandboxes are not available in this environment.' to 'Request refused or unavailable. Errors include invalid input (400), unauthenticated (401), forbidden (403), not found (404), conflicting retry (409), capacity exhausted (429), and temporarily unavailable (503). Codefeature_unavailablewith 404 means sandboxes are not available in this environment. Codesandbox_plan_limit_exceeded(403) means the requested resources exceed the plan. Codesandbox_allowance_exhausted(429) means the remaining allowance or credits cannot admit the operation.'POST /sandbox-sessions/{sessionId}/suspend
Validation