+
    Û1j<  ã                   óJ   € ^ RI t ^ RIt^ RIHtHt ^ RIHt  ! R R]]4      tR# )é    N)ÚPluginÚIndependentPlugin)Úis_executablec                   ó6   a € ] tR t^t o RtRtRtRtR tRt	V t
R# )Ú
NetDiagrama  
This plugin generates a visual network topology diagram (PNG) using
Graphviz and generates ASCII. It maps relationships between physical NICs,
Bonds, Bridges, Team devices, Tunnels, and Containers to help support
engineers visualize complex network hierarchies.
Únet_diagramc                ó˜  a€ . RLOp/ pV P                  R4      pVR,          ^ 8X  d˜   VR,          P                  4        F|  pVP                  R^4      p\        V4      ^8¼  g   K'  V^ ,          P                  R4      ^ ,          pRP	                  VR,          P                  4       P                  4       4      W&&   K~  	  V P                  R4      pVR,          ^ 8X  Edá   \        4       pVR,          P                  4        EFº  pVP                  4       pR	V9  d   K  V^ ,          p	V	RM9   d   K/  V	P                  RN4      '       d   KH  WUP                  R	4      ^,           ,          oR
V9   d   WUP                  R
4      ^,           ,          MRp
RV9   d±   WUP                  R4      ^,           ,          pRVP                  RR4       2pWÈ9  d*   VP                  RV RV R24       VP                  V4       RV	 2pV
R8w  d   VRV
 R2,          pV
R8w  d   RM
V	R8X  d   RMRpVP                  RS RV RV RV R2	4       EKD  V	RO9  g   EKN  RV	P                  RR4      P                  RR4       2pWø9  d*   VP                  RV R V	 R!24       VP                  V4       VP                  RS RV R"24       EK½  	  V P                  R#R$R%4      pV P                  V4      '       EdR   V P                  V4       EF;  oSRP9   d   K  V P                  VS4      pSV9  dj   V P                  V P                  VR&4      4      '       gC   \        ;QJ d    V3R' lV 4       F  '       g   K   R(M	  R)M! V3R' lV 4       4      '       g   K�  R*p\        ;QJ d    V3R+ lRQ 4       F  '       g   K   R(M	  R)M! V3R+ lRQ 4       4      '       d   R,pM§V P                  V P                  VR-4      4      '       d   R.pM}V P                  V P                  VR/4      4      '       d   R0pMSV P                  V P                  VR14      4      '       d   R2pM)V P                  V P                  VR34      4      '       d   R4pR5S R62pSV9   d   VRVS,           2,          pVP                  RS RV R7V R824       V P                  VR&4      p\         P"                  P%                  V4      '       g   EKð  \         P"                  P'                  \         P(                  ! V4      4      pVP                  RS RV R924       EK>  	  VP                  R:4       V P+                  R;4      ;_uu_ 4       pVP-                  R<P	                  V4      4       VP.                  pRRR4       XP                  R=R>4      pV P                  R?V R@V 24       \1        RA4      '       d®   VP                  R=RB4      p\2        P4                  ! RCRDR<P	                  V4      4      pVP                  R=RE4      p\7        VRFRGRH7      ;_uu_ 4       pVP-                  V4       RRR4       RIV RJV 2pV P                  V4        \         P8                  ! V4       R# V P=                  RK4       R#   + '       g   i     EL; i  + '       g   i     Li; i  \:         d     R# i ; i)Rúdigraph network {zip -br addrÚstatusÚoutputNÚ@z\n:é   NNzip route show table allÚdevÚtableÚmainÚviaÚgw_Ú.Ú_z  "z" [label="Gateway\nz-", shape=doubleoctagon, fillcolor="#eeeeee"];zto z
\n(table: Ú)z#e67e22Údefaultz#27ae60z#2980b9z" -> "z
" [label="z
", color="z", style=dashed];Únet_Ú/z" [label="Network\nz5", shape=ellipse, style=dotted, fillcolor="#f9f9f9"];z"" [color="#7f8c8d", style=dotted];z/sysÚclassÚnetÚmasterc              3   ó.   <"  € T F
  pSV9   x € K  	  R # 5i©N© )Ú.0ÚlineÚifaces   & €Ú@/usr/lib/python3/dist-packages/sos/report/plugins/net_diagram.pyÚ	<genexpr>Ú%NetDiagram.collect.<locals>.<genexpr>q   s   øé € ÐC¹°˜u¨ž}»ùs   ƒTFÚwhitec              3   ó,   <"  € T F	  qS9   x € K  	  R # 5ir   r   )r    Úxr"   s   & €r#   r$   r%   u   s   øé € ÐHÑ+G a˜E–zÓ+Gùs   ƒz#C3E6CBÚbridgez#ADD8E6Úbondingz#FFFFE0Údevicez#90EE90Ú	tun_flagsz#E1BEE7Ú<Ú>z", fillcolor="z"];z" [label="slave-of"];Ú}znetwork_topology.dotÚ
z.dotz.pngz
dot -Tpng z -o z
graph-easyz.txtzshape=[a-z]*z	shape=boxz_ascii_stage.dotÚwzutf-8)Úencodingzgraph-easy --ascii --output=Ú z1graph-easy tool not found; skipping ASCII output.)r
   z*  rankdir=LR; overlap=false; splines=true;z  nodesep=0.2; ranksep=0.5;z@  node [shape=box, style=filled, fontname="Arial", fontsize=10];z'  edge [penwidth=1.5, color="#444444"];)ÚlocalÚ	broadcastÚanycastÚ	multicast)Úff00z224.z239.z127.)r   Úall)ÚloÚbonding_masters)ÚpodmanÚdockerÚveth)Úexec_cmdÚ
