Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions dashscope/agentstudio/resources/deployments.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def create(
schedule: Any = None,
resources: Optional[Sequence[Any]] = None,
vault_ids: Optional[Sequence[str]] = None,
environment_variables: Optional[Mapping[str, str]] = None,
metadata: Optional[Mapping[str, str]] = None,
) -> Deployment:
body = DeploymentCreateParams(
Expand All @@ -56,6 +57,7 @@ def create(
schedule=schedule,
resources=resources,
vault_ids=vault_ids,
environment_variables=environment_variables,
metadata=metadata,
).to_dict()
resp = self._client.transport.request(
Expand Down Expand Up @@ -86,6 +88,7 @@ def update(
initial_events: Optional[Sequence[Mapping[str, Any]]] = None,
resources: Optional[Sequence[Any]] = None,
vault_ids: Optional[Sequence[str]] = None,
environment_variables: Optional[Mapping[str, str]] = None,
metadata: Optional[Mapping[str, str]] = None,
) -> Deployment:
body = DeploymentUpdateParams(
Expand All @@ -97,6 +100,7 @@ def update(
initial_events=initial_events,
resources=resources,
vault_ids=vault_ids,
environment_variables=environment_variables,
metadata=metadata,
).to_dict()
resp = self._client.transport.request(
Expand Down Expand Up @@ -249,6 +253,7 @@ async def create(
schedule: Any = None,
resources: Optional[Sequence[Any]] = None,
vault_ids: Optional[Sequence[str]] = None,
environment_variables: Optional[Mapping[str, str]] = None,
metadata: Optional[Mapping[str, str]] = None,
) -> Deployment:
body = DeploymentCreateParams(
Expand All @@ -260,6 +265,7 @@ async def create(
schedule=schedule,
resources=resources,
vault_ids=vault_ids,
environment_variables=environment_variables,
metadata=metadata,
).to_dict()
resp = await self._client.transport.request(
Expand Down Expand Up @@ -290,6 +296,7 @@ async def update(
initial_events: Optional[Sequence[Mapping[str, Any]]] = None,
resources: Optional[Sequence[Any]] = None,
vault_ids: Optional[Sequence[str]] = None,
environment_variables: Optional[Mapping[str, str]] = None,
metadata: Optional[Mapping[str, str]] = None,
) -> Deployment:
body = DeploymentUpdateParams(
Expand All @@ -301,6 +308,7 @@ async def update(
initial_events=initial_events,
resources=resources,
vault_ids=vault_ids,
environment_variables=environment_variables,
metadata=metadata,
).to_dict()
resp = await self._client.transport.request(
Expand Down
2 changes: 2 additions & 0 deletions dashscope/agentstudio/types/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -847,6 +847,7 @@ def __init__(self, **kwargs: Any) -> None:
class Deployment(BaseModel):
"""Managed Agent deployment."""

environment_variables: Optional[Dict[str, str]]
metadata: Optional[Dict[str, str]]

_fields = (
Expand All @@ -860,6 +861,7 @@ class Deployment(BaseModel):
"initial_events",
"resources",
"vault_ids",
"environment_variables",
"metadata",
"status",
"paused_reason",
Expand Down
14 changes: 14 additions & 0 deletions dashscope/agentstudio/types/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,7 @@ class DeploymentCreateParams(BaseModel):
"initial_events",
"resources",
"vault_ids",
"environment_variables",
"metadata",
)

Expand All @@ -563,6 +564,7 @@ def __init__(
schedule: Any = None,
resources: Optional[Sequence[Any]] = None,
vault_ids: Optional[Sequence[str]] = None,
environment_variables: Optional[Mapping[str, str]] = None,
metadata: Optional[Mapping[str, str]] = None,
) -> None:
BaseModel.__init__(
Expand All @@ -579,6 +581,11 @@ def __init__(
else None
),
vault_ids=(list(vault_ids) if vault_ids is not None else None),
environment_variables=(
dict(environment_variables)
if environment_variables is not None
else None
),
metadata=(dict(metadata) if metadata is not None else None),
)

Expand All @@ -600,6 +607,7 @@ class DeploymentUpdateParams(BaseModel):
"initial_events",
"resources",
"vault_ids",
"environment_variables",
"metadata",
)

Expand All @@ -614,6 +622,7 @@ def __init__(
initial_events: Optional[Sequence[Mapping[str, Any]]] = None,
resources: Optional[Sequence[Any]] = None,
vault_ids: Optional[Sequence[str]] = None,
environment_variables: Optional[Mapping[str, str]] = None,
metadata: Optional[Mapping[str, str]] = None,
) -> None:
self._environment_id_given = environment_id is not _NOT_GIVEN
Expand Down Expand Up @@ -641,6 +650,11 @@ def __init__(
else None
),
vault_ids=(list(vault_ids) if vault_ids is not None else None),
environment_variables=(
dict(environment_variables)
if environment_variables is not None
else None
),
metadata=(dict(metadata) if metadata is not None else None),
)

Expand Down
15 changes: 15 additions & 0 deletions tests/unit/test_agentstudio_deployments.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ def _deployment_payload() -> Dict[str, Any]:
},
],
"vault_ids": ["vault_01"],
"environment_variables": {"API_BASE_URL": "https://example.test"},
"metadata": {"biz": "summary"},
"status": "active",
"paused_reason": {
Expand Down Expand Up @@ -162,6 +163,7 @@ def test_create_serializes_contract_and_hydrates_nested_models(client: Client):
},
],
vault_ids=["vault_01"],
environment_variables={"API_BASE_URL": "https://example.test"},
metadata={"biz": "summary"},
)

Expand All @@ -171,13 +173,19 @@ def test_create_serializes_contract_and_hydrates_nested_models(client: Client):
assert call["json"]["agent"] == {"id": "agent_01", "version": 12}
assert call["json"]["initial_events"][0]["type"] == "message"
assert call["json"]["schedule"]["timezone"] == "Asia/Shanghai"
assert call["json"]["environment_variables"] == {
"API_BASE_URL": "https://example.test",
}
assert call["json"]["metadata"] == {"biz": "summary"}
assert isinstance(deployment.agent, Agent)
assert deployment.agent.version == 12
assert isinstance(deployment.schedule, DeploymentSchedule)
assert isinstance(deployment.resources[0], DeploymentResource)
assert isinstance(deployment.paused_reason, DeploymentPausedReason)
assert isinstance(deployment.paused_reason.error, DeploymentError)
assert deployment.environment_variables == {
"API_BASE_URL": "https://example.test",
}
assert deployment.metadata == {"biz": "summary"}
assert deployment.request_id == "req_01"

Expand All @@ -187,18 +195,21 @@ def test_update_distinguishes_omitted_and_explicit_null(client: Client):
omitted_body = client.transport.calls[-1]["json"]
assert "environment_id" not in omitted_body
assert "schedule" not in omitted_body
assert "environment_variables" not in omitted_body

client.deployments.update(
"depl_01",
environment_id=None,
schedule=None,
resources=[],
environment_variables={},
metadata={},
)
clear_body = client.transport.calls[-1]["json"]
assert clear_body["environment_id"] is None
assert clear_body["schedule"] is None
assert clear_body["resources"] == []
assert clear_body["environment_variables"] == {}
assert clear_body["metadata"] == {}


Expand Down Expand Up @@ -263,6 +274,7 @@ async def exercise() -> None:
name="daily-summary",
agent={"id": "agent_01"},
initial_events=[user_message("Summarize")],
environment_variables={"API_BASE_URL": "https://example.test"},
metadata={"biz": "summary"},
)
run = await client.deployments.run("depl_01")
Expand All @@ -272,6 +284,9 @@ async def exercise() -> None:
assert client.transport.calls[0]["json"]["metadata"] == {
"biz": "summary",
}
assert client.transport.calls[0]["json"]["environment_variables"] == {
"API_BASE_URL": "https://example.test",
}
assert run.id == "drun_01"
assert runs.data[0].id == "drun_01"
await client.aclose()
Expand Down
Loading