Skip to content

Commit 929e3b0

Browse files
committed
more robustness
1 parent c87e6c9 commit 929e3b0

File tree

1 file changed

+22
-13
lines changed
  • tools/ci_connector_ops/ci_connector_ops

1 file changed

+22
-13
lines changed

tools/ci_connector_ops/ci_connector_ops/utils.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copyright (c) 2022 Airbyte, Inc., all rights reserved.
33
#
44
import logging
5-
from typing import Dict, List, Optional, Tuple
5+
from typing import Dict, Optional, Set, Tuple
66

77
import git
88
import requests
@@ -14,6 +14,9 @@
1414
SOURCE_CONNECTOR_PATH_PREFIX = CONNECTOR_PATH_PREFIX + "/source-"
1515
ACCEPTANCE_TEST_CONFIG_FILE_NAME = "acceptance-test-config.yml"
1616
AIRBYTE_DOCKER_REPO = "airbyte"
17+
SOURCE_DEFINITIONS_FILE_PATH = "airbyte-config/init/src/main/resources/seed/source_definitions.yaml"
18+
DESTINATION_DEFINITIONS_FILE_PATH = "airbyte-config/init/src/main/resources/seed/destination_definitions.yaml"
19+
DEFINITIONS_FILE_PATH = {"source": SOURCE_DEFINITIONS_FILE_PATH, "destination": DESTINATION_DEFINITIONS_FILE_PATH}
1720

1821

1922
def download_catalog(catalog_url):
@@ -24,28 +27,34 @@ def download_catalog(catalog_url):
2427
OSS_CATALOG = download_catalog(OSS_CATALOG_URL)
2528

2629

27-
def get_changed_connector_names() -> List[str]:
30+
def read_definitions(definitions_file_path: str) -> Dict:
31+
with open(definitions_file_path) as definitions_file:
32+
return yaml.safe_load(definitions_file)
33+
34+
35+
def get_changed_connector_names() -> Set[str]:
2836
"""Retrieve a list of connector names that were changed in the current branch (compared to master).
2937
3038
Returns:
31-
List[str]: List of connector names e.g ["source-pokeapi"]
39+
Set[str]: Set of connector names e.g ["source-pokeapi"]
3240
"""
33-
head_commit = AIRBYTE_REPO.head.commit
34-
master_diffs = head_commit.diff(AIRBYTE_REPO.remotes.origin.refs.master)
35-
changed_source_connector_files = [diff.b_path for diff in master_diffs if diff.b_path.startswith(SOURCE_CONNECTOR_PATH_PREFIX)]
41+
changed_source_connector_files = {
42+
file_path
43+
for file_path in AIRBYTE_REPO.git.diff("--name-only", "origin/master...").split("\n")
44+
if file_path.startswith(SOURCE_CONNECTOR_PATH_PREFIX)
45+
}
3646

3747
def get_connector_name_from_path(path):
3848
return path.split("/")[2]
3949

40-
return [get_connector_name_from_path(changed_file) for changed_file in changed_source_connector_files]
50+
return {get_connector_name_from_path(changed_file) for changed_file in changed_source_connector_files}
4151

4252

43-
def get_connector_definition(connector_name: str, catalog: Dict = OSS_CATALOG) -> Optional[Dict]:
53+
def get_connector_definition(connector_name: str) -> Optional[Dict]:
4454
"""Find a connector definition from the catalog.
4555
4656
Args:
4757
connector_name (str): The connector name. E.G. 'source-pokeapi'
48-
catalog (Dict, optional): The connector catalog. Defaults to OSS_CATALOG.
4958
5059
Raises:
5160
Exception: Raised if the definition type (source/destination) could not be determined from connector name.
@@ -58,22 +67,22 @@ def get_connector_definition(connector_name: str, catalog: Dict = OSS_CATALOG) -
5867
assert definition_type in ["source", "destination"]
5968
except AssertionError:
6069
raise Exception(f"Could not determine the definition type for {connector_name}.")
61-
for definition in catalog[definition_type + "s"]:
70+
definitions = read_definitions(DEFINITIONS_FILE_PATH[definition_type])
71+
for definition in definitions:
6272
if definition["dockerRepository"].replace(f"{AIRBYTE_DOCKER_REPO}/", "") == connector_name:
6373
return definition
6474

6575

66-
def get_connector_release_stage(connector_name: str, catalog: Dict = OSS_CATALOG) -> Optional[str]:
76+
def get_connector_release_stage(connector_name: str) -> Optional[str]:
6777
"""Retrieve the connector release stage (E.G. alpha/beta/generally_available).
6878
6979
Args:
7080
connector_name (str): The connector name. E.G. 'source-pokeapi'
71-
catalog (Dict, optional): The connector catalog. Defaults to OSS_CATALOG.
7281
7382
Returns:
7483
Optional[str]: The connector release stage if it was defined. Returns None otherwise.
7584
"""
76-
definition = get_connector_definition(connector_name, catalog)
85+
definition = get_connector_definition(connector_name)
7786
return definition.get("releaseStage")
7887

7988

0 commit comments

Comments
 (0)