{% extends 'base/layout.html' %} {% load helpers %} {% block title %}Auto-cable two ports{% endblock %} {% block content %}

Auto-cable two ports

{% csrf_token %} {{ form.as_p }}
{% if plan %}

Cabling plan {% if plan.severity == 'success' %} ● {{ plan.status_label }} {% elif plan.severity == 'warning' %} ▲ {{ plan.status_label }} {% else %} ✕ {{ plan.status_label }} {% endif %}

{{ plan.reason }}

{% if plan.path_steps %}

Path:

{% for step in plan.path_steps %} {{ step.rack }} {% if step.link == 'bridge' %} bridge╌╌▶ {% elif step.link == 'trunk' %} trunk──▶ {% endif %} {% endfor %}
{% elif plan.path_names %}

Path: {{ plan.path_names|join:" → " }}

{% endif %} {% if plan.status == 'propose_direct_no_path' %}
No backbone path between these two racks, but they are in the same room: you can pull a direct cable between the two ports. Confirm below.
{% endif %} {% if plan.bridges %}
This path includes {{ plan.bridges|length }} direct bridge(s) — a panel-to-panel cable to pull within a single room to connect two backbone segments:
    {% for x, y in plan.bridges %}
  • {{ x }} ↔ {{ y }}
  • {% endfor %}
{% if plan.bridge_free_exists %} A 100% backbone path (without a bridge) also exists. {% else %} No 100% backbone path between these racks — the bridge is necessary. {% endif %}
{% endif %} {% if plan.overflow %}
Saturation overflow — a rack's own trunks are full, so this plan borrows a co-located rack's capacity via a same-room cable to pull (this is different from a satellite rack, which has no trunks):
    {% for own, neighbor in plan.overflow %}
  • {{ own }} → {{ neighbor }}
  • {% endfor %}
{% endif %} {% if plan.status == 'exhausted' and plan.saturated_hops %}

Saturated path — {{ plan.saturated_hops|length }} bottleneck(s) along the shortest path. You must add fiber (or pull a bridge) on each:

{% for h in plan.saturated_hops %} {% endfor %}
Bottleneck (rack ↔ rack)FreeTotalTo add
{{ h.a }} ↔ {{ h.b }} {{ h.free }} {{ h.total }} ≥ 1 fiber
{% if site_id %} View capacities per rack → {% endif %}
{% endif %} {% if plan.status == 'no_path' %}

Why no cabling ?

{% if plan.off_backbone_a or plan.off_backbone_b %}

One of the racks has no backbone panel for this media (neither in its rack nor in its room) — you must first connect it to the backbone, or choose two ports located on the backbone.

{% elif plan.disconnected %}

The two racks are on unconnected backbone segments: no trunk connects them. A direct cable is only possible within the same room.

{% endif %} {% if plan.alt_media %}
{% csrf_token %} A {{ plan.alt_media }} path exists however.
{% endif %}
{% endif %} {% if rows %}

Cables to create ({{ rows|length }}) — from endpoint A to endpoint B:

{% for r in rows %} {% endfor %}
#LocationFromToCable
{{ r.n }} {{ r.rack }}{% if r.bridge %} bridge{% endif %} {{ r.from }} {{ r.to }} {{ r.cable_type }}
{% endif %} {% if result %}
Created: {{ result.created|length }} · Reused: {{ result.reused|length }} · Conflicts: {{ result.conflicts|length }}
{% endif %} {% if plan.ok and not result %}
{% csrf_token %} {% if plan.status == 'propose_direct_no_path' %} {% elif plan.overflow %} {% elif plan.needs_confirmation %} {% else %} {% endif %}
{% endif %}
{% endif %} {% endblock %}