Skip to content

Commit bcbacc2

Browse files
authored
Experimental cloud operations client (#570)
Fixes #522
1 parent 530cadf commit bcbacc2

37 files changed

+7790
-7
lines changed

.github/workflows/ci.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
- os: ubuntu-latest
1919
python: "3.12"
2020
docsTarget: true
21+
cloudTestTarget: true
2122
- os: ubuntu-latest
2223
python: "3.8"
2324
protoCheckTarget: true
@@ -68,6 +69,13 @@ jobs:
6869
# Time skipping doesn't yet support ARM
6970
- if: ${{ !endsWith(matrix.os, '-arm') }}
7071
run: poe test -s -o log_cli_level=DEBUG --workflow-environment time-skipping
72+
# Check cloud if proper target and not on fork
73+
- if: ${{ matrix.cloudTestTarget && (github.event.pull_request.head.repo.full_name == '' || github.event.pull_request.head.repo.full_name == 'temporalio/sdk-python') }}
74+
run: poe test -s -o log_cli_level=DEBUG -k test_cloud_client
75+
env:
76+
TEMPORAL_CLIENT_CLOUD_API_KEY: ${{ secrets.TEMPORAL_CLIENT_CLOUD_API_KEY }}
77+
TEMPORAL_CLIENT_CLOUD_API_VERSION: 2024-05-13-00
78+
TEMPORAL_CLIENT_CLOUD_NAMESPACE: sdk-ci.a2dd6
7179

7280
# Confirm protos are already generated properly with older protobuf
7381
# library and run test with that older version. We must downgrade protobuf

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,8 +1475,8 @@ protobuf code, you must be on Python <= 3.10, and then run `poetry add "protobuf
14751475
generated via `poe gen-protos`. Tests can be run for protobuf version 3 by setting the `TEMPORAL_TEST_PROTO3` env var
14761476
to `1` prior to running tests.
14771477

1478-
Do not commit `poetry.lock` or `pyproject.toml` changes. To go back from this downgrade, restore `pyproject.toml` and
1479-
run `poetry update protobuf grpcio-tools`.
1478+
Do not commit `poetry.lock` or `pyproject.toml` changes. To go back from this downgrade, restore both of those files
1479+
and run `poetry install --no-root --all extras`.
14801480

14811481
For a less system-intrusive approach, you can (note this approach [may have a bug](https://github.com/temporalio/sdk-python/issues/543)):
14821482
```shell

scripts/gen_protos.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
base_dir / "temporalio" / "bridge" / "sdk-core" / "sdk-core-protos" / "protos"
1414
)
1515
api_proto_dir = proto_dir / "api_upstream"
16+
api_cloud_proto_dir = proto_dir / "api_cloud_upstream"
1617
core_proto_dir = proto_dir / "local"
1718
testsrv_proto_dir = proto_dir / "testsrv_upstream"
1819
test_proto_dir = base_dir / "tests"
@@ -155,6 +156,7 @@ def generate_protos(output_dir: Path):
155156
sys.executable,
156157
"-mgrpc_tools.protoc",
157158
f"--proto_path={api_proto_dir}",
159+
f"--proto_path={api_cloud_proto_dir}",
158160
f"--proto_path={core_proto_dir}",
159161
f"--proto_path={testsrv_proto_dir}",
160162
f"--proto_path={health_proto_dir}",

temporalio/api/cloud/__init__.py

Whitespace-only changes.

temporalio/api/cloud/cloudservice/__init__.py

