15
15
from google .oauth2 import service_account
16
16
17
17
from metadata_service .constants import METADATA_FILE_NAME , METADATA_FOLDER , ICON_FILE_NAME
18
- from metadata_service .validators .metadata_validator import POST_UPLOAD_VALIDATORS , validate_and_load , ValidatorContext
18
+ from metadata_service .validators .metadata_validator import POST_UPLOAD_VALIDATORS , validate_and_load , ValidatorOptions
19
19
from metadata_service .utils import to_json_sanitized_dict
20
20
from metadata_service .models .generated .ConnectorMetadataDefinitionV0 import ConnectorMetadataDefinitionV0
21
21
@@ -122,30 +122,30 @@ def _icon_upload(metadata: ConnectorMetadataDefinitionV0, bucket: storage.bucket
122
122
return upload_file_if_changed (local_icon_path , bucket , latest_icon_path )
123
123
124
124
125
- def create_prerelease_metadata_file (metadata_file_path : Path , prerelease : str ) -> Path :
126
- metadata , error = validate_and_load (metadata_file_path , [], prerelease = prerelease )
125
+ def create_prerelease_metadata_file (metadata_file_path : Path , validator_opts : ValidatorOptions ) -> Path :
126
+ metadata , error = validate_and_load (metadata_file_path , [], validator_opts )
127
127
if metadata is None :
128
128
raise ValueError (f"Metadata file { metadata_file_path } is invalid for uploading: { error } " )
129
129
130
130
# replace any dockerImageTag references with the actual tag
131
131
# this includes metadata.data.dockerImageTag, metadata.data.registries[].dockerImageTag
132
132
# where registries is a dictionary of registry name to registry object
133
133
metadata_dict = to_json_sanitized_dict (metadata , exclude_none = True )
134
- metadata_dict ["data" ]["dockerImageTag" ] = prerelease
134
+ metadata_dict ["data" ]["dockerImageTag" ] = validator_opts . prerelease_tag
135
135
for registry in get (metadata_dict , "data.registries" , {}).values ():
136
136
if "dockerImageTag" in registry :
137
- registry ["dockerImageTag" ] = prerelease
137
+ registry ["dockerImageTag" ] = validator_opts . prerelease_tag
138
138
139
139
# write metadata to yaml file in system tmp folder
140
- tmp_metadata_file_path = Path ("/tmp" ) / metadata .data .dockerRepository / prerelease / METADATA_FILE_NAME
140
+ tmp_metadata_file_path = Path ("/tmp" ) / metadata .data .dockerRepository / validator_opts . prerelease_tag / METADATA_FILE_NAME
141
141
tmp_metadata_file_path .parent .mkdir (parents = True , exist_ok = True )
142
142
with open (tmp_metadata_file_path , "w" ) as f :
143
143
yaml .dump (metadata_dict , f )
144
144
145
145
return tmp_metadata_file_path
146
146
147
147
148
- def upload_metadata_to_gcs (bucket_name : str , metadata_file_path : Path , prerelease : Optional [ str ] = None ) -> MetadataUploadInfo :
148
+ def upload_metadata_to_gcs (bucket_name : str , metadata_file_path : Path , validator_opts : ValidatorOptions = ValidatorOptions () ) -> MetadataUploadInfo :
149
149
"""Upload a metadata file to a GCS bucket.
150
150
151
151
If the per 'version' key already exists it won't be overwritten.
@@ -155,14 +155,14 @@ def upload_metadata_to_gcs(bucket_name: str, metadata_file_path: Path, prereleas
155
155
bucket_name (str): Name of the GCS bucket to which the metadata file will be uploade.
156
156
metadata_file_path (Path): Path to the metadata file.
157
157
service_account_file_path (Path): Path to the JSON file with the service account allowed to read and write on the bucket.
158
- prerelease (Optional[str]): Whether the connector is a prerelease or not.
158
+ prerelease_tag (Optional[str]): Whether the connector is a prerelease_tag or not.
159
159
Returns:
160
160
Tuple[bool, str]: Whether the metadata file was uploaded and its blob id.
161
161
"""
162
- if prerelease :
163
- metadata_file_path = create_prerelease_metadata_file (metadata_file_path , prerelease )
162
+ if validator_opts . prerelease_tag :
163
+ metadata_file_path = create_prerelease_metadata_file (metadata_file_path , validator_opts )
164
164
165
- metadata , error = validate_and_load (metadata_file_path , POST_UPLOAD_VALIDATORS , prerelease = prerelease )
165
+ metadata , error = validate_and_load (metadata_file_path , POST_UPLOAD_VALIDATORS , validator_opts )
166
166
167
167
if metadata is None :
168
168
raise ValueError (f"Metadata file { metadata_file_path } is invalid for uploading: { error } " )
@@ -175,7 +175,7 @@ def upload_metadata_to_gcs(bucket_name: str, metadata_file_path: Path, prereleas
175
175
icon_uploaded , icon_blob_id = _icon_upload (metadata , bucket , metadata_file_path )
176
176
177
177
version_uploaded , version_blob_id = _version_upload (metadata , bucket , metadata_file_path )
178
- if not prerelease :
178
+ if not validator_opts . prerelease_tag :
179
179
latest_uploaded , latest_blob_id = _latest_upload (metadata , bucket , metadata_file_path )
180
180
else :
181
181
latest_uploaded , latest_blob_id = False , None
0 commit comments