fabric-testbed / fabric-portal

FABRIC portal repo
MIT License
5 stars 0 forks source link

Slice Viewer Testing on Beta Portal #122

Closed yaxue1123 closed 2 years ago

yaxue1123 commented 2 years ago

*If you find problems with the slice viewer, please leave the problem description and corresponding graphml as a comment under this issue. Thanks for participating in the portal slice viewer testing!

Generate slices

Please use Beta JupyterHub to create slices. There are already some examples located in the subfolders of /jupyter-examples/fabric_examples for your reference. Please feel free to create different types of slices to cover as much situations as you could, such as l2bridge, l2 site to site, etc.

Check slice viewer in portal

Login to Beta portal, Go to Experiments -> My Slices, check the slices you just created by clicking on each slice name. The slice viewer is powered by Cytoscape.js and using auto layout. You could download the slice graph as png file, or download the Cytoscape formatted json. By clicking on each node and component, the detailed information retrieved from Control Framework model will be visible in the right panel.

Generate graphml for slice

If you find a slice graph isn't functioning correctly (e.g. A VM is located out of the site as you designed, a SmartNIC is located outside the VM as you expected). Please use the following code to create the slice graphml for that malfunctioning slice viewer, then copy and paste the grapnml as a comment under this issue, along with the problem description.

from fabrictestbed.slice_editor import ExperimentTopology, Capacities
# Create topology
t = ExperimentTopology()
# Add nodes, links and properties as you need
# Generate Slice Graphml
slice_graph = t.serialize()
print(slice_graph)

Thanks again for your contribution to our FABRIC project and portal development ❤️

yaxue1123 commented 2 years ago

This graph is not parsed and leaves a blank page:

