ಸ್ಕೈಡೈವ್ ಕ್ಲೈಂಟ್ ಮೂಲಕ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ನೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು

ಸ್ಕೈಡೈವ್ ಒಂದು ತೆರೆದ ಮೂಲವಾಗಿದೆ, ನೈಜ-ಸಮಯದ ನೆಟ್‌ವರ್ಕ್ ಟೋಪೋಲಜಿ ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್ ವಿಶ್ಲೇಷಕ. ನೆಟ್‌ವರ್ಕ್ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಇದು ಸಮಗ್ರ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.

ನಿಮಗೆ ಆಸಕ್ತಿಯನ್ನುಂಟುಮಾಡಲು, ಸ್ಕೈಡೈವ್ ಕುರಿತು ನಾನು ನಿಮಗೆ ಒಂದೆರಡು ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳನ್ನು ನೀಡುತ್ತೇನೆ. ಕೆಳಗೆ ಸ್ಕೈಡೈವ್ ಪರಿಚಯದ ಪೋಸ್ಟ್ ಇರುತ್ತದೆ.

ಸ್ಕೈಡೈವ್ ಕ್ಲೈಂಟ್ ಮೂಲಕ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ನೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು

ಸ್ಕೈಡೈವ್ ಕ್ಲೈಂಟ್ ಮೂಲಕ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ನೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು

ಪೋಸ್ಟ್"skydive.network ಗೆ ಪರಿಚಯ»ಹಾಬ್ರೆಯಲ್ಲಿ.

Skydive ಏಜೆಂಟ್‌ಗಳಿಂದ ನೆಟ್‌ವರ್ಕ್ ಈವೆಂಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುವ ಮೂಲಕ Skydive ನೆಟ್ವರ್ಕ್ ಟೋಪೋಲಜಿಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಸ್ಕೈಡೈವ್ ಏಜೆಂಟ್ ನೆಟ್‌ವರ್ಕ್‌ನ ಹೊರಗಿರುವ ಟೋಪೋಲಜಿ ರೇಖಾಚಿತ್ರ ನೆಟ್‌ವರ್ಕ್ ಘಟಕಗಳನ್ನು ಅಥವಾ TOR, ಡೇಟಾ ಸಂಗ್ರಹಣೆ, ಇತ್ಯಾದಿಗಳಂತಹ ನೆಟ್‌ವರ್ಕ್ ಅಲ್ಲದ ವಸ್ತುಗಳನ್ನು ಹೇಗೆ ಸೇರಿಸುವುದು ಅಥವಾ ಪ್ರದರ್ಶಿಸುವುದು ಎಂದು ನೀವು ಎಂದಾದರೂ ಯೋಚಿಸಿದ್ದೀರಾ. Node ನಿಯಮ API ಗೆ ಧನ್ಯವಾದಗಳು .

ಆವೃತ್ತಿ 0.20 ರಿಂದ, Skydive ಹೊಸ ನೋಡ್‌ಗಳು ಮತ್ತು ಅಂಚುಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನೋಡ್‌ಗಳ ಮೆಟಾಡೇಟಾವನ್ನು ನವೀಕರಿಸಲು ಬಳಸಬಹುದಾದ ನೋಡ್ ನಿಯಮ API ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ನೋಡ್ ನಿಯಮ API ಅನ್ನು ಎರಡು API ಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ: ನೋಡ್ ನಿಯಮ API ಮತ್ತು ಅಂಚಿನ ನಿಯಮ API. ಹೊಸ ನೋಡ್ ಅನ್ನು ರಚಿಸಲು ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನೋಡ್‌ನ ಮೆಟಾಡೇಟಾವನ್ನು ನವೀಕರಿಸಲು ನೋಡ್ ರೂಲ್ API ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಎಡ್ಜ್ ರೂಲ್ 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 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')"
}

ಸ್ಕೈಡೈವ್ ಎಡ್ಜ್ ಅನ್ನು ರಚಿಸುವುದು

