Skip to content
Open
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
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased

ADDED

- Added `OrchestrationQuery.task_hub_names` to filter orchestration instances
by one or more task hubs.

## v1.12.0

ADDED
Expand Down
1 change: 1 addition & 0 deletions durabletask/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ class OrchestrationQuery:
max_instance_count: int | None = (1 << 31) - 1
fetch_inputs_and_outputs: bool = False
instance_id_prefix: str | None = None
task_hub_names: list[str] | None = None


@dataclass
Expand Down
1 change: 1 addition & 0 deletions durabletask/internal/client_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ def build_query_instances_req(
runtimeStatus=[status.value for status in orchestration_query.runtime_status] if orchestration_query.runtime_status else None,
createdTimeFrom=helpers.new_timestamp(orchestration_query.created_time_from) if orchestration_query.created_time_from else None,
createdTimeTo=helpers.new_timestamp(orchestration_query.created_time_to) if orchestration_query.created_time_to else None,
taskHubNames=[wrappers_pb2.StringValue(value=name) for name in orchestration_query.task_hub_names] if orchestration_query.task_hub_names else None,
instanceIdPrefix=helpers.get_string_value(orchestration_query.instance_id_prefix),
maxInstanceCount=orchestration_query.max_instance_count,
fetchInputsAndOutputs=orchestration_query.fetch_inputs_and_outputs,
Expand Down
24 changes: 24 additions & 0 deletions tests/durabletask/test_batch_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,12 +197,36 @@ def test_orchestration_query_serializes_instance_id_prefix():
assert request.query.instanceIdPrefix.value == "prefix-"


def test_orchestration_query_serializes_task_hub_names():
request = build_query_instances_req(
client.OrchestrationQuery(task_hub_names=["hub1", "hub2"]),
continuation_token=None,
)

assert [name.value for name in request.query.taskHubNames] == ["hub1", "hub2"]


def test_orchestration_query_serializes_task_hub_names_and_instance_id_prefix():
request = build_query_instances_req(
client.OrchestrationQuery(
instance_id_prefix="prefix-",
task_hub_names=["hub1"],
),
continuation_token=None,
)

assert request.query.HasField("instanceIdPrefix")
assert request.query.instanceIdPrefix.value == "prefix-"
assert [name.value for name in request.query.taskHubNames] == ["hub1"]


def test_orchestration_query_preserves_positional_argument_order():
query = client.OrchestrationQuery(None, None, None, None, True)

assert query.max_instance_count is None
assert query.fetch_inputs_and_outputs is True
assert query.instance_id_prefix is None
assert query.task_hub_names is None


def test_get_orchestration_state_pagination_succeeds(backend):
Expand Down