airbyte-internal-ops 0.5.1__py3-none-any.whl → 0.5.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {airbyte_internal_ops-0.5.1.dist-info → airbyte_internal_ops-0.5.2.dist-info}/METADATA +1 -1
- {airbyte_internal_ops-0.5.1.dist-info → airbyte_internal_ops-0.5.2.dist-info}/RECORD +7 -7
- airbyte_ops_mcp/cli/cloud.py +8 -6
- airbyte_ops_mcp/regression_tests/__init__.py +2 -0
- airbyte_ops_mcp/regression_tests/connection_secret_retriever.py +25 -5
- {airbyte_internal_ops-0.5.1.dist-info → airbyte_internal_ops-0.5.2.dist-info}/WHEEL +0 -0
- {airbyte_internal_ops-0.5.1.dist-info → airbyte_internal_ops-0.5.2.dist-info}/entry_points.txt +0 -0
|
@@ -245,7 +245,7 @@ airbyte_ops_mcp/cli/__init__.py,sha256=XpL7FyVfgabfBF2JR7u7NwJ2krlYqjd_OwLcWf-Xc
|
|
|
245
245
|
airbyte_ops_mcp/cli/_base.py,sha256=I8tWnyQf0ks4r3J8N8h-5GZxyn37T-55KsbuHnxYlcg,415
|
|
246
246
|
airbyte_ops_mcp/cli/_shared.py,sha256=jg-xMyGzTCGPqKd8VTfE_3kGPIyO_3Kx5sQbG4rPc0Y,1311
|
|
247
247
|
airbyte_ops_mcp/cli/app.py,sha256=SEdBpqFUG2O8zGV5ifwptxrLGFph_dLr66-MX9d69gQ,789
|
|
248
|
-
airbyte_ops_mcp/cli/cloud.py,sha256=
|
|
248
|
+
airbyte_ops_mcp/cli/cloud.py,sha256=jac0FcG3UvNNeNNhqZR04uY9BCyVvins1kjO0LRZ86Y,45861
|
|
249
249
|
airbyte_ops_mcp/cli/gh.py,sha256=koJPu0MDB6AW7mJq2z4dZV65ofvsZTkqoeitGF8KJR8,5364
|
|
250
250
|
airbyte_ops_mcp/cli/registry.py,sha256=L4nDKhlegr31gSE-GUvDFSq10KgDz5kJuZXgLIxYIyg,9785
|
|
251
251
|
airbyte_ops_mcp/cli/repo.py,sha256=G1hoQpH0XYhUH3FFOsia9xabGB0LP9o3XcwBuqvFVo0,16331
|
|
@@ -286,12 +286,12 @@ airbyte_ops_mcp/prod_db_access/sql.py,sha256=E7HQratZC5LbCXdvpQzZRd09SmCVnY_4Ru-
|
|
|
286
286
|
airbyte_ops_mcp/registry/__init__.py,sha256=iEaPlt9GrnlaLbc__98TguNeZG8wuQu7S-_2QkhHcbA,858
|
|
287
287
|
airbyte_ops_mcp/registry/models.py,sha256=B4L4TKr52wo0xs0CqvCBrpowqjShzVnZ5eTr2-EyhNs,2346
|
|
288
288
|
airbyte_ops_mcp/registry/publish.py,sha256=VoPxsM2_0zJ829orzCRN-kjgcJtuBNyXgW4I9J680ro,12717
|
|
289
|
-
airbyte_ops_mcp/regression_tests/__init__.py,sha256=
|
|
289
|
+
airbyte_ops_mcp/regression_tests/__init__.py,sha256=qdveN866w50VmiDmTD0IW8Buo4UUn_1m9mKNS6hgj5U,1092
|
|
290
290
|
airbyte_ops_mcp/regression_tests/cdk_secrets.py,sha256=iRjqqBS96KZoswfgT7ju-pE_pfbYoDy4PfrK-K8uyYs,3204
|
|
291
291
|
airbyte_ops_mcp/regression_tests/ci_output.py,sha256=os69gcEhbomrGRAfnwPYAXhsAiJSWOuyW1gWZPx9-hw,15498
|
|
292
292
|
airbyte_ops_mcp/regression_tests/config.py,sha256=dwWeY0tatdbwl9BqbhZ7EljoZDCtKmGO5fvOAIxeXmA,5873
|
|
293
293
|
airbyte_ops_mcp/regression_tests/connection_fetcher.py,sha256=laGkxVfDl8_S-Azst28wijvPnOB-bmuuk2B_2e-0yjY,13170
|
|
294
|
-
airbyte_ops_mcp/regression_tests/connection_secret_retriever.py,sha256=
|
|
294
|
+
airbyte_ops_mcp/regression_tests/connection_secret_retriever.py,sha256=e2RvLEtAcpSHnYobP3wGNYGk8VNVI6MallX3cS0UPgA,5561
|
|
295
295
|
airbyte_ops_mcp/regression_tests/connector_runner.py,sha256=OZzUa2aLh0sHaEARsDePOA-e3qEX4cvh3Jhnvi8S1rY,10130
|
|
296
296
|
airbyte_ops_mcp/regression_tests/evaluation_modes.py,sha256=lAL6pEDmy_XCC7_m4_NXjt_f6Z8CXeAhMkc0FU8bm_M,1364
|
|
297
297
|
airbyte_ops_mcp/regression_tests/http_metrics.py,sha256=busCYLb7qID0vv7yAtzARf__-HukpE3mAoc-pYI_gCQ,13256
|
|
@@ -306,7 +306,7 @@ airbyte_ops_mcp/regression_tests/regression/comparators.py,sha256=MJkLZEKHivgrG0
|
|
|
306
306
|
airbyte_ops_mcp/regression_tests/validation/__init__.py,sha256=MBEwGOoNuqT4_oCahtoK62OKWIjUCfWa7vZTxNj_0Ek,1532
|
|
307
307
|
airbyte_ops_mcp/regression_tests/validation/catalog_validators.py,sha256=jqqVAMOk0mtdPgwu4d0hA0ZEjtsNh5gapvGydRv3_qk,12553
|
|
308
308
|
airbyte_ops_mcp/regression_tests/validation/record_validators.py,sha256=RjauAhKWNwxMBTu0eNS2hMFNQVs5CLbQU51kp6FOVDk,7432
|
|
309
|
-
airbyte_internal_ops-0.5.
|
|
310
|
-
airbyte_internal_ops-0.5.
|
|
311
|
-
airbyte_internal_ops-0.5.
|
|
312
|
-
airbyte_internal_ops-0.5.
|
|
309
|
+
airbyte_internal_ops-0.5.2.dist-info/METADATA,sha256=vKolAxrXmB-dgddkjeQxYNZZL0ID11L51nID5LeMkMk,5731
|
|
310
|
+
airbyte_internal_ops-0.5.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
311
|
+
airbyte_internal_ops-0.5.2.dist-info/entry_points.txt,sha256=WxP0l7bRFss4Cr5uQqVj9mTEKwnRKouNuphXQF0lotA,171
|
|
312
|
+
airbyte_internal_ops-0.5.2.dist-info/RECORD,,
|
airbyte_ops_mcp/cli/cloud.py
CHANGED
|
@@ -65,6 +65,7 @@ from airbyte_ops_mcp.regression_tests.connection_fetcher import (
|
|
|
65
65
|
save_connection_data_to_files,
|
|
66
66
|
)
|
|
67
67
|
from airbyte_ops_mcp.regression_tests.connection_secret_retriever import (
|
|
68
|
+
SecretRetrievalError,
|
|
68
69
|
enrich_config_with_secrets,
|
|
69
70
|
should_use_secret_retriever,
|
|
70
71
|
)
|
|
@@ -847,13 +848,14 @@ def regression_test(
|
|
|
847
848
|
retrieval_reason="Regression test with USE_CONNECTION_SECRET_RETRIEVER=true",
|
|
848
849
|
)
|
|
849
850
|
print_success("Successfully retrieved unmasked secrets from database")
|
|
850
|
-
except
|
|
851
|
-
|
|
851
|
+
except SecretRetrievalError as e:
|
|
852
|
+
write_github_output("success", False)
|
|
853
|
+
write_github_output("error", str(e))
|
|
852
854
|
exit_with_error(
|
|
853
|
-
f"
|
|
854
|
-
f"
|
|
855
|
-
f"
|
|
856
|
-
f"
|
|
855
|
+
f"{e}\n\n"
|
|
856
|
+
f"This connection cannot be used for regression testing. "
|
|
857
|
+
f"Please use a connection from a non-EU workspace, or use GSM-based "
|
|
858
|
+
f"integration test credentials instead (by omitting --connection-id)."
|
|
857
859
|
)
|
|
858
860
|
|
|
859
861
|
config_file, catalog_file = save_connection_data_to_files(
|
|
@@ -10,6 +10,7 @@ from airbyte_ops_mcp.regression_tests.connection_fetcher import (
|
|
|
10
10
|
fetch_connection_data,
|
|
11
11
|
)
|
|
12
12
|
from airbyte_ops_mcp.regression_tests.connection_secret_retriever import (
|
|
13
|
+
SecretRetrievalError,
|
|
13
14
|
enrich_config_with_secrets,
|
|
14
15
|
is_secret_retriever_enabled,
|
|
15
16
|
retrieve_unmasked_config,
|
|
@@ -27,6 +28,7 @@ __all__ = [
|
|
|
27
28
|
"ConnectionData",
|
|
28
29
|
"ConnectorUnderTest",
|
|
29
30
|
"ExecutionResult",
|
|
31
|
+
"SecretRetrievalError",
|
|
30
32
|
"TargetOrControl",
|
|
31
33
|
"enrich_config_with_secrets",
|
|
32
34
|
"fetch_connection_data",
|
|
@@ -107,9 +107,18 @@ def retrieve_unmasked_config(
|
|
|
107
107
|
return None
|
|
108
108
|
|
|
109
109
|
|
|
110
|
+
class SecretRetrievalError(Exception):
|
|
111
|
+
"""Raised when secret retrieval fails.
|
|
112
|
+
|
|
113
|
+
This exception is raised when USE_CONNECTION_SECRET_RETRIEVER is enabled
|
|
114
|
+
but secrets cannot be retrieved (e.g., EU data residency restrictions).
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
|
|
110
118
|
def enrich_config_with_secrets(
|
|
111
119
|
connection_data: ConnectionData,
|
|
112
120
|
retrieval_reason: str = "MCP live tests",
|
|
121
|
+
raise_on_failure: bool = True,
|
|
113
122
|
) -> ConnectionData:
|
|
114
123
|
"""Enrich connection data with unmasked secrets from internal retriever.
|
|
115
124
|
|
|
@@ -120,10 +129,16 @@ def enrich_config_with_secrets(
|
|
|
120
129
|
Args:
|
|
121
130
|
connection_data: The connection data to enrich.
|
|
122
131
|
retrieval_reason: Reason for retrieval (for audit logging).
|
|
132
|
+
raise_on_failure: If True (default), raise SecretRetrievalError when
|
|
133
|
+
secrets cannot be retrieved. If False, return the original
|
|
134
|
+
connection_data with masked secrets (legacy behavior).
|
|
123
135
|
|
|
124
136
|
Returns:
|
|
125
|
-
A new ConnectionData with unmasked config
|
|
126
|
-
|
|
137
|
+
A new ConnectionData with unmasked config.
|
|
138
|
+
|
|
139
|
+
Raises:
|
|
140
|
+
SecretRetrievalError: If raise_on_failure is True and secrets cannot
|
|
141
|
+
be retrieved (e.g., due to EU data residency restrictions).
|
|
127
142
|
"""
|
|
128
143
|
unmasked_config = retrieve_unmasked_config(
|
|
129
144
|
connection_id=connection_data.connection_id,
|
|
@@ -131,10 +146,15 @@ def enrich_config_with_secrets(
|
|
|
131
146
|
)
|
|
132
147
|
|
|
133
148
|
if unmasked_config is None:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"
|
|
149
|
+
error_msg = (
|
|
150
|
+
"Could not retrieve unmasked secrets for connection "
|
|
151
|
+
f"{connection_data.connection_id}. This may be due to EU data "
|
|
152
|
+
"residency restrictions or database connectivity issues. "
|
|
153
|
+
"The connection's credentials cannot be used for regression testing."
|
|
137
154
|
)
|
|
155
|
+
logger.warning(error_msg)
|
|
156
|
+
if raise_on_failure:
|
|
157
|
+
raise SecretRetrievalError(error_msg)
|
|
138
158
|
return connection_data
|
|
139
159
|
|
|
140
160
|
logger.info(
|
|
File without changes
|
{airbyte_internal_ops-0.5.1.dist-info → airbyte_internal_ops-0.5.2.dist-info}/entry_points.txt
RENAMED
|
File without changes
|