Whitespace-only changes.
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
from .request_response_pb2 import (
2+
AddNamespaceRegionRequest,
3+
AddNamespaceRegionResponse,
4+
CreateApiKeyRequest,
5+
CreateApiKeyResponse,
6+
CreateNamespaceRequest,
7+
CreateNamespaceResponse,
8+
CreateServiceAccountRequest,
9+
CreateServiceAccountResponse,
10+
CreateUserGroupRequest,
11+
CreateUserGroupResponse,
12+
CreateUserRequest,
13+
CreateUserResponse,
14+
DeleteApiKeyRequest,
15+
DeleteApiKeyResponse,
16+
DeleteNamespaceRequest,
17+
DeleteNamespaceResponse,
18+
DeleteServiceAccountRequest,
19+
DeleteServiceAccountResponse,
20+
DeleteUserGroupRequest,
21+
DeleteUserGroupResponse,
22+
DeleteUserRequest,
23+
DeleteUserResponse,
24+
FailoverNamespaceRegionRequest,
25+
FailoverNamespaceRegionResponse,
26+
GetApiKeyRequest,
27+
GetApiKeyResponse,
28+
GetApiKeysRequest,
29+
GetApiKeysResponse,
30+
GetAsyncOperationRequest,
31+
GetAsyncOperationResponse,
32+
GetNamespaceRequest,
33+
GetNamespaceResponse,
34+
GetNamespacesRequest,
35+
GetNamespacesResponse,
36+
GetRegionRequest,
37+
GetRegionResponse,
38+
GetRegionsRequest,
39+
GetRegionsResponse,
40+
GetServiceAccountRequest,
41+
GetServiceAccountResponse,
42+
GetServiceAccountsRequest,
43+
GetServiceAccountsResponse,
44+
GetUserGroupRequest,
45+
GetUserGroupResponse,
46+
GetUserGroupsRequest,
47+
GetUserGroupsResponse,
48+
GetUserRequest,
49+
GetUserResponse,
50+
GetUsersRequest,
51+
GetUsersResponse,
52+
RenameCustomSearchAttributeRequest,
53+
RenameCustomSearchAttributeResponse,
54+
SetUserGroupNamespaceAccessRequest,
55+
SetUserGroupNamespaceAccessResponse,
56+
SetUserNamespaceAccessRequest,
57+
SetUserNamespaceAccessResponse,
58+
UpdateApiKeyRequest,
59+
UpdateApiKeyResponse,
60+
UpdateNamespaceRequest,
61+
UpdateNamespaceResponse,
62+
UpdateServiceAccountRequest,
63+
UpdateServiceAccountResponse,
64+
UpdateUserGroupRequest,
65+
UpdateUserGroupResponse,
66+
UpdateUserRequest,
67+
UpdateUserResponse,
68+
)
69+
70+
__all__ = [
71+
"AddNamespaceRegionRequest",
72+
"AddNamespaceRegionResponse",
73+
"CreateApiKeyRequest",
74+
"CreateApiKeyResponse",
75+
"CreateNamespaceRequest",
76+
"CreateNamespaceResponse",
77+
"CreateServiceAccountRequest",
78+
"CreateServiceAccountResponse",
79+
"CreateUserGroupRequest",
80+
"CreateUserGroupResponse",
81+
"CreateUserRequest",
82+
"CreateUserResponse",
83+
"DeleteApiKeyRequest",
84+
"DeleteApiKeyResponse",
85+
"DeleteNamespaceRequest",
86+
"DeleteNamespaceResponse",
87+
"DeleteServiceAccountRequest",
88+
"DeleteServiceAccountResponse",
89+
"DeleteUserGroupRequest",
90+
"DeleteUserGroupResponse",
91+
"DeleteUserRequest",
92+
"DeleteUserResponse",
93+
"FailoverNamespaceRegionRequest",
94+
"FailoverNamespaceRegionResponse",
95+
"GetApiKeyRequest",
96+
"GetApiKeyResponse",
97+
"GetApiKeysRequest",
98+
"GetApiKeysResponse",
99+
"GetAsyncOperationRequest",
100+
"GetAsyncOperationResponse",
101+
"GetNamespaceRequest",
102+
"GetNamespaceResponse",
103+
"GetNamespacesRequest",
104+
"GetNamespacesResponse",
105+
"GetRegionRequest",
106+
"GetRegionResponse",
107+
"GetRegionsRequest",
108+
"GetRegionsResponse",
109+
"GetServiceAccountRequest",
110+
"GetServiceAccountResponse",
111+
"GetServiceAccountsRequest",
112+
"GetServiceAccountsResponse",
113+
"GetUserGroupRequest",
114+
"GetUserGroupResponse",
115+
"GetUserGroupsRequest",
116+
"GetUserGroupsResponse",
117+
"GetUserRequest",
118+
"GetUserResponse",
119+
"GetUsersRequest",
120+
"GetUsersResponse",
121+
"RenameCustomSearchAttributeRequest",
122+
"RenameCustomSearchAttributeResponse",
123+
"SetUserGroupNamespaceAccessRequest",
124+
"SetUserGroupNamespaceAccessResponse",
125+
"SetUserNamespaceAccessRequest",
126+
"SetUserNamespaceAccessResponse",
127+
"UpdateApiKeyRequest",
128+
"UpdateApiKeyResponse",
129+
"UpdateNamespaceRequest",
130+
"UpdateNamespaceResponse",
131+
"UpdateServiceAccountRequest",
132+
"UpdateServiceAccountResponse",
133+
"UpdateUserGroupRequest",
134+
"UpdateUserGroupResponse",
135+
"UpdateUserRequest",
136+
"UpdateUserResponse",
137+
]
138+
139+
# gRPC is optional
140+
try:
141+
import grpc
142+
143+
from .service_pb2_grpc import (
144+
CloudServiceServicer,
145+
CloudServiceStub,
146+
add_CloudServiceServicer_to_server,
147+
)
148+
149+
__all__.extend(
150+
[
151+
"CloudServiceServicer",
152+
"CloudServiceStub",
153+
"add_CloudServiceServicer_to_server",
154+
]
155+
)
156+
except ImportError:
157+
pass

0 commit comments

Comments
 (0)