splitlinesÚsplitÚlenÚjoinÚpopÚsetÚ
startswithÚindexÚreplaceÚappendÚaddÚ	path_joinÚpath_existsÚlistdirÚanyÚosÚpathÚislinkÚbasenameÚreadlinkÚcollection_fileÚwriteÚnamer   ÚreÚsubÚopenÚremoveÚOSErrorÚ	_log_info)ÚselfÚ	dot_linesÚipsÚres_ipsr!   ÚpartsÚifnameÚ
res_routesÚ
seen_nodesÚdestÚtblÚgw_ipÚgw_idÚr_lblÚr_colÚnet_idÚnet_pathrP   ÚfillÚlabelÚm_linkÚm_nameÚdotfÚdot_pathÚpng_pathÚtxt_pathÚcleaned_dot_contentÚstage_dot_pathÚstage_fÚ	ascii_cmdr"   s   &                             @r#   ÚcollectÚNetDiagram.collect   s0  ø€ ò
ˆ	ð ˆØ—-‘- Ó.ˆØ�8Õ Ô!Ø Õ)×4Ñ4Ö6�ØŸ
™
 4¨Ó+�Ü�u“: –?Ø" 1�XŸ^™^¨CÓ0°Õ3�FØ"'§*¡*¨U°2­Y¯]©]«_×-BÑ-BÓ-DÓ"E�C“Kñ	 7ð —]‘]Ð#<Ó=ˆ
Ø�hÕ 1Õ$Ü›ˆJØ" 8Õ,×7Ñ7×9�ØŸ
™
›�Ø Ô%Ùà˜Q•x�ØÐIÔIÙØ—?‘?Ð#C×DÒDÙàŸk™k¨%Ó0°1Õ4Õ5�Ø9@ÀEÔ9I�eŸK™K¨Ó0°1Õ4Ö5Øð ð ˜E”>Ø!§+¡+¨eÓ"4°qÕ"8Õ9�EØ! %§-¡-°°SÓ"9Ð!:Ð;�EØÔ.Ø!×(Ñ(Ø! % Ð(<¸U¸Gð DIð Iôð #Ÿ™ uÔ-à! $ ˜L�EØ˜f”}Ø ;¨s¨e°1Ð!5Õ5˜à),°¬™IØ*.°)Ô*;™YÀð ð ×$Ñ$Ø˜e˜W F¨5¨'°¸E¸7ð C"Ø"' Ð(9ð;÷ð
 Ð!3×3Ø# D§L¡L°°cÓ$:×$BÑ$BÀ3ÈÓ$LÐ#MÐN�FØÔ/Ø!×(Ñ(Ø! & Ð)=¸d¸Vð D4ð 4ôð
 #Ÿ™ vÔ.Ø×$Ñ$ s¨5¨'°¸°xð @Hð &I÷ Jñ] :ðd —>‘> &¨'°5Ó9ˆØ×Ñ˜H×%Ó%ØŸ™ h×/�ØÐ5Ô5ÙØ—~‘~ h°Ó6�à Ô#Ø×#Ñ# D§N¡N°4¸Ó$B×CÒCß›3ÔC¹ÓCŸ3Ÿ3š3ÔC¹ÓC×CÒCÙ à�ß“3ÔHÑ+GÓH—3—3’3ÔHÑ+GÓH×HÒHØ$‘DØ×%Ñ% d§n¡n°T¸8Ó&D×EÒEØ$‘DØ×%Ñ% d§n¡n°T¸9Ó&E×FÒFØ$‘DØ×%Ñ% d§n¡n°T¸8Ó&D×EÒEØ$‘DØ×%Ñ% d§n¡n°T¸;Ó&G×HÒHØ$�Dà˜E˜7 !˜�Ø˜C”<Ø˜s 3 u¥: ,Ð/Õ/�Eà× Ñ  3 u g¨Z¸°wð ?/Ø/3¨f°Cð"9ô :ð Ÿ™¨¨hÓ7�Ü—7‘7—>‘> &×)Õ)ÜŸW™W×-Ñ-¬b¯kªk¸&Ó.AÓB�FØ×$Ñ$ s¨5¨'°¸°xð @;ð &<÷ =ñA 0ðF 	×Ñ˜Ôà×!Ñ!Ð"8×9Ô9¸TØ�J‰J�t—y‘y Ó+Ô,Ø—y‘yˆH÷ :ð ×#Ñ# F¨FÓ3ˆØ�‰˜
 8 *¨D°°
Ð;Ô<ô ˜×&Ò&Ø×'Ñ'¨°Ó7ˆHÜ"$§&¢&Ø ¨d¯i©i¸	Ó.Bó#Ðð &×-Ñ-¨fÐ6HÓIˆNä�n c°G×<Õ<ÀØ—‘Ð1Ô2÷ =ð /¨x¨j¸Ø!Ð"ð$ð ð �M‰M˜)Ô$ðÜ—	’	˜.Ö)ð
 �N‰NÐNÖO÷= :×9Ð9ú÷ =×<ûô ô âðús*   Õ$-ZØ4Z'Ù(Z: ÚZ$	Ú'Z7	Ú:[	Û[	r   N)Únetwork)ÚgraphvizÚteamdzperl-Graph-Easy)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úplugin_nameÚprofilesÚpackagesry   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r#   r   r      s)   ø‡ € ñð  €KØ€HØ7€H÷PPð PPó    r   )rO   rW   Úsos.report.pluginsr   r   Úsos.utilitiesr   r   r   r‰   r#   Ú<module>rŒ      s&   ðó 
Û 	ß 8Ý 'ô\P�Ð*ö \Pr‰   