Model YAML
types: - name: PowerFeed inputs: [] - name: CoolingPlant inputs: [] - name: WAN inputs: [] - name: Datacenter inputs: [PowerFeed, CoolingPlant, WAN] - name: Room inputs: [Datacenter] - name: Row inputs: [Room] - name: Rack inputs: [Row] - name: CoreSwitch inputs: [Datacenter, WAN] - name: ToR inputs: [Rack, CoreSwitch] - name: PDU inputs: [Rack, PowerFeed] - name: Server inputs: [Rack, PDU, ToR] - name: Database inputs: [Server] - name: Cache inputs: [Server] - name: AppService inputs: [Server, Database, Cache] - name: LoadBalancer inputs: [AppService, CoreSwitch] - name: API inputs: [LoadBalancer] - name: User inputs: [API]
Apply
Data YAML
nodes: # External providers - id: pf1 type: PowerFeed label: Utility A - id: pf2 type: PowerFeed label: Utility B (redundant) - id: cool1 type: CoolingPlant label: Chiller Plant - id: wan1 type: WAN label: ISP-A # Facility - id: dc1 type: Datacenter label: DC-RBX - id: room1 type: Room label: Room A - id: room2 type: Room label: Room B - id: row1a type: Row label: Row A1 - id: row2a type: Row label: Row B1 - id: rack1 type: Rack label: Rack A1-01 - id: rack2 type: Rack label: Rack B1-01 # Network & power (redundant cores and feeds) - id: core1 type: CoreSwitch label: Core RBX A - id: core2 type: CoreSwitch label: Core RBX B (redundant) - id: tor1 type: ToR label: ToR A1-01 - id: tor2 type: ToR label: ToR B1-01 - id: pdu1 type: PDU label: PDU A1-01 - id: pdu2 type: PDU label: PDU B1-01 # Compute nodes - id: srv1 type: Server label: App Server A - id: srv2 type: Server label: App Server B - id: srvdb1 type: Server label: DB Server A - id: srvdb2 type: Server label: DB Server B (redundant) - id: srvcache type: Server label: Cache Server # Platform/services (redundant DBs and LBs) - id: db1 type: Database label: Customer DB A - id: db2 type: Database label: Customer DB B (redundant) - id: cache1 type: Cache label: Redis Cache - id: app1 type: AppService label: Orders Service - id: lb1 type: LoadBalancer label: Public LB A - id: lb2 type: LoadBalancer label: Public LB B (redundant) - id: api1 type: API label: Orders API # End users - id: users_mobile type: User label: Mobile Users - id: users_web type: User label: Web Users links: # Providers feed the DC - from: pf1 to: dc1 - from: pf2 to: dc1 - from: cool1 to: dc1 - from: wan1 to: dc1 # Facility hierarchy - from: dc1 to: room1 - from: dc1 to: room2 - from: room1 to: row1a - from: room2 to: row2a - from: row1a to: rack1 - from: row2a to: rack2 # Core depends on DC and WAN (two cores for redundancy) - from: dc1 to: core1 - from: wan1 to: core1 - from: dc1 to: core2 - from: wan1 to: core2 # ToRs depend on their Rack and both Cores (dual uplinks) - from: rack1 to: tor1 - from: core1 to: tor1 - from: core2 to: tor1 - from: rack2 to: tor2 - from: core1 to: tor2 - from: core2 to: tor2 # PDUs: each Rack with dual feeds (A/B) - from: rack1 to: pdu1 - from: pf1 to: pdu1 - from: pf2 to: pdu1 - from: rack2 to: pdu2 - from: pf1 to: pdu2 - from: pf2 to: pdu2 # Servers depend on Rack + PDU + ToR - from: rack1 to: srv1 - from: pdu1 to: srv1 - from: tor1 to: srv1 - from: rack2 to: srv2 - from: pdu2 to: srv2 - from: tor2 to: srv2 - from: rack1 to: srvdb1 - from: pdu1 to: srvdb1 - from: tor1 to: srvdb1 - from: rack2 to: srvdb2 - from: pdu2 to: srvdb2 - from: tor2 to: srvdb2 - from: rack2 to: srvcache - from: pdu2 to: srvcache - from: tor2 to: srvcache # Platform dependency chain (redundant DBs, redundant LBs) - from: srvdb1 to: db1 - from: srvdb2 to: db2 - from: srvcache to: cache1 - from: srv1 to: app1 - from: db1 to: app1 - from: db2 to: app1 - from: cache1 to: app1 # Edge to public (two LBs) - from: core1 to: lb1 - from: core2 to: lb1 - from: core1 to: lb2 - from: core2 to: lb2 - from: app1 to: lb1 - from: app1 to: lb2 - from: lb1 to: api1 - from: lb2 to: api1 # Users consume the API (placed at the end) - from: api1 to: users_mobile - from: api1 to: users_web
Apply
Healthy
Degraded
Down
Overridden