From 270760a8233d69ac2ea86a38c9d6262e1643e328 Mon Sep 17 00:00:00 2001 From: = Date: Tue, 12 Oct 2021 14:08:51 +0200 Subject: [PATCH] testing w logical constructs --- config.py | 7 +++-- diagrams/aci/fabricnode.py | 6 ++-- diagrams/aci/logical.py | 39 +++++++++++++++++++++++++ docs/nodes/aci.md | 16 ++++++++-- resources/aci/logical/contract.png | Bin 0 -> 3455 bytes resources/aci/logical/epg.png | Bin 0 -> 3062 bytes resources/aci/logical/epg_microseg.png | Bin 0 -> 3297 bytes resources/aci/logical/l2out.png | Bin 0 -> 1898 bytes resources/aci/logical/l3out.png | Bin 0 -> 2157 bytes resources/aci/logical/vrf.png | Bin 0 -> 2315 bytes resources/aci/logical/vzany.png | Bin 0 -> 3444 bytes 11 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 diagrams/aci/logical.py create mode 100644 resources/aci/logical/contract.png create mode 100644 resources/aci/logical/epg.png create mode 100644 resources/aci/logical/epg_microseg.png create mode 100644 resources/aci/logical/l2out.png create mode 100644 resources/aci/logical/l3out.png create mode 100644 resources/aci/logical/vrf.png create mode 100644 resources/aci/logical/vzany.png diff --git a/config.py b/config.py index 1f97899b..f77db06d 100644 --- a/config.py +++ b/config.py @@ -97,9 +97,10 @@ TITLE_WORDS = { ALIASES = { "aci": { "fabricnode": { - "apic": "apic_blue", - "leaf": "leaf_blue", - "spine": "spine_blue" + # Default colors + "Apic_Blue": "apic", + "Leaf_Blue": "leaf", + "Spine_Blue": "spine", } }, "onprem": { diff --git a/diagrams/aci/fabricnode.py b/diagrams/aci/fabricnode.py index 370774eb..091dbd8a 100644 --- a/diagrams/aci/fabricnode.py +++ b/diagrams/aci/fabricnode.py @@ -126,6 +126,6 @@ class Spine_Yellow(_Fabricnode): # Aliases -apic_blue = apic -leaf_blue = leaf -spine_blue = spine +apic = Apic_Blue +leaf = Leaf_Blue +spine = Spine_Blue diff --git a/diagrams/aci/logical.py b/diagrams/aci/logical.py new file mode 100644 index 00000000..f9fe0ba2 --- /dev/null +++ b/diagrams/aci/logical.py @@ -0,0 +1,39 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _Aci + + +class _Logical(_Aci): + _type = "logical" + _icon_dir = "resources/aci/logical" + + +class Contract(_Logical): + _icon = "contract.png" + + +class Epg(_Logical): + _icon = "epg.png" + + +class Epg_Microseg(_Logical): + _icon = "epg_microseg.png" + + +class L2Out(_Logical): + _icon = "l2out.png" + + +class L3Out(_Logical): + _icon = "l3out.png" + + +class Vrf(_Logical): + _icon = "vrf.png" + + +class Vzany(_Logical): + _icon = "vzany.png" + + +# Aliases diff --git a/docs/nodes/aci.md b/docs/nodes/aci.md index 44fff5cf..3f195a5e 100644 --- a/docs/nodes/aci.md +++ b/docs/nodes/aci.md @@ -7,7 +7,7 @@ Node classes list of aci provider. ## aci.fabricnode -- **diagrams.aci.fabricnode.Apic_Blue** +- **diagrams.aci.fabricnode.Apic_Blue**, **apic** (alias) - **diagrams.aci.fabricnode.Apic_Brown** - **diagrams.aci.fabricnode.Apic_Cyan** - **diagrams.aci.fabricnode.Apic_Darkblue** @@ -17,7 +17,7 @@ Node classes list of aci provider. - **diagrams.aci.fabricnode.Apic_Orange** - **diagrams.aci.fabricnode.Apic_Red** - **diagrams.aci.fabricnode.Apic_Yellow** -- **diagrams.aci.fabricnode.Leaf_Blue** +- **diagrams.aci.fabricnode.Leaf_Blue**, **leaf** (alias) - **diagrams.aci.fabricnode.Leaf_Brown** - **diagrams.aci.fabricnode.Leaf_Cyan** - **diagrams.aci.fabricnode.Leaf_Darkblue** @@ -26,7 +26,7 @@ Node classes list of aci provider. - **diagrams.aci.fabricnode.Leaf_Orange** - **diagrams.aci.fabricnode.Leaf_Red** - **diagrams.aci.fabricnode.Leaf_Yellow** -- **diagrams.aci.fabricnode.Spine_Blue** +- **diagrams.aci.fabricnode.Spine_Blue**, **spine** (alias) - **diagrams.aci.fabricnode.Spine_Brown** - **diagrams.aci.fabricnode.Spine_Cyan** - **diagrams.aci.fabricnode.Spine_Darkblue** @@ -36,3 +36,13 @@ Node classes list of aci provider. - **diagrams.aci.fabricnode.Spine_Orange** - **diagrams.aci.fabricnode.Spine_Red** - **diagrams.aci.fabricnode.Spine_Yellow** + +## aci.logical + +- **diagrams.aci.logical.Contract** +- **diagrams.aci.logical.Epg** +- **diagrams.aci.logical.Epg_Microseg** +- **diagrams.aci.logical.L2Out** +- **diagrams.aci.logical.L3Out** +- **diagrams.aci.logical.Vrf** +- **diagrams.aci.logical.Vzany** diff --git a/resources/aci/logical/contract.png b/resources/aci/logical/contract.png new file mode 100644 index 0000000000000000000000000000000000000000..75ddbebba2d0b3f90a706116ccb358027e51338b GIT binary patch literal 3455 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 aM)PiLiCqe++m literal 0 HcmV?d00001 diff --git a/resources/aci/logical/l3out.png b/resources/aci/logical/l3out.png new file mode 100644 index 0000000000000000000000000000000000000000..d17361814be4e6d19097f98215ef6c66e4b782b2 GIT binary patch literal 2157 zcmX|?c{tSDAIHDL$THc97@4`oPC}7P)|t$NVXTpC2_sAPrOBGLXv&C782cD&_I(>m z{VJ29WT|V5xkx0LZtLVr8rj_lOkg;JcEjQes1u zRLMw7qYmkW9d(~Ev86z%M|M&Rjpb`f;6h1)2Bvg5ik&aF9fUxTux5p)k#~g3u zl00vPdkzq9zN`$3r+ujiuuKFS_2QX=*7|NLx=}?OEkR;NQ!&@87$hJ~P`&=F7{GgS zuGkSob45@CZgoB4rYMOC@i>kAaYy#y_azkTnK=t}TC zu$~;OZqU23$C@W)tIUcxy;Ae_g&YEi;ZF{k;!AOt(&!E2R&ve9=UryM3>@;%SVl~q zL(GXps{Whx`avg+`NCrE2qwGmSxn-v#1-vF5J`CK8{+-Gm>}7yd77f3>EfpfV3M&D zOT*1cqI*2|>yc&nA)i=%E5#6V!sticRzDks?;kF@cB&w}E`d5{6*U^Jcl4}rtejM( zEc2dMKG)al(8r3o@t`L}LWnZWeLUrvHdDCIB{pZTL8-j9MP@iPySdPSShUlRG_h^I zVC(;_sxa~&{qbk2S*;Ngn9n+l4<~x3zFqwYch)8-&bLkBL!1ROHg?KO(<+v=#Jvg# z%c%|4UOooJzJZJ(x-`wzNQ2KWKJ0PVObp>!tqWmgP2DDZ<&1stYS!iQYe~%&cN7mJ z-WeLkR+#6@it^1HJFl53y4IX4x~!ru-Gb{nU|3G|NMzKM*EN4LKdNHn9oP65v7@5q z)oZ1Ro^>m!U0jeB+TicSlAYT*K-!VsLR4^X>6N{8GHEmxO8Q*9n0mYGWT|~2t@3us zh66!-Of4*GeT#g+;>p-7VIk_m>hESQP&q}0jcrepph=Lsbd{AcrP>eRM(T4W~FgMYYZF z;Uj09^`j+n#2rX^We0U#9)|R5nX`fYR#z#YrnbEb5ojRMv>RrWNhxr=&K&O3qLTe; zb^NH;DXFs2c}3U_3@1pj-chX8udYM$ZEH1$jZP2l?Nq3co@i>p$;eFOVf2I@hzUpg zoh^mIV9FwNVR;aUS+AuB%@!3R`7Ng}G(L!rU*4(3{<%4r#fz!G^B+MS3G^0Md2`0( z4HWLLlz6*8toT#K!MGXtLb`l|qn&C*vRvYT?2dFP9dql-#zaiPkmoes z2@no?1Th2Qj<}><6BcGs_g&x10cP{ABFT7P$!{Z!wZ3|ce z%li0S2;#0nEJu`)7tf^5`2b|VOb349y?3+nqSOVgfrTRKhiIG#6Cx~mq|-?3_>adc zbf2#@`wUvCrssa5rUAUj!Kc2-O?F#pFbzB_(f1sib&7EhjZDGqCwv!{S|0|lnH7G_9D{xxAR-sy=-^s{^}aUrJ%+?jYAlIrv=2XqUH4SX9>dsNScul)Ih{J1`D&R1#QpLrCt3 aW*mYtf~coN&B0;6zHKZThpIPmPy8>!x3@?D literal 0 HcmV?d00001 diff --git a/resources/aci/logical/vrf.png b/resources/aci/logical/vrf.png new file mode 100644 index 0000000000000000000000000000000000000000..d51b7a8405066b1e6d593356b50b4aeeb9f9bd36 GIT binary patch literal 2315 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