{
  "version": 10,
  "plumr_config": {
    "pipeline": {
      "peer_router-0": {
        "peer_router": {
          "ingress": {
            "input": "[peer_router-0-ingress|in:0]-[udp_local-0|out:0]",
            "output": "[session_reader-0|in:0]-[peer_router-0-ingress|out:0]"
          },
          "egress": {
            "input": "[peer_router-0-egress|in:0]-[session_writer-0|out:0]",
            "output": "[udp_local-0|in:0]-[peer_router-0-egress|out:0]"
          }
        }
      },
      "peer_writer-1": {
        "peer_writer": {
          "input": "[peer_writer-1|in:0]-[raft-1-streams-0|out:0]",
          "output": "[udp_remote-1|in:0]-[peer_writer-1|out:0]",
          "remote_address": "127.0.0.1:6000"
        }
      },
      "session_reader-0": {
        "session_reader": {
          "input": "[session_reader-0|in:0]-[peer_router-0-ingress|out:0]",
          "output": "[raft-1-carriers-0|in:0]-[session_reader-0|out:0]"
        }
      },
      "session_writer-1": {
        "session_writer": {
          "input": "[session_writer-1|in:0]-[raft-1-carriers-1|out:0]",
          "output": "[peer_router-1-egress|in:0]-[session_writer-1|out:0]"
        }
      },
      "udp_local-0": {
        "udp_local": {
          "input": "[udp_local-0|in:0]-[peer_router-0-egress|out:0]",
          "output": "[peer_router-0-ingress|in:0]-[udp_local-0|out:0]",
          "address": "127.0.0.1:1234"
        }
      },
      "udp_remote-1": {
        "udp_remote": {
          "input": "[udp_remote-1|in:0]-[peer_writer-1|out:0]"
        }
      },
      "peer_router-1": {
        "peer_router": {
          "ingress": {
            "input": "[peer_router-1-ingress|in:0]-[udp_local-1|out:0]",
            "output": "[session_reader-1|in:0]-[peer_router-1-ingress|out:0]"
          },
          "egress": {
            "input": "[peer_router-1-egress|in:0]-[session_writer-1|out:0]",
            "output": "[udp_local-1|in:0]-[peer_router-1-egress|out:0]"
          }
        }
      },
      "raft-1": {
        "raft": {
          "streams": [
            {
              "output": "[peer_writer-1|in:0]-[raft-1-streams-0|out:0]",
              "stream_handle": 0,
              "realtime_stream": {
                "timeout": 100,
                "delivery_policy": "ON_TIMEOUT",
                "extension": null
              }
            }
          ],
          "carriers": [
            {
              "input": "[raft-1-carriers-0|in:0]-[session_reader-0|out:0]",
              "output": "[session_writer-0|in:0]-[raft-1-carriers-0|out:0]"
            },
            {
              "input": "[raft-1-carriers-1|in:0]-[session_reader-1|out:0]",
              "output": "[session_writer-1|in:0]-[raft-1-carriers-1|out:0]",
              "carrier_handle": 1
            }
          ]
        }
      },
      "session_reader-1": {
        "session_reader": {
          "input": "[session_reader-1|in:0]-[peer_router-1-ingress|out:0]",
          "output": "[raft-1-carriers-1|in:0]-[session_reader-1|out:0]"
        }
      },
      "session_writer-0": {
        "session_writer": {
          "input": "[session_writer-0|in:0]-[raft-1-carriers-0|out:0]",
          "output": "[peer_router-0-egress|in:0]-[session_writer-0|out:0]"
        }
      },
      "udp_local-1": {
        "udp_local": {
          "input": "[udp_local-1|in:0]-[peer_router-1-egress|out:0]",
          "output": "[peer_router-1-ingress|in:0]-[udp_local-1|out:0]",
          "address": "127.0.0.1:1235"
        }
      }
    }
  },
  "meta": {
    "component_display_coordinates": {
      "peer_router-0": {
        "x": 1240,
        "y": 360
      },
      "peer_router-1": {
        "x": 1240,
        "y": 600
      },
      "raft-1": {
        "x": 1680,
        "y": 360
      },
      "session_writer-1": {
        "x": 1440,
        "y": 720
      },
      "udp_local-0": {
        "x": 1040,
        "y": 360
      },
      "udp_local-1": {
        "x": 1040,
        "y": 600
      },
      "peer_writer-1": {
        "x": 1960,
        "y": 360
      },
      "session_reader-0": {
        "x": 1440,
        "y": 360
      },
      "session_reader-1": {
        "x": 1440,
        "y": 600
      },
      "session_writer-0": {
        "x": 1440,
        "y": 480
      },
      "udp_remote-1": {
        "x": 2200,
        "y": 360
      }
    },
    "component_display_order": {
      "peer_writer-1": 0,
      "udp_local-1": 7,
      "udp_remote-1": 1,
      "peer_router-0": 4,
      "peer_router-1": 8,
      "raft-1": 2,
      "session_reader-0": 5,
      "session_reader-1": 9,
      "session_writer-0": 6,
      "session_writer-1": 10,
      "udp_local-0": 3
    }
  },
  "kpis": {
    "variables": {
      "sink_carrier1_bw_out": "/pipeline/raft-1/raft_node/raft_carrier:1/bandwidth_out",
      "sink_carrier1_latency": "/pipeline/raft-1/raft_node/raft_carrier:1/raft_latency_estimator/link_trip_time",
      "sink_loss_stream": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/raft_loss_tracker/stable_loss_rate",
      "sink_stream_bw_in": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/bandwidth_in",
      "sink_total_lost": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/raft_loss_tracker/total_lost",
      "sink_carrier0_bw_in": "/pipeline/raft-1/raft_node/raft_carrier:0/bandwidth_in",
      "sink_flow1_overall_repair_mode": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/raft_realtime_flow:1/overall_repair_mode",
      "sink_carrier0_stable_loss": "/pipeline/raft-1/raft_node/raft_carrier:0/raft_loss_tracker/stable_loss_rate",
      "sink_carrier1_stable_loss": "/pipeline/raft-1/raft_node/raft_carrier:1/raft_loss_tracker/stable_loss_rate",
      "sink_flow0_overall_viability": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/raft_realtime_flow:0/overall_viability",
      "sink_flow1_overall_viability": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/raft_realtime_flow:1/overall_viability",
      "sink_stream_bw_out": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/bandwidth_out",
      "sink_stream_control": "/pipeline/raft-1/raft_node/stream_control",
      "sink_carrier1_bw_in": "/pipeline/raft-1/raft_node/raft_carrier:1/bandwidth_in",
      "sink_flow0_overall_repair_mode": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/raft_realtime_flow:0/overall_repair_mode",
      "sink_viability_control": "/pipeline/raft-1/raft_node/raft_realtime_stream:0/viability_control",
      "sink_carrier0_bw_out": "/pipeline/raft-1/raft_node/raft_carrier:0/bandwidth_out",
      "sink_carrier0_latency": "/pipeline/raft-1/raft_node/raft_carrier:0/raft_latency_estimator/link_trip_time"
    },
    "metrics": [
      {
        "label": "Sink",
        "id": "mgte5lye"
      },
      {
        "label": "Sink Total Lost",
        "value": {
          "expression": "sink_total_lost",
          "unit": ""
        },
        "id": "mgte5lyf"
      },
      {
        "label": "Loss carrier0 (sink)",
        "gauge": {
          "expression": "sink_carrier0_stable_loss"
        },
        "id": "mgte5lyg"
      },
      {
        "label": "Loss carrier1 (sink)",
        "gauge": {
          "expression": "sink_carrier1_stable_loss"
        },
        "id": "mgte5lyh"
      },
      {
        "label": "Sink -> Viability Control",
        "value_to_text_conditions": {
          "conditions": [
            {
              "expression": "sink_viability_control == 0",
              "text": "undetermined",
              "color": "red"
            },
            {
              "expression": "sink_viability_control == 1",
              "text": "local",
              "color": "orange"
            },
            {
              "expression": "sink_viability_control == 2",
              "text": "remote",
              "color": "yellow"
            }
          ]
        },
        "id": "mgte5lyi"
      },
      {
        "label": "Sink -> Flow0",
        "value_to_text_conditions": {
          "conditions": [
            {
              "expression": "sink_flow0_overall_viability == 0",
              "text": "disabled",
              "color": "red"
            },
            {
              "expression": "sink_flow0_overall_viability == 1",
              "text": "pending",
              "color": "orange"
            },
            {
              "expression": "sink_flow0_overall_viability == 2",
              "text": "viable",
              "color": "green"
            },
            {
              "expression": "sink_flow0_overall_viability == 3",
              "text": "prospect",
              "color": "yellow"
            },
            {
              "expression": "sink_flow0_overall_viability == 4",
              "text": "non_viable",
              "color": "red"
            }
          ]
        },
        "id": "mgte5lyj"
      },
      {
        "label": "Link Trip Time Carrier 0",
        "value_over_time": {
          "expression": "sink_carrier0_latency",
          "unit": ""
        },
        "id": "mgte5lyk"
      },
      {
        "label": "Sink -> Flow1",
        "value_to_text_conditions": {
          "conditions": [
            {
              "expression": "sink_flow1_overall_viability == 0",
              "text": "disabled",
              "color": "red"
            },
            {
              "expression": "sink_flow1_overall_viability == 1",
              "text": "pending",
              "color": "orange"
            },
            {
              "expression": "sink_flow1_overall_viability == 2",
              "text": "viable",
              "color": "green"
            },
            {
              "expression": "sink_flow1_overall_viability == 3",
              "text": "prospect",
              "color": "yellow"
            },
            {
              "expression": "sink_flow1_overall_viability == 4",
              "text": "non_viable",
              "color": "red"
            }
          ]
        },
        "id": "mgte5lyl"
      },
      {
        "label": "Link Trip Time Carrier 1",
        "value_over_time": {
          "expression": "sink_carrier1_latency",
          "unit": ""
        },
        "id": "mgte5lym"
      }
    ]
  },
  "variables": [
    {
      "id": "m21wx11z",
      "label": "Stream Timeout",
      "description": "Timeout for the stream in milliseconds.",
      "paths": [
        "plumr_config.pipeline.raft-1.raft.streams[0].timeout"
      ]
    }
  ]
}