Skip to content

Validate & Submit

"""Validate a workflow YAML locally, then (dry-run) submit it.

This script doesn't actually submit unless ``OSMO_TARGET_POOL`` is set -
otherwise it just prints what it *would* do.

Run:
    OSMO_TARGET_POOL=my-pool python examples/02_validate_and_submit.py path/to/workflow.yaml
"""
from __future__ import annotations

import json
import os
import sys

from strands_osmo import osmo_workflow_submit, osmo_workflow_validate


def main() -> None:
    workflow = sys.argv[1] if len(sys.argv) > 1 else "../OSMO/cookbook/groot/groot_finetune/groot_finetune.yaml"
    pool = os.getenv("OSMO_TARGET_POOL", "")

    print(f"=== osmo_workflow_validate({workflow}) ===")
    validate = osmo_workflow_validate(workflow_yaml=workflow)
    print(json.dumps(validate, indent=2, default=str))

    if validate.get("status") != "success":
        print("\nValidation failed - not submitting.")
        return

    if not pool:
        print("\nOSMO_TARGET_POOL not set - skipping submit (dry run).")
        print(f"To submit: OSMO_TARGET_POOL=<pool> python {sys.argv[0]} {workflow}")
        return

    print(f"\n=== osmo_workflow_submit(..., pool={pool}) ===")
    result = osmo_workflow_submit(workflow_yaml=workflow, pool=pool)
    print(json.dumps(result, indent=2, default=str))


if __name__ == "__main__":
    main()