def __init__(self,
                 datacatalog_project_id,
                 datacatalog_location_id,
                 atlas_connection_args,
                 atlas_entity_types=None,
                 enable_monitoring=None):
        self._project_id = datacatalog_project_id
        self._location_id = datacatalog_location_id
        self._atlas_connection_args = atlas_connection_args
        self._atlas_entity_types = atlas_entity_types

        event_hook = atlas_connection_args.get('event_hook')

        if not event_hook:
            self._metadata_scraper = scrape.MetadataScraper(
                atlas_connection_args)

        self._tag_template_factory = prepare.DataCatalogTagTemplateFactory(
            project_id=datacatalog_project_id,
            location_id=datacatalog_location_id)

        self._instance_url = self._extract_instance_url(atlas_connection_args)

        self._assembled_entry_factory = prepare.AssembledEntryFactory(
            project_id=datacatalog_project_id,
            location_id=datacatalog_location_id,
            entry_group_id=self._ENTRY_GROUP_ID,
            user_specified_system=self._SPECIFIED_SYSTEM,
            instance_url=self._instance_url)

        self._task_id = uuid.uuid4().hex[:8]
        self._metrics_processor = metrics_processor.MetricsProcessor(
            datacatalog_project_id, datacatalog_location_id,
            self._ENTRY_GROUP_ID, enable_monitoring, self._task_id)