Skip to content

Sample report

This is the report.html cloudg writes at the end of cloudg run, cloudg ingest and cloudg report, built from a synthetic estate that spans AWS, Azure and GCP. Every account ID, ARN and finding in it is made up, so nothing here describes a real environment.

Open full screen How to read a report

Where it comes from

The direct address of the file is morpheuslord.github.io/cloudg/sample-report.html. It is rebuilt from the fixtures the MCP test suite uses, with no cloud access, by a script in the repository:

python scripts/build_sample_report.py              # writes site/static/sample-report.html
python scripts/build_sample_report.py --out ./tmp  # or anywhere else

The script is a few lines around the same classes you would use yourself. Run it from a clone of the repository, because the fixtures live in tests/:

build_sample_report.py
from cloudg.graph.builder import GraphBuilder
from cloudg.renderers.html_report import HTMLReportGenerator
from cloudg.schema.models import ScanResult
from tests.mcp.fixtures import sample_estate

inv = sample_estate.build_inventory()
result = ScanResult(
    assets=inv.assets,
    edges=inv.edges,
    findings=sample_estate.findings(),
    compliance=sample_estate.compliance(),
)
graph = GraphBuilder()
graph.build(inv.assets, inv.edges)

path = HTMLReportGenerator(output_dir="./tmp").generate(
    result, graph_json=graph.to_d3_json(), filename="sample-report.html"
)
print(path)

The page is a single self-contained file: Chart.js and D3 are inlined (report.inline_js, on by default), so it works offline and can be mailed or attached to a ticket as it is. Reports explains each tab, and Output files lists what else a run writes next to it.