From aa97a7c957d269842595c9e5672c97e881d39ca5 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Mon, 24 Aug 2020 19:34:59 +0900 Subject: [PATCH 01/22] fix: missing outscale nodes --- diagrams/outscale/compute.py | 19 +++++++++++++++++++ diagrams/outscale/network.py | 35 +++++++++++++++++++++++++++++++++++ diagrams/outscale/security.py | 19 +++++++++++++++++++ diagrams/outscale/storage.py | 19 +++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 diagrams/outscale/compute.py create mode 100644 diagrams/outscale/network.py create mode 100644 diagrams/outscale/security.py create mode 100644 diagrams/outscale/storage.py diff --git a/diagrams/outscale/compute.py b/diagrams/outscale/compute.py new file mode 100644 index 00000000..35a09619 --- /dev/null +++ b/diagrams/outscale/compute.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _Outscale + + +class _Compute(_Outscale): + _type = "compute" + _icon_dir = "resources/outscale/compute" + + +class Compute(_Compute): + _icon = "compute.png" + + +class DirectConnect(_Compute): + _icon = "direct-connect.png" + + +# Aliases diff --git a/diagrams/outscale/network.py b/diagrams/outscale/network.py new file mode 100644 index 00000000..f5a18376 --- /dev/null +++ b/diagrams/outscale/network.py @@ -0,0 +1,35 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _Outscale + + +class _Network(_Outscale): + _type = "network" + _icon_dir = "resources/outscale/network" + + +class ClientVpn(_Network): + _icon = "client-vpn.png" + + +class InternetService(_Network): + _icon = "internet-service.png" + + +class LoadBalancer(_Network): + _icon = "load-balancer.png" + + +class NatService(_Network): + _icon = "nat-service.png" + + +class Net(_Network): + _icon = "net.png" + + +class SiteToSiteVpng(_Network): + _icon = "site-to-site-vpng.png" + + +# Aliases diff --git a/diagrams/outscale/security.py b/diagrams/outscale/security.py new file mode 100644 index 00000000..8e79df51 --- /dev/null +++ b/diagrams/outscale/security.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _Outscale + + +class _Security(_Outscale): + _type = "security" + _icon_dir = "resources/outscale/security" + + +class Firewall(_Security): + _icon = "firewall.png" + + +class IdentityAndAccessManagement(_Security): + _icon = "identity-and-access-management.png" + + +# Aliases diff --git a/diagrams/outscale/storage.py b/diagrams/outscale/storage.py new file mode 100644 index 00000000..1a8f3171 --- /dev/null +++ b/diagrams/outscale/storage.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _Outscale + + +class _Storage(_Outscale): + _type = "storage" + _icon_dir = "resources/outscale/storage" + + +class SimpleStorageService(_Storage): + _icon = "simple-storage-service.png" + + +class Storage(_Storage): + _icon = "storage.png" + + +# Aliases From e5b183bd3a8113362ea4dd3409a333808ee5a0c1 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Mon, 24 Aug 2020 19:35:11 +0900 Subject: [PATCH 02/22] docs: update sidebar --- website/i18n/en.json | 6 ++++++ website/sidebars.json | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/website/i18n/en.json b/website/i18n/en.json index e18f4e07..00bb5536 100644 --- a/website/i18n/en.json +++ b/website/i18n/en.json @@ -53,6 +53,12 @@ "nodes/onprem": { "title": "OnPrem" }, + "nodes/openstack": { + "title": "OpenStack" + }, + "nodes/outscale": { + "title": "Outscale" + }, "nodes/programming": { "title": "Programming" }, diff --git a/website/sidebars.json b/website/sidebars.json index 91d5d709..5400b35a 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -21,7 +21,8 @@ "nodes/programming", "nodes/firebase", "nodes/saas", - "nodes/elastic" + "nodes/elastic", + "nodes/outscale" ] } } \ No newline at end of file From 838251b85a8547a5cbe4728ba15c89a19cf6be5c Mon Sep 17 00:00:00 2001 From: mingrammer Date: Mon, 24 Aug 2020 19:39:02 +0900 Subject: [PATCH 03/22] fix: update bm, vm cases for OCI --- config.py | 8 ++++---- diagrams/oci/compute.py | 8 ++++---- docs/nodes/oci.md | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/config.py b/config.py index 4b6f922f..23e036d5 100644 --- a/config.py +++ b/config.py @@ -364,10 +364,10 @@ ALIASES = { }, "oci": { "compute": { - "Vm": "VirtualMachine", - "VmWhite": "VirtualMachineWhite", - "Bm": "BareMetal", - "BmWhite": "BareMetalWhite", + "VM": "VirtualMachine", + "VMWhite": "VirtualMachineWhite", + "BM": "BareMetal", + "BMWhite": "BareMetalWhite", "OCIR": "OCIRegistry", "OCIRWhite": "OCIRegistryWhite", "OKE": "ContainerEngine", diff --git a/diagrams/oci/compute.py b/diagrams/oci/compute.py index 4979021d..ed268d8c 100644 --- a/diagrams/oci/compute.py +++ b/diagrams/oci/compute.py @@ -74,10 +74,10 @@ class VM(_Compute): # Aliases -VirtualMachine = Vm -VirtualMachineWhite = VmWhite -BareMetal = Bm -BareMetalWhite = BmWhite +VirtualMachine = VM +VirtualMachineWhite = VMWhite +BareMetal = BM +BareMetalWhite = BMWhite OCIRegistry = OCIR OCIRegistryWhite = OCIRWhite ContainerEngine = OKE diff --git a/docs/nodes/oci.md b/docs/nodes/oci.md index 39a0a556..42fe874f 100644 --- a/docs/nodes/oci.md +++ b/docs/nodes/oci.md @@ -9,8 +9,8 @@ Node classes list of oci provider. - **diagrams.oci.compute.AutoscaleWhite** - **diagrams.oci.compute.Autoscale** -- **diagrams.oci.compute.BMWhite** -- **diagrams.oci.compute.BM** +- **diagrams.oci.compute.BMWhite**, **BareMetalWhite** (alias) +- **diagrams.oci.compute.BM**, **BareMetal** (alias) - **diagrams.oci.compute.ContainerWhite** - **diagrams.oci.compute.Container** - **diagrams.oci.compute.FunctionsWhite** @@ -21,8 +21,8 @@ Node classes list of oci provider. - **diagrams.oci.compute.OCIR**, **OCIRegistry** (alias) - **diagrams.oci.compute.OKEWhite**, **ContainerEngineWhite** (alias) - **diagrams.oci.compute.OKE**, **ContainerEngine** (alias) -- **diagrams.oci.compute.VMWhite** -- **diagrams.oci.compute.VM** +- **diagrams.oci.compute.VMWhite**, **VirtualMachineWhite** (alias) +- **diagrams.oci.compute.VM**, **VirtualMachine** (alias) ## oci.connectivity From dc3ab4cf7ec303c3f3b79b0bcafa27f4d842fa18 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Wed, 26 Aug 2020 21:44:20 +0900 Subject: [PATCH 04/22] docs: add missing 'generic' menu --- website/sidebars.json | 1 + 1 file changed, 1 insertion(+) diff --git a/website/sidebars.json b/website/sidebars.json index 5400b35a..c00efb24 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -22,6 +22,7 @@ "nodes/firebase", "nodes/saas", "nodes/elastic", + "nodes/generic", "nodes/outscale" ] } From b57be0f711ab42a6de22602b521408b8a94cc49f Mon Sep 17 00:00:00 2001 From: mingrammer Date: Wed, 26 Aug 2020 21:49:50 +0900 Subject: [PATCH 05/22] docs: add missing 'openstack' menu --- website/sidebars.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/sidebars.json b/website/sidebars.json index c00efb24..f74f0735 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -18,10 +18,11 @@ "nodes/k8s", "nodes/alibabacloud", "nodes/oci", + "nodes/openstack", "nodes/programming", "nodes/firebase", - "nodes/saas", "nodes/elastic", + "nodes/saas", "nodes/generic", "nodes/outscale" ] From 1fb25c46cc6dce2767c0b04e62b25f601f51bf76 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Wed, 26 Aug 2020 21:51:18 +0900 Subject: [PATCH 06/22] docs(readme): update badges --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ed6209e7..92c24eef 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ ![elastic provider](https://img.shields.io/badge/provider-Elastic-orange?logo=elastic&color=005571) ![saas provider](https://img.shields.io/badge/provider-SaaS-orange?color=5f87bf) ![openstack provider](https://img.shields.io/badge/provider-OpenStack-orange?logo=openstack&color=da1a32) +![generic provider](https://img.shields.io/badge/provider-Generic-orange?color=5f87bf) +![outscale provider](https://img.shields.io/badge/provider-OutScale-orange?color=5f87bf) Buy Me A Coffee From f96bd7ef4b085a695b2b292ed817f25684e5b2ec Mon Sep 17 00:00:00 2001 From: MinJae Kwon Date: Wed, 26 Aug 2020 21:54:03 +0900 Subject: [PATCH 07/22] docs(readme): reorder badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 92c24eef..03c24aec 100644 --- a/README.md +++ b/README.md @@ -9,19 +9,19 @@ [![todos](https://badgen.net/https/api.tickgit.com/badgen/github.com/mingrammer/diagrams?label=todos)](https://www.tickgit.com/browse?repo=github.com/mingrammer/diagrams) ![on premise provider](https://img.shields.io/badge/provider-OnPremise-orange?color=5f87bf) +![generic provider](https://img.shields.io/badge/provider-Generic-orange?color=5f87bf) ![aws provider](https://img.shields.io/badge/provider-AWS-orange?logo=amazon-aws&color=ff9900) ![azure provider](https://img.shields.io/badge/provider-Azure-orange?logo=microsoft-azure&color=0089d6) ![gcp provider](https://img.shields.io/badge/provider-GCP-orange?logo=google-cloud&color=4285f4) ![kubernetes provider](https://img.shields.io/badge/provider-Kubernetes-orange?logo=kubernetes&color=326ce5) ![alibaba cloud provider](https://img.shields.io/badge/provider-AlibabaCloud-orange) ![oracle cloud provider](https://img.shields.io/badge/provider-OracleCloud-orange?logo=oracle&color=f80000) -![programming provider](https://img.shields.io/badge/provider-Programming-orange?color=5f87bf) +![openstack provider](https://img.shields.io/badge/provider-OpenStack-orange?logo=openstack&color=da1a32) ![firebase provider](https://img.shields.io/badge/provider-Firebase-orange?logo=firebase&color=FFCA28) +![outscale provider](https://img.shields.io/badge/provider-OutScale-orange?color=5f87bf) ![elastic provider](https://img.shields.io/badge/provider-Elastic-orange?logo=elastic&color=005571) ![saas provider](https://img.shields.io/badge/provider-SaaS-orange?color=5f87bf) -![openstack provider](https://img.shields.io/badge/provider-OpenStack-orange?logo=openstack&color=da1a32) -![generic provider](https://img.shields.io/badge/provider-Generic-orange?color=5f87bf) -![outscale provider](https://img.shields.io/badge/provider-OutScale-orange?color=5f87bf) +![programming provider](https://img.shields.io/badge/provider-Programming-orange?color=5f87bf) Buy Me A Coffee From 3c49484bed7134a9a9de7a0bb08a7860a0af2958 Mon Sep 17 00:00:00 2001 From: MinJae Kwon Date: Wed, 26 Aug 2020 21:59:19 +0900 Subject: [PATCH 08/22] docs(readme): reorder badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 03c24aec..d70cee0b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ [![todos](https://badgen.net/https/api.tickgit.com/badgen/github.com/mingrammer/diagrams?label=todos)](https://www.tickgit.com/browse?repo=github.com/mingrammer/diagrams) ![on premise provider](https://img.shields.io/badge/provider-OnPremise-orange?color=5f87bf) -![generic provider](https://img.shields.io/badge/provider-Generic-orange?color=5f87bf) ![aws provider](https://img.shields.io/badge/provider-AWS-orange?logo=amazon-aws&color=ff9900) ![azure provider](https://img.shields.io/badge/provider-Azure-orange?logo=microsoft-azure&color=0089d6) ![gcp provider](https://img.shields.io/badge/provider-GCP-orange?logo=google-cloud&color=4285f4) @@ -20,8 +19,9 @@ ![firebase provider](https://img.shields.io/badge/provider-Firebase-orange?logo=firebase&color=FFCA28) ![outscale provider](https://img.shields.io/badge/provider-OutScale-orange?color=5f87bf) ![elastic provider](https://img.shields.io/badge/provider-Elastic-orange?logo=elastic&color=005571) -![saas provider](https://img.shields.io/badge/provider-SaaS-orange?color=5f87bf) +![generic provider](https://img.shields.io/badge/provider-Generic-orange?color=5f87bf) ![programming provider](https://img.shields.io/badge/provider-Programming-orange?color=5f87bf) +![saas provider](https://img.shields.io/badge/provider-SaaS-orange?color=5f87bf) Buy Me A Coffee From 82367d353b1641dcb111e351200461aa9aa4393f Mon Sep 17 00:00:00 2001 From: mingrammer Date: Wed, 26 Aug 2020 22:02:32 +0900 Subject: [PATCH 09/22] docs(website): reorder menu --- website/sidebars.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/sidebars.json b/website/sidebars.json index f74f0735..a9697114 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -19,12 +19,12 @@ "nodes/alibabacloud", "nodes/oci", "nodes/openstack", - "nodes/programming", "nodes/firebase", + "nodes/outscale", "nodes/elastic", - "nodes/saas", "nodes/generic", - "nodes/outscale" + "nodes/programming", + "nodes/saas" ] } } \ No newline at end of file From ca4972cbad905fecb88cb73d7fe80ffcf1b27f03 Mon Sep 17 00:00:00 2001 From: Guy Zylberberg Date: Thu, 27 Aug 2020 03:20:11 +0300 Subject: [PATCH 10/22] Added GCP Endpoints (#259) --- diagrams/gcp/api.py | 15 +++++++++++++++ docs/nodes/gcp.md | 4 ++++ resources/gcp/api/endpoints.png | Bin 0 -> 2737 bytes 3 files changed, 19 insertions(+) create mode 100644 diagrams/gcp/api.py create mode 100644 resources/gcp/api/endpoints.png diff --git a/diagrams/gcp/api.py b/diagrams/gcp/api.py new file mode 100644 index 00000000..5b027b6a --- /dev/null +++ b/diagrams/gcp/api.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GCP + + +class _API(_GCP): + _type = "api" + _icon_dir = "resources/gcp/api" + + +class Endpoints(_API): + _icon = "endpoints.png" + + +# Aliases diff --git a/docs/nodes/gcp.md b/docs/nodes/gcp.md index 91032ce3..39ad2e31 100644 --- a/docs/nodes/gcp.md +++ b/docs/nodes/gcp.md @@ -18,6 +18,10 @@ Node classes list of gcp provider. - **diagrams.gcp.analytics.Genomics** - **diagrams.gcp.analytics.Pubsub**, **PubSub** (alias) +## gcp.api + +- **diagrams.gcp.api.Endpoints** + ## gcp.compute - **diagrams.gcp.compute.AppEngine**, **GAE** (alias) diff --git a/resources/gcp/api/endpoints.png b/resources/gcp/api/endpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..339f7f24b946acd087b06eb43fd395911fa1e5e5 GIT binary patch literal 2737 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 Date: Thu, 27 Aug 2020 00:08:39 +0900 Subject: [PATCH 11/22] docs(website): remove sponsorship section --- website/pages/en/index.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/website/pages/en/index.js b/website/pages/en/index.js index 117ba514..cc0bdcaa 100644 --- a/website/pages/en/index.js +++ b/website/pages/en/index.js @@ -111,20 +111,6 @@ class Index extends React.Component { ); - const Sponsorship = () => ( -
-

