Skip to content

Operator Runbook

WebbinRoot edited this page Jul 28, 2026 · 2 revisions

Operator Runbook

This page is for recurring execution, validation, and release readiness.

For first-time setup, use Getting Started.

Standard Daily Flow

  1. Set active profile and scope:
creds list
creds swap <credname>
compartments set
  1. Enumerate baseline data:
modules run enum_comp
modules run enum_all --download --get --comp --opengraph
  1. Build OpenGraph output:
modules run process_oracle_cloud_hound_data --reset --out opengraph.json
  1. Export operator review artifacts (Excel export needs the optional [excel] extra — pip install "ocinferno[excel]"):
data export excel --out-dir ./report_excel

Persistence Behavior

  • Enumeration modules always persist their results to the DB as they run — there is no --save/--no-save opt-in flag on the module runner.
  • To review saved workspace configuration after enumeration:
configs list
data sql --db service "SELECT count(*) FROM identity_users"

Output Location Guidelines

  • Default output root: ./ocinferno_output
  • Prefer explicit output paths for repeatable investigations:
modules run process_oracle_cloud_hound_data --out ./artifacts/opengraph.json
data export json --out-dir ./artifacts/export_json
  • Default OpenGraph export path (without --out): ./ocinferno_output/<workspace_id>_<workspace_name>/exports/opengraph/<compartment_or_tenancy_ocid>/bloodhound/oracle_cloud_hound.json

Release Gate (OpenGraph + Core)

Run before merging graph-model or edge-behavior changes:

PYTHONPATH=. pytest -q \
  tests/integration/opengraph_golden_iam/test_opengraph_golden_scenarios.py \
  tests/integration/opengraph_basic_group_membership/test_group_membership_graph_builder.py \
  tests/integration/opengraph_dynamic_group_membership/test_dynamic_group_membership_graph_builder.py \
  tests/integration/test_smoke_export_and_logging_pipeline.py

PYTHONPATH=. pytest -q tests/unit

Golden Refresh Procedure

When a behavior change is intentional:

OCINFERNO_REGEN_GOLDEN=1 PYTHONPATH=. pytest -q \
  tests/integration/opengraph_golden_iam/test_opengraph_golden_scenarios.py \
  tests/integration/opengraph_basic_group_membership/test_group_membership_graph_builder.py \
  tests/integration/opengraph_dynamic_group_membership/test_dynamic_group_membership_graph_builder.py

Then rerun the full release gate commands above.

Troubleshooting Quick Checks

  1. Missing OpenGraph edges: verify the source enum module actually ran (and against the right compartment scope) -- enumeration always persists results, so a gap usually means the module wasn't run there yet.
  2. Identity-domain edge gaps: rerun enum_identity in the target scope.
  3. Empty graph sections: confirm whether --include-all is needed for your analysis mode.
  4. Golden mismatches: only use OCINFERNO_REGEN_GOLDEN=1 when behavior changes are intentional.

Related References

Clone this wiki locally