Merge branch 'master' into master

pull/963/head
Filipe Oliveira 3 weeks ago committed by GitHub
commit 71695c4cee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -394,3 +394,17 @@ The following import changes:
### Added
- Support kubernetes diagrams: [3eda1cb](https://github.com/mingrammer/diagrams/commit/3eda1cb6bca8be8a55773d90b93483a8fab3e0f1)
## v0.23.5
### Breaking Changes
The following import changes:
#### OCI
| Old import path | New import path |
| -------------------------------------------------------------------| --------------------------------------------------------------|
| `from diagrams.oci.connectivity import CustomerPremiseWhite` | `from diagrams.oci.connectivity import CustomerPremisesWhite` |
| `from diagrams.oci.connectivity import CustomerPremises` | `from diagrams.oci.connectivity import CustomerPremises` |

@ -5,14 +5,14 @@ yourself.
## Set up your environment
* See [DEVELOPMENT][DEVELOPMENT.md]
- See [DEVELOPMENT][DEVELOPMENT.md]
## Resources
### Update nodes
All node classes was auto-generated from image resource files. For example, the
`diagram.aws.compute.EC2` class was auto-generated based on
All node classes are auto-generated from image resource files. For example, the
`diagram.aws.compute.EC2` class is auto-generated based on the
`resources/aws/compute/ec2.png` image resource file.
So, if you want to add new node resources or update existing node resources, you
@ -30,13 +30,13 @@ ffmpeg -i my_big_image.jpg -vf scale=w=256:h=256:force_original_aspect_ratio=dec
Then just run the `./autogen.sh` to generate the added or updated node classes. (cf. [DEVELOPMENT][DEVELOPMENT.md])
> IMPORTANT NOTE: To run `autogen.sh`, you need [round][round], [black][black] and
> [inkscape][inkscape] command lines that are used for cleaning the image
> IMPORTANT NOTE: To run `autogen.sh`, you need the [round][round], [black][black] and
> [inkscape][inkscape] command line tools that are used for cleaning the image
> resource filenames and formatting the generated python code.
>
> macOS users can download the inkscape via Homebrew.
> macOS users can download inkscape via Homebrew.
>
> Or you should use the docker image.
> Or you can use the docker image.
[DEVELOPMENT.md]: ./DEVELOPMENT.md
[round]: https://github.com/mingrammer/round
@ -54,11 +54,13 @@ or update the `ALIASES` map in [config.py](config.py).
Then just run the `./autogen.sh` to generate the added or updated aliases. (cf. [DEVELOPMENT][DEVELOPMENT.md])
> IMPORTANT NOTE: To run `autogen.sh`, you need [round][round] and
> [inkscape][inkscape] command lines that are used for cleaning the image
> IMPORTANT NOTE: To run `autogen.sh`, you need the [round][round] and
> [inkscape][inkscape] command line tools that are used for cleaning the image
> resource filenames.
>
> Or you should use the docker image.
> macOS users can download inkscape via Homebrew.
>
> Or you can use the docker image.
## Run Tests

@ -39,7 +39,7 @@ You should have docker installed in your system, if not click [here](https://doc
## Mac local development setup
To be able to develop and run diagrams locally on you Mac device, you should have [Python](https://www.python.org/downloads/), [Go](https://golang.org/doc/install) and [brew](https://brew.sh/) installed on your system.
To be able to develop and run diagrams locally on you Mac device, you should have [Python](https://www.python.org/downloads/), [Go](https://golang.org/doc/install), and [brew](https://brew.sh/) installed on your system.
1. Go to diagrams root directory.
@ -74,4 +74,4 @@ To be able to develop and run diagrams locally on you Mac device, you should hav
./autogen.sh
```
7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.
7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.

@ -13,7 +13,7 @@
**Diagram as Code**.
Diagrams lets you draw the cloud system architecture **in Python code**. It was born for **prototyping** a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well. Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premise` nodes, `SaaS` and major `Programming` frameworks and languages.
Diagrams lets you draw the cloud system architecture **in Python code**. It was born for **prototyping** a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well. Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premises` nodes, `SaaS` and major `Programming` frameworks and languages.
**Diagram as Code** also allows you to **track** the architecture diagram changes in any **version control** system.
@ -33,7 +33,7 @@ Diagrams lets you draw the cloud system architecture **in Python code**. It was
![digital ocean provider](https://img.shields.io/badge/DigitalOcean-0080ff?logo=digitalocean&color=0080ff)
![elastic provider](https://img.shields.io/badge/Elastic-orange?logo=elastic&color=005571)
![outscale provider](https://img.shields.io/badge/OutScale-orange?color=5f87bf)
![on premise provider](https://img.shields.io/badge/OnPremise-orange?color=5f87bf)
![on premises provider](https://img.shields.io/badge/OnPremises-orange?color=5f87bf)
![generic provider](https://img.shields.io/badge/Generic-orange?color=5f87bf)
![programming provider](https://img.shields.io/badge/Programming-orange?color=5f87bf)
![saas provider](https://img.shields.io/badge/SaaS-orange?color=5f87bf)
@ -64,7 +64,7 @@ You can start with [quick start](https://diagrams.mingrammer.com/docs/getting-st
| Event Processing | Stateful Architecture | Advanced Web Service |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ![event processing](https://diagrams.mingrammer.com/img/event_processing_diagram.png) | ![stateful architecture](https://diagrams.mingrammer.com/img/stateful_architecture_diagram.png) | ![advanced web service with on-premise](https://diagrams.mingrammer.com/img/advanced_web_service_with_on-premise.png) |
| ![event processing](https://diagrams.mingrammer.com/img/event_processing_diagram.png) | ![stateful architecture](https://diagrams.mingrammer.com/img/stateful_architecture_diagram.png) | ![advanced web service with on-premises](https://diagrams.mingrammer.com/img/advanced_web_service_with_on-premises.png) |
You can find all the examples on the [examples](https://diagrams.mingrammer.com/docs/getting-started/examples) page.

@ -82,7 +82,7 @@ class Diagram:
filename: str = "",
direction: str = "LR",
curvestyle: str = "ortho",
outformat: str = "png",
outformat: str | list[str] = "png",
autolabel: bool = False,
show: bool = True,
strict: bool = False,

@ -8,6 +8,10 @@ class _Analytics(_AWS):
_icon_dir = "resources/aws/analytics"
class AmazonOpensearchService(_Analytics):
_icon = "amazon-opensearch-service.png"
class Analytics(_Analytics):
_icon = "analytics.png"

@ -20,6 +20,10 @@ class Cloud9(_Devtools):
_icon = "cloud9.png"
class Codeartifact(_Devtools):
_icon = "codeartifact.png"
class Codebuild(_Devtools):
_icon = "codebuild.png"

@ -8,6 +8,22 @@ class _Management(_AWS):
_icon_dir = "resources/aws/management"
class AmazonDevopsGuru(_Management):
_icon = "amazon-devops-guru.png"
class AmazonManagedGrafana(_Management):
_icon = "amazon-managed-grafana.png"
class AmazonManagedPrometheus(_Management):
_icon = "amazon-managed-prometheus.png"
class AmazonManagedWorkflowsApacheAirflow(_Management):
_icon = "amazon-managed-workflows-apache-airflow.png"
class AutoScaling(_Management):
_icon = "auto-scaling.png"
@ -140,10 +156,18 @@ class PersonalHealthDashboard(_Management):
_icon = "personal-health-dashboard.png"
class Proton(_Management):
_icon = "proton.png"
class ServiceCatalog(_Management):
_icon = "service-catalog.png"
class SystemsManagerAppConfig(_Management):
_icon = "systems-manager-app-config.png"
class SystemsManagerAutomation(_Management):
_icon = "systems-manager-automation.png"

@ -84,6 +84,10 @@ class NATGateway(_Network):
_icon = "nat-gateway.png"
class NetworkFirewall(_Network):
_icon = "network-firewall.png"
class NetworkingAndContentDelivery(_Network):
_icon = "networking-and-content-delivery.png"

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Azure
class _Monitor(_Azure):
_type = "monitor"
_icon_dir = "resources/azure/monitor"
class ChangeAnalysis(_Monitor):
_icon = "change-analysis.png"
class Logs(_Monitor):
_icon = "logs.png"
class Metrics(_Monitor):
_icon = "metrics.png"
class Monitor(_Monitor):
_icon = "monitor.png"
# Aliases

@ -1,6 +1,7 @@
"""
A set of nodes and edges to visualize software architecture using the C4 model.
"""
import html
import textwrap
from diagrams import Cluster, Node, Edge

@ -32,12 +32,12 @@ class CustomerDatacntrWhite(_Connectivity):
_icon = "customer-datacntr-white.png"
class CustomerPremiseWhite(_Connectivity):
_icon = "customer-premise-white.png"
class CustomerPremisesWhite(_Connectivity):
_icon = "customer-premises-white.png"
class CustomerPremise(_Connectivity):
_icon = "customer-premise.png"
class CustomerPremises(_Connectivity):
_icon = "customer-premises.png"
class DisconnectedRegionsWhite(_Connectivity):

@ -1,5 +1,5 @@
"""
OnPrem provides a set of general on-premise services.
OnPrem provides a set of general on-premises services.
"""
from diagrams import Node

@ -16,6 +16,10 @@ class Backbone(_Framework):
_icon = "backbone.png"
class Camel(_Framework):
_icon = "camel.png"
class Django(_Framework):
_icon = "django.png"
@ -44,6 +48,14 @@ class Graphql(_Framework):
_icon = "graphql.png"
class Hibernate(_Framework):
_icon = "hibernate.png"
class Jhipster(_Framework):
_icon = "jhipster.png"
class Laravel(_Framework):
_icon = "laravel.png"
@ -94,3 +106,4 @@ FastAPI = Fastapi
GraphQL = Graphql
DotNet = Dotnet
NextJs = Nextjs
JHipster = Jhipster

@ -170,7 +170,7 @@ with Diagram("Stateful Architecture", show=False):
![stateful architecture diagram](/img/stateful_architecture_diagram.png)
## Advanced Web Service with On-Premise
## Advanced Web Service with On-Premises
```python
from diagrams import Cluster, Diagram
@ -183,7 +183,7 @@ from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
with Diagram("Advanced Web Service with On-Premise", show=False):
with Diagram("Advanced Web Service with On-Premises", show=False):
ingress = Nginx("ingress")
metrics = Prometheus("metric")

@ -3,11 +3,13 @@ id: installation
title: Installation
---
It requires **Python 3.6** or higher, check your Python version first.
**diagrams** requires **Python 3.7** or higher, check your Python version first.
It uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use **diagrams**. After installing graphviz (or already have it), install the **diagrams**.
**diagrams** uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use it.
> macOS users can download the Graphviz via `brew install graphviz` if you're using [Homebrew](https://brew.sh). Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz`.
> macOS users using [Homebrew](https://brew.sh) can install Graphviz via `brew install graphviz` . Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz`.
After installing Graphviz (or if you already have it), install **diagrams**:
```shell
# using pip (pip3)
@ -33,16 +35,18 @@ with Diagram("Web Service", show=False):
ELB("lb") >> EC2("web") >> RDS("userdb")
```
This code generates below diagram.
To generate the diagram, run:
```shell
$ python diagram.py
```
This generates the diagram below:
![web service diagram](/img/web_service_diagram.png)
It will be saved as `web_service.png` on your working directory.
It will be saved as `web_service.png` in your working directory.
## Next
See more [Examples](/docs/getting-started/examples) or see [Guides](/docs/guides/diagram) page for more details.
See more [Examples](/docs/getting-started/examples) or see the [Guides](/docs/guides/diagram) page for more details.

@ -3,13 +3,13 @@ id: cluster
title: Clusters
---
Cluster allows you group (or clustering) the nodes in an isolated group.
`Cluster` allows you to group (or cluster) nodes in an isolated group.
## Basic
Cluster represents a local cluster context.
`Cluster` represents a local cluster context.
You can create a cluster context with Cluster class. And you can also connect the nodes in a cluster to other nodes outside a cluster.
You can create a cluster context using the `Cluster` class. You can also connect the nodes in a cluster to other nodes outside a cluster.
```python
from diagrams import Cluster, Diagram
@ -33,7 +33,7 @@ with Diagram("Simple Web Service with DB Cluster", show=False):
## Nested Clusters
Nested clustering is also possible.
Nested clustering is also possible:
```python
from diagrams import Cluster, Diagram
@ -68,4 +68,4 @@ with Diagram("Event Processing", show=False):
![event processing diagram](/img/event_processing_diagram.png)
> There is no depth limit of nesting. Feel free to create nested clusters as deep as you want.
> There is no depth limit to nesting. Feel free to create nested clusters as deep as you want.

@ -3,13 +3,13 @@ id: diagram
title: Diagrams
---
Diagram is a primary object representing a diagram.
`Diagram` is a primary object representing a diagram.
## Basic
Diagram represents a global diagram context.
`Diagram` represents a global diagram context.
You can create a diagram context with Diagram class. The first parameter of Diagram constructor will be used for output filename.
You can create a diagram context with the `Diagram` class. The first parameter of the `Diagram` constructor will be used to generate the output filename.
```python
from diagrams import Diagram
@ -19,17 +19,17 @@ with Diagram("Simple Diagram"):
EC2("web")
```
And if you run the above script with below command,
If you run the above script with the command below,
```shell
$ python diagram.py
```
It will generate an image file with single `EC2` node drawn as `simple_diagram.png` on your working directory, and open that created image file immediately.
it will generate an image file with single `EC2` node drawn as `simple_diagram.png` in your working directory and open that created image file immediately.
## Jupyter Notebooks
Diagrams can be also rendered directly inside the notebook as like this:
Diagrams can also be rendered directly inside Jupyter notebooks like this:
```python
from diagrams import Diagram
@ -42,9 +42,9 @@ diag
## Options
You can specify the output file format with `outformat` parameter. Default is **png**.
You can specify the output file format with the `outformat` parameter. The default is **png**.
> (png, jpg, svg, pdf and dot) are allowed.
> Allowed formats are: png, jpg, svg, pdf, and dot
```python
from diagrams import Diagram
@ -54,7 +54,7 @@ with Diagram("Simple Diagram", outformat="jpg"):
EC2("web")
```
The `outformat` parameter also support list to output all the defined output in one call.
The `outformat` parameter also supports a list to output all the defined outputs in one call:
```python
from diagrams import Diagram
@ -64,7 +64,7 @@ with Diagram("Simple Diagram Multi Output", outformat=["jpg", "png", "dot"]):
EC2("web")
```
You can specify the output filename with `filename` parameter. The extension shouldn't be included, it's determined by the `outformat` parameter.
You can specify the output filename with the `filename` parameter. The extension shouldn't be included, it's determined by the `outformat` parameter.
```python
from diagrams import Diagram
@ -74,7 +74,7 @@ with Diagram("Simple Diagram", filename="my_diagram"):
EC2("web")
```
You can also disable the automatic file opening by setting the `show` parameter as **false**. Default is **true**.
You can also disable the automatic file opening by setting the `show` parameter to **false**. The default is **true**.
```python
from diagrams import Diagram
@ -84,7 +84,7 @@ with Diagram("Simple Diagram", show=False):
EC2("web")
```
It allows custom Graphviz dot attributes options.
Diagrams also allow custom Graphviz dot attributes options.
> `graph_attr`, `node_attr` and `edge_attr` are supported. Here is a [reference link](https://www.graphviz.org/doc/info/attrs.html).

@ -3,13 +3,13 @@ id: edge
title: Edges
---
Edge is representing an edge between Nodes.
`Edge` represents an edge between nodes.
## Basic
Edge is an object representing a connection between Nodes with some additional properties.
`Edge` is an object representing a connection between nodes with some additional properties.
An edge object contains three attributes: **label**, **color** and **style** which mirror corresponding graphviz edge attributes.
An edge object contains three attributes: **label**, **color**, and **style**. They mirror the corresponding Graphviz edge attributes.
```python
from diagrams import Cluster, Diagram, Edge
@ -22,7 +22,7 @@ from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
with Diagram(name="Advanced Web Service with On-Premises (colored)", show=False):
ingress = Nginx("ingress")
metrics = Prometheus("metric")
@ -66,4 +66,4 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
>> aggregator
```
![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png)
![advanced web service with on-premises diagram colored](/img/advanced_web_service_with_on-premises_colored.png)

@ -3,11 +3,11 @@ id: node
title: Nodes
---
Node is a second object representing a node or system component.
`Node` is an object representing a node or system component.
## Basic
Node is an abstract concept that represents a single system component object.
`Node` is an abstract concept that represents a single system component object.
A node object consists of three parts: **provider**, **resource type** and **name**. You may already have seen each part in the previous example.
@ -19,9 +19,9 @@ with Diagram("Simple Diagram"):
EC2("web")
```
In above example, the `EC2` is a node of `compute` resource type which provided by `aws` provider.
In the example above, the `EC2` is a node of resource type `compute` which is provided by the `aws` provider.
You can use other node objects in a similar manner like:
You can use other node objects in a similar manner:
```python
# aws resources
@ -42,7 +42,7 @@ from diagrams.alibabacloud.storage import ObjectTableStore
# gcp resources
from diagrams.gcp.compute import AppEngine, GKE
from diagrams.gcp.ml import AutoML
from diagrams.gcp.ml import AutoML
...
# k8s resources
@ -57,15 +57,17 @@ from diagrams.oci.network import Firewall
from diagrams.oci.storage import FileStorage, StorageGateway
```
You can find all available nodes list in [Here](https://diagrams.mingrammer.com/docs/nodes/aws).
You can find lists of all available nodes for each provider in the sidebar on the left.
For example, [here](https://diagrams.mingrammer.com/docs/nodes/aws) is the list of all available AWS nodes.
## Data Flow
You can represent data flow by connecting the nodes with these operators: `>>`, `<<` and `-`.
You can represent data flow by connecting the nodes with the operators `>>`, `<<`, and `-`.
* **>>**: Connect nodes in left to right direction.
* **<<**: Connect nodes in right to left direction.
* **-**: Connect nodes in no direction. Undirected.
- **>>** connects nodes in left to right direction.
- **<<** connects nodes in right to left direction.
- **-** connects nodes in no direction. Undirected.
```python
from diagrams import Diagram
@ -80,15 +82,15 @@ with Diagram("Web Services", show=False):
(ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb")
```
> Be careful when using the `-` and any shift operators together, which could cause unexpected results due to operator precedence.
> Be careful when using `-` and any shift operators together. It can cause unexpected results due to Python's operator precedence, so you might have to use parentheses.
![web services diagram](/img/web_services_diagram.png)
> The order of rendered diagrams is the reverse of the declaration order.
You can change the data flow direction with `direction` parameter. Default is **LR**.
You can change the data flow direction with the `direction` parameter. The default is **LR**.
> (TB, BT, LR and RL) are allowed.
> Allowed values are: TB, BT, LR, and RL
```python
from diagrams import Diagram
@ -110,7 +112,7 @@ with Diagram("Workers", show=False, direction="TB"):
## Group Data Flow
Above worker example has too many redundant flows. In this case, you can group nodes into a list so that all nodes are connected to other nodes at once.
The above worker example has too many redundant flows. To avoid this, you can group nodes into a list so that all nodes are connected to other nodes at once:
```python
from diagrams import Diagram

@ -3,7 +3,7 @@ id: alibabacloud
title: AlibabaCloud
---
Node classes list of alibabacloud provider.
Node classes list of the alibabacloud provider.
## alibabacloud.analytics

@ -3,11 +3,14 @@ id: aws
title: AWS
---
Node classes list of aws provider.
Node classes list of the aws provider.
## aws.analytics
<img width="30" src="/img/resources/aws/analytics/amazon-opensearch-service.png" alt="AmazonOpensearchService" style="float: left; padding-right: 5px;" >
**diagrams.aws.analytics.AmazonOpensearchService**
<img width="30" src="/img/resources/aws/analytics/analytics.png" alt="Analytics" style="float: left; padding-right: 5px;" >
**diagrams.aws.analytics.Analytics**
@ -389,6 +392,9 @@ Node classes list of aws provider.
<img width="30" src="/img/resources/aws/devtools/cloud9.png" alt="Cloud9" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Cloud9**
<img width="30" src="/img/resources/aws/devtools/codeartifact.png" alt="Codeartifact" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Codeartifact**
<img width="30" src="/img/resources/aws/devtools/codebuild.png" alt="Codebuild" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Codebuild**
@ -800,6 +806,18 @@ Node classes list of aws provider.
## aws.management
<img width="30" src="/img/resources/aws/management/amazon-devops-guru.png" alt="AmazonDevopsGuru" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonDevopsGuru**
<img width="30" src="/img/resources/aws/management/amazon-managed-grafana.png" alt="AmazonManagedGrafana" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonManagedGrafana**
<img width="30" src="/img/resources/aws/management/amazon-managed-prometheus.png" alt="AmazonManagedPrometheus" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonManagedPrometheus**
<img width="30" src="/img/resources/aws/management/amazon-managed-workflows-apache-airflow.png" alt="AmazonManagedWorkflowsApacheAirflow" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonManagedWorkflowsApacheAirflow**
<img width="30" src="/img/resources/aws/management/auto-scaling.png" alt="AutoScaling" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AutoScaling**
@ -899,9 +917,15 @@ Node classes list of aws provider.
<img width="30" src="/img/resources/aws/management/personal-health-dashboard.png" alt="PersonalHealthDashboard" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.PersonalHealthDashboard**
<img width="30" src="/img/resources/aws/management/proton.png" alt="Proton" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.Proton**
<img width="30" src="/img/resources/aws/management/service-catalog.png" alt="ServiceCatalog" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.ServiceCatalog**
<img width="30" src="/img/resources/aws/management/systems-manager-app-config.png" alt="SystemsManagerAppConfig" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.SystemsManagerAppConfig**
<img width="30" src="/img/resources/aws/management/systems-manager-automation.png" alt="SystemsManagerAutomation" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.SystemsManagerAutomation**
@ -1205,6 +1229,9 @@ Node classes list of aws provider.
<img width="30" src="/img/resources/aws/network/nat-gateway.png" alt="NATGateway" style="float: left; padding-right: 5px;" >
**diagrams.aws.network.NATGateway**
<img width="30" src="/img/resources/aws/network/network-firewall.png" alt="NetworkFirewall" style="float: left; padding-right: 5px;" >
**diagrams.aws.network.NetworkFirewall**
<img width="30" src="/img/resources/aws/network/networking-and-content-delivery.png" alt="NetworkingAndContentDelivery" style="float: left; padding-right: 5px;" >
**diagrams.aws.network.NetworkingAndContentDelivery**

@ -3,7 +3,7 @@ id: azure
title: Azure
---
Node classes list of azure provider.
Node classes list of the azure provider.
## azure.analytics
@ -524,6 +524,21 @@ Node classes list of azure provider.
<img width="30" src="/img/resources/azure/mobile/notification-hubs.png" alt="NotificationHubs" style="float: left; padding-right: 5px;" >
**diagrams.azure.mobile.NotificationHubs**
## azure.monitor
<img width="30" src="/img/resources/azure/monitor/change-analysis.png" alt="ChangeAnalysis" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.ChangeAnalysis**
<img width="30" src="/img/resources/azure/monitor/logs.png" alt="Logs" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.Logs**
<img width="30" src="/img/resources/azure/monitor/metrics.png" alt="Metrics" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.Metrics**
<img width="30" src="/img/resources/azure/monitor/monitor.png" alt="Monitor" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.Monitor**
## azure.network

@ -3,7 +3,7 @@ id: digitalocean
title: DigitalOcean
---
Node classes list of digitalocean provider.
Node classes list of the digitalocean provider.
## digitalocean.compute

@ -3,7 +3,7 @@ id: elastic
title: Elastic
---
Node classes list of elastic provider.
Node classes list of the elastic provider.
## elastic.agent

@ -3,7 +3,7 @@ id: firebase
title: Firebase
---
Node classes list of firebase provider.
Node classes list of the firebase provider.
## firebase.base

@ -3,7 +3,7 @@ id: gcp
title: GCP
---
Node classes list of gcp provider.
Node classes list of the gcp provider.
## gcp.analytics

@ -3,7 +3,7 @@ id: generic
title: Generic
---
Node classes list of generic provider.
Node classes list of the generic provider.
## generic.blank

@ -3,7 +3,7 @@ id: ibm
title: IBM
---
Node classes list of ibm provider.
Node classes list of the ibm provider.
## ibm.analytics

@ -3,7 +3,7 @@ id: k8s
title: K8S
---
Node classes list of k8s provider.
Node classes list of the k8s provider.
## k8s.chaos

@ -3,7 +3,7 @@ id: oci
title: OCI
---
Node classes list of oci provider.
Node classes list of the oci provider.
## oci.compute
@ -77,11 +77,11 @@ Node classes list of oci provider.
<img width="30" src="/img/resources/oci/connectivity/customer-datacntr-white.png" alt="CustomerDatacntrWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerDatacntrWhite**
<img width="30" src="/img/resources/oci/connectivity/customer-premise-white.png" alt="CustomerPremiseWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerPremiseWhite**
<img width="30" src="/img/resources/oci/connectivity/customer-premises-white.png" alt="CustomerPremisesWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerPremisesWhite**
<img width="30" src="/img/resources/oci/connectivity/customer-premise.png" alt="CustomerPremise" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerPremise**
<img width="30" src="/img/resources/oci/connectivity/customer-premises.png" alt="CustomerPremises" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerPremises**
<img width="30" src="/img/resources/oci/connectivity/disconnected-regions-white.png" alt="DisconnectedRegionsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.DisconnectedRegionsWhite**

@ -3,7 +3,7 @@ id: onprem
title: OnPrem
---
Node classes list of onprem provider.
Node classes list of the onprem provider.
## onprem.aggregator

@ -3,7 +3,7 @@ id: openstack
title: OpenStack
---
Node classes list of openstack provider.
Node classes list of the openstack provider.
## openstack.apiproxies

@ -3,7 +3,7 @@ id: outscale
title: Outscale
---
Node classes list of outscale provider.
Node classes list of the outscale provider.
## outscale.compute

@ -3,7 +3,7 @@ id: programming
title: Programming
---
Node classes list of programming provider.
Node classes list of the programming provider.
## programming.flowchart
@ -89,6 +89,9 @@ Node classes list of programming provider.
<img width="30" src="/img/resources/programming/framework/backbone.png" alt="Backbone" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Backbone**
<img width="30" src="/img/resources/programming/framework/camel.png" alt="Camel" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Camel**
<img width="30" src="/img/resources/programming/framework/django.png" alt="Django" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Django**
@ -110,6 +113,12 @@ Node classes list of programming provider.
<img width="30" src="/img/resources/programming/framework/graphql.png" alt="Graphql" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Graphql**, **GraphQL** (alias)
<img width="30" src="/img/resources/programming/framework/hibernate.png" alt="Hibernate" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Hibernate**
<img width="30" src="/img/resources/programming/framework/jhipster.png" alt="Jhipster" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Jhipster**, **JHipster** (alias)
<img width="30" src="/img/resources/programming/framework/laravel.png" alt="Laravel" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Laravel**

@ -3,7 +3,7 @@ id: saas
title: Saas
---
Node classes list of saas provider.
Node classes list of the saas provider.
## saas.alerting

33
poetry.lock generated

@ -1,10 +1,9 @@
# This file is automatically @generated by Poetry and should not be changed by hand.
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
[[package]]
name = "astroid"
version = "2.9.0"
description = "An abstract syntax tree for Python with inference support."
category = "dev"
optional = false
python-versions = "~=3.6"
files = [
@ -23,7 +22,6 @@ wrapt = ">=1.11,<1.14"
name = "black"
version = "22.12.0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -60,7 +58,6 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "click"
version = "8.1.3"
description = "Composable command line interface toolkit"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -76,7 +73,6 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
name = "colorama"
version = "0.4.3"
description = "Cross-platform colored terminal text."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@ -88,7 +84,6 @@ files = [
name = "exceptiongroup"
version = "1.1.0"
description = "Backport of PEP 654 (exception groups)"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -103,7 +98,6 @@ test = ["pytest (>=6)"]
name = "graphviz"
version = "0.20.1"
description = "Simple Python interface for Graphviz"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -120,7 +114,6 @@ test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=
name = "importlib-metadata"
version = "1.5.0"
description = "Read metadata from Python packages"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
@ -139,7 +132,6 @@ testing = ["importlib-resources", "packaging"]
name = "iniconfig"
version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing"
category = "dev"
optional = false
python-versions = "*"
files = [
@ -151,7 +143,6 @@ files = [
name = "isort"
version = "4.3.21"
description = "A Python utility / library to sort Python imports."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@ -169,7 +160,6 @@ xdg-home = ["appdirs (>=1.4.0)"]
name = "jinja2"
version = "3.1.2"
description = "A very fast and expressive template engine."
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -187,7 +177,6 @@ i18n = ["Babel (>=2.7)"]
name = "lazy-object-proxy"
version = "1.4.3"
description = "A fast and thorough lazy object proxy."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@ -218,7 +207,6 @@ files = [
name = "markupsafe"
version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false
python-versions = ">=3.6"
files = [
@ -297,7 +285,6 @@ files = [
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"
files = [
@ -309,7 +296,6 @@ files = [
name = "mypy-extensions"
version = "0.4.3"
description = "Experimental type system extensions for programs checked with the mypy typechecker."
category = "dev"
optional = false
python-versions = "*"
files = [
@ -321,7 +307,6 @@ files = [
name = "packaging"
version = "20.8"
description = "Core utilities for Python packages"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@ -336,7 +321,6 @@ pyparsing = ">=2.0.2"
name = "pathspec"
version = "0.10.1"
description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -348,7 +332,6 @@ files = [
name = "platformdirs"
version = "2.4.0"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -364,7 +347,6 @@ test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock
name = "pluggy"
version = "0.13.1"
description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@ -382,7 +364,6 @@ dev = ["pre-commit", "tox"]
name = "pylint"
version = "2.12.0"
description = "python code static checker"
category = "dev"
optional = false
python-versions = "~=3.6"
files = [
@ -403,7 +384,6 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""
name = "pyparsing"
version = "2.4.7"
description = "Python parsing module"
category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@ -415,7 +395,6 @@ files = [
name = "pytest"
version = "7.3.0"
description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -439,7 +418,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
name = "rope"
version = "0.14.0"
description = "a python refactoring library..."
category = "dev"
optional = false
python-versions = "*"
files = [
@ -452,7 +430,6 @@ files = [
name = "setuptools"
version = "59.6.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -468,7 +445,6 @@ testing = ["flake8-2020", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock"
name = "toml"
version = "0.10.0"
description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
optional = false
python-versions = "*"
files = [
@ -480,7 +456,6 @@ files = [
name = "tomli"
version = "1.2.3"
description = "A lil' TOML parser"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -492,7 +467,6 @@ files = [
name = "typed-ast"
version = "1.5.4"
description = "a fork of Python 2 and 3 ast modules with type comment support"
category = "main"
optional = false
python-versions = ">=3.6"
files = [
@ -526,7 +500,6 @@ files = [
name = "typing-extensions"
version = "4.1.1"
description = "Backported and Experimental Type Hints for Python 3.6+"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -538,7 +511,6 @@ files = [
name = "wrapt"
version = "1.11.2"
description = "Module for decorators, wrappers and monkey patching."
category = "dev"
optional = false
python-versions = "*"
files = [
@ -549,7 +521,6 @@ files = [
name = "zipp"
version = "3.1.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -564,4 +535,4 @@ testing = ["func-timeout", "jaraco.itertools"]
[metadata]
lock-version = "2.0"
python-versions = "^3.7"
content-hash = "5c2b82d1c8a6a283f63558fc693271f42fdcaeab73616713eb9b38b0b59787fc"
content-hash = "eab830dc3befbc19bb7c149e48641763ce360963d948395e4e3083143e4e71a8"

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -4,7 +4,7 @@ from pathlib import Path
import config as cfg
def base_dir() -> str:
def base_dir() -> Path:
return Path(os.path.abspath(os.path.dirname(__file__))).parent

@ -3,7 +3,7 @@ id: {{ pvd }}
title: {{ pvd|up_or_title(pvd) }}
---
Node classes list of {{ pvd }} provider.
Node classes list of the {{ pvd }} provider.
{% for typ, classes in typ_classes.items() %}
## {{ pvd }}.{{ typ }}
{% for class in classes %}

@ -106,7 +106,7 @@ class Index extends React.Component {
`Diagram as Code` allows you to **track** the architecture diagram changes in any **version control** system.
</MarkdownBlock>
<MarkdownBlock>
Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premise` nodes, `SaaS` and major `Programming` frameworks and languages.
Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premises` nodes, `SaaS` and major `Programming` frameworks and languages.
</MarkdownBlock>
<MarkdownBlock>
`NOTE: It does not control any actual cloud resources nor does it generate cloud formation or terraform code. It is just for drawing the cloud system architecture diagrams.`

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Loading…
Cancel
Save