in 5-app-infra/3-artifact-publish/docker/cdmc/tag_engine_api/TagEngineStoreHandler.py [0:0]
def write_tag_export_config(self, service_account, source_projects, source_folder, source_region, \
target_project, target_dataset, target_region, write_option, \
refresh_mode, refresh_frequency, refresh_unit):
print('** write_tag_export_config **')
# check to see if this config already exists
configs_ref = self.db.collection('export_configs')
if source_projects != '':
query = configs_ref.where(filter=FieldFilter('source_projects', '==', source_projects))
query = query.where(filter=FieldFilter('source_region', '==', source_region))
query = query.where(filter=FieldFilter('target_project', '==', target_project))
query = query.where(filter=FieldFilter('target_dataset', '==', target_dataset))
query = query.where(filter=FieldFilter('config_status', '!=', 'INACTIVE'))
else:
query = configs_ref.where(filter=FieldFilter('source_folder', '==', source_folder))
query = query.where(filter=FieldFilter('source_region', '==', source_region))
query = query.where(filter=FieldFilter('target_project', '==', target_project))
query = query.where(filter=FieldFilter('target_dataset', '==', target_dataset))
query = query.where(filter=FieldFilter('config_status', '!=', 'INACTIVE'))
matches = query.get()
for match in matches:
if match.exists:
config_uuid_match = match.id
print('config already exists. Found config_uuid: ' + str(config_uuid_match))
# update status to INACTIVE
self.db.collection('export_configs').document(config_uuid_match).update({
'config_status' : "INACTIVE"
})
print('Updated status to INACTIVE.')
config_uuid = uuid.uuid1().hex
configs = self.db.collection('export_configs')
doc_ref = configs.document(config_uuid)
if refresh_mode == 'AUTO':
delta, next_run = self.validate_auto_refresh(refresh_frequency, refresh_unit)
doc_ref.set({
'config_uuid': config_uuid,
'config_type': 'TAG_EXPORT',
'config_status': 'ACTIVE',
'creation_time': datetime.utcnow(),
'source_projects': source_projects,
'source_folder': source_folder,
'source_region': source_region,
'target_project': target_project,
'target_dataset': target_dataset,
'target_region': target_region,
'write_option': write_option,
'refresh_mode': refresh_mode,
'refresh_frequency': delta,
'refresh_unit': refresh_unit,
'scheduling_status': 'READY',
'next_run': next_run,
'version': 1,
'service_account': service_account
})
else:
doc_ref.set({
'config_uuid': config_uuid,
'config_type': 'TAG_EXPORT',
'config_status': 'ACTIVE',
'creation_time': datetime.utcnow(),
'source_projects': source_projects,
'source_folder': source_folder,
'source_region': source_region,
'target_project': target_project,
'target_dataset': target_dataset,
'target_region': target_region,
'write_option': write_option,
'refresh_mode': refresh_mode, # ON_DEMAND
'refresh_frequency': 0,
'version': 1,
'service_account': service_account
})
print('Created tag export config.')
return config_uuid