Sponsorship

- - Sponsoring always helps a lot to maintain Diagrams. Thank you :) - - - Buy Me A Coffee - -
- ); - const Example = () => ( {[ @@ -162,7 +148,6 @@ class Index extends React.Component { - ); From 01332a459ef090d47e059a13ba078e1e2f8e33d3 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Thu, 27 Aug 2020 09:37:52 +0900 Subject: [PATCH 12/22] bump: up to version 0.17.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c714e8c5..8725f849 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "diagrams" -version = "0.16.0" +version = "0.17.0" description = "Diagram as Code" license = "MIT" authors = ["mingrammer "] From 67e093fd434d2385130908b624b186df97a66400 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Thu, 27 Aug 2020 09:55:49 +0900 Subject: [PATCH 13/22] docs(changelog): update v0.17.0 --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac9c5d3a..20a0fc2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelogs +## 0.17.0 + +### Added + +- Support GCP Endpoints: #259 +- Support DroneCI and Atlantis (Terraform): #255 +- Support Okta: #254 +- Support OutScale provider: #251 +- Support Prometheus Operator: #253 +- Support Snowflake: #245 +- Support for CJK fonts + Replace ms-fonts with opensans: #242 +- Support Pushover: #241 + +### Fixed + +- Update bm, vm cases for OCI +- Set a dummy filename to prevent raise error when both name and filename are not provided: #240 + ## 0.16.0 ### Breaking Changes From d46896c75ffbbeef3c297622c79ae9d4aaa3ed58 Mon Sep 17 00:00:00 2001 From: MinJae Kwon Date: Thu, 27 Aug 2020 09:58:15 +0900 Subject: [PATCH 14/22] docs(changelog): update PR links --- CHANGELOG.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20a0fc2d..692ff6b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,19 +4,19 @@ ### Added -- Support GCP Endpoints: #259 -- Support DroneCI and Atlantis (Terraform): #255 -- Support Okta: #254 -- Support OutScale provider: #251 -- Support Prometheus Operator: #253 -- Support Snowflake: #245 -- Support for CJK fonts + Replace ms-fonts with opensans: #242 -- Support Pushover: #241 +- Support GCP Endpoints: [#259](https://github.com/mingrammer/diagrams/pull/259) +- Support DroneCI and Atlantis (Terraform): [#255](https://github.com/mingrammer/diagrams/pull/255) +- Support Okta: [#254](https://github.com/mingrammer/diagrams/pull/254) +- Support OutScale provider: [#251](https://github.com/mingrammer/diagrams/pull/251) +- Support Prometheus Operator: [#253](https://github.com/mingrammer/diagrams/pull/253) +- Support Snowflake: [#245](https://github.com/mingrammer/diagrams/pull/245) +- Support for CJK fonts + Replace ms-fonts with opensans: [#242](https://github.com/mingrammer/diagrams/pull/242) +- Support Pushover: [#241](https://github.com/mingrammer/diagrams/pull/241) ### Fixed - Update bm, vm cases for OCI -- Set a dummy filename to prevent raise error when both name and filename are not provided: #240 +- Set a dummy filename to prevent raise error when both name and filename are not provided: [#240](https://github.com/mingrammer/diagrams/pull/240) ## 0.16.0 From 5d64fb968be79d0c7bc0b214515a4e0b431b9e9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 6 Sep 2020 00:41:18 +0900 Subject: [PATCH 15/22] chore(deps): bump decompress from 4.2.0 to 4.2.1 in /website (#262) Bumps [decompress](https://github.com/kevva/decompress) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/kevva/decompress/releases) - [Commits](https://github.com/kevva/decompress/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/yarn.lock | 59 +++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/website/yarn.lock b/website/yarn.lock index cbfadbd6..acaa1fd9 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -1253,9 +1253,9 @@ bindings@^1.5.0: file-uri-to-path "1.0.0" bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -1363,9 +1363,9 @@ buffer-from@^1.0.0: integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer@^5.2.1: - version "5.5.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" - integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1661,7 +1661,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.15.1: +commander@^2.15.1, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -1671,13 +1671,6 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= - dependencies: - graceful-readlink ">= 1.0.0" - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2062,9 +2055,9 @@ decompress-unzip@^4.0.1: yauzl "^2.4.2" decompress@^4.0.0, decompress@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" - integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== dependencies: decompress-tar "^4.0.0" decompress-tarbz2 "^4.0.0" @@ -3071,14 +3064,9 @@ got@^8.3.1: url-to-options "^1.0.1" graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== gray-matter@^2.1.0: version "2.1.1" @@ -5597,11 +5585,16 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" @@ -5633,11 +5626,11 @@ scheduler@^0.19.1: object-assign "^4.1.1" seek-bzip@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== dependencies: - commander "~2.8.1" + commander "^2.8.1" select@^1.1.2: version "1.1.2" @@ -6327,9 +6320,9 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= unbzip2-stream@^1.0.9: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: buffer "^5.2.1" through "^2.3.8" From e16eea48a4e5b7cbcc8a06312ebc7803b710500a Mon Sep 17 00:00:00 2001 From: Emrem Date: Sat, 5 Sep 2020 18:43:31 +0300 Subject: [PATCH 16/22] ocelot gateway add (#263) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Emrem Pıtırlı --- diagrams/onprem/network.py | 4 ++++ docs/nodes/onprem.md | 1 + resources/onprem/network/ocelot.png | Bin 0 -> 26992 bytes 3 files changed, 5 insertions(+) create mode 100644 resources/onprem/network/ocelot.png diff --git a/diagrams/onprem/network.py b/diagrams/onprem/network.py index 82a61499..67f5e712 100644 --- a/diagrams/onprem/network.py +++ b/diagrams/onprem/network.py @@ -52,6 +52,10 @@ class Nginx(_Network): _icon = "nginx.png" +class Ocelot(_Network): + _icon = "ocelot.png" + + class Pfsense(_Network): _icon = "pfsense.png" diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 16549066..454b6bae 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -134,6 +134,7 @@ Node classes list of onprem provider. - **diagrams.onprem.network.Kong** - **diagrams.onprem.network.Linkerd** - **diagrams.onprem.network.Nginx** +- **diagrams.onprem.network.Ocelot** - **diagrams.onprem.network.Pfsense**, **PFSense** (alias) - **diagrams.onprem.network.Pomerium** - **diagrams.onprem.network.Tomcat** diff --git a/resources/onprem/network/ocelot.png b/resources/onprem/network/ocelot.png new file mode 100644 index 0000000000000000000000000000000000000000..1216057309d1c04a292d30b9be6467c454ca035e GIT binary patch literal 26992 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∾_ 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 huWMTINO$iaHd&URqGmsPJUAr@OI<} Date: Mon, 14 Sep 2020 04:56:02 -0700 Subject: [PATCH 17/22] Adds akamai (#267) --- diagrams/saas/cdn.py | 4 ++++ docs/nodes/saas.md | 1 + resources/saas/cdn/akamai.png | Bin 0 -> 8419 bytes 3 files changed, 5 insertions(+) create mode 100644 resources/saas/cdn/akamai.png diff --git a/diagrams/saas/cdn.py b/diagrams/saas/cdn.py index dec52654..3733621d 100644 --- a/diagrams/saas/cdn.py +++ b/diagrams/saas/cdn.py @@ -8,6 +8,10 @@ class _Cdn(_Saas): _icon_dir = "resources/saas/cdn" +class Akamai(_Cdn): + _icon = "akamai.png" + + class Cloudflare(_Cdn): _icon = "cloudflare.png" diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index e42f106a..607fa09c 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -17,6 +17,7 @@ Node classes list of saas provider. ## saas.cdn +- **diagrams.saas.cdn.Akamai** - **diagrams.saas.cdn.Cloudflare** ## saas.chat diff --git a/resources/saas/cdn/akamai.png b/resources/saas/cdn/akamai.png new file mode 100644 index 0000000000000000000000000000000000000000..2c008ed2abbad94b885794adbc80f1aa4a9f8610 GIT binary patch literal 8419 zcmZ{Kbx<2l@NbX+!QI{6i#x$JKudw*UMNsBP$YP9inO?E3#B*|OQA?{3N0Rj6e|*> zXn@D}H}n2@Z{C}`xjmWB-R|7&-p%eM7#nI4;nU*-001H#ZLkRdfbm!b_~YR`mM_~5 zfR6;*RnS3*z;V#i0s|iYOC>$knU6iV{yGL4xLY7RDhVRGjBnil0876PSk(-=bXXXi!}K&a zer>tXaOC%%CpNj-0(n!s3MCjP8$-h$n~{kM*Nn7$Q~d4NZt@sXt~~WGo+hp|Bb_lW zB@;CbSmQe>8v)y`n$!|8J5iuKTYyl3C*T#GyD}z8Vp92ZeOQMfag^>v}g;C&PKgb;4#?}`Ezy%@)|J}bN z*5a7X!7njE>A|1dNukW)op7+7#Y#(MHS(F3P zOtN|T3quYGnh}ck9CYyMa^7EtKH)|lBNO;Qh{Q+!f(ttRTy7$sI9JA@2D}lt@0SHI z5tkqy*SV_3oCh>u7)}MZ{efRbvS13pe7D*ScbQW0_saqNzz0cW2=e9D_}G9Pa#{Oo z9vq&@d9E=K=f2}7b0gZ*04T#;!0Bd&(wy$@lrnW-UD1ExJY}#oZjS8%(jxEVd8MeG zDWwz$8BfDAUh96FiQlsZl2VNjz(_DexcVec$&eCotQf}|znu!u-D_SjRL-aB@)&AI zXrlI-MV)RJ5QwoHnKJV8IdL71)OsjEYB>x60YFMUf!mnUY^CD^UUtkV4ZEau?|2M} z^s-KX1uaj>VlOXlIv?A8r{ugpE>6$mBM#E4nI?jtGMY6{4%y5fTG7(W*gApx)es4LOE z%05b{OL!%`BQLDMzexQWryZkDRVfBgjmJo&{fbh>>?$AT5ov_Qv#nstgJMG3YKu1q z9G$`1%Psoq;~bsGY>=wRPw-{NB2x4(e;2s!t9aZQWp4SHcA!{b z(wM{Zp%tgi6nqULSX2Hi0lM%R6*F@TGyI3!bkuUy@r^&ASWPc3x^b>XT?ZH_6HxP7S^;``Pl_7!e}byq4^O-i(H$L>k`3JhM&QfA#)tGNkyETvW!p5 zLa0?xYSLK8Krik-6pQA`oe?BA)Q{Q(|HJvc=+jtrxDcY_U|(rp5JQWpHWl;jq{}>p zty+rA>FJZL!!;K9@W!A?_b1G0;^cE2-#tJT3wbl-6}uhTk;i3~GpR@AkCN_#r^X`7 z`y=@BdXn%SR^93uY3|M0w3c+9-XFbz^#ME}MBhS=AA-ta%AudXvD%4_3ed)~({Fa) z%7JM2?v#?qQQQ@Hi0GfWOsQXI{0LZ$0kg0Nj4B$LF-$XxFXDk{Z-|VL_myaZupJi4 zm9oeR78Aj6vc>c!4-!=NuEzWup&hZ0RH8{mwpb8`EkG&xc*o}%tep5<9|OC8El$nG zoKj}&nHeV9?%-;zq-CuL|A82J2{(#dD@%WIvccSZ_L)vrz?CCnPy_D7FHaM|YWqXz z_k5ttNB!48Qam*f*ZzwBeT^DV9`HdZ5FLtqvvmw2bz!o6wgObpSrW7rD%CS5bd3B^ zVzNW+z`I;y8H zMg&Bj9jd>A_hKuMT^l^Fc}W&AMZPrpmq=Bw^0IW=g|36_D)Hn6u~znvM{O24e*>E` z6)fF#LE1VFdw~}tg3Bq4%FvO;q=w9+UW7lB6>f$(yzdi6x|EaM?)$@?NbcEy{gVfDmk0ROQ^9K6KDEgpXdcS z#_ZTe|3v@-h!O+&Mw#_sG-V3Ww*SLlB0p?#B+{G{e94fta`s|(p;bE__j!>c5q{}v z=85!xG414KZ(7|(M`a_ZgG82%MPt-(L5ep3A3l>rY0-7N=&2F&AUaBeNAN&v_S-`M zt=Ii`E%WsDTTT7dLz&?>^BMVm63gE1!LIgTw_LVuMH@bp;Q~{@5aK@}_(oO~JK_JB z)j>+jYQu;~1*Fudo0v~@P*KIPFLM*2FvtGLUo}NwVDLO5GHaUoc-V;WrKbCM^bAh< zE8cF|75Sp}4tEOO^W6BcyC6wcjh7fU8e;3XTz_I>BP2<gdL6;Z{1-_v_m4x(R~+ z$wP+L#OE|U$t zl0$HCM&}+4Nnv9%AZjr}(sHxN@n0wJUkK)S;&kJD`M%67PH{d=y1XJ+#;X>AM1Pj4vOzIYJk>+6afZr1^g0F>rz|5?^szpbh2B*p;^{hu?F3h5wfo<4IEp^6u`U$ z7V1LfsRwt#l%dMDs=r|7?6%;JB70g(azYi5*`9_Dv6e`>D@c_2>4AZ;Phq8-%L=31 z1;!jgAnEp9nw`Aeho4pri!G<&x+6wDK;4U6opiUkNXlCaUjPMuIA?v}jQmU-IIfEQ8F>9=v&ODFWkCPAD9w-j%P5B8VxU^l>%3J$e1 z`Q~wTchO&95VCH7>x*{hDe2`$+w)U>Glk1XO0(kbE!SEn1;%qwEr0N0*Nx-rC#RG; zqk}nYyDJc`SRF^!f*@Qzw3UQ?^#4R?pCglrwbDi|FtEAz%*Ib{B;S)yba)I(2Mfr? zkVjXDrp7HQ8#<>&5!KWt4$S;rcn;u7%zwbGJvf)oJKrc!HeF;q-`#RE^Ga2UH=wj5 z9rSw$+8n-*KInN@am;{nOszyfhx>#4B_*Y(;dY7b+g?1DXe|B}osS=vlL_Kw8G8~_ zfTGC`@^`Sn#RTs|#bl?!GcEL=sC+smVvaw-i|?*~t^kMp7WiRh%=?9A+g&78;#iHz ziDC4@(g?|s;KpEHjRuc5URrD1>#J@Wy-)fyR+%4;^^arfNlLUaNJnseWC8{G?x6DP zb$vK&lG6i`61=}Pdt!7miVbNAD1>;O@VEQLaw<>%Gw$k|FCF zp;fO;@-Gko79TUFg0`=_*NgOLWg*v^Paf71`7if(&%)Ys$_iz<;hN&DxYHo{qZkV=w@x*G`W!7WDokEw3{X++tAA+R6Wk z!wC^bX|_=Ek3Q$W#aejrhW#Vm$j5Kb;{%@rGFo+mI#Rcimt5xZPu*J}hWxFD$_9C2 zL8i5o)W5EjLi+Rf7MWvN`{G+M@x%!HFn-UD%x}m9(kAGRH(xZmsf|UC$8|{Im*|Vl z(qz~ocJMAI=5IPmyB|vFp!BG(`~^+QryN_QEQ?f`N=XS)maiG_lGzmVrN*)6#>A-@ zfM1F?5Z9_^FKY|I9$10pzKe0Joape|voalH`@A2vdNXmI*Q2WR%OSpVapV^k-MJC2 zei_kQmo~SYe6UyGOQ0Liig?%S9D_y!-OSx*0NMUGn__O>l!_KWVQgq}Bhi!YCylvo zG@tQ3DdEih3|`xgwAo`Y>&EG~bD&v973#rc{DI zn5H_$TR{%>=`YI++{GJP0f`~G%i2fT57?28uUR0~cGh?k-FL=g!udDxRPY8N5i#;x zpMAgqBaDFWs3hQARZXv_-c7G39}=A#c@;pt$t+?O27k zOCePDc=+ZD^veK8syxN1Pg5Nl2^078jysLENloX%?cL*|Ta*U>f?|#~DaWZtsJm01 zg%Yi0evL&5LJn`@udY1;QY^znGNW6ihsJygg(|>5KSBrqOBmI76YyNna8Rk?w;eVX z)$;QJd6vpwOFp~%L_P{xSFEFr zEQwjLdWrgvG0YnPJK;dYP3s66m#^9IfD(3iHSzsG^o4%YlXY*^3x$E5V%0?_opH^> zF_Du=>4nqYuu*L~L9JN6HLh!CPoNTUfk(>50IJ`I7Vb<{y)FD+yUc6JU9h6!n?H z`7*9&mhYCsD^$ExpV`D_%5kGNjr$j}Yri zN*;JF5$U3f&qah5ENFP_49`5Zo&a7Wq5@w`mQh@>TlUAe<9LB@sgv88)CqLmhI$an zr1Y0M)Q(NWuZZ7ZUGpR+rL!7n_IoZRiBGB^!(uMJzXd&TxjiKAn7{5;QM_=dX9jl#KY)?*r%DaSltTi zSA5zQ&p4hcBoNfJV8>^yny^$Li(7i$T0Gv0w;YrttJc~bpNxGbIox`F|7|=-hZBLD zlMI%diQt!x!xv<0xiY!j2W14aq6F*WWm68AD0e4CrxRZCQ|MXxI^19(Tj5yK<=Ui0 zvc&*QZ)DckYR8i$@hQctwF8q)s_2*g2oIvoie5aUW||6xIqJB=>-@Q63`r{>-*REy`2uewM& z<~~z}%w? zu4eDkr%I|JRUO&l%&&GGHb~q$|6%9x=Dj2Drk8~`Q-)Dw*CHvz`qUZHH|G)`pKDC7 z=B>dP$*SD@{g}n|a%?Gblu+D2#Iw7ge6V@cDAJAJsEPu`#ep&t-wUq%I+$C{^C zYG&X|IC6fW9hp6SI_wm%lEi3sLbqm)vy*wKo)EDET9~)2Q$?IqB3d;|oP;u)DKOV< z;}C1vBl=2ILPDPUS69A!q2r?-OiQOiHuar9ZdYS-!f;RM3-)q~XMKI2?+44@t&pHO z61}(o_#*pYij5T|A-WmBUP)$ zVd+|ngGYO7{EGb}-0=K}=T&ze#HnQYH8VrAdJa#@0C)g8;U??kz$RO;A4~-&N476e zjegIKmTY@<6l(Bx;$GTr{sfAJQp|8Y;#g>xV9-%B1n(A2e*cV#qN@;8iVddj!OATy zOz#k0iSK@}h}8gEgQB}Z3&K7UGrzeuCc_|=RD4T%=n2syq(lSOG@d3 z=vtL{BDpI|=_Qwxi@MmYhuqsLWV?MEF-h>+JbhOyMAV7}EMfod6#0yj_~(K#`T{=@;Q;rxd89ggG2^M_b;P>CPAZNpZ%&JunUfKcp0c`7`Qk$*T3PAd0nh%rqlsphu89K>uH7M%G-%!t7b~Kfdf!Qy$eF`X7r+_8AkFj zW6`Ri9g`)bVsWP-61bIC8}&PHw#F29Ii1=I3lXNv zTC_^d)FSp%ZK}yVn0P;n%ntC^D5mI+-Mch00 zq#Da%Ynx%$G?Z5d9`7vPd({6lRU--G9KDeUSO&&k6=@`}x|7sVbm63wEJ`*Fk*u0C zH$b<|HQbwnZg2_vm5I1oUL;-v2_%@W@GR+bey=Yl$RSyV`vrG!Up4FJsWwr}$=)6_mG6h6ZePN;!EQl^-jmryINJ~Mt}od zI!k#6Dw=Z5De3ruQuSU%V4Dtwx44?B__1+>d|zo-~5(H%osU8lN?%KB&Cll$|L|iw!qh(*9Tj`!jfbBm}~~i23DT;_~TfM!oP9w1Z^%@=E*^dsOa16(&lS{HKMV@P~UfHIDpg*-3c8)Apj0 z$U{EfH&dF6$Kb?Gkdta1r!D;*ewnYcBh%-hCQMO%2n%d#pay&v4ODu=$G_O!8h@Ft zBbXNAMb+zPq@!CVhtX`_&6JxKKYc3j>9ZZcx9vW8EAI0hq^FN>IGhM2dtMM!mfOi9 z9ykL4eX}x+DNgKNPHe9OCD|- z_=g+$f%kTzO8iU%+MoMnMTV&vD@bIt=vMAjSUJh1()FD~2g$GN{HDpGK?wsz7dz^1 zXQ%jQu6ERKxhkyq+PZ{=z|_;PdA+~;Pk5L9@WBYNk)N(Z6N<9%nVLpS41k$n(U8n{ zg6wx}r^YL|q`Z+rZbF@{a0^2XYpX4~h9+{no-0QPPmZRWqEw=8^*Z5rbE7f?lO~b8 zzJYdJnMLm)OVTv7AVoIKj;xV3L@)s-YtG3R7U#M_ebBS$zBbinKblF`$C4`Rzo^Rk zc2iU!*}4Xz->#-l+Yp&UQ58sTuq})6c(DoNOTDdsuY$&RZ)casvyR&*IA?#V1N!dL zGw*2bJkOBKO8=&fNGo=t-_~)y=ATJMeGy#_FbJ#EQ_40nX6RR1?DF{cUUxZ0KQaSc z5ZlIc%ya{t199zuw}r{F{+%hT(J23M9j&gn0TYQSG$ZU1g|3P-f6^verLT*Bbg7$7 z{T@(#PCB>hDqcD%@?Ns^!c-s~r#>)h8au1mZnJYW>Sy>_l^ltR9^q^>rmPEAC;FyORRod1nO}F;eP;7gMk|zCiS8`W)#}6-$HZn^ z;)|8=QzwcVCPwg_K2|&16vc+hROv_;jZ3U->IYg2# zq@B(h4fXaSs;Q{jJi&vSiYAz1^|x~49=yfJC7fy9S2m$mKvKgfx}-$`W@&=45gL@{ zIOvIaSwJ_-)) znpuUpzQFW@iJ^`sT;87O49C8z2zrzEQp@8a>^0(^{Rlb1xn~V>%qJ=!Pfd{08dpTe zA?4in6H9cf`IJ!PYCw5zE8XDHp<_=c^=|nu2C0`J{H`0yrHj9^jKnYkX79ke z&uLup@TBs0!T2Q!p<_c=`Uf4SL;-z(d2 zmFWqYN@QX^9@qga<=E2YG zs#nz)1Yq}IU^ve9f^WOIg1`4vDL0c8nn{&wQB^P~1vHb)orJn=qV?PSfznqXJ@b6V zee3Ks;MLh8BlXPQ^QG_wd02$BL$&1QCKdI4E3MQ%c&ymx`*&{FvSm5JCUyURlq&vJ zMQL(}f+9XuG-art6-OL{jL{U3qDZ25i+!vbl(2epG$_Lse%nZ~U5g!d@-=<7ji)e& zrp(pz)Ggk1V^d82_#*ufz!+~mkX3hiBsor&KCxSf$~6knC?V>C7{=+$G_ZZ-s<_dE)sRCegOL%ok4&)Is-=H% z@CNB?G)K_Y5C04w-LFa~my-MxNFUA$P2gdzwlp8QdsW($ojt`y*}6L-qg8#` zwdkfu5@L@?DrnOab4_Pb!9Q)T$$3fD^y24Gd-C|=DmM=~%PuDR%Zb-FPd3J! zbC!{-6081}r8c1h-Ee>0z7@j1cD@D@ms?yLwxDltR3|i+0ybl{gs><7*6l2nGnIK{ zQZo>dC`JC>DAuU|eoARl5FK-NS94Y4xksx2v+<(fqEr^@j>A78^_9u%wM{^(dULm& z>5r}*q3(qb?~k;8r~Y6RA+xqUQc3;h%~qQ8R)6zbY2PvGa}Q&E!W{zYXl(taFWIAY z`12(%iuYgp&_f|N z1O7tKSN23(=TfT&_jt0yizXaf5Gh3&`{PFco#4s{>{se;vLa({YMV85-~jyOZ#${f zfJ0(Qbyo}ZQ^3E4y*B9vE0T{rpS+ExW_BH|&sXc~F<~9#ZmMjxX&HSyXtIhPZ*Ih8 zotPZqrG=->5woS17FFA5iAb`=Ar*kLezm$>w@Khf-`cXN8%+TVg%r)BFImQSRvsVD z^AQiH{K8J!-kgBNMcMaD=sW1j0v~4lKpx^LKnbGZL;rEM563TuchYjpzNZi>_~dta|iR*?b(D3 zvm+I@fnVR7cM8OPWZ36yF;p@#zr-|M39H|ZP7QsIns60LqDC|#!nwLrLDIo_~OIY-9&+;+}3pZ;QOeZ^4)LPSx!z% z>wf^FA#ap@;Cz7i@^@4!IZn>TYGY9p=?!*KmlDKO)>kRgXoYCu7QriCLkt;46tPZx{a{dtYaOs*|^aGpo)kdsk-@XM3mM*FT*9`*{G+(J%ym IR Date: Wed, 16 Sep 2020 16:15:39 +0200 Subject: [PATCH 18/22] Add: OpenServiceMesh component (#260) * Add: OpenServiceMesh component Signed-off-by: Nicolas Lamirault * Update: use full name OpenServiceMesh name Signed-off-by: Nicolas Lamirault * Update: add OSM alias for OpenServiceMesh Signed-off-by: Nicolas Lamirault * Fix: name of resource Signed-off-by: Nicolas Lamirault * Fix: name of OSM resource Signed-off-by: Nicolas Lamirault * Fix: remove doc Signed-off-by: Nicolas Lamirault --- config.py | 1 + diagrams/onprem/network.py | 5 +++++ docs/nodes/onprem.md | 1 + resources/onprem/network/open-service-mesh.png | Bin 0 -> 21752 bytes 4 files changed, 7 insertions(+) create mode 100644 resources/onprem/network/open-service-mesh.png diff --git a/config.py b/config.py index 23e036d5..4d31677b 100644 --- a/config.py +++ b/config.py @@ -124,6 +124,7 @@ ALIASES = { "network": { "Etcd": "ETCD", "Haproxy": "HAProxy", + "OpenServiceMesh": "OSM", "Pfsense": "PFSense", "Vyos": "VyOS" }, diff --git a/diagrams/onprem/network.py b/diagrams/onprem/network.py index 67f5e712..9ea63186 100644 --- a/diagrams/onprem/network.py +++ b/diagrams/onprem/network.py @@ -56,6 +56,10 @@ class Ocelot(_Network): _icon = "ocelot.png" +class OpenServiceMesh(_Network): + _icon = "open-service-mesh.png" + + class Pfsense(_Network): _icon = "pfsense.png" @@ -84,5 +88,6 @@ class Zookeeper(_Network): ETCD = Etcd HAProxy = Haproxy +OSM = OpenServiceMesh PFSense = Pfsense VyOS = Vyos diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 454b6bae..ff4bcc16 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -135,6 +135,7 @@ Node classes list of onprem provider. - **diagrams.onprem.network.Linkerd** - **diagrams.onprem.network.Nginx** - **diagrams.onprem.network.Ocelot** +- **diagrams.onprem.network.OpenServiceMesh**, **OSM** (alias) - **diagrams.onprem.network.Pfsense**, **PFSense** (alias) - **diagrams.onprem.network.Pomerium** - **diagrams.onprem.network.Tomcat** diff --git a/resources/onprem/network/open-service-mesh.png b/resources/onprem/network/open-service-mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..d56d508314f373fd7eaac06c6c2eb21fe6ac58c4 GIT binary patch literal 21752 zcmcdy^019GU?DpVI&ULf6bTbz#^akSvts zqycaLy>dHCl3<@8dnhQ&AaA3PqA)X#v>43+0GiJV(h^$UODCOP9oE*KZ*L~!Yfpdt z#!fsRIl}FE;IOsc`Ki@V<%5YVk6D}aEJ5l)KfxdSakluu{+2N~NXImx@bG+pXqvJg~_B|Nf+*aIK=r%M+oc zzEvjxtmn;W5Z8BgeWp7r^ke>>B7XcB8<85+-kZOi{M&Y6VuN}JzF<2} zih9GlW0Ta{mqhq|9#;t<-(!rpA;{$W&W`;KYj@vtCwTFT1pvq9WA(jFcuz%N6cY+j z`Gbd@sm|?4d!=iL`lA-lVz0`te!#~O0k(FwkFkHc@h=AkncFXqEtWbU(ZZ_XS~t~; z2PS*}#Qz%zogFk*Qb|-djUV_3WEp=jd01J?eEQ1#t>`_*bSEe&5jN5nAzh=R`o`G; zVX_M|-ISC>yMLdc>|KIfm%jMBU+x}NY;X{MaX5Euf6k$v&vQyHuCriq#;|@W!5{Bf zea~Ft7f=HK6HZ=W!+(c)=w_4}6h0X8CD+rWRQHeYm99<;mcrCDeKc&MOf{Iv>m__t z9^~oB0VSD=B90#|*DPgBN+oUD=DmQ4M8RRWz4-Hw!q%!GrmYbfV_d>}5`J^9yE8(S zgR@LL$}nTJ|1+kj!{0ev#6H2o?BM`tL!$J3qn@J4rK05$37_CUi#`AQ(x;A#Be-P} z^N;T^Ie@I5paAWGBrm;<*aH(&$q`0#fPs!_&`i)>rQePR`$6GOG7x>mY|$}UKCF#l zs3p-v=W@iaVvrj<^T5Qi*IebNonxcP3^peXjqsU_V~L*vJvneFrW&ILdW}kEM~WI} z>9eZ_e$d$;Y_3dH`W+dx>!wHqD31nK>5x{|CGM;_Pj}`g#iSaMs(Bw!C^BxGS~JET z9+I=J5&FvoViC70h97%Wb8akT;vfOE#R*Ff4P!auqb54&F5u~glt7vr#A0=L#v83J ze<6G)8+Q{rOwA?&9+D4V7p_To7KJ z0~oj1ZK4fxq6*hBk7{=F>r4^~@mP4{To-&!3i#3Ts+@BPRbCVC0QrINLC!)N<@Q7q zlP`ZsC28Lhg`evaH2)z0qJmR_OVtR?N}KOu(+N!pe_{TikQ4CoQaCl#x@+k9ytk^e zUBt9q>=%H#wWW0lpt^-8327$fBo0pD#$jLg?s#4bUa3y5qkXQOmeNvvd$ISNzmI?B z;JPgN*C*C4I4c}XlB(Z0j`Wr0i}X(XKr$3XaKeh=K84#4U;X5eWnuoI$|nXt1?B}f zbdj2)2&IY0Yiu-v*m<5eFlWvt?pyAv6uyi2mB^C2u2-ol_t;jq_sqa^xwyR{)+(Sa z0tntKJ46dPE5j)9W1Su|4bt@ah+8Z49+g}QWYHO2K2H3zs3qGk3{SULp}*`94qz41 zj5bAOVJCDna|6%T#kZbons?ltP_-Ccn>nA#ZHhsrPfFa%;&ZQRqGF8zIA@Vz*VTT` z7h81{+~~L#!Y6puVD#w?xSEct+y0%v{w4=arqtbO!664FWooVh3WJ+t5((zr?FGXR z;n~{f=&{V#e$fC=ls`S0K)J;*;`{|BH-tO|W-$QW;XvOaU|r2?=z+;F>cGz#^s4^?X%1T4#7eqzhr$iOIc{9-?mdK~2le!CK0t_dY8HHLu!5DzOrMZ!;1GQzXqcO6*-g6^Hr(V#r1gvE zR>ux}U<&9&fyIo4A++aPcGu4?a!~di!B=yIg;Xar8;+lF-ohnim#O5=G2&snvp+o+ z^wg+uq*P*z)L+SSC^}Mf@z3%Y7YRn>VU|0YEKfh}>jMcC+QK2>Gs2uA<@iN5TMfL7e>d(rk*=m)BVe#aG`!E)AieKCS7yP)q=WrC zY^5P3h}X_wc|~bEpH*QMhPgoh5W+rW|Iz4!1^CZD{LwD>|2VL3%uORqoQ`hvoQI6^O#6C8F}95;Knks!^P;DYQlI&Y_utE=vMPxtYXH z)(7V%r;1rUH;W~;{~W8UcsSo_O4K0|k+W;f?v*hmW-U&cQ!d>r89}J)QrbMgM2SkF z9MAEMx8-tT&)iAghHAUvJAU_(d5#ZPiO@-h80nv=X*f8TW*#%xesIk{@CPoH&8g6=d;T*Qt5+&~lR_bD_yCny<`M1sUV>h(1 z>ft(V(QcRo?&S0=9ZxUpdz#_Waxi{044zCvT8o!YvdncJy|#TP+Ona;gHr3j2`(hJ zG$E0lysKPtw0Y_a`ly3W%p~09&;G{Y!CFoEz)C)eA_cB3k2yjWeK5MNPgTC-vige6O_iwqdhnP-Gw1_4d(*W#Y1Y26Q0aX#V5V_se(A`& zcYk$TH*9sJ40tOt)qDGmF1{TZmgBqT!R|iC>F&SCSm?9kN!5Y1gDh?n8u?Ti)$wkJ zO7=h~q&7I=wB?6J55x@}A4~YpfsSk7X*R? z&OJXLucI>Va;g)55H_M?d3~1{CO>iRSN((9-%`fc7*X-wxJ^3pfecLxg{&X85A?f^!Lvm zQR3b^^ZTy3rRvhdMN5%v;P3B7I!zuIu|7(JJ`|sy5FCuVp{0ij!SisQ@2OJGlg6dG zz72R(yMTWa1z)&*09Nai6LIsVo?B*|tvlbX%3INXK)<2w1?E{?#3VNIYt>_~>BW~Y z$c8=Kj2a0C5$}Cx%cV{hT)Yidg#!VBQ25rti>XisOwf%=Ze# zIJ>OvM2j=SH#8=7`5|{W`|+ZB%BYH$pFj|T9mR01!`W@hm-v!V{Soe6)*|kCHD`z* z>e@>JJ%$nLcMX`Lv$VD^msa1Iu_zk7`f(|L%Q&WWcYyq7rVbv$X-x;cow*wEEB zvJ|K+i&G+C*{itq+3uM6_W%m|rXuxE<&MUN=_gzo(XiUu`jcDgI=v`o6Y}w!(*x_7 z&pm-8Y2DX7K54z{WVzG(hQ`}S;G+Z4GGX)W0lDXm5sw$DYDRt9+?Ur`|WY@6$_My10IXGyyaTXxi-*4NXIKz;nZTB;QIz9DD^+_ED?sHlhSxW#e3+ zk1%EzaFaN4XEe*G&P=e}uzgT~4fyXz&iVF7itg?6L&g0!OyJ$mpyQKAIsUikwLDQ8 zM?sDmId{=6n?j>UX6*p{34uAx*lFJg!B$zF#_yB*x(V1x9T&J@X$t^dq+ls%k?4v| zI}V0hsxaJwKd-Iq%GYAsjKrTRUsXV>q z33ZF^C)^hb=k8@POJTgFZ^V+?1YQj>QAXRy8~l}xP_@|-&K|l7(6_{sADwui?`cZJ zWyQ>gO7$;?^KpsY|m^f8^zRS%hSB+X#lh#<5I}Cu8^uxCsF}< zJ7)_N9I#9sVwzDp-dfY{Wg7Ue0Fiv*WAjxbk?{Vx)!MpOIs=UAtcxah(3*duM@|hAY1#u2@Ef~rw z$kKij3f#)sBAg{1Rx!<6%H+O9)|FB(Ym_6A%9)3>R{*G#89?f}?K zj8rVl8DGmd_E-q3RkB?*tAK^Z3DYEof}O2DBD7MvBaX=qZ7ogtUy^Bt7C@(=xxiy) z^eICUb8{&)W`oc6iniq>?e*j#gL1NM)Rz!%PaFy*3qUb|bE1>Y>P`esiA~{Rfu}QH zz#=Wl#lqT=5a#=74nZJCvJ}3?>10Q8GGX1aPQ?4>Z-ZFF8O!=p z3$k-cqf>2gaB;shC^Z%kUMD=*_X}a^gQoO$UvbXUNIX=;DQMt#LL?MOZ8c$-q}oP;Nc*CQaQ9G(%I+-x#^1$!M7Q=Daq?@=Nm4NLQ8-=AEC;LF5mLm&!W(M^Ais;hr-;dBZt2YgHnV2z^|qGO zmT(M4ti6!2;Dc*fqXgB+io1-gOagGr4TKaj9*JLxP{U*jYcLsagDYE~x&3DAfA#~u zQ1gW;i&fX$hw=>XHrM61Ce1ljJ*tpqk(w;Cu{hY}6|jvrh5T?j6%(gsNDyqHr;&E> z@u*2f7%=~Q^!cK|8ijk56sty5LpT`kR@j2?cN)D+>QZKW6^3TSXsw=eA&MjW3@1wRd&HB?2@*H$X*T$O6>JsL7 zc$Ty~r#aWt&Cp0xbZD?arT7Z!{Y;gNu=}gV?lx(nTOr0@^?yBwiqF)ALAX=RaAoLZ zFSc79X88QtK^%r}xFt$= zq-;q3p?Ad}mvGz^{E&rauQ*T6g;iinmj(!_2}A!1Au}R8yO~wFT{6-R_-b|XmNHaS z9W}Vv{{56bnx(qsq}<J{`&B0a(lvJF|r*{>*yd}GCvb+V3S1h zD;OiO*W}9??cn(-ZK%JdY^Qd>kH%XFdDdtU+DO)NQ}7^C$KHnFy;#DlLmT@LD$GuL zfMuBRvh4jp!mY}`KH?*|Vjsml_-x)FK{QeW*J3-ffBj`ASALjhS3eSQ+u*g0%_;+# z>Tc!Yw>rk6wgE%dIha*l$q7!Kj&1BysFuZnN-CeVk`04e5@4g!&7ui-_-}gI%2j3K zvu16t%#2h#UPUIpj?M-IzF{+qU6daB%q_iL_MHpKZvQs=Y$@q@fhF3oaeDyLpbtx0 z13ceEEX(h_Bef`TCkLZEeaCNoc=D_Leo3i}ZT|7vr^c4QYq36#x=Wb$`~B>!gq{Qv zW!&nE#oZUCU4^nkB^U}HvEzxd)09vWkx(^YyR_fY`+F?^JHg0oKw9r3b=mt)-XoiG z>i3l970<6ba!ub66wyRU0c=d59Km#dMd z@63CU`B-0Oh6szqERFt7y*|@R#ZJ^$kBom^P{vapK`Z6G^+-U!$mld|^@DzR9HNbU zb@IhllNk!AEr)g?hW7GQT070_Ys2dIHyl{P3d>u+N>Aw|qYRt6bi^g(SY3o94FUYk zUMle-WjBqBU>RJC3oLta!&~a&rEs_DE!LB6x!V28C&m@#2EHqO-}}pSn6vcq=4B_>qAMA!Ccmv^C*iWl!lQ$Pyhyq8(rZb4;z!^{%)j^3$zC}2fUs?F|kgE^Np<4~?|wC)dE0>M!gWNZXoc9oqH+NS;Je)o=1*n#ejm`85{0!-|=bT5sz-ofp+P8(}4 zLd4ffTfQBeAvC?Ak2Y+X?P>l@qte1~+C9lw_GG*CF}ro2j&kR6>?XGg)r96h#a;ZG z;dOQ|E06y|y6m=J2c$%+eEGT8=7N)mge`@oec%0P_>iGb#*mpz(Jj}!rqHUPvX1TR*-jIO0#EC&SMt4mbtvCjb59{FN`#t>ezjIe)n9~&al*~b$ z)K$=U$(X&*#O03~jwgHCH*w;_wSlte=x6oE_nug~f5+Z^{D8t{kY(MoNtVCM8N~9Z zH#qJ^WChxp^fHj=og+r!WxA!aoy=;Sxm+7OW`q!r{fzQjLqFg;5NiOckTrG)YaLxq zo3Bf5o57NIlJG-(qJU$I(+E3w>;aLf4gn87nr}`bQFfw9j!^$ zO1d?Ht5O{v1N9GUZHDZn?|PoJZa#^x!YYc2C~0z{WyEKY(e|8?+ z+@0sNU+G(rKPKo%U}T)Xwyx-?RA>95WgjRxR5_6XmGkRkoBE0^6Ytxnr2SAx4;{fA z_vgbLHy-)Ly`_ z9+2>y`Gs%THbvOoVBC{u#2a(n(lBtK)x`%tzsBqAs}V%Mp~`kSQv1XfpUn#I>6!Qd z4vRD-4}p55OwEZ2OJB)~6_b3SuWjuG@A=#8DkW(nzk#2z2(0EY({?2EIotpH5&k|g zb_k*7ef&?m(VLoFPuj{GKesR47i$^tr6|bmqZLO6ib0^CyPH@T$=K4#ob6;=n->(_ ziQeG6f~xE)BLpDFv2GMt)T&4!8Ak2Z$8sV3wY*WBjcpOs5&ws*MG{sh@F)E`}=(dDmH&_?Eyhf6|XhLxz|<{b&Yyv2Z^nR z*qOE7+DgywVx79L4l6&Tw0k&fO8=EGc40tPe^%wE zwilu(tmTPKK8TZ;uad9q^p%j}KJvSpHYNiD$&=)AfiPxw{#iW8LHf1vlj&PVc2D3- z|1DJGlG*?JK+&{sm1=+NH2@Z|zsHjFa(qm_U16vjkE?je1cFHSNya&y0pZTQ=RH{D zdnUe2SRoeGMLu~-(=^DA5c;i3U?ExRr#RnHKR$nj@zWC4_65gsW%4|Ly5 zq7%DI$igG%#1xIpl7XN?Jw`7Q%cc*pc#q^;u4{&-!|u>Go4^|v)0}*Fa!T$k#?s5g zIIjs^61tor4n2m6wDIb)_<3L634v@&ia^??X}z!Ox0J_wyJshPwl2h+-zFE;#@c-UtAVuVgR!p)UHswRgU)x_ua1eom1@%&hDS79&iII` znrh{-+Lj;v-08nfK(Ebn@pt)0q7&vpRO9=m!?yU0OmK4|qeTzJDlMAgN{tJ8Wej~J zAhLc`#ftdB1xwEs_*{Q|BZ@r=r=}s5*;cCJgnq~`g}PfJmi$q;_=`WDzT!?!&)th~ zzbtpQ*}>nLB4GYeAb$G5XRW>BunTy2MFdeBT_U|`0P~F<84SXZIX!(U^I^tj43rzr zp>=!0wwcPxg}CZtDe+D*ASI&pL#0xtI&m=V>OA-I?zis{|8%Z`gmBS01U0H12HSB| zpNB&nRpa#}r33Zx5liTA#4fJv=8y1tmJ9O>J&%G)48?T~ap=FUhLgxhi8_(b^`_#L zbgL3?okT+7h)|jIz{gpQFpj(OP)4?J+bSj+3Xf+ACWELCn!!^- zHx0N|q^uKr+#yHRz3DU!Ssif;1ubQ}<$UV<=UuD)MMIlh{?q)74?Z$@5nInAvZ*S5kWXko()wgzDjMOv5vXn?e|KNae8Nt?ox=SahIhP_svD6I zMaa})b)HjpT$a+p^o)X3k-WP-3ipOnPd^4A7(4G%hUHh#Pm6tSJ;t~_4o0)qsB03- zzyhGU1pp|#Wn2v*!j+l3h4V3Eyg(#f{ugBqt7nHZgyaQPtJ2EfAHDa%27* z+qY)?DY}n(@Mi+1-Mb<<>sKF&vNrlx*YcqnQ!xBZ8BaDhXn7wcbB&-bU*sciTNZ>` zI_w)!jZbc*a)8Jm@T-mRqj$f3U-qNU+^GJLT2pq@CRM9qtuH0motq8^0x)+gtv1&UI6gWcx>YY1Fjdv#J^Pfjd}l>PB40E(iFAP{gw2vsv6 zE777qSRZ!a>GSgfDRsglz<9P|mEqjuF5qhEW2kX&b>_l-Fv=gK1_ZG251Q%ZoawPsZfv~_BBr~Y?9Mt#B%0*Bj4NNtHTtG$7THGZgiRkhyR0{ z3W?(Ce|Zr`%UG;;)Y)52vU4DnNw3nw%UZH>oyWF@vMlS-Sw`Uk57jtYEk*3RXJG1C z(3Ltxt4lCPgC@(Pm6{`A4&Yc1>;fA37or1JBrrs zbXjyL@RtuPIr_c_e~jyExh&De;}V=6@cY84xytYc6vLf92edWbX6f9FdxsjlS-N?D zFeQi0tfvNz<&SojH~|vTqTfEi3b?>P{}ZT3#lCJDT|{)M&@6wJCsrt=xQf~Zd7Z~dLqroQ2+`KcLZES_l#!;Xt{23$*3NyA1s}SXqdV4NlSga|aPYV5JF)7(>)XM>@bux7Cb?^fIMN+@If;Vx9I4G9YEbIR@Y*U(X$qXgald%?PRfWr#`yu@rXaafl69PA3@MCM--du=vZdNL=;#Vyj1zRTtcsn)c4C!NbxQCKHAPh3zvSH)UF^mxpQ&ZWkvzE@m& zrD2H^Slap|GGKmswm1+0`Wl@#zL4NM=tA#lk5*Fy`FMQr!(9EhyQPf zUit*M84Hr9_diya>tk47kQwB9(#EuMm!qCDEHm$r)z6h60w9@xt&Fd3JM|B<=nF@b zXKiENuV0^5(c{rK1dzl~>H?C7u2>2WN?Hg+Qk)yG@ z9;`9vU+)MgjCCaoS{Ci<)WiMTHv}n%Cp!j-b#aq`zuiPs9G$kVcRw6z{#DmPQCUC~ zJ@n--!kUrhk zyO+NGn(HNEh#5?XOAG4!c7xdU^x6i!y2jr-kE~2MU&K$1Jxb5Av#CIK{pjVt(RII? z+BHzWc4hPZcvVs};OhML^u?=zX9oJgD#SY0!cfgG=1)QJOE|UfFl`}uYUbTGwg>g= zE1uKeja}+GM}G|r$vlV#adekn(gAilR?@L(m!lrV!)~<+*;U>#uR8L{4_wknMbiZntO)G*=EPO3);iZ9V-Ge}@6tNQ zK)j|)Li9J_gj2fKTuI|OwL*inhLj!x&*9^?5D2-E3UrtWO%^74qf^FOD03hXWa%)C zb;?yC6X$9270X3$_wW<1hd;=k8l7<3cJ`_lV?p||JSBr`8*VZMTbAUD+!IsyF`-(7 zhUFKg(B_=%M01v{H*`64_iu3(4wVCj+1{>YRCuAV>;|*O`JAfA4T(^D^RUQAO2nvR z$7F1+GsH7Y9Y$ z?m0ovSAPdOf?g`!a+%OC$Vvq3ZX1D*Y}&@0DO>#*QuZmlUNsH1aZbFUY$$oM$HWw7 zuq}*?`O}@u4Nlnzyj)Lh^`gpj+$ly?@nx;4+hFHYwff1WG8xG?YjXJsKR;onB=@PEsM>-LBHy(7|{SsBdOueazBDM4`k2j);hnTq|z zo}!GP@!tqSsOdtB_j^IAMWDZHo9EJ^1ynTrM3$n^Y3Q4{tvmPX>I;j}#F%Z0@#lCU zPVTf>B*3~$^U6Q*GU*{V#s_PzvTH6aV)mrOos^N$s= zetP%nyoAcL=`k07=ya2R(OrJ8G9UO=jVBni*O$p(lVhCPmE~#P-xPwd)oKF^!Pe5R zpOO_JltDU_}tY3%wvNF{rB@V7I8h zL6_a|UU^})*oKl@g7Cx4U52h|bp91;`1>vn;0jOw?NP7JGw1AX5gTW{bM0HMeSPY=gs=SjfupO;8(q0w9@i)B)R@m<6N~4GazKCCMf<2=q%*?gxTcJ()}PN6OV`B_1XJ_ zfbBy@q4|SN81r^gUcJ{nfin8QVs7O|?%rgu#@frAPAH^YZjx!U5l&H-`6XR^Kk)_; z)(Fs_nNVC3A$!Li&%s4@d6eUI)%UjeFXg7Mbe5Bsq)gIyY{POsb6}dySc_1k? zrVlwTSSVzin3KO8?A(#tz%o|9Q%tBl?3wn(MuvLg!p;wjsjyd7vBo3wi|m|f9j)6@ zP*O>4Gp`Z-r12QUpSw^#<0W840--EC8sfcd5RB1Zno(JDOL(#?m8@FZs<_G!+_Ptu z#y(y)&ew>R-NA@LLB37ZZ_Cdf7`~Dl_SAk0f?4QZny{u}ZUj%B@HFDR(*n*DO{NnW z!Z|FX*=ia2$3F!tZqyhx-v6kbKPIgaJqFRQW4;+%44;T5OEyMq?f)QN=UIO*lNvKv zFkoTcbyPe^8uG}@NZt}?Pz{m(JByU-IqNAeD5=d^#p%#Wbe$7|sTOcViI(X7<)vp7 z+wYCYOv)~8Yuy?`H;DSn&Dfw`@Uozk?%fCSu14CFPlll4ki3xK>;UWh^ZQvl8m#-2 zUf03!)TSiGjKedu9R{l_am@d+Y!`Dg4T@KiMDS;{C)o(KO^4o#=wDy{7~n%sHv)a5 z`z(Lclp8OBDzWc^N=Brhhs@ui+^x`(N&v z4chF8EyX}?VZCPES^QpC1ukb+%V7BZ3$&j`@ff{=Udmyb(mKzD( zgwoqc+N@+;OH~th6U-&g24CpvhY<9!q-uv;24wWo8?yHTR~(q+A(RD-u3!*eR{nzS&3Y>do#2Aa+TPDJ6P#GCr-ObBd^u z?Y?HOI_)oy4-$RG9T3-xkPE^+kE~8!cy*-g^8Vr##Nq+R4xbJ0K?*t6DtGArkA#oNk36v>!0Xkv+c9o6_dGno0Es zK$+@KA^7i+Wp_>!2#^KHy?+A7|1|FjOl7-B3^_Ly8sMytBX9$I2UhQ z|Gc+e`Qyd5UlP(q4T4L$yDSS74E_DhEMO26DH)4>*pB}7@!u8#

sOdNoyW1QC;L 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 literal 0 HcmV?d00001 From 005d6372931b6114594de0f5d6f6248809980240 Mon Sep 17 00:00:00 2001 From: Nicolas Lamirault Date: Wed, 16 Sep 2020 16:16:50 +0200 Subject: [PATCH 19/22] Add: cert-manager and letsencrypt into resources certificates (#265) * Add: cert-manager into resources certificates Signed-off-by: Nicolas Lamirault * Add: letsencrypt service Signed-off-by: Nicolas Lamirault * Fix: names of new resources Signed-off-by: Nicolas Lamirault * Fix: remove doc Signed-off-by: Nicolas Lamirault * Add: certificates components Signed-off-by: Nicolas Lamirault --- diagrams/onprem/certificates.py | 19 ++++++++++++++++++ docs/nodes/onprem.md | 5 +++++ .../onprem/certificates/cert-manager.png | Bin 0 -> 32453 bytes .../onprem/certificates/lets-encrypt.png | Bin 0 -> 5160 bytes 4 files changed, 24 insertions(+) create mode 100644 diagrams/onprem/certificates.py create mode 100644 resources/onprem/certificates/cert-manager.png create mode 100644 resources/onprem/certificates/lets-encrypt.png diff --git a/diagrams/onprem/certificates.py b/diagrams/onprem/certificates.py new file mode 100644 index 00000000..030e8a42 --- /dev/null +++ b/diagrams/onprem/certificates.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OnPrem + + +class _Certificates(_OnPrem): + _type = "certificates" + _icon_dir = "resources/onprem/certificates" + + +class CertManager(_Certificates): + _icon = "cert-manager.png" + + +class LetsEncrypt(_Certificates): + _icon = "lets-encrypt.png" + + +# Aliases diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index ff4bcc16..62ec53ad 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -26,6 +26,11 @@ Node classes list of onprem provider. - **diagrams.onprem.cd.TektonCli** - **diagrams.onprem.cd.Tekton** +## onprem.certificates + +- **diagrams.onprem.certificates.CertManager** +- **diagrams.onprem.certificates.LetsEncrypt** + ## onprem.ci - **diagrams.onprem.ci.Circleci**, **CircleCI** (alias) diff --git a/resources/onprem/certificates/cert-manager.png b/resources/onprem/certificates/cert-manager.png new file mode 100644 index 0000000000000000000000000000000000000000..72bd27546e61606cdfeda3dcd5ba21d15ecaf7a1 GIT binary patch literal 32453 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 z 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 literal 0 HcmV?d00001 diff --git a/resources/onprem/certificates/lets-encrypt.png b/resources/onprem/certificates/lets-encrypt.png new file mode 100644 index 0000000000000000000000000000000000000000..9963960fd99881db8598857389cd15e7d2d33799 GIT binary patch literal 5160 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 Date: Wed, 16 Sep 2020 16:17:36 +0200 Subject: [PATCH 20/22] Chat services : Rocketchat, Mattermost and Microsoft Teams (#268) * Add: SAAS Chat services Signed-off-by: Nicolas Lamirault * Fix: RocketChat name Signed-off-by: Nicolas Lamirault * Add: RocketChat image Signed-off-by: Nicolas Lamirault --- diagrams/saas/chat.py | 12 ++++++++++++ docs/nodes/saas.md | 3 +++ resources/saas/chat/mattermost.png | Bin 0 -> 7611 bytes resources/saas/chat/rocket-chat.png | Bin 0 -> 18207 bytes resources/saas/chat/teams.png | Bin 0 -> 6982 bytes 5 files changed, 15 insertions(+) create mode 100644 resources/saas/chat/mattermost.png create mode 100644 resources/saas/chat/rocket-chat.png create mode 100644 resources/saas/chat/teams.png diff --git a/diagrams/saas/chat.py b/diagrams/saas/chat.py index ebdf0532..6ee66155 100644 --- a/diagrams/saas/chat.py +++ b/diagrams/saas/chat.py @@ -8,10 +8,22 @@ class _Chat(_Saas): _icon_dir = "resources/saas/chat" +class Mattermost(_Chat): + _icon = "mattermost.png" + + +class RocketChat(_Chat): + _icon = "rocket-chat.png" + + class Slack(_Chat): _icon = "slack.png" +class Teams(_Chat): + _icon = "teams.png" + + class Telegram(_Chat): _icon = "telegram.png" diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index 607fa09c..0ffff416 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -22,7 +22,10 @@ Node classes list of saas provider. ## saas.chat +- **diagrams.saas.chat.Mattermost** +- **diagrams.saas.chat.RocketChat** - **diagrams.saas.chat.Slack** +- **diagrams.saas.chat.Teams** - **diagrams.saas.chat.Telegram** ## saas.identity diff --git a/resources/saas/chat/mattermost.png b/resources/saas/chat/mattermost.png new file mode 100644 index 0000000000000000000000000000000000000000..a308a6487254aa94f32e9cc966837247e8e3b1e7 GIT binary patch literal 7611 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 V0zy3dDM$bSrgvAjTE{W^{{WhpSF!*A literal 0 HcmV?d00001 From bb8d0df199769dedba51c75552fec2d5b4f9aa39 Mon Sep 17 00:00:00 2001 From: Daniils Petrovs <5202322+DaniruKun@users.noreply.github.com> Date: Thu, 17 Sep 2020 15:27:30 +0300 Subject: [PATCH 21/22] Add Erlang and Elixir icons (#275) * Add Erlang and Elixir icons * Update Elixir logo with clean one * Update logo again with higher dpi ver Co-authored-by: Daniils Petrovs --- diagrams/programming/language.py | 8 ++++++++ docs/nodes/programming.md | 2 ++ resources/programming/language/elixir.png | Bin 0 -> 31570 bytes resources/programming/language/erlang.png | Bin 0 -> 10277 bytes 4 files changed, 10 insertions(+) create mode 100644 resources/programming/language/elixir.png create mode 100644 resources/programming/language/erlang.png diff --git a/diagrams/programming/language.py b/diagrams/programming/language.py index 36c3d4c0..7dc4da95 100644 --- a/diagrams/programming/language.py +++ b/diagrams/programming/language.py @@ -28,6 +28,14 @@ class Dart(_Language): _icon = "dart.png" +class Elixir(_Language): + _icon = "elixir.png" + + +class Erlang(_Language): + _icon = "erlang.png" + + class Go(_Language): _icon = "go.png" diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md index 60c8a0e3..86c07b70 100644 --- a/docs/nodes/programming.md +++ b/docs/nodes/programming.md @@ -26,6 +26,8 @@ Node classes list of programming provider. - **diagrams.programming.language.Cpp** - **diagrams.programming.language.Csharp** - **diagrams.programming.language.Dart** +- **diagrams.programming.language.Elixir** +- **diagrams.programming.language.Erlang** - **diagrams.programming.language.Go** - **diagrams.programming.language.Java** - **diagrams.programming.language.Javascript**, **JavaScript** (alias) diff --git a/resources/programming/language/elixir.png b/resources/programming/language/elixir.png new file mode 100644 index 0000000000000000000000000000000000000000..86e7bddde8cb0ecd3d28a9cca1b10fb61dfb324f GIT binary patch literal 31570 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 c|3ARN_J2Rn`-uUFs|JDOq?9G=#Z5#04FAXgh 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 L7^*j_qT~Jt7z@EC literal 0 HcmV?d00001 From 8fc555825694e5c6302453b58c0ec11592e6ca72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lionel=20F=C3=89LICIT=C3=89?= Date: Fri, 18 Sep 2020 13:13:51 +0200 Subject: [PATCH 22/22] [Resources] generic: add subnet (#285) --- diagrams/generic/network.py | 4 ++++ docs/nodes/generic.md | 1 + resources/generic/network/subnet.png | Bin 0 -> 1225 bytes 3 files changed, 5 insertions(+) create mode 100644 resources/generic/network/subnet.png diff --git a/diagrams/generic/network.py b/diagrams/generic/network.py index 7b9a9ee0..40367ef0 100644 --- a/diagrams/generic/network.py +++ b/diagrams/generic/network.py @@ -16,6 +16,10 @@ class Router(_Network): _icon = "router.png" +class Subnet(_Network): + _icon = "subnet.png" + + class Switch(_Network): _icon = "switch.png" diff --git a/docs/nodes/generic.md b/docs/nodes/generic.md index 785e1410..8e4249a1 100644 --- a/docs/nodes/generic.md +++ b/docs/nodes/generic.md @@ -26,6 +26,7 @@ Node classes list of generic provider. - **diagrams.generic.network.Firewall** - **diagrams.generic.network.Router** +- **diagrams.generic.network.Subnet** - **diagrams.generic.network.Switch** - **diagrams.generic.network.VPN** diff --git a/resources/generic/network/subnet.png b/resources/generic/network/subnet.png new file mode 100644 index 0000000000000000000000000000000000000000..2808968edcf91cec88a2c6ee3e8bcfff10088e8d GIT binary patch literal 1225 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%U;1OBOz@VoL!i*J5?aP3I z>?NMQuIx`Z1x2)Ur|Mhz0fi(>Tq8=H^K)}k^GX<;i&7IyQd1PlGfOfQ+&z5*!W;R- z85mfcJzX3_DsH{K8(GwBAmHHW^7CJKSY5E5P_lr*te18UNfRnNj$WvG&mC|%OSFN3 zfr){GL4koh#sS0i%k3Sq&uZwLp7d4s>@o9iKi2J&F%vl*QXXr;!tk6y01vkU4^Mk_#`}tgfZy2Q_#jpKfle=&F zYWm^@c{6+Rk4iEazdL7h?~Elwb^EN>DbJ7P*QiIR`!OY*&quY@?~8Qfrr6@5+&e#J zF=F*O&!lHF8}`cY=KlO$IIr(t@80_PhRJ1RHTxwe=i5E*NzP?s;A2F0szRelIaA*b z?$fc=pL=J1G-XEi$qk{uMhnVcJ{7C0*&J_W!pzXlu%USRUEfnI41xzN8C({;+PIma zfK!?eZ0;ns1>f`5?Ji_Vi2T&`W3D+fgE52amg8G|MEAeeJ!N{A{d`?{{Ea)e?@fLz z{dZoc!F0y?QGxIE`}h1xT^OijeR+Hx6ZJ^1r|6OqjxX%Ld8s4hd`uObQI5 z%l{`eID>+^ouTjVL8M^scyTG7*{_K0?s~@J*;zI3{~f#(Rr9z#qWa0~?b7WG4`iSz zq@e4#zT=;_&!%Q3_I3O?v*UZZa9`BCuJgw~`yAkZt$rc6v6oNs`-_F^+t-`bt@wSn zOh|yM+J@oVzZt9|d=1x|AKC!zUy#LchH1n1`WGLLY`u89kJ-6KzP^5mf^>&|JJ@lI z4DTKuRcP$7kn8&r&EVf^#H`>U;lQAl>feQuT5FE?I+)+6mdyY1bl?Af_g4IWD#vQf zkauT=t~@YJH|$;f)CHEP9vFXTyt6+2j|{sXi&b$3Tf*b*dZ0A-=HnV+v_#hse1}WM zd)w{g*yq5&N0S6c{EnXJM#-etx(DMV(@>Jv=G(iN8W?UE