Skip to content

Commit 6e8e636

Browse files
authored
fix: replaces deprecated snippet (#448)
* fix: replaces deprecated snippet * adds a test * revises test assert statement * fix linting * examining return values * examining more return values * examining return values more betterly * evaluating timestamps in use * evaluating timestamps in use 2 * clean up test * clean up linting
1 parent fd97b18 commit 6e8e636

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

bigquery-datatransfer/snippets/manage_transfer_configs.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,62 @@ def schedule_backfill(override_values={}):
147147
return response.runs
148148

149149

150+
def schedule_backfill_manual_transfer(override_values={}):
151+
# [START bigquerydatatransfer_start_manual_transfer]
152+
import datetime
153+
154+
from google.cloud.bigquery_datatransfer_v1 import (
155+
DataTransferServiceClient,
156+
StartManualTransferRunsRequest,
157+
)
158+
159+
# Create a client object
160+
client = DataTransferServiceClient()
161+
162+
# Replace with your transfer configuration name
163+
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
164+
# [END bigquerydatatransfer_start_manual_transfer]
165+
# To facilitate testing, we replace values with alternatives
166+
# provided by the testing harness.
167+
transfer_config_name = override_values.get(
168+
"transfer_config_name", transfer_config_name
169+
)
170+
# [START bigquerydatatransfer_start_manual_transfer]
171+
now = datetime.datetime.now(datetime.timezone.utc)
172+
start_time = now - datetime.timedelta(days=5)
173+
end_time = now - datetime.timedelta(days=2)
174+
175+
# Some data sources, such as scheduled_query only support daily run.
176+
# Truncate start_time and end_time to midnight time (00:00AM UTC).
177+
start_time = datetime.datetime(
178+
start_time.year, start_time.month, start_time.day, tzinfo=datetime.timezone.utc
179+
)
180+
end_time = datetime.datetime(
181+
end_time.year, end_time.month, end_time.day, tzinfo=datetime.timezone.utc
182+
)
183+
184+
requested_time_range = StartManualTransferRunsRequest.TimeRange(
185+
start_time=start_time,
186+
end_time=end_time,
187+
)
188+
189+
# Initialize request argument(s)
190+
request = StartManualTransferRunsRequest(
191+
parent=transfer_config_name,
192+
requested_time_range=requested_time_range,
193+
)
194+
195+
# Make the request
196+
response = client.start_manual_transfer_runs(request=request)
197+
198+
# Handle the response
199+
print("Started manual transfer runs:")
200+
for run in response.runs:
201+
print(f"backfill: {run.run_time} run: {run.name}")
202+
# [END bigquerydatatransfer_start_manual_transfer]
203+
return response.runs
204+
205+
150206
def delete_config(override_values={}):
151207
# [START bigquerydatatransfer_delete_transfer]
152208
import google.api_core.exceptions

bigquery-datatransfer/snippets/manage_transfer_configs_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ def test_schedule_backfill(capsys, transfer_config_name):
6262
assert len(runs) == 4
6363

6464

65+
def test_schedule_backfill_manual_transfer(capsys, transfer_config_name):
66+
runs = manage_transfer_configs.schedule_backfill_manual_transfer(
67+
{"transfer_config_name": transfer_config_name}
68+
)
69+
out, _ = capsys.readouterr()
70+
assert "Started manual transfer runs:" in out
71+
# Run IDs should include the transfer name in their path.
72+
assert transfer_config_name in out
73+
# Check that there are three runs for between 2 and 5 days ago.
74+
assert len(runs) == 3
75+
76+
6577
def test_delete_config(capsys, transfer_config_name):
6678
# transfer_config_name fixture in conftest.py calls the delete config
6779
# sample. To conserve limited BQ-DTS quota we only make basic checks.

0 commit comments

Comments
 (0)