Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"MD007": false,
"MD013": false,
"MD024": false,
"MD033": false,
"MD036": false,
"MD041": false,
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ workflow:

## Repository Structure

```
```text
ngraph/ # Python package source
dsl/ # Scenario parsing and blueprint expansion
model/ # Network and flow domain models
Expand Down
4 changes: 2 additions & 2 deletions dev/dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ make docs-serve # Serve docs locally

## Key Development Files

```
```text
pyproject.toml # Package config, dependencies, tool settings
Makefile # Development commands
.pre-commit-config.yaml # Code quality hooks
Expand All @@ -29,7 +29,7 @@ dev/run-checks.sh # Manual code quality checks

## Git Workflows

```
```text
.github/workflows/
├── python-test.yml # CI: tests, linting, type checking
├── docs.yml # Auto-deploy documentation
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/clos-fabric.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ print("Uneven WCMP:", wcmp)

Example output:

```
```text
Baseline ECMP: {('b1|b2', 'b1|b2'): 256.0}
Baseline WCMP: {('b1|b2', 'b1|b2'): 256.0}
Uneven ECMP: {('b1|b2', 'b1|b2'): 64.0}
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/api-full.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ Typical usage example:
- `workflow` (List[WorkflowStep])
- `failure_policy_set` (FailurePolicySet) = FailurePolicySet(policies={})
- `traffic_matrix_set` (TrafficMatrixSet) = TrafficMatrixSet(matrices={})
- `results` (Results) = Results(_store={}, _metadata={}, _active_step=None, _scenario={})
- `results` (Results) = Results(\_store={}, \_metadata={}, \_active_step=None, \_scenario={})
- `components_library` (ComponentsLibrary) = ComponentsLibrary(components={})
- `seed` (Optional[int])

Expand Down
4 changes: 2 additions & 2 deletions docs/reference/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ These configurations enable realistic modeling of diverse forwarding behaviors:
For traffic matrix placement, NetGraph provides `FlowPolicyPreset` values that bundle the routing semantics described above into convenient configurations. These presets map to real-world network behaviors:

| Preset | Behavior | Use Case |
|--------|----------|----------|
| -------- | ---------- | ---------- |
| `SHORTEST_PATHS_ECMP` | IP/IGP with hash-based ECMP | Traditional routers (OSPF/IS-IS), equal splits across equal-cost paths |
| `SHORTEST_PATHS_WCMP` | IP/IGP with weighted ECMP | Routers with WCMP support, proportional splits based on link capacity |
| `TE_WCMP_UNLIM` | MPLS-TE / SDN with WCMP | Capacity-aware TE with unlimited tunnels, iterative placement |
Expand All @@ -556,7 +556,7 @@ For traffic matrix placement, NetGraph provides `FlowPolicyPreset` values that b
**Detailed Configuration Mapping (preset internals):**

| Preset | `require_capacity` | `multi_edge` | `max_flow_count` | `flow_placement` |
|--------|--------------------|--------------|------------------|------------------|
| -------- | -------------------- | -------------- | ------------------ | ------------------ |
| `SHORTEST_PATHS_ECMP` | `false` | `true` | `1` | `EQUAL_BALANCED` |
| `SHORTEST_PATHS_WCMP` | `false` | `true` | `1` | `PROPORTIONAL` |
| `TE_WCMP_UNLIM` | `true` | `true` | unlimited | `PROPORTIONAL` |
Expand Down
20 changes: 10 additions & 10 deletions docs/reference/dsl.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,16 @@ network:
links:
- source: SEA
target: SFO
link_params:
capacity: 200
cost: 6846
risk_groups: ["RiskGroup1", "RiskGroup2"]
attrs:
distance_km: 1369.13
media_type: "fiber"
hardware:
source: {component: "800G-ZR+", count: 1}
target: {component: "1600G-2xDR4", count: 1}
link_params:
capacity: 200
cost: 6846
risk_groups: ["RiskGroup1", "RiskGroup2"]
attrs:
distance_km: 1369.13
media_type: "fiber"
hardware:
source: {component: "800G-ZR+", count: 1}
target: {component: "1600G-2xDR4", count: 1}
```

Recognized keys for each link entry:
Expand Down
12 changes: 6 additions & 6 deletions docs/reference/workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ workflow:
- step_type: MaximumSupportedDemand
name: msd_baseline
matrix_name: baseline_traffic_matrix
- step_type: TrafficMatrixPlacement
name: tm_placement
matrix_name: baseline_traffic_matrix
failure_policy: random_failures
iterations: 1000
baseline: true
- step_type: TrafficMatrixPlacement
name: tm_placement
matrix_name: baseline_traffic_matrix
failure_policy: random_failures
iterations: 1000
baseline: true
```

## Execution Model
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ The integration tests framework follows a **hybrid approach** for template usage
### Template Selection Guide

| Test Type | Recommended Approach | Example |
|-----------|---------------------|---------|
| ----------- | --------------------- | --------- |
| Basic Integration | YAML files + template variants | `test_scenario_1.py` |
| Error Cases | Template builders | `ErrorInjectionTemplates.missing_nodes_builder()` |
| Edge Cases | Template builders | `EdgeCaseTemplates.empty_network_builder()` |
Expand Down