Skip to content

Commit f51fd47

Browse files
authored
APPSRE-11390 vcs more fetch options (#4865)
1 parent 1e39b44 commit f51fd47

File tree

13 files changed

+52
-19
lines changed

13 files changed

+52
-19
lines changed

reconcile/aws_account_manager/merge_request_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def create_account_file(
8585
return None
8686

8787
try:
88-
self._vcs.get_file_content_from_app_interface_master(
88+
self._vcs.get_file_content_from_app_interface_ref(
8989
file_path=account_tmpl_file_path
9090
)
9191
# File already exists. nothing to do.

reconcile/aws_version_sync/merge_request_manager/merge_request_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def create_merge_request(
116116
return None
117117

118118
try:
119-
content = self._vcs.get_file_content_from_app_interface_master(
119+
content = self._vcs.get_file_content_from_app_interface_ref(
120120
file_path=namespace_file
121121
)
122122
except GitlabGetError as e:

reconcile/endpoints_discovery/merge_request_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def create_merge_request(self, apps: Sequence[App]) -> None:
149149
)
150150
for app in apps:
151151
try:
152-
content = self._vcs.get_file_content_from_app_interface_master(
152+
content = self._vcs.get_file_content_from_app_interface_ref(
153153
file_path=app.path
154154
)
155155
except GitlabGetError as e:

reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request_manager_v2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def _render_mr(self, addition: Addition) -> None:
8383
if sub.target_file_path not in content_by_path:
8484
try:
8585
content_by_path[sub.target_file_path] = (
86-
self._vcs.get_file_content_from_app_interface_master(
86+
self._vcs.get_file_content_from_app_interface_ref(
8787
file_path=sub.target_file_path
8888
)
8989
)

reconcile/terraform_init/merge_request_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def create_merge_request(self, data: MrData) -> None:
7878
return None
7979

8080
try:
81-
self._vcs.get_file_content_from_app_interface_master(file_path=data.path)
81+
self._vcs.get_file_content_from_app_interface_ref(file_path=data.path)
8282
# the file exists, nothing to do
8383
return None
8484
except GitlabGetError as e:

reconcile/terraform_vpc_resources/merge_request_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def create_merge_request(self, data: MrData) -> None:
8383
return None
8484

8585
try:
86-
self._vcs.get_file_content_from_app_interface_master(file_path=data.path)
86+
self._vcs.get_file_content_from_app_interface_ref(file_path=data.path)
8787
# the file exists, nothing to do
8888
return None
8989
except GitlabGetError as e:

reconcile/test/aws_version_sync/merge_request_manager/test_avs_merge_request_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def test_merge_request_manager_create_avs_merge_request_renderer_called(
105105
renderer_mock.render_merge_request_content.return_value = "new-content"
106106
renderer_mock.render_description.return_value = "render_description"
107107
renderer_mock.render_title.return_value = "title"
108-
vcs_mock.get_file_content_from_app_interface_master.return_value = (
108+
vcs_mock.get_file_content_from_app_interface_ref.return_value = (
109109
"namespace-file-content"
110110
)
111111

reconcile/test/endpoints_discovery/test_endpoints_discovery_merge_request_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ def test_endpoints_discovery_merge_request_manager_create_merge_request_app_file
201201
) -> None:
202202
mrm, vcs_mock, _ = mrm_builder()
203203
# file does not exist in the repo
204-
vcs_mock.get_file_content_from_app_interface_master.side_effect = GitlabGetError(
204+
vcs_mock.get_file_content_from_app_interface_ref.side_effect = GitlabGetError(
205205
response_code=404
206206
)
207207

@@ -222,7 +222,7 @@ def test_endpoints_discovery_merge_request_manager_create_merge_request_open_mr(
222222
render_mock.render_title.return_value = "title"
223223
render_mock.render_description.return_value = "description"
224224
render_mock.render_merge_request_content.return_value = "content"
225-
vcs_mock.get_file_content_from_app_interface_master.return_value = "content"
225+
vcs_mock.get_file_content_from_app_interface_ref.return_value = "content"
226226

227227
mrm.create_merge_request(apps=[app])
228228
vcs_mock.open_app_interface_merge_request.assert_called_once_with(ANY)

reconcile/test/templating/test_renderer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ def test_crg_file_persistence_read_found(
402402
def test_crg_file_persistence_read_miss(
403403
vcs: MagicMock, mr_manager: MagicMock, tmp_path: Path
404404
) -> None:
405-
vcs.get_file_content_from_app_interface_master.side_effect = GitlabGetError()
405+
vcs.get_file_content_from_app_interface_ref.side_effect = GitlabGetError()
406406
crg = ClonedRepoGitlabPersistence(False, str(tmp_path), vcs, mr_manager)
407407
assert crg.read("foo") is None
408408

reconcile/test/terraform_init/test_terraform_init_merge_request_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def test_merge_request_manager_create_avs_merge_request_renderer_called(
8989
) -> None:
9090
mrm, vcs_mock, renderer_mock, _ = mrm_builder()
9191
# file does not exist in the repo
92-
vcs_mock.get_file_content_from_app_interface_master.side_effect = GitlabGetError(
92+
vcs_mock.get_file_content_from_app_interface_ref.side_effect = GitlabGetError(
9393
response_code=404
9494
)
9595

@@ -108,7 +108,7 @@ def test_merge_request_manager_create_avs_merge_request_renderer_called_template
108108
) -> None:
109109
mrm, vcs_mock, _, _ = mrm_builder()
110110
# file does not exist in the repo
111-
vcs_mock.get_file_content_from_app_interface_master.return_value = "content"
111+
vcs_mock.get_file_content_from_app_interface_ref.return_value = "content"
112112

113113
mrm.create_merge_request(MrData(account="account", content="content", path="/path"))
114114
vcs_mock.open_app_interface_merge_request.assert_not_called()

reconcile/test/utils/vcs/conftest.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import pytest
99
from github import Commit
10+
from gitlab.v4.objects import Project, ProjectFileManager
1011

1112
from reconcile.utils.github_api import GithubRepositoryApi
1213
from reconcile.utils.gitlab_api import GitLabApi
@@ -27,6 +28,9 @@ def builder(data: Mapping) -> GitLabApi:
2728
for sha in data.get("COMMITS", [])
2829
]
2930
gitlab_api.repository_compare.side_effect = [commits]
31+
gitlab_api.project = create_autospec(spec=Project)
32+
gitlab_api.project.files = create_autospec(spec=ProjectFileManager)
33+
3034
return gitlab_api
3135

3236
return builder

reconcile/test/utils/vcs/test_vcs.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,29 @@ def test_close_mr_error(vcs_builder: Callable[[Mapping], VCS]) -> None:
109109
vcs.close_app_interface_mr(mr=mr, comment="test")
110110
vcs._app_interface_api.close.assert_not_called() # type: ignore[attr-defined]
111111
vcs._app_interface_api.delete_branch.assert_not_called() # type: ignore[attr-defined]
112+
113+
114+
def test_get_file_content_from_app_interface_ref_defaults(
115+
vcs_builder: Callable[[Mapping], VCS],
116+
) -> None:
117+
vcs = vcs_builder({})
118+
vcs.get_file_content_from_app_interface_ref(file_path="/file.yaml")
119+
120+
vcs._app_interface_api.project.files.get.assert_called_once_with( # type: ignore[attr-defined]
121+
file_path="data/file.yaml",
122+
ref="master",
123+
)
124+
125+
126+
def test_get_file_content_from_app_interface_ref_overrides(
127+
vcs_builder: Callable[[Mapping], VCS],
128+
) -> None:
129+
vcs = vcs_builder({})
130+
vcs.get_file_content_from_app_interface_ref(
131+
file_path="/file.yaml", is_data=False, ref="ref"
132+
)
133+
134+
vcs._app_interface_api.project.files.get.assert_called_once_with( # type: ignore[attr-defined]
135+
file_path="/file.yaml",
136+
ref="ref",
137+
)

reconcile/utils/vcs.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,17 @@ def close_app_interface_mr(self, mr: ProjectMergeRequest, comment: str) -> None:
216216
self._app_interface_api.close(mr)
217217
self._app_interface_api.delete_branch(source_branch)
218218

219-
def get_file_content_from_app_interface_master(self, file_path: str) -> str:
220-
file_path = (
221-
f"data/{file_path.lstrip('/')}"
222-
if not file_path.startswith("data")
223-
else file_path
224-
)
219+
def get_file_content_from_app_interface_ref(
220+
self, file_path: str, ref: str = "master", is_data: bool = True
221+
) -> str:
222+
if is_data:
223+
file_path = (
224+
f"data/{file_path.lstrip('/')}"
225+
if not file_path.startswith("data")
226+
else file_path
227+
)
225228
return (
226-
self._app_interface_api.project.files.get(file_path=file_path, ref="master")
229+
self._app_interface_api.project.files.get(file_path=file_path, ref=ref)
227230
.decode()
228231
.decode("utf-8")
229232
)

0 commit comments

Comments
 (0)