in utils/local_remote_settings/__main__.py [0:0]
def main() -> None:
parser = argparse.ArgumentParser(
description=__doc__,
# Preserves whitespace in the help text.
formatter_class=argparse.RawTextHelpFormatter,
)
parser.add_argument(
"--sync_remote_settings",
action="store_true",
help="Mirror the production Remote Settings models",
)
parser.add_argument(
"--taskgroup_ids",
type=str,
help="Task groups that contain an export- task, or train actions.",
nargs="*",
)
parser.add_argument(
"--export_task_id",
type=str,
help="The export-{src}-{trg} task id to use for models",
nargs="*",
)
args = parser.parse_args()
taskgroup_ids: list[str] = args.taskgroup_ids or []
export_task_ids: list[str] = args.export_task_id or []
sync_remote_settings: bool = args.sync_remote_settings
if not sync_remote_settings and not export_task_ids and not taskgroup_ids:
# Print the help when nothing is provided.
print("--sync_remote_settings, --export_task_ids, or --taskgroup_ids must be provided\n")
parser.print_help()
sys.exit(0)
if sync_remote_settings and (export_task_ids or taskgroup_ids):
print("--sync_remote_settings can not be used with --export_task_ids or --taskgroup_ids")
sys.exit(1)
docker = DockerContainerManager(
container_name="translations-remote-settings",
image="mozilla/remote-settings",
volumes={
str(attachments_path): "/tmp/attachments",
str(mount_path): "/app/mount",
},
env_vars={"KINTO_INI": "mount/translations.ini"},
ports={8888: 8888},
)
logger.info("Starting remote settings")
docker.start()
# Initialize Remote Settings.
wait_for_remote_settings()
remote_settings = Client(server_url="http://localhost:8888/v1")
create_remote_settings_environment(remote_settings)
# The Wasm will be used from the production Remote Settings.
sync_records(remote_settings, wasm_collection, WasmResponse, WasmRecord)
if taskgroup_ids or export_task_ids:
# Pull specific models from Taskcluster.
queue = taskcluster.Queue({"rootUrl": "https://firefox-ci-tc.services.mozilla.com"})
for taskgroup_id in taskgroup_ids:
add_model_from_taskgroup_id(queue, remote_settings, taskgroup_id)
for task_id in export_task_ids:
add_model_from_export_task_id(queue, remote_settings, task_id)
else:
# Sync records from the production Remote Settings.
sync_records(remote_settings, models_collection, ModelsResponse, ModelRecord)
log_records(remote_settings)
docker.wait()