ಅಂಚನ್ನು ರಚಿಸಲು, ನೀವು ಮೂಲ ಮತ್ತು ಗಮ್ಯಸ್ಥಾನ ನೋಡ್‌ಗಳು ಮತ್ತು ಅಂಚಿನ ಲಿಂಕ್ ಪ್ರಕಾರವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು; ಚೈಲ್ಡ್ ನೋಡ್ ರಚಿಸಲು, ಲಿಂಕ್ ಪ್ರಕಾರದ ಮೌಲ್ಯವು ಮಾಲೀಕತ್ವವಾಗಿರಬೇಕು; ಅದೇ ರೀತಿ, ಲಿಂಕ್ ಪ್ರಕಾರ ಲೇಯರ್ 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 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 ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಅದನ್ನು ಹೇಗೆ ಮಾಡಬಹುದು ಎಂದು ನೋಡೋಣ.

TOR ಸ್ವಿಚ್ ಇಲ್ಲದೆ, ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ ಎರಡು ಏಜೆಂಟ್‌ಗಳು ಯಾವುದೇ ಲಿಂಕ್‌ಗಳಿಲ್ಲದೆ ಎರಡು ವಿಭಿನ್ನ ನೋಡ್‌ಗಳಾಗಿ ಗೋಚರಿಸುತ್ತವೆ.

ಸ್ಕೈಡೈವ್ ಕ್ಲೈಂಟ್ ಮೂಲಕ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ನೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು

ಈಗ 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 ಸ್ವಿಚ್ ಮತ್ತು ಪೋರ್ಟ್‌ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ ಮತ್ತು ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ಸೇರಿಸಲಾಗಿದೆ, ಮತ್ತು ಟೋಪೋಲಜಿ ಈಗ ಕೆಳಗಿನ ಚಿತ್ರದಂತೆ ಕಾಣುತ್ತದೆ.

ಸ್ಕೈಡೈವ್ ಕ್ಲೈಂಟ್ ಮೂಲಕ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ನೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು

ಈಗ 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"

TOR ಸ್ವಿಚ್ ಮತ್ತು ಪೋರ್ಟ್ ನಡುವೆ ಮಾಲೀಕತ್ವ ಮತ್ತು ಲೇಯರ್2 ಅಸೋಸಿಯೇಷನ್‌ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ, ಹಾಗೆಯೇ ಏಜೆಂಟ್‌ಗಳು ಮತ್ತು ಪೋರ್ಟ್‌ಗಳ ನಡುವೆ ಲೇಯರ್2 ಅಸೋಸಿಯೇಷನ್‌ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ. ಈಗ ಅಂತಿಮ ಟೋಪೋಲಜಿ ಕೆಳಗಿನ ಚಿತ್ರದಂತೆ ಕಾಣುತ್ತದೆ.

ಸ್ಕೈಡೈವ್ ಕ್ಲೈಂಟ್ ಮೂಲಕ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಕೈಡೈವ್ ಟೋಪೋಲಜಿಗೆ ನೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು

ಈಗ ಎರಡು ಹೋಸ್ಟ್‌ಗಳು/ಏಜೆಂಟ್‌ಗಳು ಸರಿಯಾಗಿ ಸಂಪರ್ಕಗೊಂಡಿವೆ ಮತ್ತು ನೀವು ಸಂಪರ್ಕವನ್ನು ಪರೀಕ್ಷಿಸಬಹುದು ಅಥವಾ ಎರಡು ಹೋಸ್ಟ್‌ಗಳ ನಡುವೆ ಕಡಿಮೆ ಮಾರ್ಗ ಕ್ಯಾಪ್ಚರ್ ಅನ್ನು ರಚಿಸಬಹುದು.

PS ಲಿಂಕ್ ಮೂಲ ಪೋಸ್ಟ್

ಇತರ ಸ್ಕೈಡೈವ್ ವೈಶಿಷ್ಟ್ಯಗಳ ಕುರಿತು ಪೋಸ್ಟ್‌ಗಳನ್ನು ಬರೆಯಬಹುದಾದ ಜನರನ್ನು ನಾವು ಹುಡುಕುತ್ತಿದ್ದೇವೆ.
ಟೆಲಿಗ್ರಾಮ್ ಚಾಟ್ skydive.network ಮೂಲಕ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