def write_static_asset_config()

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