Skip to content

Commit 5f383a6

Browse files
committed
change source host to params + add if logger before use in create_backup_csv
1 parent 7c77be5 commit 5f383a6

File tree

5 files changed

+41
-30
lines changed

5 files changed

+41
-30
lines changed

_delphi_utils_python/delphi_utils/export.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,5 @@ def create_backup_csv(
205205
)
206206
# pylint: disable=W0703
207207
except Exception as e:
208-
logger.info("Backup file creation failed", msg=e)
208+
if logger:
209+
logger.info("Backup file creation failed", msg=e)

nssp/delphi_nssp/patch.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
...
1616
},
1717
"patch": {
18+
"source_host": "prod.server.edu",
1819
"source_dir": "delphi/covidcast-indicators/nssp/source_data",
1920
"user": "username",
2021
"patch_dir": "delphi/covidcast-indicators/nssp/AprilPatch",
@@ -26,6 +27,7 @@
2627
In this params.json, we
2728
- Turn on the "custom_run" flag under "common"
2829
- Add "patch" section, which contains:
30+
+ "source_host": the prod server where source data is backed up
2931
+ "source_dir": the local directory where source data is downloaded to
3032
+ "user": the username to log in to the remote server where source data is backed up
3133
+ "patch_dir": the local directory where to write all patch issues output
@@ -72,7 +74,7 @@ def good_patch_config(params, logger):
7274
logger.error("Custom flag is on, but patch section is missing.")
7375
valid_config = False
7476
else:
75-
required_patch_keys = ["start_issue", "end_issue", "patch_dir", "source_dir"]
77+
required_patch_keys = ["start_issue", "end_issue", "patch_dir", "source_dir", "source_host"]
7678

7779
source_dir = params["patch"]["source_dir"]
7880
if not path.isdir(source_dir) or not listdir(source_dir):

nssp/delphi_nssp/pull.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def get_source_data(params, logger):
4242
makedirs(params["patch"]["source_dir"], exist_ok=True)
4343
ssh = paramiko.SSHClient()
4444
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
45-
host = "delphi-master-prod-01.delphi.cmu.edu"
45+
host = params["patch"]["source_host"]
4646
user = params["patch"]["user"]
4747
ssh.connect(host, username=user)
4848

@@ -51,29 +51,28 @@ def get_source_data(params, logger):
5151
remote_source_files = [f"{date.strftime('%Y%m%d')}.csv.gz" for date in dates]
5252

5353
# Download source files
54-
sftp = ssh.open_sftp()
55-
try:
56-
sftp.stat(params["common"]["backup_dir"])
57-
except IOError:
58-
logger.error("Source backup directory does not exist on the remote server.")
59-
60-
sftp.chdir(params["common"]["backup_dir"])
61-
62-
num_files_transferred = 0
63-
for remote_file_name in remote_source_files:
64-
callback_for_filename = functools.partial(print_callback, remote_file_name, logger, progress_chunks=[0, 50])
65-
local_file_path = path.join(params["patch"]["source_dir"], remote_file_name)
54+
with ssh.open_sftp() as sftp:
6655
try:
67-
sftp.stat(remote_file_name)
56+
sftp.stat(params["common"]["backup_dir"])
6857
except IOError:
69-
logger.warning(
70-
"Source backup for this date does not exist on the remote server.", missing_filename=remote_file_name
71-
)
72-
continue
73-
sftp.get(remote_file_name, local_file_path, callback=callback_for_filename)
74-
logger.info("Transfer finished", remote_file_name=remote_file_name, local_file_path=local_file_path)
75-
num_files_transferred += 1
76-
ssh.close()
58+
logger.error("Source backup directory does not exist on the remote server.")
59+
60+
sftp.chdir(params["common"]["backup_dir"])
61+
62+
num_files_transferred = 0
63+
for remote_file_name in remote_source_files:
64+
callback_for_filename = functools.partial(print_callback, remote_file_name, logger, progress_chunks=[0, 50])
65+
local_file_path = path.join(params["patch"]["source_dir"], remote_file_name)
66+
try:
67+
sftp.stat(remote_file_name)
68+
except IOError:
69+
logger.warning(
70+
"Source backup for this date does not exist on the remote server.", missing_filename=remote_file_name
71+
)
72+
continue
73+
sftp.get(remote_file_name, local_file_path, callback=callback_for_filename)
74+
logger.info("Transfer finished", remote_file_name=remote_file_name, local_file_path=local_file_path)
75+
num_files_transferred += 1
7776

7877
if num_files_transferred == 0:
7978
logger.error("No source data was transferred. Check the source backup server for potential issues.")

nssp/tests/test_patch.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def test_config_missing_end_issue_in_patch_section(self, mock_logger):
2828
},
2929
"patch": {
3030
"source_dir": "./does_not_exist",
31+
"source_host": "prod.server.edu",
3132
"user": "user",
3233
"patch_dir": "dir",
3334
"start_issue": "2024-04-21",
@@ -47,6 +48,7 @@ def test_config_invalid_start_issue(self, mock_logger):
4748
},
4849
"patch": {
4950
"source_dir": "./does_not_exist",
51+
"source_host": "prod.server.edu",
5052
"user": "user",
5153
"patch_dir": "dir",
5254
"start_issue": "01-01-2024",
@@ -71,6 +73,7 @@ def test_config_start_issue_after_end_issue(self, mock_logger):
7173
"start_issue": "2024-04-22",
7274
"end_issue": "2024-04-21",
7375
"source_dir": "./does_not_exist",
76+
"source_host": "prod.server.edu"
7477
}
7578
}
7679
assert not good_patch_config(patch_config, mock_logger)
@@ -88,7 +91,8 @@ def test_config_all_valid_configurations(self, mock_logger):
8891
"patch_dir": "dir",
8992
"start_issue": "2024-04-21",
9093
"end_issue": "2024-04-22",
91-
"source_dir": "./does_not_exist"
94+
"source_dir": "./does_not_exist",
95+
"source_host": "prod.server.edu"
9296
}
9397
}
9498
assert good_patch_config(patch_config, mock_logger)
@@ -106,7 +110,8 @@ def test_config_user_param(self, mock_logger):
106110
"patch_dir": "dir",
107111
"start_issue": "2024-04-21",
108112
"end_issue": "2024-04-22",
109-
"source_dir": "./source_dir"
113+
"source_dir": "./source_dir",
114+
"source_host": "prod.server.edu"
110115
}
111116
}
112117
assert good_patch_config(patch_config, mock_logger)
@@ -157,7 +162,8 @@ def test_patch_from_local_source(self, mock_read_params, mock_get_structured_log
157162
"start_issue": "2021-01-01",
158163
"end_issue": "2021-01-16",
159164
"patch_dir": "./patch_dir",
160-
"source_dir": "./source_dir"
165+
"source_dir": "./source_dir",
166+
"source_host": "prod.server.edu"
161167
}
162168
}
163169
patch()
@@ -180,6 +186,7 @@ def test_patch_download_remote_source(self, mock_read_params, mock_get_structure
180186
"start_issue": "2021-01-01",
181187
"end_issue": "2021-01-16",
182188
"patch_dir": "./patch_dir",
189+
"source_host": "prod.server.edu",
183190
"source_dir": "./does_not_exist"
184191
}
185192
}
@@ -205,7 +212,8 @@ def test_patch_confirm_dir_structure_created(self, mock_read_params, mock_get_st
205212
"start_issue": "2021-01-01",
206213
"end_issue": "2021-01-16",
207214
"patch_dir": "./patch_dir",
208-
"source_dir": "./source_dir"
215+
"source_dir": "./source_dir",
216+
"source_host": "prod.server.edu",
209217
}
210218
}
211219
patch()
@@ -243,7 +251,8 @@ def test_full_patch_code(self, mock_read_params, mock_get_structured_logger):
243251
"start_issue": "2021-01-01",
244252
"end_issue": "2021-01-16",
245253
"patch_dir": "./patch_dir",
246-
"source_dir": "./source_dir"
254+
"source_dir": "./source_dir",
255+
"source_host": "prod.server.edu"
247256
}
248257
}
249258

nssp/tests/test_pull.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def test_get_source_data(self):
2929
params = {
3030
"patch": {
3131
"source_dir": "test_source_dir",
32+
"source_host": "prod.server.edu",
3233
"user": "test_user",
3334
"start_issue": "2023-01-01",
3435
"end_issue": "2023-01-03",
@@ -48,7 +49,6 @@ def test_get_source_data(self):
4849
with patch("paramiko.SSHClient", return_value=mock_ssh):
4950
get_source_data(params, logger)
5051

51-
mock_ssh.connect.assert_called_once_with("delphi-master-prod-01.delphi.cmu.edu", username="test_user")
5252
mock_sftp.chdir.assert_called_once_with("/test_backup_dir")
5353
assert mock_sftp.get.call_count == 3
5454

0 commit comments

Comments
 (0)