├── .gitignore ├── CONTRIBUTING ├── LICENSE ├── README.md ├── appengine ├── __init__.py ├── build_reporter │ ├── app.sh │ ├── app_template.yaml │ ├── appengine_config.py │ ├── build_report_template.html │ ├── main.py │ ├── main_test.py │ ├── requirements.txt │ └── test_data │ │ ├── __init__.py │ │ └── pubsub_msgs.py ├── initiator │ ├── app.sh │ ├── app_template.yaml │ ├── bigquery_client.py │ ├── bigquery_client_integration_test.py │ ├── bigquery_client_test.py │ ├── main.py │ ├── main_test.py │ ├── models │ │ ├── __init__.py │ │ ├── initiator_task.py │ │ ├── initiator_task_test.py │ │ └── operation_counts.py │ ├── pubsub_client.py │ ├── pubsub_client_test.py │ ├── queries │ │ ├── items_to_delete.sql │ │ ├── items_to_prevent_expiring.sql │ │ └── items_to_upsert.sql │ ├── queries_test │ │ └── dummy_query.sql │ ├── queue.yaml │ ├── requirements.txt │ ├── storage_client.py │ ├── storage_client_test.py │ ├── tasks_client.py │ ├── tasks_client_test.py │ └── test_runner.py ├── mailer │ ├── app.sh │ ├── app_template.yaml │ ├── appengine_config.py │ ├── completion_mail.html │ ├── completion_mail_local_feed.html │ ├── main.py │ ├── main_test.py │ ├── models │ │ ├── __init__.py │ │ ├── run_result.py │ │ └── run_result_test.py │ ├── requirements.txt │ └── runner.py └── uploader │ ├── __init__.py │ ├── app.sh │ ├── app_template.yaml │ ├── batch_creator.py │ ├── batch_creator_test.py │ ├── bigquery_client.py │ ├── bigquery_client_integration_test.py │ ├── bigquery_client_test.py │ ├── config │ └── shoptimizer_config.json │ ├── constants.py │ ├── constants_for_testing.py │ ├── content_api_client.py │ ├── content_api_client_test.py │ ├── content_api_helper.py │ ├── content_api_helper_integration_test.py │ ├── main.py │ ├── main_test.py │ ├── models │ ├── failure.py │ ├── process_result.py │ ├── process_result_test.py │ ├── upload_task.py │ └── upload_task_test.py │ ├── requirements.txt │ ├── result_recorder.py │ ├── result_recorder_integration_test.py │ ├── result_recorder_test.py │ ├── shoptimizer_client.py │ ├── shoptimizer_client_test.py │ ├── tasks_client.py │ ├── tasks_client_test.py │ ├── test_runner.py │ ├── test_utils.py │ ├── utils.py │ └── utils_test.py ├── archive_bucket_lifecycle.json ├── cicd ├── deploy_functions_calculate_product_changes.yaml ├── deploy_functions_import_file_into_bq.yaml ├── deploy_functions_retry_feed_import.yaml ├── deploy_functions_trigger_dag.yaml ├── deploy_gae.yaml └── deploy_monitor.yaml ├── cloud_functions ├── bq-stage-changes │ ├── main.py │ ├── main_test.py │ ├── queries.py │ └── requirements.txt ├── gcs-bq-feed-load │ ├── main.py │ ├── main_test.py │ └── requirements.txt ├── gcs-bq-retry-feed-load │ ├── main.py │ ├── main_integration_test.py │ ├── main_test.py │ └── requirements.txt └── trigger-monitor-dag-function │ ├── main.py │ ├── main_test.py │ └── requirements.txt ├── composer ├── Pipfile ├── completion_monitor │ ├── config │ │ └── variables_template.json │ ├── dags │ │ ├── completion_monitor_dag.py │ │ ├── completion_monitor_dag_test.py │ │ └── queries │ │ │ └── update_items_expiration_tracking.sql │ └── requirements.txt ├── get_cc_client_id.py ├── get_cc_client_id_test.py └── sfo_plugin │ ├── __init__.py │ └── operators │ ├── bq_to_pubsub_operator.py │ ├── bq_to_pubsub_operator_test.py │ ├── clean_up_operator.py │ ├── clean_up_operator_test.py │ ├── queries │ ├── dummy_query.sql │ └── last_process_result.sql │ ├── wait_for_completion_operator.py │ └── wait_for_completion_operator_test.py ├── documentation └── maintenance-guide.md ├── e2e_test ├── api_clients │ ├── content_api_client.py │ ├── content_api_client_test.py │ └── test_content_api_responses │ │ ├── content_discovery.json │ │ ├── delete_error.json │ │ ├── delete_one_success_one_error.json │ │ ├── delete_success.json │ │ ├── list_empty.json │ │ ├── list_error.json │ │ └── list_success.json ├── cloud_function_tests │ ├── upload_feeds_and_test_delete_count.sh │ ├── upload_feeds_and_test_retry_failed_file.sh │ └── upload_feeds_and_test_upsert_count.sh ├── dags │ ├── e2e_test_dag.py │ └── e2e_test_dag_test.py └── requirements_dev.txt ├── env.sh ├── feed_schema_config.json ├── feed_schema_config_local.json ├── img └── CodeSharingDesign.png ├── initiate_feed_upload.sh ├── install_to_gcp.sh └── stackdriver_alerts ├── app-engine-merchant-info-invalid-errors-policy.yaml ├── app-engine-merchant-info-not-found-errors-policy.yaml ├── app-engine-process-batch-errors-policy.yaml ├── app-engine-record-per-item-results-errors-policy.yaml ├── app-engine-record-result-errors-policy.yaml ├── app-engine-task-hostname-errors-policy.yaml ├── app-engine-task-parse-errors-policy.yaml ├── attempted-files-retrieval-errors-policy.yaml ├── bq-load-errors-policy.yaml ├── calculate-changes-function-errors-policy.yaml ├── calculate-deletes-query-errors-policy.yaml ├── calculate-inserts-query-errors-policy.yaml ├── calculate-updates-query-errors-policy.yaml ├── content-api-call-log-errors-policy.yaml ├── content-api-item-insert-errors-policy.yaml ├── count-deletes-query-errors-policy.yaml ├── count-upserts-query-errors-policy.yaml ├── create-task-empty-response-errors-policy.yaml ├── create-task-exception-errors-policy.yaml ├── delete-imported-filenames-errors-policy.yaml ├── deletes-threshold-errors-policy.yaml ├── eof-exists-during-import-errors-policy.yaml ├── eof-lock-check-errors-policy.yaml ├── eof-lock-failed-errors-policy.yaml ├── eof-locked-errors-policy.yaml ├── eof-unlock-failed-errors-policy.yaml ├── files-to-archive-retrieval-errors-policy.yaml ├── get-changes-count-query-errors-policy.yaml ├── import-function-timeout-errors-policy.yaml ├── import-storage-file-function-errors-policy.yaml ├── imported-files-retrieval-errors-policy.yaml ├── invalid-eof-errors-policy.yaml ├── nonexistent-table-errors-policy.yaml ├── schema-config-errors-calc-policy.yaml ├── schema-config-errors-load-policy.yaml └── upserts-threshold-errors-policy.yaml /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/.gitignore -------------------------------------------------------------------------------- /CONTRIBUTING: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/CONTRIBUTING -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/README.md -------------------------------------------------------------------------------- /appengine/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/__init__.py -------------------------------------------------------------------------------- /appengine/build_reporter/app.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/app.sh -------------------------------------------------------------------------------- /appengine/build_reporter/app_template.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/app_template.yaml -------------------------------------------------------------------------------- /appengine/build_reporter/appengine_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/appengine_config.py -------------------------------------------------------------------------------- /appengine/build_reporter/build_report_template.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/build_report_template.html -------------------------------------------------------------------------------- /appengine/build_reporter/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/main.py -------------------------------------------------------------------------------- /appengine/build_reporter/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/main_test.py -------------------------------------------------------------------------------- /appengine/build_reporter/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/requirements.txt -------------------------------------------------------------------------------- /appengine/build_reporter/test_data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/test_data/__init__.py -------------------------------------------------------------------------------- /appengine/build_reporter/test_data/pubsub_msgs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/build_reporter/test_data/pubsub_msgs.py -------------------------------------------------------------------------------- /appengine/initiator/app.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/app.sh -------------------------------------------------------------------------------- /appengine/initiator/app_template.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/app_template.yaml -------------------------------------------------------------------------------- /appengine/initiator/bigquery_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/bigquery_client.py -------------------------------------------------------------------------------- /appengine/initiator/bigquery_client_integration_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/bigquery_client_integration_test.py -------------------------------------------------------------------------------- /appengine/initiator/bigquery_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/bigquery_client_test.py -------------------------------------------------------------------------------- /appengine/initiator/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/main.py -------------------------------------------------------------------------------- /appengine/initiator/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/main_test.py -------------------------------------------------------------------------------- /appengine/initiator/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/models/__init__.py -------------------------------------------------------------------------------- /appengine/initiator/models/initiator_task.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/models/initiator_task.py -------------------------------------------------------------------------------- /appengine/initiator/models/initiator_task_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/models/initiator_task_test.py -------------------------------------------------------------------------------- /appengine/initiator/models/operation_counts.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/models/operation_counts.py -------------------------------------------------------------------------------- /appengine/initiator/pubsub_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/pubsub_client.py -------------------------------------------------------------------------------- /appengine/initiator/pubsub_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/pubsub_client_test.py -------------------------------------------------------------------------------- /appengine/initiator/queries/items_to_delete.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/queries/items_to_delete.sql -------------------------------------------------------------------------------- /appengine/initiator/queries/items_to_prevent_expiring.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/queries/items_to_prevent_expiring.sql -------------------------------------------------------------------------------- /appengine/initiator/queries/items_to_upsert.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/queries/items_to_upsert.sql -------------------------------------------------------------------------------- /appengine/initiator/queries_test/dummy_query.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/queries_test/dummy_query.sql -------------------------------------------------------------------------------- /appengine/initiator/queue.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/queue.yaml -------------------------------------------------------------------------------- /appengine/initiator/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/requirements.txt -------------------------------------------------------------------------------- /appengine/initiator/storage_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/storage_client.py -------------------------------------------------------------------------------- /appengine/initiator/storage_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/storage_client_test.py -------------------------------------------------------------------------------- /appengine/initiator/tasks_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/tasks_client.py -------------------------------------------------------------------------------- /appengine/initiator/tasks_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/tasks_client_test.py -------------------------------------------------------------------------------- /appengine/initiator/test_runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/initiator/test_runner.py -------------------------------------------------------------------------------- /appengine/mailer/app.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/app.sh -------------------------------------------------------------------------------- /appengine/mailer/app_template.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/app_template.yaml -------------------------------------------------------------------------------- /appengine/mailer/appengine_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/appengine_config.py -------------------------------------------------------------------------------- /appengine/mailer/completion_mail.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/completion_mail.html -------------------------------------------------------------------------------- /appengine/mailer/completion_mail_local_feed.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/completion_mail_local_feed.html -------------------------------------------------------------------------------- /appengine/mailer/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/main.py -------------------------------------------------------------------------------- /appengine/mailer/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/main_test.py -------------------------------------------------------------------------------- /appengine/mailer/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/models/__init__.py -------------------------------------------------------------------------------- /appengine/mailer/models/run_result.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/models/run_result.py -------------------------------------------------------------------------------- /appengine/mailer/models/run_result_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/models/run_result_test.py -------------------------------------------------------------------------------- /appengine/mailer/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/requirements.txt -------------------------------------------------------------------------------- /appengine/mailer/runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/mailer/runner.py -------------------------------------------------------------------------------- /appengine/uploader/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/__init__.py -------------------------------------------------------------------------------- /appengine/uploader/app.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/app.sh -------------------------------------------------------------------------------- /appengine/uploader/app_template.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/app_template.yaml -------------------------------------------------------------------------------- /appengine/uploader/batch_creator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/batch_creator.py -------------------------------------------------------------------------------- /appengine/uploader/batch_creator_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/batch_creator_test.py -------------------------------------------------------------------------------- /appengine/uploader/bigquery_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/bigquery_client.py -------------------------------------------------------------------------------- /appengine/uploader/bigquery_client_integration_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/bigquery_client_integration_test.py -------------------------------------------------------------------------------- /appengine/uploader/bigquery_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/bigquery_client_test.py -------------------------------------------------------------------------------- /appengine/uploader/config/shoptimizer_config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/config/shoptimizer_config.json -------------------------------------------------------------------------------- /appengine/uploader/constants.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/constants.py -------------------------------------------------------------------------------- /appengine/uploader/constants_for_testing.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/constants_for_testing.py -------------------------------------------------------------------------------- /appengine/uploader/content_api_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/content_api_client.py -------------------------------------------------------------------------------- /appengine/uploader/content_api_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/content_api_client_test.py -------------------------------------------------------------------------------- /appengine/uploader/content_api_helper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/content_api_helper.py -------------------------------------------------------------------------------- /appengine/uploader/content_api_helper_integration_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/content_api_helper_integration_test.py -------------------------------------------------------------------------------- /appengine/uploader/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/main.py -------------------------------------------------------------------------------- /appengine/uploader/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/main_test.py -------------------------------------------------------------------------------- /appengine/uploader/models/failure.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/models/failure.py -------------------------------------------------------------------------------- /appengine/uploader/models/process_result.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/models/process_result.py -------------------------------------------------------------------------------- /appengine/uploader/models/process_result_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/models/process_result_test.py -------------------------------------------------------------------------------- /appengine/uploader/models/upload_task.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/models/upload_task.py -------------------------------------------------------------------------------- /appengine/uploader/models/upload_task_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/models/upload_task_test.py -------------------------------------------------------------------------------- /appengine/uploader/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/requirements.txt -------------------------------------------------------------------------------- /appengine/uploader/result_recorder.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/result_recorder.py -------------------------------------------------------------------------------- /appengine/uploader/result_recorder_integration_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/result_recorder_integration_test.py -------------------------------------------------------------------------------- /appengine/uploader/result_recorder_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/result_recorder_test.py -------------------------------------------------------------------------------- /appengine/uploader/shoptimizer_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/shoptimizer_client.py -------------------------------------------------------------------------------- /appengine/uploader/shoptimizer_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/shoptimizer_client_test.py -------------------------------------------------------------------------------- /appengine/uploader/tasks_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/tasks_client.py -------------------------------------------------------------------------------- /appengine/uploader/tasks_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/tasks_client_test.py -------------------------------------------------------------------------------- /appengine/uploader/test_runner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/test_runner.py -------------------------------------------------------------------------------- /appengine/uploader/test_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/test_utils.py -------------------------------------------------------------------------------- /appengine/uploader/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/utils.py -------------------------------------------------------------------------------- /appengine/uploader/utils_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/appengine/uploader/utils_test.py -------------------------------------------------------------------------------- /archive_bucket_lifecycle.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/archive_bucket_lifecycle.json -------------------------------------------------------------------------------- /cicd/deploy_functions_calculate_product_changes.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cicd/deploy_functions_calculate_product_changes.yaml -------------------------------------------------------------------------------- /cicd/deploy_functions_import_file_into_bq.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cicd/deploy_functions_import_file_into_bq.yaml -------------------------------------------------------------------------------- /cicd/deploy_functions_retry_feed_import.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cicd/deploy_functions_retry_feed_import.yaml -------------------------------------------------------------------------------- /cicd/deploy_functions_trigger_dag.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cicd/deploy_functions_trigger_dag.yaml -------------------------------------------------------------------------------- /cicd/deploy_gae.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cicd/deploy_gae.yaml -------------------------------------------------------------------------------- /cicd/deploy_monitor.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cicd/deploy_monitor.yaml -------------------------------------------------------------------------------- /cloud_functions/bq-stage-changes/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/bq-stage-changes/main.py -------------------------------------------------------------------------------- /cloud_functions/bq-stage-changes/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/bq-stage-changes/main_test.py -------------------------------------------------------------------------------- /cloud_functions/bq-stage-changes/queries.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/bq-stage-changes/queries.py -------------------------------------------------------------------------------- /cloud_functions/bq-stage-changes/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/bq-stage-changes/requirements.txt -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-feed-load/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-feed-load/main.py -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-feed-load/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-feed-load/main_test.py -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-feed-load/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-feed-load/requirements.txt -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-retry-feed-load/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-retry-feed-load/main.py -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-retry-feed-load/main_integration_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-retry-feed-load/main_integration_test.py -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-retry-feed-load/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-retry-feed-load/main_test.py -------------------------------------------------------------------------------- /cloud_functions/gcs-bq-retry-feed-load/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/gcs-bq-retry-feed-load/requirements.txt -------------------------------------------------------------------------------- /cloud_functions/trigger-monitor-dag-function/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/trigger-monitor-dag-function/main.py -------------------------------------------------------------------------------- /cloud_functions/trigger-monitor-dag-function/main_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/trigger-monitor-dag-function/main_test.py -------------------------------------------------------------------------------- /cloud_functions/trigger-monitor-dag-function/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/cloud_functions/trigger-monitor-dag-function/requirements.txt -------------------------------------------------------------------------------- /composer/Pipfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/Pipfile -------------------------------------------------------------------------------- /composer/completion_monitor/config/variables_template.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/completion_monitor/config/variables_template.json -------------------------------------------------------------------------------- /composer/completion_monitor/dags/completion_monitor_dag.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/completion_monitor/dags/completion_monitor_dag.py -------------------------------------------------------------------------------- /composer/completion_monitor/dags/completion_monitor_dag_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/completion_monitor/dags/completion_monitor_dag_test.py -------------------------------------------------------------------------------- /composer/completion_monitor/dags/queries/update_items_expiration_tracking.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/completion_monitor/dags/queries/update_items_expiration_tracking.sql -------------------------------------------------------------------------------- /composer/completion_monitor/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/completion_monitor/requirements.txt -------------------------------------------------------------------------------- /composer/get_cc_client_id.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/get_cc_client_id.py -------------------------------------------------------------------------------- /composer/get_cc_client_id_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/get_cc_client_id_test.py -------------------------------------------------------------------------------- /composer/sfo_plugin/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/__init__.py -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/bq_to_pubsub_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/bq_to_pubsub_operator.py -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/bq_to_pubsub_operator_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/bq_to_pubsub_operator_test.py -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/clean_up_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/clean_up_operator.py -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/clean_up_operator_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/clean_up_operator_test.py -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/queries/dummy_query.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/queries/dummy_query.sql -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/queries/last_process_result.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/queries/last_process_result.sql -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/wait_for_completion_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/wait_for_completion_operator.py -------------------------------------------------------------------------------- /composer/sfo_plugin/operators/wait_for_completion_operator_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/composer/sfo_plugin/operators/wait_for_completion_operator_test.py -------------------------------------------------------------------------------- /documentation/maintenance-guide.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/documentation/maintenance-guide.md -------------------------------------------------------------------------------- /e2e_test/api_clients/content_api_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/content_api_client.py -------------------------------------------------------------------------------- /e2e_test/api_clients/content_api_client_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/content_api_client_test.py -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/content_discovery.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/test_content_api_responses/content_discovery.json -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/delete_error.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/test_content_api_responses/delete_error.json -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/delete_one_success_one_error.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/test_content_api_responses/delete_one_success_one_error.json -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/delete_success.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/test_content_api_responses/delete_success.json -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/list_empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "kind": "content#productsListResponse" 3 | } 4 | -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/list_error.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/test_content_api_responses/list_error.json -------------------------------------------------------------------------------- /e2e_test/api_clients/test_content_api_responses/list_success.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/api_clients/test_content_api_responses/list_success.json -------------------------------------------------------------------------------- /e2e_test/cloud_function_tests/upload_feeds_and_test_delete_count.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/cloud_function_tests/upload_feeds_and_test_delete_count.sh -------------------------------------------------------------------------------- /e2e_test/cloud_function_tests/upload_feeds_and_test_retry_failed_file.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/cloud_function_tests/upload_feeds_and_test_retry_failed_file.sh -------------------------------------------------------------------------------- /e2e_test/cloud_function_tests/upload_feeds_and_test_upsert_count.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/cloud_function_tests/upload_feeds_and_test_upsert_count.sh -------------------------------------------------------------------------------- /e2e_test/dags/e2e_test_dag.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/dags/e2e_test_dag.py -------------------------------------------------------------------------------- /e2e_test/dags/e2e_test_dag_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/dags/e2e_test_dag_test.py -------------------------------------------------------------------------------- /e2e_test/requirements_dev.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/e2e_test/requirements_dev.txt -------------------------------------------------------------------------------- /env.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/env.sh -------------------------------------------------------------------------------- /feed_schema_config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/feed_schema_config.json -------------------------------------------------------------------------------- /feed_schema_config_local.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/feed_schema_config_local.json -------------------------------------------------------------------------------- /img/CodeSharingDesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/img/CodeSharingDesign.png -------------------------------------------------------------------------------- /initiate_feed_upload.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/initiate_feed_upload.sh -------------------------------------------------------------------------------- /install_to_gcp.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/install_to_gcp.sh -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-merchant-info-invalid-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-merchant-info-invalid-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-merchant-info-not-found-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-merchant-info-not-found-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-process-batch-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-process-batch-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-record-per-item-results-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-record-per-item-results-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-record-result-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-record-result-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-task-hostname-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-task-hostname-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/app-engine-task-parse-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/app-engine-task-parse-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/attempted-files-retrieval-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/attempted-files-retrieval-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/bq-load-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/bq-load-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/calculate-changes-function-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/calculate-changes-function-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/calculate-deletes-query-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/calculate-deletes-query-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/calculate-inserts-query-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/calculate-inserts-query-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/calculate-updates-query-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/calculate-updates-query-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/content-api-call-log-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/content-api-call-log-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/content-api-item-insert-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/content-api-item-insert-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/count-deletes-query-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/count-deletes-query-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/count-upserts-query-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/count-upserts-query-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/create-task-empty-response-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/create-task-empty-response-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/create-task-exception-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/create-task-exception-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/delete-imported-filenames-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/delete-imported-filenames-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/deletes-threshold-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/deletes-threshold-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/eof-exists-during-import-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/eof-exists-during-import-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/eof-lock-check-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/eof-lock-check-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/eof-lock-failed-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/eof-lock-failed-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/eof-locked-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/eof-locked-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/eof-unlock-failed-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/eof-unlock-failed-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/files-to-archive-retrieval-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/files-to-archive-retrieval-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/get-changes-count-query-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/get-changes-count-query-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/import-function-timeout-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/import-function-timeout-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/import-storage-file-function-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/import-storage-file-function-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/imported-files-retrieval-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/imported-files-retrieval-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/invalid-eof-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/invalid-eof-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/nonexistent-table-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/nonexistent-table-errors-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/schema-config-errors-calc-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/schema-config-errors-calc-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/schema-config-errors-load-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/schema-config-errors-load-policy.yaml -------------------------------------------------------------------------------- /stackdriver_alerts/upserts-threshold-errors-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/feedloader/HEAD/stackdriver_alerts/upserts-threshold-errors-policy.yaml --------------------------------------------------------------------------------