<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
  <key id="d13" for="edge" attr.name="Class" attr.type="string" />
  <key id="d12" for="node" attr.name="Labels" attr.type="string" />
  <key id="d11" for="node" attr.name="Layer" attr.type="string" />
  <key id="d10" for="node" attr.name="Details" attr.type="string" />
  <key id="d9" for="node" attr.name="Model" attr.type="string" />
  <key id="d8" for="node" attr.name="ImageRef" attr.type="string" />
  <key id="d7" for="node" attr.name="Capacities" attr.type="string" />
  <key id="d6" for="node" attr.name="Site" attr.type="string" />
  <key id="d5" for="node" attr.name="StitchNode" attr.type="string" />
  <key id="d4" for="node" attr.name="Type" attr.type="string" />
  <key id="d3" for="node" attr.name="Name" attr.type="string" />
  <key id="d2" for="node" attr.name="NodeID" attr.type="string" />
  <key id="d1" for="node" attr.name="Class" attr.type="string" />
  <key id="d0" for="node" attr.name="GraphID" attr.type="string" />
  <graph edgedefault="undirected">
    <node id="50">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">NetworkNode</data>
      <data key="d2">54283bf4-e642-4f00-853a-d2d0f48dc3a1</data>
      <data key="d3">n1</data>
      <data key="d4">VM</data>
      <data key="d5">false</data>
      <data key="d6">UKY</data>
      <data key="d7">{"core": 2, "disk": 10, "ram": 6}</data>
      <data key="d8">default_centos_8,qcow2</data>
    </node>
    <node id="51">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">Component</data>
      <data key="d2">a83e5964-c6b6-4233-8e89-87b5ebe373bc</data>
      <data key="d3">c1</data>
      <data key="d4">NVME</data>
      <data key="d9">P4510</data>
      <data key="d10">Dell Express Flash NVMe P4510 1TB SFF</data>
      <data key="d5">false</data>
    </node>
    <node id="52">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">NetworkNode</data>
      <data key="d2">7c0af955-325f-43d5-ba92-34fd2177dae5</data>
      <data key="d3">n2</data>
      <data key="d4">VM</data>
      <data key="d5">false</data>
      <data key="d6">LBNL</data>
      <data key="d7">{"core": 2, "disk": 10, "ram": 6}</data>
      <data key="d8">default_centos_8,qcow2</data>
    </node>
    <node id="53">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">Component</data>
      <data key="d2">72dacf00-e90a-403e-a1ad-a743b55e6060</data>
      <data key="d3">n1-nic1</data>
      <data key="d4">SmartNIC</data>
      <data key="d9">ConnectX-6</data>
      <data key="d10">Mellanox ConnectX-6 VPI MCX653 dual port 100Gbps</data>
      <data key="d5">false</data>
    </node>
    <node id="54">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">NetworkService</data>
      <data key="d2">e8aa8d32-83d3-4d7c-a9f8-0166ef5b8dee</data>
      <data key="d3">n1-n1-nic1-l2ovs</data>
      <data key="d4">OVS</data>
      <data key="d5">false</data>
      <data key="d11">L2</data>
    </node>
    <node id="55">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">ConnectionPoint</data>
      <data key="d2">56236162-b2bc-42c1-bfa0-079b8f6a91d9</data>
      <data key="d3">n1-nic1-p1</data>
      <data key="d4">DedicatedPort</data>
      <data key="d7">{"bw": 100, "unit": 1}</data>
      <data key="d12">{"local_name": "p1", "vlan": "200"}</data>
      <data key="d5">false</data>
    </node>
    <node id="56">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">ConnectionPoint</data>
      <data key="d2">e5aceac4-f0ab-4d9f-9a53-a393def4a76d</data>
      <data key="d3">n1-nic1-p2</data>
      <data key="d4">DedicatedPort</data>
      <data key="d7">{"bw": 100, "unit": 1}</data>
      <data key="d12">{"local_name": "p2", "vlan": "200"}</data>
      <data key="d5">false</data>
    </node>
    <node id="57">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">Component</data>
      <data key="d2">b8c07f0e-ee6b-4beb-825c-1fc3e8872bfa</data>
      <data key="d3">n2-nic1</data>
      <data key="d4">SmartNIC</data>
      <data key="d9">ConnectX-6</data>
      <data key="d10">Mellanox ConnectX-6 VPI MCX653 dual port 100Gbps</data>
      <data key="d5">false</data>
    </node>
    <node id="58">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">NetworkService</data>
      <data key="d2">017ba5a1-4fa4-4de2-b2a0-b215adc280f0</data>
      <data key="d3">n2-n2-nic1-l2ovs</data>
      <data key="d4">OVS</data>
      <data key="d5">false</data>
      <data key="d11">L2</data>
    </node>
    <node id="59">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">ConnectionPoint</data>
      <data key="d2">bfd0f545-149a-41e6-8d7e-e19a3cb7f197</data>
      <data key="d3">n2-nic1-p1</data>
      <data key="d4">DedicatedPort</data>
      <data key="d7">{"bw": 100, "unit": 1}</data>
      <data key="d12">{"local_name": "p1", "vlan": "200"}</data>
      <data key="d5">false</data>
    </node>
    <node id="60">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">ConnectionPoint</data>
      <data key="d2">c9e29665-7b02-45d7-b1d0-ae48645dde05</data>
      <data key="d3">n2-nic1-p2</data>
      <data key="d4">DedicatedPort</data>
      <data key="d7">{"bw": 100, "unit": 1}</data>
      <data key="d12">{"local_name": "p2", "vlan": "200"}</data>
      <data key="d5">false</data>
    </node>
    <node id="61">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">NetworkService</data>
      <data key="d2">52c6ec87-a8ba-4ad3-9e28-7590e2a7163f</data>
      <data key="d3">ptp1</data>
      <data key="d4">L2PTP</data>
      <data key="d5">false</data>
      <data key="d11">L2</data>
    </node>
    <node id="62">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">ConnectionPoint</data>
      <data key="d2">024eeb4d-0024-4ba2-9b13-6b1895a69b99</data>
      <data key="d3">ptp1-n1-nic1-p2</data>
      <data key="d4">ServicePort</data>
      <data key="d5">false</data>
    </node>
    <node id="63">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">Link</data>
      <data key="d2">0ff9124a-987d-40e7-af81-925e7e29a075</data>
      <data key="d3">ptp1-n1-nic1-p2-link</data>
      <data key="d4">Patch</data>
      <data key="d5">false</data>
      <data key="d11">L2</data>
    </node>
    <node id="64">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">ConnectionPoint</data>
      <data key="d2">c9f545d3-02f5-4976-aeee-913ac661ba1b</data>
      <data key="d3">ptp1-n2-nic1-p1</data>
      <data key="d4">ServicePort</data>
      <data key="d5">false</data>
    </node>
    <node id="65">
      <data key="d0">895ff91a-1ee6-4912-a9e0-6aae071bd6c1</data>
      <data key="d1">Link</data>
      <data key="d2">6c5a64f5-c9bf-4f94-af6b-c9366b6a404b</data>
      <data key="d3">ptp1-n2-nic1-p1-link</data>
      <data key="d4">Patch</data>
      <data key="d5">false</data>
      <data key="d11">L2</data>
    </node>
    <edge source="50" target="51">
      <data key="d13">has</data>
    </edge>
    <edge source="50" target="53">
      <data key="d13">has</data>
    </edge>
    <edge source="52" target="57">
      <data key="d13">has</data>
    </edge>
    <edge source="53" target="54">
      <data key="d13">has</data>
    </edge>
    <edge source="54" target="55">
      <data key="d13">connects</data>
    </edge>
    <edge source="54" target="56">
      <data key="d13">connects</data>
    </edge>
    <edge source="56" target="63">
      <data key="d13">connects</data>
    </edge>
    <edge source="57" target="58">
      <data key="d13">has</data>
    </edge>
    <edge source="58" target="59">
      <data key="d13">connects</data>
    </edge>
    <edge source="58" target="60">
      <data key="d13">connects</data>
    </edge>
    <edge source="59" target="65">
      <data key="d13">connects</data>
    </edge>
    <edge source="61" target="62">
      <data key="d13">connects</data>
    </edge>
    <edge source="61" target="64">
      <data key="d13">connects</data>
    </edge>
    <edge source="62" target="63">
      <data key="d13">connects</data>
    </edge>
    <edge source="64" target="65">
      <data key="d13">connects</data>
    </edge>
  </graph>
</graphml>