Skydive ืืื ืื ืชื ืืืคืืืืืืืช ืจืฉืช ืืคืจืืืืงืื ืงืื ืคืชืื ืืืื ืืืช. ืืืจืชื ืืื ืืกืคืง ืืจื ืืงืืคื ืืืืื ืื ืงืืจื ืืชืฉืชืืช ืจืฉืช.
ืืื ืืขื ืืื ืืืชื, ืื ื ืืชื ืื ืืื ืฆืืืืื ืืกื ืขื Skydive. ืืืื ืืืื ืคืืกื ืขื ืืืืจืืช ืขื Skydive.
ืืืืขื "
Skydive ืืฆืื ืืช ืืืคืืืืืืืช ืืจืฉืช ืขื ืืื ืงืืืช ืืืจืืขื ืจืฉืช ืืกืืื ื Skydive. ืืื ืื ืคืขื ืชืืืชื ืืืฆื ืืืืกืืฃ ืื ืืืฆืื ืืชืจืฉืื ืืืคืืืืืื ืจืืืื ืจืฉืช ืฉื ืืฆืืื ืืืืฅ ืืจืฉืช ืกืืื ื Skydive ืื ืืืืืืงืืื ืฉืืื ื ืจืฉืช ืืืื TOR, ืืืกืื ื ืชืื ืื ืืื'. ืืื ืฆืืจื ืืืืื ืืงืฉืจ ืืื ืืืชืจ ืืืืืช ื-Node rule API.
ืืื ืืจืกื 0.20, Skydive ืืกืคืงืช ืืืฉืง API ืฉื ืฆืืืช ืฉื ืืชื ืืืฉืชืืฉ ืื ืืื ืืืฆืืจ ืฆืืชืื ืืงืฆืืืช ืืืฉืื ืืืขืืื ืืช ืืืื ื ืชืื ืื ืฉื ืฆืืชืื ืงืืืืื. ื-API ืฉื ืืื ืืฆืืืช ืืืืืง ืืฉื ื ืืืฉืงื API: ื-API ืฉื ืืื ืืฆืืืช ืืืืฉืง ื-Edge rule API. ื-API ืฉื ืืื ืืฆืืืช ืืฉืืฉ ืืืฆืืจืช ืฆืืืช ืืืฉ ืืืขืืืื ืืืื ื ืชืื ืื ืฉื ืฆืืืช ืงืืื. ื-Edge rule API ืืฉืืฉ ืืืฆืืจืช ืืืื ืืื ืฉื ื ืฆืืชืื, ืืืืืจ. ืืืืจ ืฉื ื ืฆืืชืื.
ืืืืื ืื ื ืจืื ืฉื ื ืืงืจื ืฉืืืืฉ, ืืื ืืื ืืื ืจืืื ืจืฉืช ืฉืืื ื ืืืง ืืจืฉืช ืฆื ืืื ืืืคืฉืืช. ืืืคืฉืจืืช ืืฉื ืืื ืืื ืจืืื ืฉืืื ื ืจืฉืช. ืืคื ื ืื, ื ืืื ืืื ืืจืืื ืืกืืกืืืช ืืฉืืืืฉ ื-API ืฉื ืืืืื ืฉื ืืืคืืืืืื.
ืืฆืืจืช ืฆืืืช ืฆื ืืื ืืืคืฉืืช
ืืื ืืืฆืืจ ืฆืืืช, ืขืืื ืืกืคืง ืฉื ืฆืืืช ืืืืืื ืืกืื ืฆืืืช ืืืงื. ืืชื ืืืื ืื ืืกืคืง ืืื ืืคืฉืจืืืืช ื ืืกืคืืช.
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
ืืื ืืขืืื ืืช ืืืื ื ืชืื ืื ืฉื ืฆืืืช ืงืืื, ืขืืื ืืกืคืง ืฉืืืืชืช ืืจืืืื ืืื ืืืืืจ ืืช ืืฆืืชืื ืฉืืื ืืจืฆืื ื ืืขืืื ืืช ืืืื ื ืชืื ืื. ืืคื ืืงืฉืชื, ืชืืื ืืขืืื ืืช ืืืื ื ืชืื ืื ืฉื ืฆืืชืื ืืื ืื ืืืชืจ ืืืืฆืขืืช ืืื ืฆืืืช ืืืื.
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')"
}
ืืฆืืจืช ืืื' ืฆื ืืื ืืืคืฉืืช
ืืื ืืืฆืืจ ืงืฆื, ืขืืื ืืฆืืื ืืช ืฆืืชื ืืืงืืจ ืืืืขื ืืืช ืกืื ืืงืืฉืืจ ืฉื ืืงืฆื; ืืื ืืืฆืืจ ืฆืืืช ืฆืืฆื, ืขืจื ืกืื ืืงืืฉืืจ ืืืื ืืืืืช ืืขืืืช; ืืืืคื ืืืื, ืืื ืืืฆืืจ ืกืื ืงืืฉืืจ layer2, ืขืจื ืกืื ืืงืืฉืืจ ืืืื ืืืืืช ืฉืืื 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 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"
ืืืืจ ืืคืงืืืืช ืืขืื, ืืขืช ืชืืื ืืจืืืช ืืช ืืืืฉืืจ ืืืื ืืชืจืฉืื ืืืืคืืืืืื ืฉื ืฆื ืืื ืืืคืฉืืช ืขื ืืืื ื ืชืื ืื ืื ืชืื ืื ืืคื ืฉืืืฆื ืืชืืื ื ืืืื.
ืืงืจื ืฉืืืืฉ ืฉื ื
ืืืงืจื ืื ื ืจืื ืืืฆื ืืืืกืืฃ ืืชืงื ืจืฉืช ืฉืืื ื ืืืง ืืจืฉืช ืฆื ืืื ืืืคืฉืืช. ืืืื ื ืกืชืื ืขื ืืืืืื ืืื. ืืฉ ืื ื ืฉื ื ืกืืื ื ืฆื ืืื ืืืคืฉืืช ืืคืืขืืื ืขื ืฉื ื ืืืจืืื ืฉืื ืื, ืืื ืืืืจ ืืช ืฉื ื ืืืืจืืื ืืืื ืื ืื ื ืฆืจืืืื ืืชื TOR. ืืืจืืช ืฉืื ื ืืืืืื ืืืฉืื ืืืช ืขื ืืื ืืืืจืช ืฆืืชืื ืืงืืฉืืจืื ืฉื ืืื ื ืืงืืืฅ ืชืฆืืจื, ืืืื ื ืจืื ืืืฆื ื ืืื ืืขืฉืืช ืืช ืืืชื ืืืืจ ืืืืฆืขืืช ืืืฉืง ื-API ืฉื Topology Rules.
ืืื ืืชื TOR, ืฉื ื ืืกืืื ืื ืืืคืืขื ืืฉื ื ืฆืืชืื ืฉืื ืื ืืื ืื ืงืืฉืืจ, ืืคื ืฉืืืฆื ืืชืืื ื ืืืื.
ืืขืช ืืคืขื ืืช ืืคืงืืืืช ืืืืืช ืฉื Rules Host ืืื ืืืฆืืจ ืืช ืืชื ื-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 ืืืืฆืืืืช ื ืืฆืจื ืื ืืกืคื ืืืืคืืืืืื ืฉื ืฆื ืืื ืืืคืฉืืช, ืืืืืคืืืืืื ืชืืจืื ืืขืช ืืื ืืชืืื ื ืืืื.
ืืขืช ืืคืขื ืืช ืคืงืืืืช ื-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 2 ืืืืฉืง ืืฆืืืืจื ืืืืจื 2
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 ืืื ืกืืื ืื ืืคืืจืืื. ืืขืช ืืืืคืืืืืื ืืกืืคืืช ืชืืจืื ืืื ืืชืืื ื ืืืื.
ืืขืช ืฉื ื ืืืืจืืื/ืืกืืื ืื ืืืืืจืื ืืืืื ืืชืืืื ืืืืืง ืืช ืืืืืืจ ืื ืืืฆืืจ ืืืืืช ื ืชืื ืืงืฆืจ ืืืืชืจ ืืื ืฉื ื ืืืืจืืื.
ื .ื ืงืืฉืืจ ื
ืื ืื ื ืืืคืฉืื ืื ืฉืื ืฉืืืืื ืืืชืื ืคืืกืืื ืขื ืชืืื ืืช ืืืจืืช ืฉื Skydive.
ืืงืืจ: www.habr.com