Skydive ααΊααΆαααααααΎαα αα αααααΆαααααΆααααααααΆααααααααΆααΆααααααα αα·ααααααα·ααΈαα·ααΆααα·ααΈααΆαα ααΆααΆαααααααααααααααΌααα·ααΈααααΌααααΌααΆααα½αααΎααααΈαααααΈα’αααΈααααααα»αααΎαα‘αΎααα αααα»αα αααααΆαα ααΆαααααααααααααΆαα
ααΎααααΈα αΆααα’αΆαααααα αααα»αααΉααααααα±ααα’αααααΌαααΌαααα’ααααααααΈαααΈα’αααΈ Skydive α ααΆαααααααααααΉαααΆαααΆααααα ααα’αααΈααΆαααααΆαα’αααΈ Skydive α
αααααΆα "
Skydive αααα αΆααααααΆα topology αααααα½αααΆαααααΉαααα·ααΆααααααααΆαααΈααααΆααααΆα Skydive α ααΎα’αααααααΆαααααααααΈαααααααααα α¬αααα αΆααα αααα»ααααΆαααΆαα»αααααΆαααααΆααααΆα topology ααααα ααΆααααα αααααΆαααααΆααααΆα Skydive α¬ααααα»ααααα·ααααααΆαααααΆαααΌα ααΆ TOR, ααΆααααα»ααα·ααααααααΆααΎαα αα·αα αΆαααΆα ααααα½αααΆααααα’αααΈααΆααααα α’ααα»αα αααα Node rule API α
α αΆααααΆααααΈαααα 0.20 Skydive αααααααΌα Node rule API αααα’αΆα ααααΌαααΆαααααΎααΎααααΈαααααΎαααααΆαα αα·ααααααααΈ αα·αααΎααααΈααααΎαα αα α»ααααααααΆααα·ααααααααααΆααααααΆαααααααΆαααααΆααα Node rule API ααααΌαααΆααααα ααααΆ APIs ααΈαα node rule API αα·α edge rule APIα Node Rule API ααααΌαααΆαααααΎααΎααααΈαααααΎαααααΆααααααΈ αα·αααααΎαα αα α»ααααααααΆααα·ααααααααααΆααααααΆαααααααΆαααααΆααα API α αααΆαααααααααΌαααΆαααααΎααΎααααΈαααααΎαααααααααααΆαααααΆααααΈα αααααΊα§α ααααΆααααααΆααααΈαα
αα αααα»ααααα»αααα ααΎαααΉαααΎαααααΈααααΎααααΆααα ααα½αααΈα ααααα½ααααα»ααααααΊααΆααΆαα»αααααααααΆαααααα·ααααααΆααααααααααααΆα skydive networkα αααααΎαααΈααΈαααΊαααΆαααΆαα»ααααα·ααααααΆαααααΆαα αα»αααα ααΎαααΉααα·αα·αααααΎααα·ααΈααΆααΌαααααΆααα½αα ααα½αααΎααααΈααααΎ Topology Rules APIα
ααΆααααααΎαααααΆαα Skydive
ααΎααααΈαααααΎαααααΆαα α’αααααααΌαααααααααααααααααΆαααααα½αααα αα·αααααααααααΆααααααΉαααααΌαα α’αααααα’αΆα ααααααααααΎααααααααα½αα ααα½ααααααα
skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
"UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
"Name": "node rule1",
"Description": "",
"Metadata": {
"Name": "node1",
"Type": "fabric"
},
"Action": "create",
"Query": ""
}
ααααΎαα αα α»ααααααααΆα Skydive Nodes Metadata
ααΎααααΈααααΎαα αα α»ααααααααΆααα·ααααααααααΆααααααΆαααααααΆαααααΆαα α’αααααααΌαααααααααααα½α gremlin ααΎααααΈααααΎαααΎαααααΆαααααα’αααα ααααααΎαα αα α»ααααααααΆααα·ααααααααααΆα ααΆαααΆαααααΎαα»αααααα’ααα α’αααα’αΆα ααααΎαα αα α»ααααααααΆααα·ααααααααααΆααααααΆαααα½α α¬α αααΎααααααααΎαααα½αααααΆαααααα½αα
skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
"UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
"Name": "update rule",
"Description": "",
"Metadata": {
"key1": "val1",
"key2": "val2"
},
"Action": "update",
"Query": "G.V().Has('Name', 'node1')"
}
ααΆααααααΎα Skydive Edge
ααΎααααΈαααααΎαααα α’αααααααΌααααααααΆααααααΆααααααα αα·ααα·ααα αα·ααααααααααααααΆααααααα ααΎααααΈαααααΎαααααΆααααΌα ααααααααααααααααααΌαααααΆαααααα·αααα· ααααααααααΆαααααα ααΎααααΈαααααΎααααααααΆαααααααααααααΆααααΈ 2 ααααααααααααααααααΌαααααΆ αααααΆαα 2 α α’αααα’αΆα αααααΎααααααααΆααα αααΎαααΆααα½ααααΆαααααΆααααΈα ααα»αααααααααααααααααααΆααααααΌααααα»αααααΆα
skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
"UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
"Name": "edge",
"Description": "",
"Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
"Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
"Metadata": {
"RelationType": "both"
}
}
ααααΈααααΎααααΌα
αααα»αααααΈαααααΎαααΉααα·αα·αααααΎααααααααα αΆαα§αααααααααα·ααααααΆαααααΆααα αααα»α skydive topology α α αΌαααΎααα·α αΆαααΆααΆααΎαααΆαααααΆαααα·αααααααααααααΌαααΆααααα αΆααα αααα»αααααΆααααΆα skydive topology ααΆαα½ααα·ααααααααααΆαααααΆααααααααααα½αα ααα½αα
ααΎαααααΆααααααααΌαααΆααααααΎαα αααΆαα node ααΎααααΈααααααα§ααααααα topology α ααΎαβα’αΆα βααααααβαα·ααααααβααααΆβα§αααααβααΆβαααααβααβααΆαβαααααΎαβααΆαααβαααααΆ α¬βαααααβααβαααααΎαβααΆαααβαααααΆβα αααΆααβααβααΆαβα’αΆαααααβαα½αβα¬βα αααΎαα
ααααΎαααΆαααΆααααααααΆαααα½ααααΆαααΈαααΆααααααααΎααααΈααααααα§ααααααααα»ααα ααααΆααααΆα topology α
skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"
ααααΎαααΆαααΆααααααααΆααΆααααααα αααΆααααα ααΎααααΈααααΆααααααΆαααααααΆααααααΎαααΆαα½αααααΆαααααΆαααΈαα
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"
αααααΆααααΈααΆααααααααΆααΆαααΎ α₯α‘αΌααααα’αααα’αΆα ααΎαα§ααααααααα’αΆα ααΎαααΎααα αααα»αααααΆααααΆα skydive topology ααΆαα½αααΉααα·ααααααααααΆαααααΆααααααα±ααααΌα αααα αΆααααα»αααΌαααΆαααΆααααααα
ααααΈααααΎααααΆααααΈααΈα
αααα»αααααΈαααααΎαααΉαααΎαααΈααααααααααα§ααααααααααΆαααααα·ααααααΆααααααααααααΆα skydive α ααΌααααα‘ααααΎαα§ααΆα ααααααα ααΎαααΆαααααΆααααΆα skydive ααΈαααααααα»αααααΎαααΆαααΎαααΆαααΈαααΈααααααααααΆ ααΎααααΈααααΆαααααΆαααΈαααΆααααΈαααα ααΎαααααΌαααΆααα»αααΆαα TOR α αααααΈααΆααΎαα’αΆα αααααα ααΆααααααΆααααααααααΆαααα ααΆαααααααα αα·ααααααααΆαααααα»αα―αααΆαααααααα ααΆααααααααααααα ααΌαααΎαααΈαααααααααΎαα’αΆα ααααΎααΌα ααααΆαααααααΎ Topology Rules API α
ααΎααααΆααα»αααΆαα TOR αα ααααΆααααΆαααΆααααΈαααΉααααα αΆαααΆααααΆααααΈααααααααααΆαααααααΆααααααααΆααααΆαα½α ααΌα αααα αΆααααα»αααΌαααΆαααΆααααααα
α₯α‘αΌααααααααΎαααΆαααΆααααααααΆ Host Rules ααΆααααααααΎααααΈαααααΎααα»αααΆαα TOR αα·αα αααα
skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"
ααΌα αααα’αααα’αΆα ααΎαααΎα αα»αααΆαα αα·αα ααα TOR ααααΌαααΆααααααΎα αα·ααααααααα skydive topology α αΎαα₯α‘αΌαααα topology ααΉαααΎααα ααΌα ααΌαααΆαααΆααααααα
α₯α‘αΌααααααααΎαααΆαααΆααααααααΆ Edge Rule ααΆααααααααΎααααΈαααααΎαααΆααααααΆαααααΆααα»αααΆαα TOR α ααα 1 αα·αα ααα»α αααααΆααααΆααΆααααααααααΆαααΈα 1 α
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
ααααΎαααΆαααΆααααααααΆααΆααααααααΎααααΈαααααΎααααααααΆαααααΆαα ααα TOR switch port 2 αα·α host 2 public interface
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
ααΆαααααΆαααααααα·αααα· αα·ααααααΆαα 2 α₯α‘αΌααααααααΌαααΆααααααΎαα‘αΎααααΆααα»αααΆαα TOR αα·αα ααα ααααΌα ααΆααΆαααααΆαααααΆαααααααΆαα 2 αααΆαααααΆααααΆα αα·αα αααα α₯α‘αΌαααα topology α α»ααααααααΉαααΎααα ααΌα ααΌαααΆαααΆααααααα
α₯α‘αΌαααααααΆαααΈα/ααααΆααααΆαααΆααααΈαααααΌαααΆαααααΆαααααΆαααααΉαααααΌα α αΎαα’αααα’αΆα ααΆαααααααΆααααααΆαα α¬αααααΎαααΆαα αΆααααααααΌαααααΈαααα»ααααΆααααΆαααΈαααΆααααΈαα
PS ααααΆαααα
ααΎααααα»ααααααααααα»ααααααα’αΆα
ααααααααααΆαα’αααΈαα»αααΆα Skydive ααααααααα
ααααα: www.habr.com