in 5-app-infra/3-artifact-publish/docker/cdmc/tag_engine_api/TagEngineStoreHandler.py [0:0]
def write_static_asset_config(self, service_account, fields, included_assets_uris, excluded_assets_uris, template_uuid, \
template_id, template_project, template_region, refresh_mode, refresh_frequency, refresh_unit, \
tag_history, overwrite=False):
# hash the included_assets_uris string
included_assets_uris_hash = hashlib.md5(included_assets_uris.encode()).hexdigest()
# check to see if a static config already exists
configs_ref = self.db.collection('static_asset_configs')
query = configs_ref.where(filter=FieldFilter('template_uuid', '==', template_uuid))
query = query.where(filter=FieldFilter('included_assets_uris_hash', '==', included_assets_uris_hash))
query = query.where(filter=FieldFilter('config_type', '==', 'STATIC_TAG_ASSET'))
query = query.where(filter=FieldFilter('config_status', '!=', 'INACTIVE'))
matches = query.get()
for match in matches:
if match.exists:
config_uuid_match = match.id
print('Static config already exists. Config_uuid: ' + str(config_uuid_match))
# update status to INACTIVE
self.db.collection('static_asset_configs').document(config_uuid_match).update({
'config_status' : "INACTIVE"
})
print('Updated config status to INACTIVE.')
config_uuid = uuid.uuid1().hex
if refresh_mode == 'AUTO':
delta, next_run = self.validate_auto_refresh(refresh_frequency, refresh_unit)
config = self.db.collection('static_asset_configs')
doc_ref = config.document(config_uuid)
doc_ref.set({
'config_uuid': config_uuid,
'config_type': 'STATIC_TAG_ASSET',
'config_status': 'ACTIVE',
'creation_time': datetime.utcnow(),
'fields': fields,
'included_assets_uris': included_assets_uris,
'included_assets_uris_hash': included_assets_uris_hash,
'excluded_assets_uris': excluded_assets_uris,
'template_uuid': template_uuid,
'template_id': template_id,
'template_project': template_project,
'template_region': template_region,
'refresh_mode': refresh_mode, # AUTO refresh mode
'refresh_frequency': delta,
'refresh_unit': refresh_unit,
'tag_history': tag_history,
'scheduling_status': 'READY',
'next_run': next_run,
'version': 1,
'overwrite': overwrite,
'service_account': service_account
})
else:
config = self.db.collection('static_asset_configs')
doc_ref = config.document(config_uuid)
doc_ref.set({
'config_uuid': config_uuid,
'config_type': 'STATIC_TAG_ASSET',
'config_status': 'ACTIVE',
'creation_time': datetime.utcnow(),
'fields': fields,
'included_assets_uris': included_assets_uris,
'included_assets_uris_hash': included_assets_uris_hash,
'excluded_assets_uris': excluded_assets_uris,
'template_uuid': template_uuid,
'template_id': template_id,
'template_project': template_project,
'template_region': template_region,
'refresh_mode': refresh_mode, # ON_DEMAND refresh mode
'refresh_frequency': 0, # N/A
'tag_history': tag_history,
'version': 1,
'overwrite': overwrite,
'service_account': service_account
})
print('Created static asset config.')
return config_uuid