From a564715f6b1bc38db7c2e7fc1d6fde7d15ae0809 Mon Sep 17 00:00:00 2001 From: Vincent SELLIER Date: Thu, 3 Nov 2022 14:57:44 +0100 Subject: [PATCH 1/2] Add the Azure "Private Endpoints" node --- diagrams/azure/network.py | 4 ++++ docs/nodes/azure.md | 1 + resources/azure/network/private-endpoints.png | Bin 0 -> 8633 bytes 3 files changed, 5 insertions(+) create mode 100644 resources/azure/network/private-endpoints.png diff --git a/diagrams/azure/network.py b/diagrams/azure/network.py index 23dd69c00..27ee8748c 100644 --- a/diagrams/azure/network.py +++ b/diagrams/azure/network.py @@ -72,6 +72,10 @@ class OnPremisesDataGateways(_Network): _icon = "on-premises-data-gateways.png" +class PrivateEndpoints(_Network): + _icon = "private-endpoints.png" + + class PublicIpAddresses(_Network): _icon = "public-ip-addresses.png" diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md index c6fe5852d..6448fdaf8 100644 --- a/docs/nodes/azure.md +++ b/docs/nodes/azure.md @@ -217,6 +217,7 @@ Node classes list of azure provider. - **diagrams.azure.network.NetworkSecurityGroupsClassic** - **diagrams.azure.network.NetworkWatcher** - **diagrams.azure.network.OnPremisesDataGateways** +- **diagrams.azure.network.PrivateEndpoints** - **diagrams.azure.network.PublicIpAddresses** - **diagrams.azure.network.ReservedIpAddressesClassic** - **diagrams.azure.network.RouteFilters** diff --git a/resources/azure/network/private-endpoints.png b/resources/azure/network/private-endpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..eabc114685c6d4ccdeb815d8d615102727e921da GIT binary patch literal 8633 zcmdT~WmuF!*M4?s0coTcP>>Gk20^-!ZYhzL?p;v2L+Oz2ZiEG;k(90lDUq%PB);{1 zukY{o|NF7~>@_=co-=dqbI+Oknn+D`1^h=;j{pF`S5lPI1^^K1CkVjCL_JL2m)fEp zIIfC@?f~%k+rJNJz@^k0)kx{_%D_X%#n!{y^1Th;O3?#1$c9mk@}3_zH>cDMYGzdGxaBXjtLLB z(a+gty;r|X9jZ8+-#zQ7dtHUu)WpWfA~STzoLRU!to41GZQh@Z5a-!KHu6?RGeO!b z`Dkfj!8iCJwSK%4x|Y1Ku;2nPd?0*@{eOHtO;|yT7-gwGx@xq)RQ(|Ht4I7XJl}#e z1i@e-MsoiuPm1pu zB+ATkZUYMd=Q{cM1;vVfdWfS@zF(&qhQ#H_!hd*;gAg=p>vhxzbT9GZIx$@Hq^_j?WTm*eGb!NDy;dL;kYuZY~z5=n**~m#W*kw^7LNPWA zB&_&Zz>%)r`veV&!*?y)5l&c^40a_1kGJ@Tk!E?nv^rD#*Omx&jYx9kfWvvc#uGy< z&FC)G{(tN_-ov8p-BHGWdc z)x#4n0tQTG3Ipmdlhl0uX5Kl2^Wf18Tm`f9?uPAC&ewXI7(jnFsB?j&% z*`26EHzttvsi$JTq#wQ7EH&iw)^T!x55IhH|_rZY2#})Ve(CgL9as;kd zJj2ve421N_-ju(L&)}hmmlZ5|{Q>kk$uH0)e z)P%n^jpjCrBp$0aE1<$QVo8SagUIqk-&-(0|n?!Gql44?&d=u zZl-O>$duFu2q~XoBv`4xb)@^Pwr!5~k`oGkRi{KqcVZA=(^$Mu`zoCgR}r*XikKSA z$5;}4sGOtmT8-=Mxq#X;btHumF@Ec;sH(RP-5`2Jo&X-S)He^jz{AX0*rSCZ!-Ab^Be#uR+Sc14c0P`YGISkSgc-b6a!B%+ z-BqyT!i9>`w@|w2XtPs*-lz3Rjy2fKA@@i4R`V*&a}31G;#9aRJ8a#HfYI?e1ntrK z8*SiaD+(QiT+A5sAEK2&*#D24eD~?-*=Oq3A=Io^BWbGe9S{_HfrG{_${y-6FOf6f zy>au2H%zG{NoIgpN3!99J33}irhjZ(AazUZAcuQN5fl)D3OO0gUsjG^Zx?^fQ9|w4 z)q`2uL-4FDjctZ7J8Vh+o(l9!DP*;x#Wa8@ETBCA5gt!_sDglVPBt-75O;IYb%0D4BCVo&M7b0I;3Y5q@E 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 Date: Thu, 3 Nov 2022 14:57:49 +0100 Subject: [PATCH 2/2] Add the Azure "Private Link Services" node --- diagrams/azure/network.py | 4 ++++ docs/nodes/azure.md | 1 + .../azure/network/private-link-services.png | Bin 0 -> 9684 bytes 3 files changed, 5 insertions(+) create mode 100644 resources/azure/network/private-link-services.png diff --git a/diagrams/azure/network.py b/diagrams/azure/network.py index 27ee8748c..6db4123b5 100644 --- a/diagrams/azure/network.py +++ b/diagrams/azure/network.py @@ -76,6 +76,10 @@ class PrivateEndpoints(_Network): _icon = "private-endpoints.png" +class PrivateLinkServices(_Network): + _icon = "private-link-services.png" + + class PublicIpAddresses(_Network): _icon = "public-ip-addresses.png" diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md index 6448fdaf8..ebf7734d8 100644 --- a/docs/nodes/azure.md +++ b/docs/nodes/azure.md @@ -218,6 +218,7 @@ Node classes list of azure provider. - **diagrams.azure.network.NetworkWatcher** - **diagrams.azure.network.OnPremisesDataGateways** - **diagrams.azure.network.PrivateEndpoints** +- **diagrams.azure.network.PrivateLinkServices** - **diagrams.azure.network.PublicIpAddresses** - **diagrams.azure.network.ReservedIpAddressesClassic** - **diagrams.azure.network.RouteFilters** diff --git a/resources/azure/network/private-link-services.png b/resources/azure/network/private-link-services.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8adc12161e8684add1e3dbffc131becd2093fc GIT binary patch literal 9684 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 literal 0 HcmV?d00001