Skip to content

Commit 8b6a91a

Browse files
authored
metadata-service[orchestrator]: set SBOM url in registry (#44381)
1 parent 7db4145 commit 8b6a91a

File tree

4 files changed

+38
-3
lines changed

4 files changed

+38
-3
lines changed

airbyte-ci/connectors/metadata_service/lib/metadata_service/gcs_upload.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from typing import List, Optional, Tuple
1515

1616
import git
17+
import requests
1718
import yaml
1819
from google.cloud import storage
1920
from google.oauth2 import service_account
@@ -237,6 +238,18 @@ def _apply_author_info_to_metadata_file(metadata_dict: dict, original_metadata_f
237238
return metadata_dict
238239

239240

241+
def _apply_sbom_url_to_metadata_file(metadata_dict: dict) -> dict:
242+
"""Apply sbom url to the metadata file before uploading it to GCS."""
243+
try:
244+
sbom_url = f"https://connectors.airbyte.com/files/sbom/{metadata_dict['data']['dockerRepository']}/{metadata_dict['data']['dockerImageTag']}.spdx.json"
245+
except KeyError:
246+
return metadata_dict
247+
response = requests.head(sbom_url)
248+
if response.ok:
249+
metadata_dict = set_(metadata_dict, "data.generated.sbomUrl", sbom_url)
250+
return metadata_dict
251+
252+
240253
def _write_metadata_to_tmp_file(metadata_dict: dict) -> Path:
241254
"""Write the metadata to a temporary file."""
242255
with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as tmp_file:
@@ -263,7 +276,7 @@ def _apply_modifications_to_metadata_file(original_metadata_file_path: Path, val
263276
metadata = _safe_load_metadata_file(original_metadata_file_path)
264277
metadata = _apply_prerelease_overrides(metadata, validator_opts)
265278
metadata = _apply_author_info_to_metadata_file(metadata, original_metadata_file_path)
266-
279+
metadata = _apply_sbom_url_to_metadata_file(metadata)
267280
return _write_metadata_to_tmp_file(metadata)
268281

269282

airbyte-ci/connectors/metadata_service/lib/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "metadata-service"
3-
version = "0.10.2"
3+
version = "0.10.3"
44
description = ""
55
authors = ["Ben Church <[email protected]>"]
66
readme = "README.md"

airbyte-ci/connectors/metadata_service/orchestrator/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "orchestrator"
3-
version = "0.2.4"
3+
version = "0.3.0"
44
description = ""
55
authors = ["Ben Church <[email protected]>"]
66
readme = "README.md"

airbyte-ci/connectors/metadata_service/orchestrator/tests/test_registry.py

+22
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,28 @@ def test_erd_url():
339339
assert result["erdUrl"] == "https://an-erd.com"
340340

341341

342+
def test_sbom_url():
343+
"""
344+
Test that if when defined in the metadata, the sbom url will be populated in the registry
345+
"""
346+
mock_metadata_entry = mock.Mock()
347+
mock_metadata_entry.metadata_definition.dict.return_value = {
348+
"data": {
349+
"connectorType": "source",
350+
"definitionId": "test-id",
351+
"registryOverrides": {"oss": {"enabled": True}},
352+
"dockerRepository": "test-connector",
353+
"dockerImageTag": "test-tag",
354+
"generated": {"sbomUrl": "test-sbom-url"},
355+
}
356+
}
357+
mock_metadata_entry.icon_url = "test-icon-url"
358+
mock_metadata_entry.dependency_file_url = "test-dependency-file-url"
359+
360+
result = metadata_to_registry_entry(mock_metadata_entry, "oss")
361+
assert result["generated"]["sbomUrl"] == "test-sbom-url"
362+
363+
342364
def test_support_level_default():
343365
"""
344366
Test if supportLevel is defaulted to alpha in the registry entry.

0 commit comments

Comments
 (0)