Merge branch 'master' into doc_edge

pull/495/head
gabriel-tessier 10 months ago committed by GitHub
commit f69b61aaf0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -2,7 +2,7 @@ name: "CodeQL"
on: on:
push: push:
branches: [master, ] branches: [master]
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [master] branches: [master]
@ -16,10 +16,10 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v4
with: with:
# We must fetch at least the immediate parents so that if this is # We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head. # a pull request then we can check out the head.
fetch-depth: 2 fetch-depth: 2
# If this run was triggered by a pull request event, then checkout # If this run was triggered by a pull request event, then checkout
@ -29,10 +29,10 @@ jobs:
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v3
# Override language selection by uncommenting this and choosing your languages # Override language selection by uncommenting this and choosing your languages
with: with:
languages: python languages: python
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v3

@ -5,30 +5,34 @@ on:
branches: branches:
- master - master
paths: paths:
- '.github/workflows/test.yml' - ".github/workflows/test.yml"
- '**.py' - "pyproject.toml"
- "poetry.lock"
- "**.py"
pull_request: pull_request:
branches: branches:
- master - master
paths: paths:
- '.github/workflows/test.yml' - ".github/workflows/test.yml"
- '**.py' - "pyproject.toml"
- "poetry.lock"
- "**.py"
jobs: jobs:
test: test:
strategy: strategy:
matrix: matrix:
python: ['3.6', '3.7', '3.8', '3.9'] python: ["3.9", "3.10", "3.11", "3.12", "3.13"]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: actions/setup-python@v2 - uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python }} python-version: ${{ matrix.python }}
- name: Setup Graphviz - name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v1 uses: ts-graphviz/setup-graphviz@v2
- name: Install poetry - name: Install poetry
run: pip install poetry run: curl -sSL https://install.python-poetry.org | python3 -
- name: Run all tests - name: Run all tests
run: | run: |
poetry install poetry install

@ -394,3 +394,17 @@ The following import changes:
### Added ### Added
- Support kubernetes diagrams: [3eda1cb](https://github.com/mingrammer/diagrams/commit/3eda1cb6bca8be8a55773d90b93483a8fab3e0f1) - 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 ## Set up your environment
* See [DEVELOPMENT][DEVELOPMENT.md] - See [DEVELOPMENT][DEVELOPMENT.md]
## Resources ## Resources
### Update nodes ### Update nodes
All node classes was auto-generated from image resource files. For example, the All node classes are auto-generated from image resource files. For example, the
`diagram.aws.compute.EC2` class was auto-generated based on `diagram.aws.compute.EC2` class is auto-generated based on the
`resources/aws/compute/ec2.png` image resource file. `resources/aws/compute/ec2.png` image resource file.
So, if you want to add new node resources or update existing node resources, you So, if you want to add new node resources or update existing node resources, you
@ -30,16 +30,17 @@ 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]) 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] and > IMPORTANT NOTE: To run `autogen.sh`, you need the [round][round], [black][black] and
> [inkscape][inkscape] command lines that are used for cleaning the image > [inkscape][inkscape] command line tools that are used for cleaning the image
> resource filenames. > 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 [DEVELOPMENT.md]: ./DEVELOPMENT.md
[round]: https://github.com/mingrammer/round [round]: https://github.com/mingrammer/round
[black]: https://pypi.org/project/black
[inkscape]: https://inkscape.org/ko/release [inkscape]: https://inkscape.org/ko/release
### Update Aliases ### Update Aliases
@ -53,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]) 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 > IMPORTANT NOTE: To run `autogen.sh`, you need the [round][round] and
> [inkscape][inkscape] command lines that are used for clearning the image > [inkscape][inkscape] command line tools that are used for cleaning the image
> resource filenames. > 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 ## Run Tests

@ -34,4 +34,45 @@ You should have docker installed in your system, if not click [here](https://doc
docker exec diagrams ./autogen.sh docker exec diagrams ./autogen.sh
``` ```
6. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development. 6. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.
## 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.
1. Go to diagrams root directory.
2. Install poetry, the Python project management package used by diagrams.
```shell
pip install poetry
```
3. Install the project's Python dependencies.
```shell
poetry install
```
4. Install diagrams binary dependencies.
```shell
brew install imagemagick inkscape black
go install github.com/mingrammer/round@latest
# ln -sf ~/go/bin/round ~/.local/bin/round
```
5. Run unit tests to confirm that it's working.
```shell
python -m unittest tests/*.py -v
```
6. Run the bash script `autogen.sh` to test.
```shell
./autogen.sh
```
7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.

@ -4,7 +4,7 @@
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)
[![pypi version](https://badge.fury.io/py/diagrams.svg)](https://badge.fury.io/py/diagrams) [![pypi version](https://badge.fury.io/py/diagrams.svg)](https://badge.fury.io/py/diagrams)
![python version](https://img.shields.io/badge/python-3.6%2C3.7%2C3.8-blue?logo=python) ![python version](https://img.shields.io/badge/python-%3E%3D%203.6-blue?logo=python)
![Run tests](https://github.com/mingrammer/diagrams/workflows/Run%20tests/badge.svg?branch=master) ![Run tests](https://github.com/mingrammer/diagrams/workflows/Run%20tests/badge.svg?branch=master)
[![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) [![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)
![contributors](https://img.shields.io/github/contributors/mingrammer/diagrams) ![contributors](https://img.shields.io/github/contributors/mingrammer/diagrams)
@ -13,7 +13,7 @@
**Diagram as Code**. **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. **Diagram as Code** also allows you to **track** the architecture diagram changes in any **version control** system.
@ -24,21 +24,24 @@ Diagrams lets you draw the cloud system architecture **in Python code**. It was
![aws provider](https://img.shields.io/badge/AWS-orange?logo=amazon-aws&color=ff9900) ![aws provider](https://img.shields.io/badge/AWS-orange?logo=amazon-aws&color=ff9900)
![azure provider](https://img.shields.io/badge/Azure-orange?logo=microsoft-azure&color=0089d6) ![azure provider](https://img.shields.io/badge/Azure-orange?logo=microsoft-azure&color=0089d6)
![gcp provider](https://img.shields.io/badge/GCP-orange?logo=google-cloud&color=4285f4) ![gcp provider](https://img.shields.io/badge/GCP-orange?logo=google-cloud&color=4285f4)
![ibm provider](https://img.shields.io/badge/IBM-orange?logo=ibm&color=052FAD)
![kubernetes provider](https://img.shields.io/badge/Kubernetes-orange?logo=kubernetes&color=326ce5) ![kubernetes provider](https://img.shields.io/badge/Kubernetes-orange?logo=kubernetes&color=326ce5)
![alibaba cloud provider](https://img.shields.io/badge/AlibabaCloud-orange) ![alibaba cloud provider](https://img.shields.io/badge/AlibabaCloud-orange?logo=alibaba-cloud&color=ff6a00)
![oracle cloud provider](https://img.shields.io/badge/OracleCloud-orange?logo=oracle&color=f80000) ![oracle cloud provider](https://img.shields.io/badge/OracleCloud-orange?logo=oracle&color=f80000)
![openstack provider](https://img.shields.io/badge/OpenStack-orange?logo=openstack&color=da1a32) ![openstack provider](https://img.shields.io/badge/OpenStack-orange?logo=openstack&color=da1a32)
![firebase provider](https://img.shields.io/badge/Firebase-orange?logo=firebase&color=FFCA28) ![firebase provider](https://img.shields.io/badge/Firebase-orange?logo=firebase&color=FFCA28)
![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) ![elastic provider](https://img.shields.io/badge/Elastic-orange?logo=elastic&color=005571)
![outscale provider](https://img.shields.io/badge/OutScale-orange?color=5f87bf) ![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) ![generic provider](https://img.shields.io/badge/Generic-orange?color=5f87bf)
![programming provider](https://img.shields.io/badge/Programming-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) ![saas provider](https://img.shields.io/badge/SaaS-orange?color=5f87bf)
![c4 provider](https://img.shields.io/badge/C4-orange?color=5f87bf)
## Getting Started ## Getting Started
It requires **Python 3.6** or higher, check your Python version first. It 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**. 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**.
@ -61,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 | 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. You can find all the examples on the [examples](https://diagrams.mingrammer.com/docs/getting-started/examples) page.
@ -73,15 +76,15 @@ To contribute to diagram, check out [contribution guidelines](CONTRIBUTING.md).
## Who uses it? ## Who uses it?
[GitPitch](https://gitpitch.github.io/gitpitch) is the perfect slide deck solution for Tech Conferences, Training, Developer Advocates, and Educators. Diagrams is now available as a dedicated [Cloud Diagram Markdown Widget](https://docs.gitpitch.com/#/diagrams/cloud-architecture) so you can use Diagrams directly on any slide for conferences, meetups, and training. [Apache Airflow](https://github.com/apache/airflow) is the most popular data workflow Orchestrator. Airflow uses Diagrams to generate architecture diagrams in their documentation.
[Cloudiscovery](https://github.com/Cloud-Architects/cloudiscovery) helps you to analyze resources in your cloud (AWS/GCP/Azure/Alibaba/IBM) account. It allows you to create a diagram of analyzed cloud resource map based on this Diagrams library, so you can draw the your existing cloud infrastructure with Cloudicovery. [Cloudiscovery](https://github.com/Cloud-Architects/cloudiscovery) helps you to analyze resources in your cloud (AWS/GCP/Azure/Alibaba/IBM) account. It allows you to create a diagram of analyzed cloud resource map based on this Diagrams library, so you can draw your existing cloud infrastructure with Cloudiscovery.
[Airflow Diagrams](https://github.com/feluelle/airflow-diagrams) is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams. [Airflow Diagrams](https://github.com/feluelle/airflow-diagrams) is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams.
## Other languages ## Other languages
- If you are familiar to Go, you can use [go-diagrams](https://github.com/blushft/go-diagrams) as well. - If you are familiar with Go, you can use [go-diagrams](https://github.com/blushft/go-diagrams) as well.
## License ## License

@ -1,10 +1,26 @@
#!/bin/bash #!/bin/bash
set -e
app_root_dir="diagrams" app_root_dir="diagrams"
# NOTE: azure icon set is not latest version # NOTE: azure icon set is not latest version
providers=("onprem" "aws" "azure" "gcp" "firebase" "k8s" "alibabacloud" "oci" "programming" "saas" "elastic" "generic" "openstack" "outscale" ) providers=(
"onprem"
"aws"
"azure"
"digitalocean"
"gcp"
"ibm"
"firebase"
"k8s"
"alibabacloud"
"oci"
"programming"
"saas"
"elastic"
"generic"
"openstack"
"outscale"
)
if ! [ -x "$(command -v round)" ]; then if ! [ -x "$(command -v round)" ]; then
echo 'round is not installed' echo 'round is not installed'
@ -33,7 +49,7 @@ for pvd in "${providers[@]}"; do
echo "converting the svg to png using inkscape for provider '$pvd'" echo "converting the svg to png using inkscape for provider '$pvd'"
python -m scripts.resource svg2png "$pvd" python -m scripts.resource svg2png "$pvd"
fi fi
if [ "$pvd" == "oci" ]; then if [ "$pvd" == "oci" ] || [ "$pvd" = "ibm" ]; then
echo "converting the svg to png using image magick for provider '$pvd'" echo "converting the svg to png using image magick for provider '$pvd'"
python -m scripts.resource svg2png2 "$pvd" python -m scripts.resource svg2png2 "$pvd"
fi fi
@ -56,6 +72,10 @@ done
echo "generating the docs for custom" echo "generating the docs for custom"
python -m scripts.generate "custom" python -m scripts.generate "custom"
# copy icons across to website
echo "copying icons to website static folder"
cp -r resources website/static/img/
# run black # run black
echo "linting the all the diagram modules" echo "linting the all the diagram modules"
black "$app_root_dir"/**/*.py black "$app_root_dir"/**/*.py

@ -12,8 +12,24 @@ DIR_RESOURCE = "resources"
DIR_TEMPLATE = "templates" DIR_TEMPLATE = "templates"
PROVIDERS = ( PROVIDERS = (
"base", "onprem", "aws", "azure", "gcp", "firebase", "k8s", "alibabacloud", "oci", "programming", "saas", "elastic", "base",
"generic", "openstack", "outscale") "onprem",
"aws",
"azure",
"digitalocean",
"gcp",
"ibm",
"firebase",
"k8s",
"alibabacloud",
"oci",
"programming",
"saas",
"elastic",
"generic",
"openstack",
"outscale",
)
######################### #########################
# Resource Processing # # Resource Processing #
@ -30,8 +46,10 @@ FILE_PREFIXES = {
"onprem": (), "onprem": (),
"aws": ("Amazon-", "AWS-"), "aws": ("Amazon-", "AWS-"),
"azure": ("Azure-",), "azure": ("Azure-",),
"digitalocean": (),
"gcp": ("Cloud-",), "gcp": ("Cloud-",),
"firebase": ("Cloud-",), "firebase": ("Cloud-",),
"ibm": (),
"k8s": (), "k8s": (),
"alibabacloud": (), "alibabacloud": (),
"oci": ("OCI-icon-",), "oci": ("OCI-icon-",),
@ -57,7 +75,7 @@ TMPL_MODULE = "module.tmpl"
UPPER_WORDS = { UPPER_WORDS = {
"aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk"), "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk"),
"azure": ("ad", "b2c", "ai", "api", "cdn", "ddos", "dns", "fxt", "hana", "hd", "id", "sap", "sql", "vm"), "azure": ("ad", "b2c", "ai", "api", "cdn", "ddos", "dns", "fxt", "hana", "hd", "id", "sap", "sql", "vm", "vpn", "vpc"),
"gcp": ("gcp", "ai", "api", "cdn", "dns", "gke", "gpu", "iap", "ml", "nat", "os", "sdk", "sql", "tpu", "vpn"), "gcp": ("gcp", "ai", "api", "cdn", "dns", "gke", "gpu", "iap", "ml", "nat", "os", "sdk", "sql", "tpu", "vpn"),
"firebase": ("ab", "fcm", "ml"), "firebase": ("ab", "fcm", "ml"),
"k8s": ( "k8s": (
@ -65,11 +83,12 @@ UPPER_WORDS = {
"sa", "sc", "sts", "svc", "sa", "sc", "sts", "svc",
), ),
"oci": ("oci", "ocid", "oke", "ocir", "ddos", "waf", "bm", "vm", "cdn", "vpn", "dns", "nat", "dms", "api", "id"), "oci": ("oci", "ocid", "oke", "ocir", "ddos", "waf", "bm", "vm", "cdn", "vpn", "dns", "nat", "dms", "api", "id"),
"elastic": ("apm", "siem", "ece", "eck"), "elastic": ("apm", "siem", "ece", "eck", "sql"),
"generic": ("vpn", "ios", "xen", "sql", "lxc"), "generic": ("vpn", "ios", "xen", "sql", "lxc"),
"outscale": ("osc",), "outscale": ("osc",),
"openstack": ("rpm", "loci", "nfv", "ec2api"), "openstack": ("rpm", "loci", "nfv", "ec2api"),
"pve": ("pve"), "pve": ("pve"),
"ibm": ("ibm"),
} }
TITLE_WORDS = { TITLE_WORDS = {
@ -82,9 +101,15 @@ TITLE_WORDS = {
"aws": { "aws": {
"cloudfront": "CloudFront" "cloudfront": "CloudFront"
}, },
"digitalocean": {
"digitalocean": "DigitalOcean"
},
"openstack": { "openstack": {
"openstack": "OpenStack" "openstack": "OpenStack"
}, },
"ibm": {
"ibm": "IBMCloud"
},
} }
# TODO: check if the classname exists # TODO: check if the classname exists
@ -139,6 +164,7 @@ ALIASES = {
}, },
"queue": { "queue": {
"Activemq": "ActiveMQ", "Activemq": "ActiveMQ",
"Emqx": "EMQX",
"Rabbitmq": "RabbitMQ", "Rabbitmq": "RabbitMQ",
"Zeromq": "ZeroMQ", "Zeromq": "ZeroMQ",
}, },
@ -220,6 +246,9 @@ ALIASES = {
"ElbClassicLoadBalancer": "CLB", "ElbClassicLoadBalancer": "CLB",
"ElbNetworkLoadBalancer": "NLB", "ElbNetworkLoadBalancer": "NLB",
"GlobalAccelerator": "GAX", "GlobalAccelerator": "GAX",
"InternetGateway": "IGW",
"TransitGateway": "TGW",
"TransitGatewayAttachment": "TGWAttach",
}, },
"security": { "security": {
"CertificateManager": "ACM", "CertificateManager": "ACM",
@ -381,6 +410,7 @@ ALIASES = {
"ObjectTableStore": "OTS", "ObjectTableStore": "OTS",
} }
}, },
"digitalocean": {},
"oci": { "oci": {
"compute": { "compute": {
"VM": "VirtualMachine", "VM": "VirtualMachine",
@ -401,7 +431,10 @@ ALIASES = {
}, },
"programming": { "programming": {
"framework": { "framework": {
"Fastapi": "FastAPI" "Fastapi": "FastAPI",
"Graphql": "GraphQL",
"Dotnet": "DotNet",
"Nextjs": "NextJs"
}, },
"language": { "language": {
"Javascript": "JavaScript", "Javascript": "JavaScript",
@ -418,12 +451,15 @@ ALIASES = {
}, },
"elastic": { "elastic": {
"elasticsearch": { "elasticsearch": {
"Elasticsearch": "ElasticSearch",
"Logstash": "LogStash", "Logstash": "LogStash",
"MachineLearning": "ML",
} }
}, },
"outscale": { "outscale": {
"Osc": "OSC", "Osc": "OSC",
}, },
"ibm": {},
"generic": {}, "generic": {},
"openstack": { "openstack": {
"user": { "user": {

@ -2,7 +2,7 @@ import contextvars
import os import os
import uuid import uuid
from pathlib import Path from pathlib import Path
from typing import List, Union, Dict from typing import Dict, List, Optional, Union
from graphviz import Digraph from graphviz import Digraph
@ -15,32 +15,32 @@ __diagram = contextvars.ContextVar("diagrams")
__cluster = contextvars.ContextVar("cluster") __cluster = contextvars.ContextVar("cluster")
def getdiagram(): def getdiagram() -> "Diagram":
try: try:
return __diagram.get() return __diagram.get()
except LookupError: except LookupError:
return None return None
def setdiagram(diagram): def setdiagram(diagram: "Diagram"):
__diagram.set(diagram) __diagram.set(diagram)
def getcluster(): def getcluster() -> "Cluster":
try: try:
return __cluster.get() return __cluster.get()
except LookupError: except LookupError:
return None return None
def setcluster(cluster): def setcluster(cluster: "Cluster"):
__cluster.set(cluster) __cluster.set(cluster)
class Diagram: class Diagram:
__directions = ("TB", "BT", "LR", "RL") __directions = ("TB", "BT", "LR", "RL")
__curvestyles = ("ortho", "curved") __curvestyles = ("ortho", "curved")
__outformats = ("png", "jpg", "svg", "pdf") __outformats = ("png", "jpg", "svg", "pdf", "dot")
# fmt: off # fmt: off
_default_graph_attrs = { _default_graph_attrs = {
@ -82,11 +82,13 @@ class Diagram:
filename: str = "", filename: str = "",
direction: str = "LR", direction: str = "LR",
curvestyle: str = "ortho", curvestyle: str = "ortho",
outformat: str = "png", outformat: Union[str, list[str]] = "png",
autolabel: bool = False,
show: bool = True, show: bool = True,
graph_attr: dict = {}, strict: bool = False,
node_attr: dict = {}, graph_attr: Optional[dict] = None,
edge_attr: dict = {}, node_attr: Optional[dict] = None,
edge_attr: Optional[dict] = None,
): ):
"""Diagram represents a global diagrams context. """Diagram represents a global diagrams context.
@ -101,14 +103,21 @@ class Diagram:
:param graph_attr: Provide graph_attr dot config attributes. :param graph_attr: Provide graph_attr dot config attributes.
:param node_attr: Provide node_attr dot config attributes. :param node_attr: Provide node_attr dot config attributes.
:param edge_attr: Provide edge_attr dot config attributes. :param edge_attr: Provide edge_attr dot config attributes.
:param strict: Rendering should merge multi-edges.
""" """
if graph_attr is None:
graph_attr = {}
if node_attr is None:
node_attr = {}
if edge_attr is None:
edge_attr = {}
self.name = name self.name = name
if not name and not filename: if not name and not filename:
filename = "diagrams_image" filename = "diagrams_image"
elif not filename: elif not filename:
filename = "_".join(self.name.split()).lower() filename = "_".join(self.name.split()).lower()
self.filename = filename self.filename = filename
self.dot = Digraph(self.name, filename=self.filename) self.dot = Digraph(self.name, filename=self.filename, strict=strict)
# Set attributes. # Set attributes.
for k, v in self._default_graph_attrs.items(): for k, v in self._default_graph_attrs.items():
@ -127,8 +136,13 @@ class Diagram:
raise ValueError(f'"{curvestyle}" is not a valid curvestyle') raise ValueError(f'"{curvestyle}" is not a valid curvestyle')
self.dot.graph_attr["splines"] = curvestyle self.dot.graph_attr["splines"] = curvestyle
if not self._validate_outformat(outformat): if isinstance(outformat, list):
raise ValueError(f'"{outformat}" is not a valid output format') for one_format in outformat:
if not self._validate_outformat(one_format):
raise ValueError(f'"{one_format}" is not a valid output format')
else:
if not self._validate_outformat(outformat):
raise ValueError(f'"{outformat}" is not a valid output format')
self.outformat = outformat self.outformat = outformat
# Merge passed in attributes # Merge passed in attributes
@ -137,6 +151,7 @@ class Diagram:
self.dot.edge_attr.update(edge_attr) self.dot.edge_attr.update(edge_attr)
self.show = show self.show = show
self.autolabel = autolabel
def __str__(self) -> str: def __str__(self) -> str:
return str(self.dot) return str(self.dot)
@ -155,25 +170,13 @@ class Diagram:
return self.dot.pipe(format="png") return self.dot.pipe(format="png")
def _validate_direction(self, direction: str) -> bool: def _validate_direction(self, direction: str) -> bool:
direction = direction.upper() return direction.upper() in self.__directions
for v in self.__directions:
if v == direction:
return True
return False
def _validate_curvestyle(self, curvestyle: str) -> bool: def _validate_curvestyle(self, curvestyle: str) -> bool:
curvestyle = curvestyle.lower() return curvestyle.lower() in self.__curvestyles
for v in self.__curvestyles:
if v == curvestyle:
return True
return False
def _validate_outformat(self, outformat: str) -> bool: def _validate_outformat(self, outformat: str) -> bool:
outformat = outformat.lower() return outformat.lower() in self.__outformats
for v in self.__outformats:
if v == outformat:
return True
return False
def node(self, nodeid: str, label: str, **attrs) -> None: def node(self, nodeid: str, label: str, **attrs) -> None:
"""Create a new node.""" """Create a new node."""
@ -188,7 +191,11 @@ class Diagram:
self.dot.subgraph(dot) self.dot.subgraph(dot)
def render(self) -> None: def render(self) -> None:
self.dot.render(format=self.outformat, view=self.show, quiet=True) if isinstance(self.outformat, list):
for one_format in self.outformat:
self.dot.render(format=one_format, view=self.show, quiet=True)
else:
self.dot.render(format=self.outformat, view=self.show, quiet=True)
class Cluster: class Cluster:
@ -214,7 +221,7 @@ class Cluster:
self, self,
label: str = "cluster", label: str = "cluster",
direction: str = "LR", direction: str = "LR",
graph_attr: dict = {}, graph_attr: Optional[dict] = None,
): ):
"""Cluster represents a cluster context. """Cluster represents a cluster context.
@ -222,6 +229,8 @@ class Cluster:
:param direction: Data flow direction. Default is 'left to right'. :param direction: Data flow direction. Default is 'left to right'.
:param graph_attr: Provide graph_attr dot config attributes. :param graph_attr: Provide graph_attr dot config attributes.
""" """
if graph_attr is None:
graph_attr = {}
self.label = label self.label = label
self.name = "cluster_" + self.label self.name = "cluster_" + self.label
@ -261,12 +270,8 @@ class Cluster:
self._diagram.subgraph(self.dot) self._diagram.subgraph(self.dot)
setcluster(self._parent) setcluster(self._parent)
def _validate_direction(self, direction: str): def _validate_direction(self, direction: str) -> bool:
direction = direction.upper() return direction.upper() in self.__directions
for v in self.__directions:
if v == direction:
return True
return False
def node(self, nodeid: str, label: str, **attrs) -> None: def node(self, nodeid: str, label: str, **attrs) -> None:
"""Create a new node in the cluster.""" """Create a new node in the cluster."""
@ -287,20 +292,32 @@ class Node:
_height = 1.9 _height = 1.9
def __init__(self, label: str = "", **attrs: Dict): def __init__(self, label: str = "", *, nodeid: str = None, **attrs: Dict):
"""Node represents a system component. """Node represents a system component.
:param label: Node label. :param label: Node label.
""" """
# Generates an ID for identifying a node. # Generates an ID for identifying a node, unless specified
self._id = self._rand_id() self._id = nodeid or self._rand_id()
self.label = label self.label = label
# Node must be belong to a diagrams.
self._diagram = getdiagram()
if self._diagram is None:
raise EnvironmentError("Global diagrams context not set up")
if self._diagram.autolabel:
prefix = self.__class__.__name__
if self.label:
self.label = prefix + "\n" + self.label
else:
self.label = prefix
# fmt: off # fmt: off
# If a node has an icon, increase the height slightly to avoid # If a node has an icon, increase the height slightly to avoid
# that label being spanned between icon image and white space. # that label being spanned between icon image and white space.
# Increase the height by the number of new lines included in the label. # Increase the height by the number of new lines included in the label.
padding = 0.4 * (label.count('\n')) padding = 0.4 * (self.label.count('\n'))
self._attrs = { self._attrs = {
"shape": "none", "shape": "none",
"height": str(self._height + padding), "height": str(self._height + padding),
@ -310,10 +327,6 @@ class Node:
# fmt: on # fmt: on
self._attrs.update(attrs) self._attrs.update(attrs)
# Node must be belong to a diagrams.
self._diagram = getdiagram()
if self._diagram is None:
raise EnvironmentError("Global diagrams context not set up")
self._cluster = getcluster() self._cluster = getcluster()
# If a node is in the cluster context, add it to cluster. # If a node is in the cluster context, add it to cluster.
@ -339,7 +352,7 @@ class Node:
return other return other
def __rsub__(self, other: Union[List["Node"], List["Edge"]]): def __rsub__(self, other: Union[List["Node"], List["Edge"]]):
""" Called for [Nodes] and [Edges] - Self because list don't have __sub__ operators. """ """Called for [Nodes] and [Edges] - Self because list don't have __sub__ operators."""
for o in other: for o in other:
if isinstance(o, Edge): if isinstance(o, Edge):
o.connect(self) o.connect(self)

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

@ -8,6 +8,10 @@ class _Compute(_AWS):
_icon_dir = "resources/aws/compute" _icon_dir = "resources/aws/compute"
class AppRunner(_Compute):
_icon = "app-runner.png"
class ApplicationAutoScaling(_Compute): class ApplicationAutoScaling(_Compute):
_icon = "application-auto-scaling.png" _icon = "application-auto-scaling.png"

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

@ -8,10 +8,30 @@ class _Management(_AWS):
_icon_dir = "resources/aws/management" _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): class AutoScaling(_Management):
_icon = "auto-scaling.png" _icon = "auto-scaling.png"
class Chatbot(_Management):
_icon = "chatbot.png"
class CloudformationChangeSet(_Management): class CloudformationChangeSet(_Management):
_icon = "cloudformation-change-set.png" _icon = "cloudformation-change-set.png"
@ -136,10 +156,18 @@ class PersonalHealthDashboard(_Management):
_icon = "personal-health-dashboard.png" _icon = "personal-health-dashboard.png"
class Proton(_Management):
_icon = "proton.png"
class ServiceCatalog(_Management): class ServiceCatalog(_Management):
_icon = "service-catalog.png" _icon = "service-catalog.png"
class SystemsManagerAppConfig(_Management):
_icon = "systems-manager-app-config.png"
class SystemsManagerAutomation(_Management): class SystemsManagerAutomation(_Management):
_icon = "systems-manager-automation.png" _icon = "systems-manager-automation.png"

@ -84,6 +84,10 @@ class NATGateway(_Network):
_icon = "nat-gateway.png" _icon = "nat-gateway.png"
class NetworkFirewall(_Network):
_icon = "network-firewall.png"
class NetworkingAndContentDelivery(_Network): class NetworkingAndContentDelivery(_Network):
_icon = "networking-and-content-delivery.png" _icon = "networking-and-content-delivery.png"
@ -116,6 +120,10 @@ class SiteToSiteVpn(_Network):
_icon = "site-to-site-vpn.png" _icon = "site-to-site-vpn.png"
class TransitGatewayAttachment(_Network):
_icon = "transit-gateway-attachment.png"
class TransitGateway(_Network): class TransitGateway(_Network):
_icon = "transit-gateway.png" _icon = "transit-gateway.png"
@ -168,3 +176,6 @@ ALB = ElbApplicationLoadBalancer
CLB = ElbClassicLoadBalancer CLB = ElbClassicLoadBalancer
NLB = ElbNetworkLoadBalancer NLB = ElbNetworkLoadBalancer
GAX = GlobalAccelerator GAX = GlobalAccelerator
IGW = InternetGateway
TGW = TransitGateway
TGWAttach = TransitGatewayAttachment

@ -52,4 +52,8 @@ class StreamAnalyticsJobs(_Analytics):
_icon = "stream-analytics-jobs.png" _icon = "stream-analytics-jobs.png"
class SynapseAnalytics(_Analytics):
_icon = "synapse-analytics.png"
# Aliases # Aliases

@ -8,6 +8,14 @@ class _Compute(_Azure):
_icon_dir = "resources/azure/compute" _icon_dir = "resources/azure/compute"
class AppServices(_Compute):
_icon = "app-services.png"
class AutomanagedVM(_Compute):
_icon = "automanaged-vm.png"
class AvailabilitySets(_Compute): class AvailabilitySets(_Compute):
_icon = "availability-sets.png" _icon = "availability-sets.png"
@ -32,6 +40,10 @@ class CloudsimpleVirtualMachines(_Compute):
_icon = "cloudsimple-virtual-machines.png" _icon = "cloudsimple-virtual-machines.png"
class ContainerApps(_Compute):
_icon = "container-apps.png"
class ContainerInstances(_Compute): class ContainerInstances(_Compute):
_icon = "container-instances.png" _icon = "container-instances.png"
@ -40,6 +52,10 @@ class ContainerRegistries(_Compute):
_icon = "container-registries.png" _icon = "container-registries.png"
class DiskEncryptionSets(_Compute):
_icon = "disk-encryption-sets.png"
class DiskSnapshots(_Compute): class DiskSnapshots(_Compute):
_icon = "disk-snapshots.png" _icon = "disk-snapshots.png"
@ -52,6 +68,14 @@ class FunctionApps(_Compute):
_icon = "function-apps.png" _icon = "function-apps.png"
class ImageDefinitions(_Compute):
_icon = "image-definitions.png"
class ImageVersions(_Compute):
_icon = "image-versions.png"
class KubernetesServices(_Compute): class KubernetesServices(_Compute):
_icon = "kubernetes-services.png" _icon = "kubernetes-services.png"
@ -60,6 +84,10 @@ class MeshApplications(_Compute):
_icon = "mesh-applications.png" _icon = "mesh-applications.png"
class OsImages(_Compute):
_icon = "os-images.png"
class SAPHANAOnAzure(_Compute): class SAPHANAOnAzure(_Compute):
_icon = "sap-hana-on-azure.png" _icon = "sap-hana-on-azure.png"
@ -68,6 +96,14 @@ class ServiceFabricClusters(_Compute):
_icon = "service-fabric-clusters.png" _icon = "service-fabric-clusters.png"
class SharedImageGalleries(_Compute):
_icon = "shared-image-galleries.png"
class SpringCloud(_Compute):
_icon = "spring-cloud.png"
class VMClassic(_Compute): class VMClassic(_Compute):
_icon = "vm-classic.png" _icon = "vm-classic.png"
@ -92,6 +128,10 @@ class VM(_Compute):
_icon = "vm.png" _icon = "vm.png"
class Workspaces(_Compute):
_icon = "workspaces.png"
# Aliases # Aliases
ACR = ContainerRegistries ACR = ContainerRegistries

@ -20,6 +20,14 @@ class CosmosDb(_Database):
_icon = "cosmos-db.png" _icon = "cosmos-db.png"
class DataExplorerClusters(_Database):
_icon = "data-explorer-clusters.png"
class DataFactory(_Database):
_icon = "data-factory.png"
class DataLake(_Database): class DataLake(_Database):
_icon = "data-lake.png" _icon = "data-lake.png"
@ -44,6 +52,10 @@ class ElasticJobAgents(_Database):
_icon = "elastic-job-agents.png" _icon = "elastic-job-agents.png"
class InstancePools(_Database):
_icon = "instance-pools.png"
class ManagedDatabases(_Database): class ManagedDatabases(_Database):
_icon = "managed-databases.png" _icon = "managed-databases.png"
@ -68,6 +80,22 @@ class SQLServers(_Database):
_icon = "sql-servers.png" _icon = "sql-servers.png"
class SQLVM(_Database):
_icon = "sql-vm.png"
class SQL(_Database):
_icon = "sql.png"
class SsisLiftAndShiftIr(_Database):
_icon = "ssis-lift-and-shift-ir.png"
class SynapseAnalytics(_Database):
_icon = "synapse-analytics.png"
class VirtualClusters(_Database): class VirtualClusters(_Database):
_icon = "virtual-clusters.png" _icon = "virtual-clusters.png"

@ -28,6 +28,10 @@ class DevtestLabs(_Devops):
_icon = "devtest-labs.png" _icon = "devtest-labs.png"
class LabServices(_Devops):
_icon = "lab-services.png"
class Pipelines(_Devops): class Pipelines(_Devops):
_icon = "pipelines.png" _icon = "pipelines.png"

@ -48,6 +48,10 @@ class EnterpriseApplications(_Identity):
_icon = "enterprise-applications.png" _icon = "enterprise-applications.png"
class Groups(_Identity):
_icon = "groups.png"
class IdentityGovernance(_Identity): class IdentityGovernance(_Identity):
_icon = "identity-governance.png" _icon = "identity-governance.png"
@ -60,4 +64,8 @@ class ManagedIdentities(_Identity):
_icon = "managed-identities.png" _icon = "managed-identities.png"
class Users(_Identity):
_icon = "users.png"
# Aliases # Aliases

@ -52,6 +52,10 @@ class LogicApps(_Integration):
_icon = "logic-apps.png" _icon = "logic-apps.png"
class PartnerTopic(_Integration):
_icon = "partner-topic.png"
class SendgridAccounts(_Integration): class SendgridAccounts(_Integration):
_icon = "sendgrid-accounts.png" _icon = "sendgrid-accounts.png"
@ -76,4 +80,8 @@ class StorsimpleDeviceManagers(_Integration):
_icon = "storsimple-device-managers.png" _icon = "storsimple-device-managers.png"
class SystemTopic(_Integration):
_icon = "system-topic.png"
# Aliases # Aliases

@ -8,6 +8,14 @@ class _Migration(_Azure):
_icon_dir = "resources/azure/migration" _icon_dir = "resources/azure/migration"
class DataBoxEdge(_Migration):
_icon = "data-box-edge.png"
class DataBox(_Migration):
_icon = "data-box.png"
class DatabaseMigrationServices(_Migration): class DatabaseMigrationServices(_Migration):
_icon = "database-migration-services.png" _icon = "database-migration-services.png"

@ -8,6 +8,14 @@ class _Ml(_Azure):
_icon_dir = "resources/azure/ml" _icon_dir = "resources/azure/ml"
class AzureOpenAI(_Ml):
_icon = "azure-open-ai.png"
class AzureSpeedToText(_Ml):
_icon = "azure-speed-to-text.png"
class BatchAI(_Ml): class BatchAI(_Ml):
_icon = "batch-ai.png" _icon = "batch-ai.png"

@ -9,7 +9,7 @@ class _Mobile(_Azure):
class AppServiceMobile(_Mobile): class AppServiceMobile(_Mobile):
_icon = "app-service---mobile.png" _icon = "app-service-mobile.png"
class MobileEngagement(_Mobile): class MobileEngagement(_Mobile):

@ -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

@ -72,6 +72,10 @@ class OnPremisesDataGateways(_Network):
_icon = "on-premises-data-gateways.png" _icon = "on-premises-data-gateways.png"
class PrivateEndpoint(_Network):
_icon = "private-endpoint.png"
class PublicIpAddresses(_Network): class PublicIpAddresses(_Network):
_icon = "public-ip-addresses.png" _icon = "public-ip-addresses.png"

@ -8,6 +8,22 @@ class _Security(_Azure):
_icon_dir = "resources/azure/security" _icon_dir = "resources/azure/security"
class ApplicationSecurityGroups(_Security):
_icon = "application-security-groups.png"
class ConditionalAccess(_Security):
_icon = "conditional-access.png"
class Defender(_Security):
_icon = "defender.png"
class ExtendedSecurityUpdates(_Security):
_icon = "extended-security-updates.png"
class KeyVaults(_Security): class KeyVaults(_Security):
_icon = "key-vaults.png" _icon = "key-vaults.png"

@ -21,7 +21,7 @@ class BlobStorage(_Storage):
class DataBoxEdgeDataBoxGateway(_Storage): class DataBoxEdgeDataBoxGateway(_Storage):
_icon = "data-box-edge---data-box-gateway.png" _icon = "data-box-edge-data-box-gateway.png"
class DataBox(_Storage): class DataBox(_Storage):

@ -0,0 +1,126 @@
"""
A set of nodes and edges to visualize software architecture using the C4 model.
"""
import html
import textwrap
from diagrams import Cluster, Node, Edge
def _format_node_label(name, key, description):
"""Create a graphviz label string for a C4 node"""
title = f'<font point-size="12"><b>{html.escape(name)}</b></font><br/>'
subtitle = f'<font point-size="9">[{html.escape(key)}]<br/></font>' if key else ""
text = f'<br/><font point-size="10">{_format_description(description)}</font>' if description else ""
return f"<{title}{subtitle}{text}>"
def _format_description(description):
"""
Formats the description string so it fits into the C4 nodes.
It line-breaks the description so it fits onto exactly three lines. If there are more
than three lines, all further lines are discarded and "..." inserted on the last line to
indicate that it was shortened. This will also html-escape the description so it can
safely be included in a HTML label.
"""
wrapper = textwrap.TextWrapper(width=40, max_lines=3)
lines = [html.escape(line) for line in wrapper.wrap(description)]
lines += [""] * (3 - len(lines)) # fill up with empty lines so it is always three
return "<br/>".join(lines)
def _format_edge_label(description):
"""Create a graphviz label string for a C4 edge"""
wrapper = textwrap.TextWrapper(width=24, max_lines=3)
lines = [html.escape(line) for line in wrapper.wrap(description)]
text = "<br/>".join(lines)
return f'<<font point-size="10">{text}</font>>'
def C4Node(name, technology="", description="", type="Container", **kwargs):
key = f"{type}: {technology}" if technology else type
node_attributes = {
"label": _format_node_label(name, key, description),
"labelloc": "c",
"shape": "rect",
"width": "2.6",
"height": "1.6",
"fixedsize": "true",
"style": "filled",
"fillcolor": "dodgerblue3",
"fontcolor": "white",
}
# collapse boxes to a smaller form if they don't have a description
if not description:
node_attributes.update({"width": "2", "height": "1"})
node_attributes.update(kwargs)
return Node(**node_attributes)
def Container(name, technology="", description="", **kwargs):
container_attributes = {
"name": name,
"technology": technology,
"description": description,
"type": "Container",
}
container_attributes.update(kwargs)
return C4Node(**container_attributes)
def Database(name, technology="", description="", **kwargs):
database_attributes = {
"name": name,
"technology": technology,
"description": description,
"type": "Database",
"shape": "cylinder",
"labelloc": "b",
}
database_attributes.update(kwargs)
return C4Node(**database_attributes)
def System(name, description="", external=False, **kwargs):
system_attributes = {
"name": name,
"description": description,
"type": "External System" if external else "System",
"fillcolor": "gray60" if external else "dodgerblue4",
}
system_attributes.update(kwargs)
return C4Node(**system_attributes)
def Person(name, description="", external=False, **kwargs):
person_attributes = {
"name": name,
"description": description,
"type": "External Person" if external else "Person",
"fillcolor": "gray60" if external else "dodgerblue4",
"style": "rounded,filled",
}
person_attributes.update(kwargs)
return C4Node(**person_attributes)
def SystemBoundary(name, **kwargs):
graph_attributes = {
"label": html.escape(name),
"bgcolor": "white",
"margin": "16",
"style": "dashed",
}
graph_attributes.update(kwargs)
return Cluster(name, graph_attr=graph_attributes)
def Relationship(label="", **kwargs):
edge_attributes = {
"style": "dashed",
"color": "gray60",
"label": _format_edge_label(label) if label else "",
}
edge_attributes.update(kwargs)
return Edge(**edge_attributes)

@ -15,6 +15,6 @@ class Custom(Node):
def _load_icon(self): def _load_icon(self):
return self._icon return self._icon
def __init__(self, label, icon_path): def __init__(self, label, icon_path, *args, **kwargs):
self._icon = icon_path self._icon = icon_path
super().__init__(label) super().__init__(label, *args, **kwargs)

@ -0,0 +1,12 @@
"""
DigitalOcean provides a set of services for DigitalOcean provider.
"""
from diagrams import Node
class _DigitalOcean(Node):
_provider = "digitalocean"
_icon_dir = "resources/digitalocean"
fontcolor = "#ffffff"

@ -0,0 +1,43 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _DigitalOcean
class _Compute(_DigitalOcean):
_type = "compute"
_icon_dir = "resources/digitalocean/compute"
class Containers(_Compute):
_icon = "containers.png"
class Docker(_Compute):
_icon = "docker.png"
class DropletConnect(_Compute):
_icon = "droplet-connect.png"
class DropletSnapshot(_Compute):
_icon = "droplet-snapshot.png"
class Droplet(_Compute):
_icon = "droplet.png"
class K8SCluster(_Compute):
_icon = "k8s-cluster.png"
class K8SNodePool(_Compute):
_icon = "k8s-node-pool.png"
class K8SNode(_Compute):
_icon = "k8s-node.png"
# Aliases

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _DigitalOcean
class _Database(_DigitalOcean):
_type = "database"
_icon_dir = "resources/digitalocean/database"
class DbaasPrimaryStandbyMore(_Database):
_icon = "dbaas-primary-standby-more.png"
class DbaasPrimary(_Database):
_icon = "dbaas-primary.png"
class DbaasReadOnly(_Database):
_icon = "dbaas-read-only.png"
class DbaasStandby(_Database):
_icon = "dbaas-standby.png"
# Aliases

@ -0,0 +1,47 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _DigitalOcean
class _Network(_DigitalOcean):
_type = "network"
_icon_dir = "resources/digitalocean/network"
class Certificate(_Network):
_icon = "certificate.png"
class DomainRegistration(_Network):
_icon = "domain-registration.png"
class Domain(_Network):
_icon = "domain.png"
class Firewall(_Network):
_icon = "firewall.png"
class FloatingIp(_Network):
_icon = "floating-ip.png"
class InternetGateway(_Network):
_icon = "internet-gateway.png"
class LoadBalancer(_Network):
_icon = "load-balancer.png"
class ManagedVpn(_Network):
_icon = "managed-vpn.png"
class Vpc(_Network):
_icon = "vpc.png"
# Aliases

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _DigitalOcean
class _Storage(_DigitalOcean):
_type = "storage"
_icon_dir = "resources/digitalocean/storage"
class Folder(_Storage):
_icon = "folder.png"
class Space(_Storage):
_icon = "space.png"
class VolumeSnapshot(_Storage):
_icon = "volume-snapshot.png"
class Volume(_Storage):
_icon = "volume.png"
# Aliases

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Elastic
class _Agent(_Elastic):
_type = "agent"
_icon_dir = "resources/elastic/agent"
class Agent(_Agent):
_icon = "agent.png"
class Endpoint(_Agent):
_icon = "endpoint.png"
class Fleet(_Agent):
_icon = "fleet.png"
class Integrations(_Agent):
_icon = "integrations.png"
# Aliases

@ -0,0 +1,43 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Elastic
class _Beats(_Elastic):
_type = "beats"
_icon_dir = "resources/elastic/beats"
class APM(_Beats):
_icon = "apm.png"
class Auditbeat(_Beats):
_icon = "auditbeat.png"
class Filebeat(_Beats):
_icon = "filebeat.png"
class Functionbeat(_Beats):
_icon = "functionbeat.png"
class Heartbeat(_Beats):
_icon = "heartbeat.png"
class Metricbeat(_Beats):
_icon = "metricbeat.png"
class Packetbeat(_Beats):
_icon = "packetbeat.png"
class Winlogbeat(_Beats):
_icon = "winlogbeat.png"
# Aliases

@ -24,6 +24,10 @@ class Kibana(_Elasticsearch):
_icon = "kibana.png" _icon = "kibana.png"
class LogstashPipeline(_Elasticsearch):
_icon = "logstash-pipeline.png"
class Logstash(_Elasticsearch): class Logstash(_Elasticsearch):
_icon = "logstash.png" _icon = "logstash.png"
@ -32,6 +36,10 @@ class MachineLearning(_Elasticsearch):
_icon = "machine-learning.png" _icon = "machine-learning.png"
class MapServices(_Elasticsearch):
_icon = "map-services.png"
class Maps(_Elasticsearch): class Maps(_Elasticsearch):
_icon = "maps.png" _icon = "maps.png"
@ -40,14 +48,24 @@ class Monitoring(_Elasticsearch):
_icon = "monitoring.png" _icon = "monitoring.png"
class SearchableSnapshots(_Elasticsearch):
_icon = "searchable-snapshots.png"
class SecuritySettings(_Elasticsearch): class SecuritySettings(_Elasticsearch):
_icon = "security-settings.png" _icon = "security-settings.png"
class Sql(_Elasticsearch): class SQL(_Elasticsearch):
_icon = "sql.png" _icon = "sql.png"
class Stack(_Elasticsearch):
_icon = "stack.png"
# Aliases # Aliases
ElasticSearch = Elasticsearch
LogStash = Logstash LogStash = Logstash
ML = MachineLearning

@ -12,6 +12,10 @@ class AppSearch(_Enterprisesearch):
_icon = "app-search.png" _icon = "app-search.png"
class Crawler(_Enterprisesearch):
_icon = "crawler.png"
class EnterpriseSearch(_Enterprisesearch): class EnterpriseSearch(_Enterprisesearch):
_icon = "enterprise-search.png" _icon = "enterprise-search.png"

@ -20,4 +20,8 @@ class SIEM(_Security):
_icon = "siem.png" _icon = "siem.png"
class Xdr(_Security):
_icon = "xdr.png"
# Aliases # Aliases

@ -8,6 +8,14 @@ class _API(_GCP):
_icon_dir = "resources/gcp/api" _icon_dir = "resources/gcp/api"
class APIGateway(_API):
_icon = "api-gateway.png"
class Apigee(_API):
_icon = "apigee.png"
class Endpoints(_API): class Endpoints(_API):
_icon = "endpoints.png" _icon = "endpoints.png"

@ -8,6 +8,10 @@ class _Operations(_GCP):
_icon_dir = "resources/gcp/operations" _icon_dir = "resources/gcp/operations"
class Logging(_Operations):
_icon = "logging.png"
class Monitoring(_Operations): class Monitoring(_Operations):
_icon = "monitoring.png" _icon = "monitoring.png"

@ -16,6 +16,10 @@ class Centos(_Os):
_icon = "centos.png" _icon = "centos.png"
class Debian(_Os):
_icon = "debian.png"
class IOS(_Os): class IOS(_Os):
_icon = "ios.png" _icon = "ios.png"
@ -24,6 +28,14 @@ class LinuxGeneral(_Os):
_icon = "linux-general.png" _icon = "linux-general.png"
class Raspbian(_Os):
_icon = "raspbian.png"
class RedHat(_Os):
_icon = "red-hat.png"
class Suse(_Os): class Suse(_Os):
_icon = "suse.png" _icon = "suse.png"

@ -8,6 +8,10 @@ class _Virtualization(_Generic):
_icon_dir = "resources/generic/virtualization" _icon_dir = "resources/generic/virtualization"
class Qemu(_Virtualization):
_icon = "qemu.png"
class Virtualbox(_Virtualization): class Virtualbox(_Virtualization):
_icon = "virtualbox.png" _icon = "virtualbox.png"

@ -0,0 +1,12 @@
"""
IBM provides a set of services for IBM Cloud provider.
"""
from diagrams import Node
class _IBM(Node):
_provider = "ibm"
_icon_dir = "resources/ibm"
fontcolor = "#ffffff"

@ -0,0 +1,31 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Analytics(_IBM):
_type = "analytics"
_icon_dir = "resources/ibm/analytics"
class Analytics(_Analytics):
_icon = "analytics.png"
class DataIntegration(_Analytics):
_icon = "data-integration.png"
class DataRepositories(_Analytics):
_icon = "data-repositories.png"
class DeviceAnalytics(_Analytics):
_icon = "device-analytics.png"
class StreamingComputing(_Analytics):
_icon = "streaming-computing.png"
# Aliases

@ -0,0 +1,87 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Applications(_IBM):
_type = "applications"
_icon_dir = "resources/ibm/applications"
class ActionableInsight(_Applications):
_icon = "actionable-insight.png"
class Annotate(_Applications):
_icon = "annotate.png"
class ApiDeveloperPortal(_Applications):
_icon = "api-developer-portal.png"
class ApiPolyglotRuntimes(_Applications):
_icon = "api-polyglot-runtimes.png"
class AppServer(_Applications):
_icon = "app-server.png"
class ApplicationLogic(_Applications):
_icon = "application-logic.png"
class EnterpriseApplications(_Applications):
_icon = "enterprise-applications.png"
class Index(_Applications):
_icon = "index.png"
class IotApplication(_Applications):
_icon = "iot-application.png"
class Microservice(_Applications):
_icon = "microservice.png"
class MobileApp(_Applications):
_icon = "mobile-app.png"
class Ontology(_Applications):
_icon = "ontology.png"
class OpenSourceTools(_Applications):
_icon = "open-source-tools.png"
class RuntimeServices(_Applications):
_icon = "runtime-services.png"
class SaasApplications(_Applications):
_icon = "saas-applications.png"
class ServiceBroker(_Applications):
_icon = "service-broker.png"
class SpeechToText(_Applications):
_icon = "speech-to-text.png"
class VisualRecognition(_Applications):
_icon = "visual-recognition.png"
class Visualization(_Applications):
_icon = "visualization.png"
# Aliases

@ -0,0 +1,91 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Blockchain(_IBM):
_type = "blockchain"
_icon_dir = "resources/ibm/blockchain"
class BlockchainDeveloper(_Blockchain):
_icon = "blockchain-developer.png"
class Blockchain(_Blockchain):
_icon = "blockchain.png"
class CertificateAuthority(_Blockchain):
_icon = "certificate-authority.png"
class ClientApplication(_Blockchain):
_icon = "client-application.png"
class Communication(_Blockchain):
_icon = "communication.png"
class Consensus(_Blockchain):
_icon = "consensus.png"
class EventListener(_Blockchain):
_icon = "event-listener.png"
class Event(_Blockchain):
_icon = "event.png"
class ExistingEnterpriseSystems(_Blockchain):
_icon = "existing-enterprise-systems.png"
class HyperledgerFabric(_Blockchain):
_icon = "hyperledger-fabric.png"
class KeyManagement(_Blockchain):
_icon = "key-management.png"
class Ledger(_Blockchain):
_icon = "ledger.png"
class MembershipServicesProviderApi(_Blockchain):
_icon = "membership-services-provider-api.png"
class Membership(_Blockchain):
_icon = "membership.png"
class MessageBus(_Blockchain):
_icon = "message-bus.png"
class Node(_Blockchain):
_icon = "node.png"
class Services(_Blockchain):
_icon = "services.png"
class SmartContract(_Blockchain):
_icon = "smart-contract.png"
class TransactionManager(_Blockchain):
_icon = "transaction-manager.png"
class Wallet(_Blockchain):
_icon = "wallet.png"
# Aliases

@ -0,0 +1,31 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Compute(_IBM):
_type = "compute"
_icon_dir = "resources/ibm/compute"
class BareMetalServer(_Compute):
_icon = "bare-metal-server.png"
class ImageService(_Compute):
_icon = "image-service.png"
class Instance(_Compute):
_icon = "instance.png"
class Key(_Compute):
_icon = "key.png"
class PowerInstance(_Compute):
_icon = "power-instance.png"
# Aliases

@ -0,0 +1,63 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Data(_IBM):
_type = "data"
_icon_dir = "resources/ibm/data"
class Caches(_Data):
_icon = "caches.png"
class Cloud(_Data):
_icon = "cloud.png"
class ConversationTrainedDeployed(_Data):
_icon = "conversation-trained-deployed.png"
class DataServices(_Data):
_icon = "data-services.png"
class DataSources(_Data):
_icon = "data-sources.png"
class DeviceIdentityService(_Data):
_icon = "device-identity-service.png"
class DeviceRegistry(_Data):
_icon = "device-registry.png"
class EnterpriseData(_Data):
_icon = "enterprise-data.png"
class EnterpriseUserDirectory(_Data):
_icon = "enterprise-user-directory.png"
class FileRepository(_Data):
_icon = "file-repository.png"
class GroundTruth(_Data):
_icon = "ground-truth.png"
class Model(_Data):
_icon = "model.png"
class TmsDataInterface(_Data):
_icon = "tms-data-interface.png"
# Aliases

@ -0,0 +1,51 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Devops(_IBM):
_type = "devops"
_icon_dir = "resources/ibm/devops"
class ArtifactManagement(_Devops):
_icon = "artifact-management.png"
class BuildTest(_Devops):
_icon = "build-test.png"
class CodeEditor(_Devops):
_icon = "code-editor.png"
class CollaborativeDevelopment(_Devops):
_icon = "collaborative-development.png"
class ConfigurationManagement(_Devops):
_icon = "configuration-management.png"
class ContinuousDeploy(_Devops):
_icon = "continuous-deploy.png"
class ContinuousTesting(_Devops):
_icon = "continuous-testing.png"
class Devops(_Devops):
_icon = "devops.png"
class Provision(_Devops):
_icon = "provision.png"
class ReleaseManagement(_Devops):
_icon = "release-management.png"
# Aliases

@ -0,0 +1,119 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _General(_IBM):
_type = "general"
_icon_dir = "resources/ibm/general"
class CloudMessaging(_General):
_icon = "cloud-messaging.png"
class CloudServices(_General):
_icon = "cloud-services.png"
class Cloudant(_General):
_icon = "cloudant.png"
class CognitiveServices(_General):
_icon = "cognitive-services.png"
class DataSecurity(_General):
_icon = "data-security.png"
class Enterprise(_General):
_icon = "enterprise.png"
class GovernanceRiskCompliance(_General):
_icon = "governance-risk-compliance.png"
class IBMContainers(_General):
_icon = "ibm-containers.png"
class IBMPublicCloud(_General):
_icon = "ibm-public-cloud.png"
class IdentityAccessManagement(_General):
_icon = "identity-access-management.png"
class IdentityProvider(_General):
_icon = "identity-provider.png"
class InfrastructureSecurity(_General):
_icon = "infrastructure-security.png"
class Internet(_General):
_icon = "internet.png"
class IotCloud(_General):
_icon = "iot-cloud.png"
class MicroservicesApplication(_General):
_icon = "microservices-application.png"
class MicroservicesMesh(_General):
_icon = "microservices-mesh.png"
class MonitoringLogging(_General):
_icon = "monitoring-logging.png"
class Monitoring(_General):
_icon = "monitoring.png"
class ObjectStorage(_General):
_icon = "object-storage.png"
class OfflineCapabilities(_General):
_icon = "offline-capabilities.png"
class Openwhisk(_General):
_icon = "openwhisk.png"
class PeerCloud(_General):
_icon = "peer-cloud.png"
class RetrieveRank(_General):
_icon = "retrieve-rank.png"
class Scalable(_General):
_icon = "scalable.png"
class ServiceDiscoveryConfiguration(_General):
_icon = "service-discovery-configuration.png"
class TextToSpeech(_General):
_icon = "text-to-speech.png"
class TransformationConnectivity(_General):
_icon = "transformation-connectivity.png"
# Aliases

@ -0,0 +1,83 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Infrastructure(_IBM):
_type = "infrastructure"
_icon_dir = "resources/ibm/infrastructure"
class Channels(_Infrastructure):
_icon = "channels.png"
class CloudMessaging(_Infrastructure):
_icon = "cloud-messaging.png"
class Dashboard(_Infrastructure):
_icon = "dashboard.png"
class Diagnostics(_Infrastructure):
_icon = "diagnostics.png"
class EdgeServices(_Infrastructure):
_icon = "edge-services.png"
class EnterpriseMessaging(_Infrastructure):
_icon = "enterprise-messaging.png"
class EventFeed(_Infrastructure):
_icon = "event-feed.png"
class InfrastructureServices(_Infrastructure):
_icon = "infrastructure-services.png"
class InterserviceCommunication(_Infrastructure):
_icon = "interservice-communication.png"
class LoadBalancingRouting(_Infrastructure):
_icon = "load-balancing-routing.png"
class MicroservicesMesh(_Infrastructure):
_icon = "microservices-mesh.png"
class MobileBackend(_Infrastructure):
_icon = "mobile-backend.png"
class MobileProviderNetwork(_Infrastructure):
_icon = "mobile-provider-network.png"
class MonitoringLogging(_Infrastructure):
_icon = "monitoring-logging.png"
class Monitoring(_Infrastructure):
_icon = "monitoring.png"
class PeerServices(_Infrastructure):
_icon = "peer-services.png"
class ServiceDiscoveryConfiguration(_Infrastructure):
_icon = "service-discovery-configuration.png"
class TransformationConnectivity(_Infrastructure):
_icon = "transformation-connectivity.png"
# Aliases

@ -0,0 +1,71 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Management(_IBM):
_type = "management"
_icon_dir = "resources/ibm/management"
class AlertNotification(_Management):
_icon = "alert-notification.png"
class ApiManagement(_Management):
_icon = "api-management.png"
class CloudManagement(_Management):
_icon = "cloud-management.png"
class ClusterManagement(_Management):
_icon = "cluster-management.png"
class ContentManagement(_Management):
_icon = "content-management.png"
class DataServices(_Management):
_icon = "data-services.png"
class DeviceManagement(_Management):
_icon = "device-management.png"
class InformationGovernance(_Management):
_icon = "information-governance.png"
class ItServiceManagement(_Management):
_icon = "it-service-management.png"
class Management(_Management):
_icon = "management.png"
class MonitoringMetrics(_Management):
_icon = "monitoring-metrics.png"
class ProcessManagement(_Management):
_icon = "process-management.png"
class ProviderCloudPortalService(_Management):
_icon = "provider-cloud-portal-service.png"
class PushNotifications(_Management):
_icon = "push-notifications.png"
class ServiceManagementTools(_Management):
_icon = "service-management-tools.png"
# Aliases

@ -0,0 +1,95 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Network(_IBM):
_type = "network"
_icon_dir = "resources/ibm/network"
class Bridge(_Network):
_icon = "bridge.png"
class DirectLink(_Network):
_icon = "direct-link.png"
class Enterprise(_Network):
_icon = "enterprise.png"
class Firewall(_Network):
_icon = "firewall.png"
class FloatingIp(_Network):
_icon = "floating-ip.png"
class Gateway(_Network):
_icon = "gateway.png"
class InternetServices(_Network):
_icon = "internet-services.png"
class LoadBalancerListener(_Network):
_icon = "load-balancer-listener.png"
class LoadBalancerPool(_Network):
_icon = "load-balancer-pool.png"
class LoadBalancer(_Network):
_icon = "load-balancer.png"
class LoadBalancingRouting(_Network):
_icon = "load-balancing-routing.png"
class PublicGateway(_Network):
_icon = "public-gateway.png"
class Region(_Network):
_icon = "region.png"
class Router(_Network):
_icon = "router.png"
class Rules(_Network):
_icon = "rules.png"
class Subnet(_Network):
_icon = "subnet.png"
class TransitGateway(_Network):
_icon = "transit-gateway.png"
class Vpc(_Network):
_icon = "vpc.png"
class VpnConnection(_Network):
_icon = "vpn-connection.png"
class VpnGateway(_Network):
_icon = "vpn-gateway.png"
class VpnPolicy(_Network):
_icon = "vpn-policy.png"
# Aliases

@ -0,0 +1,67 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Security(_IBM):
_type = "security"
_icon_dir = "resources/ibm/security"
class ApiSecurity(_Security):
_icon = "api-security.png"
class BlockchainSecurityService(_Security):
_icon = "blockchain-security-service.png"
class DataSecurity(_Security):
_icon = "data-security.png"
class Firewall(_Security):
_icon = "firewall.png"
class Gateway(_Security):
_icon = "gateway.png"
class GovernanceRiskCompliance(_Security):
_icon = "governance-risk-compliance.png"
class IdentityAccessManagement(_Security):
_icon = "identity-access-management.png"
class IdentityProvider(_Security):
_icon = "identity-provider.png"
class InfrastructureSecurity(_Security):
_icon = "infrastructure-security.png"
class PhysicalSecurity(_Security):
_icon = "physical-security.png"
class SecurityMonitoringIntelligence(_Security):
_icon = "security-monitoring-intelligence.png"
class SecurityServices(_Security):
_icon = "security-services.png"
class TrustendComputing(_Security):
_icon = "trustend-computing.png"
class Vpn(_Security):
_icon = "vpn.png"
# Aliases

@ -0,0 +1,31 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Social(_IBM):
_type = "social"
_icon_dir = "resources/ibm/social"
class Communities(_Social):
_icon = "communities.png"
class FileSync(_Social):
_icon = "file-sync.png"
class LiveCollaboration(_Social):
_icon = "live-collaboration.png"
class Messaging(_Social):
_icon = "messaging.png"
class Networking(_Social):
_icon = "networking.png"
# Aliases

@ -0,0 +1,19 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _Storage(_IBM):
_type = "storage"
_icon_dir = "resources/ibm/storage"
class BlockStorage(_Storage):
_icon = "block-storage.png"
class ObjectStorage(_Storage):
_icon = "object-storage.png"
# Aliases

@ -0,0 +1,35 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _IBM
class _User(_IBM):
_type = "user"
_icon_dir = "resources/ibm/user"
class Browser(_User):
_icon = "browser.png"
class Device(_User):
_icon = "device.png"
class IntegratedDigitalExperiences(_User):
_icon = "integrated-digital-experiences.png"
class PhysicalEntity(_User):
_icon = "physical-entity.png"
class Sensor(_User):
_icon = "sensor.png"
class User(_User):
_icon = "user.png"
# Aliases

@ -32,12 +32,12 @@ class CustomerDatacntrWhite(_Connectivity):
_icon = "customer-datacntr-white.png" _icon = "customer-datacntr-white.png"
class CustomerPremiseWhite(_Connectivity): class CustomerPremisesWhite(_Connectivity):
_icon = "customer-premise-white.png" _icon = "customer-premises-white.png"
class CustomerPremise(_Connectivity): class CustomerPremises(_Connectivity):
_icon = "customer-premise.png" _icon = "customer-premises.png"
class DisconnectedRegionsWhite(_Connectivity): 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 from diagrams import Node

@ -20,6 +20,10 @@ class Dbt(_Analytics):
_icon = "dbt.png" _icon = "dbt.png"
class Dremio(_Analytics):
_icon = "dremio.png"
class Flink(_Analytics): class Flink(_Analytics):
_icon = "flink.png" _icon = "flink.png"
@ -68,6 +72,10 @@ class Tableau(_Analytics):
_icon = "tableau.png" _icon = "tableau.png"
class Trino(_Analytics):
_icon = "trino.png"
# Aliases # Aliases
PowerBI = Powerbi PowerBI = Powerbi

@ -28,6 +28,10 @@ class Gvisor(_Container):
_icon = "gvisor.png" _icon = "gvisor.png"
class K3S(_Container):
_icon = "k3s.png"
class Lxc(_Container): class Lxc(_Container):
_icon = "lxc.png" _icon = "lxc.png"

@ -20,6 +20,10 @@ class Awx(_Iac):
_icon = "awx.png" _icon = "awx.png"
class Puppet(_Iac):
_icon = "puppet.png"
class Terraform(_Iac): class Terraform(_Iac):
_icon = "terraform.png" _icon = "terraform.png"

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _OnPrem
class _Messaging(_OnPrem):
_type = "messaging"
_icon_dir = "resources/onprem/messaging"
class Centrifugo(_Messaging):
_icon = "centrifugo.png"
# Aliases

@ -8,6 +8,10 @@ class _Mlops(_OnPrem):
_icon_dir = "resources/onprem/mlops" _icon_dir = "resources/onprem/mlops"
class Mlflow(_Mlops):
_icon = "mlflow.png"
class Polyaxon(_Mlops): class Polyaxon(_Mlops):
_icon = "polyaxon.png" _icon = "polyaxon.png"

@ -16,6 +16,10 @@ class Datadog(_Monitoring):
_icon = "datadog.png" _icon = "datadog.png"
class Dynatrace(_Monitoring):
_icon = "dynatrace.png"
class Grafana(_Monitoring): class Grafana(_Monitoring):
_icon = "grafana.png" _icon = "grafana.png"
@ -24,6 +28,14 @@ class Humio(_Monitoring):
_icon = "humio.png" _icon = "humio.png"
class Mimir(_Monitoring):
_icon = "mimir.png"
class Nagios(_Monitoring):
_icon = "nagios.png"
class Newrelic(_Monitoring): class Newrelic(_Monitoring):
_icon = "newrelic.png" _icon = "newrelic.png"

@ -72,6 +72,10 @@ class Linkerd(_Network):
_icon = "linkerd.png" _icon = "linkerd.png"
class Mikrotik(_Network):
_icon = "mikrotik.png"
class Nginx(_Network): class Nginx(_Network):
_icon = "nginx.png" _icon = "nginx.png"
@ -108,6 +112,10 @@ class Traefik(_Network):
_icon = "traefik.png" _icon = "traefik.png"
class Tyk(_Network):
_icon = "tyk.png"
class Vyos(_Network): class Vyos(_Network):
_icon = "vyos.png" _icon = "vyos.png"
@ -116,6 +124,10 @@ class Wildfly(_Network):
_icon = "wildfly.png" _icon = "wildfly.png"
class Yarp(_Network):
_icon = "yarp.png"
class Zookeeper(_Network): class Zookeeper(_Network):
_icon = "zookeeper.png" _icon = "zookeeper.png"

@ -16,6 +16,10 @@ class Celery(_Queue):
_icon = "celery.png" _icon = "celery.png"
class Emqx(_Queue):
_icon = "emqx.png"
class Kafka(_Queue): class Kafka(_Queue):
_icon = "kafka.png" _icon = "kafka.png"
@ -35,5 +39,6 @@ class Zeromq(_Queue):
# Aliases # Aliases
ActiveMQ = Activemq ActiveMQ = Activemq
EMQX = Emqx
RabbitMQ = Rabbitmq RabbitMQ = Rabbitmq
ZeroMQ = Zeromq ZeroMQ = Zeromq

@ -0,0 +1,19 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _OnPrem
class _Registry(_OnPrem):
_type = "registry"
_icon_dir = "resources/onprem/registry"
class Harbor(_Registry):
_icon = "harbor.png"
class Jfrog(_Registry):
_icon = "jfrog.png"
# Aliases

@ -20,6 +20,10 @@ class Glusterfs(_Storage):
_icon = "glusterfs.png" _icon = "glusterfs.png"
class Portworx(_Storage):
_icon = "portworx.png"
# Aliases # Aliases
CEPH = Ceph CEPH = Ceph

@ -12,4 +12,8 @@ class Jaeger(_Tracing):
_icon = "jaeger.png" _icon = "jaeger.png"
class Tempo(_Tracing):
_icon = "tempo.png"
# Aliases # Aliases

@ -12,6 +12,10 @@ class Git(_Vcs):
_icon = "git.png" _icon = "git.png"
class Gitea(_Vcs):
_icon = "gitea.png"
class Github(_Vcs): class Github(_Vcs):
_icon = "github.png" _icon = "github.png"
@ -20,4 +24,8 @@ class Gitlab(_Vcs):
_icon = "gitlab.png" _icon = "gitlab.png"
class Svn(_Vcs):
_icon = "svn.png"
# Aliases # Aliases

@ -16,10 +16,18 @@ class Backbone(_Framework):
_icon = "backbone.png" _icon = "backbone.png"
class Camel(_Framework):
_icon = "camel.png"
class Django(_Framework): class Django(_Framework):
_icon = "django.png" _icon = "django.png"
class Dotnet(_Framework):
_icon = "dotnet.png"
class Ember(_Framework): class Ember(_Framework):
_icon = "ember.png" _icon = "ember.png"
@ -36,6 +44,18 @@ class Flutter(_Framework):
_icon = "flutter.png" _icon = "flutter.png"
class Graphql(_Framework):
_icon = "graphql.png"
class Hibernate(_Framework):
_icon = "hibernate.png"
class Jhipster(_Framework):
_icon = "jhipster.png"
class Laravel(_Framework): class Laravel(_Framework):
_icon = "laravel.png" _icon = "laravel.png"
@ -44,6 +64,14 @@ class Micronaut(_Framework):
_icon = "micronaut.png" _icon = "micronaut.png"
class Nextjs(_Framework):
_icon = "nextjs.png"
class Quarkus(_Framework):
_icon = "quarkus.png"
class Rails(_Framework): class Rails(_Framework):
_icon = "rails.png" _icon = "rails.png"
@ -56,6 +84,18 @@ class Spring(_Framework):
_icon = "spring.png" _icon = "spring.png"
class Starlette(_Framework):
_icon = "starlette.png"
class Svelte(_Framework):
_icon = "svelte.png"
class Vercel(_Framework):
_icon = "vercel.png"
class Vue(_Framework): class Vue(_Framework):
_icon = "vue.png" _icon = "vue.png"
@ -63,3 +103,7 @@ class Vue(_Framework):
# Aliases # Aliases
FastAPI = Fastapi FastAPI = Fastapi
GraphQL = Graphql
DotNet = Dotnet
NextJs = Nextjs
JHipster = Jhipster

@ -52,6 +52,10 @@ class Kotlin(_Language):
_icon = "kotlin.png" _icon = "kotlin.png"
class Latex(_Language):
_icon = "latex.png"
class Matlab(_Language): class Matlab(_Language):
_icon = "matlab.png" _icon = "matlab.png"

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Programming
class _Runtime(_Programming):
_type = "runtime"
_icon_dir = "resources/programming/runtime"
class Dapr(_Runtime):
_icon = "dapr.png"
# Aliases

@ -16,8 +16,16 @@ class Opsgenie(_Alerting):
_icon = "opsgenie.png" _icon = "opsgenie.png"
class Pagerduty(_Alerting):
_icon = "pagerduty.png"
class Pushover(_Alerting): class Pushover(_Alerting):
_icon = "pushover.png" _icon = "pushover.png"
class Xmatters(_Alerting):
_icon = "xmatters.png"
# Aliases # Aliases

@ -8,6 +8,10 @@ class _Analytics(_Saas):
_icon_dir = "resources/saas/analytics" _icon_dir = "resources/saas/analytics"
class Dataform(_Analytics):
_icon = "dataform.png"
class Snowflake(_Analytics): class Snowflake(_Analytics):
_icon = "snowflake.png" _icon = "snowflake.png"

@ -16,4 +16,8 @@ class Cloudflare(_Cdn):
_icon = "cloudflare.png" _icon = "cloudflare.png"
class Fastly(_Cdn):
_icon = "fastly.png"
# Aliases # Aliases

@ -12,10 +12,18 @@ class Discord(_Chat):
_icon = "discord.png" _icon = "discord.png"
class Line(_Chat):
_icon = "line.png"
class Mattermost(_Chat): class Mattermost(_Chat):
_icon = "mattermost.png" _icon = "mattermost.png"
class Messenger(_Chat):
_icon = "messenger.png"
class RocketChat(_Chat): class RocketChat(_Chat):
_icon = "rocket-chat.png" _icon = "rocket-chat.png"

@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Saas
class _Communication(_Saas):
_type = "communication"
_icon_dir = "resources/saas/communication"
class Twilio(_Communication):
_icon = "twilio.png"
# Aliases

@ -0,0 +1,19 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Saas
class _Security(_Saas):
_type = "security"
_icon_dir = "resources/saas/security"
class Scrowdstrike(_Security):
_icon = "scrowdstrike.png"
class Sonarqube(_Security):
_icon = "sonarqube.png"
# Aliases

@ -6,7 +6,7 @@ RUN apk update && apk add --no-cache \
gcc libc-dev g++ graphviz git bash go imagemagick inkscape ttf-opensans curl fontconfig xdg-utils gcc libc-dev g++ graphviz git bash go imagemagick inkscape ttf-opensans curl fontconfig xdg-utils
# install go package. # install go package.
RUN go get github.com/mingrammer/round RUN go install github.com/mingrammer/round@latest
# install fonts # install fonts
RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \ RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \

@ -42,13 +42,13 @@ with Diagram("Clustered Web Services", show=False):
ECS("web3")] ECS("web3")]
with Cluster("DB Cluster"): with Cluster("DB Cluster"):
db_master = RDS("userdb") db_primary = RDS("userdb")
db_master - [RDS("userdb ro")] db_primary - [RDS("userdb ro")]
memcached = ElastiCache("memcached") memcached = ElastiCache("memcached")
dns >> lb >> svc_group dns >> lb >> svc_group
svc_group >> db_master svc_group >> db_primary
svc_group >> memcached svc_group >> memcached
``` ```
@ -170,7 +170,7 @@ with Diagram("Stateful Architecture", show=False):
![stateful architecture diagram](/img/stateful_architecture_diagram.png) ![stateful architecture diagram](/img/stateful_architecture_diagram.png)
## Advanced Web Service with On-Premise ## Advanced Web Service with On-Premises
```python ```python
from diagrams import Cluster, Diagram 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.network import Nginx
from diagrams.onprem.queue import Kafka 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") ingress = Nginx("ingress")
metrics = Prometheus("metric") metrics = Prometheus("metric")
@ -196,14 +196,14 @@ with Diagram("Advanced Web Service with On-Premise", show=False):
Server("grpc3")] Server("grpc3")]
with Cluster("Sessions HA"): with Cluster("Sessions HA"):
master = Redis("session") primary = Redis("session")
master - Redis("replica") << metrics primary - Redis("replica") << metrics
grpcsvc >> master grpcsvc >> primary
with Cluster("Database HA"): with Cluster("Database HA"):
master = PostgreSQL("users") primary = PostgreSQL("users")
master - PostgreSQL("slave") << metrics primary - PostgreSQL("replica") << metrics
grpcsvc >> master grpcsvc >> primary
aggregator = Fluentd("logging") aggregator = Fluentd("logging")
aggregator >> Kafka("stream") >> Spark("analytics") aggregator >> Kafka("stream") >> Spark("analytics")
@ -239,14 +239,14 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
Server("grpc3")] Server("grpc3")]
with Cluster("Sessions HA"): with Cluster("Sessions HA"):
master = Redis("session") primary = Redis("session")
master - Edge(color="brown", style="dashed") - Redis("replica") << Edge(label="collect") << metrics primary - Edge(color="brown", style="dashed") - Redis("replica") << Edge(label="collect") << metrics
grpcsvc >> Edge(color="brown") >> master grpcsvc >> Edge(color="brown") >> primary
with Cluster("Database HA"): with Cluster("Database HA"):
master = PostgreSQL("users") primary = PostgreSQL("users")
master - Edge(color="brown", style="dotted") - PostgreSQL("slave") << Edge(label="collect") << metrics primary - Edge(color="brown", style="dotted") - PostgreSQL("replica") << Edge(label="collect") << metrics
grpcsvc >> Edge(color="black") >> master grpcsvc >> Edge(color="black") >> primary
aggregator = Fluentd("logging") aggregator = Fluentd("logging")
aggregator >> Edge(label="parse") >> Kafka("stream") >> Edge(color="black", style="bold") >> Spark("analytics") aggregator >> Edge(label="parse") >> Kafka("stream") >> Edge(color="black", style="bold") >> Spark("analytics")

@ -3,11 +3,13 @@ id: installation
title: 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 ```shell
# using pip (pip3) # using pip (pip3)
@ -33,16 +35,18 @@ with Diagram("Web Service", show=False):
ELB("lb") >> EC2("web") >> RDS("userdb") ELB("lb") >> EC2("web") >> RDS("userdb")
``` ```
This code generates below diagram. To generate the diagram, run:
```shell ```shell
$ python diagram.py $ python diagram.py
``` ```
This generates the diagram below:
![web service diagram](/img/web_service_diagram.png) ![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 ## 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 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 ## 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 ```python
from diagrams import Cluster, Diagram from diagrams import Cluster, Diagram
@ -22,18 +22,18 @@ with Diagram("Simple Web Service with DB Cluster", show=False):
web = ECS("service") web = ECS("service")
with Cluster("DB Cluster"): with Cluster("DB Cluster"):
db_master = RDS("master") db_primary = RDS("primary")
db_master - [RDS("slave1"), db_primary - [RDS("replica1"),
RDS("slave2")] RDS("replica2")]
dns >> web >> db_master dns >> web >> db_primary
``` ```
![simple web service with db cluster diagram](/img/simple_web_service_with_db_cluster_diagram.png) ![simple web service with db cluster diagram](/img/simple_web_service_with_db_cluster_diagram.png)
## Nested Clusters ## Nested Clusters
Nested clustering is also possible. Nested clustering is also possible:
```python ```python
from diagrams import Cluster, Diagram from diagrams import Cluster, Diagram
@ -68,4 +68,4 @@ with Diagram("Event Processing", show=False):
![event processing diagram](/img/event_processing_diagram.png) ![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 title: Diagrams
--- ---
Diagram is a primary object representing a diagram. `Diagram` is a primary object representing a diagram.
## Basic ## 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 ```python
from diagrams import Diagram from diagrams import Diagram
@ -19,17 +19,17 @@ with Diagram("Simple Diagram"):
EC2("web") EC2("web")
``` ```
And if you run the above script with below command, If you run the above script with the command below,
```shell ```shell
$ python diagram.py $ 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 ## 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 ```python
from diagrams import Diagram from diagrams import Diagram
@ -42,9 +42,9 @@ diag
## Options ## 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, and pdf) are allowed. > Allowed formats are: png, jpg, svg, pdf, and dot
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -54,7 +54,17 @@ with Diagram("Simple Diagram", outformat="jpg"):
EC2("web") EC2("web")
``` ```
You can specify the output filename with `filename` parameter. The extension shouldn't be included, it's determined by the `outformat` parameter. The `outformat` parameter also supports a list to output all the defined outputs in one call:
```python
from diagrams import Diagram
from diagrams.aws.compute import EC2
with Diagram("Simple Diagram Multi Output", outformat=["jpg", "png", "dot"]):
EC2("web")
```
You can specify the output filename with the `filename` parameter. The extension shouldn't be included, it's determined by the `outformat` parameter.
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -64,7 +74,7 @@ with Diagram("Simple Diagram", filename="my_diagram"):
EC2("web") 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 ```python
from diagrams import Diagram from diagrams import Diagram
@ -74,7 +84,7 @@ with Diagram("Simple Diagram", show=False):
EC2("web") 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). > `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 title: Edges
--- ---
Edge is representing an edge between Nodes. `Edge` represents an edge between nodes.
## Basic ## 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 ```python
from diagrams import Cluster, Diagram, Edge 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.network import Nginx
from diagrams.onprem.queue import Kafka 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") ingress = Nginx("ingress")
metrics = Prometheus("metric") metrics = Prometheus("metric")
@ -35,22 +35,22 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
Server("grpc3")] Server("grpc3")]
with Cluster("Sessions HA"): with Cluster("Sessions HA"):
master = Redis("session") primary = Redis("session")
master \ primary \
- Edge(color="brown", style="dashed") \ - Edge(color="brown", style="dashed") \
- Redis("replica") \ - Redis("replica") \
<< Edge(label="collect") \ << Edge(label="collect") \
<< metrics << metrics
grpcsvc >> Edge(color="brown") >> master grpcsvc >> Edge(color="brown") >> primary
with Cluster("Database HA"): with Cluster("Database HA"):
master = PostgreSQL("users") primary = PostgreSQL("users")
master \ primary \
- Edge(color="brown", style="dotted") \ - Edge(color="brown", style="dotted") \
- PostgreSQL("slave") \ - PostgreSQL("replica") \
<< Edge(label="collect") \ << Edge(label="collect") \
<< metrics << metrics
grpcsvc >> Edge(color="black") >> master grpcsvc >> Edge(color="black") >> primary
aggregator = Fluentd("logging") aggregator = Fluentd("logging")
aggregator \ aggregator \
@ -65,7 +65,6 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
>> Edge(color="darkorange") \ >> Edge(color="darkorange") \
>> aggregator >> aggregator
``` ```
![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png) ![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png)
## Less Edges ## Less Edges
@ -193,4 +192,4 @@ with Diagram("\n\nAdvanced Web Service with On-Premise Merged edges", show=False
diag diag
``` ```
![advanced web service with on-premise merged edges](/img/advanced_web_service_with_on-premise_merged_edges.png) ![advanced web service with on-premise merged edges](/img/advanced_web_service_with_on-premise_merged_edges.png)

@ -3,11 +3,11 @@ id: node
title: Nodes title: Nodes
--- ---
Node is a second object representing a node or system component. `Node` is an object representing a node or system component.
## Basic ## 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. 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") 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 ```python
# aws resources # aws resources
@ -42,7 +42,7 @@ from diagrams.alibabacloud.storage import ObjectTableStore
# gcp resources # gcp resources
from diagrams.gcp.compute import AppEngine, GKE from diagrams.gcp.compute import AppEngine, GKE
from diagrams.gcp.ml import AutoML from diagrams.gcp.ml import AutoML
... ...
# k8s resources # k8s resources
@ -57,15 +57,17 @@ from diagrams.oci.network import Firewall
from diagrams.oci.storage import FileStorage, StorageGateway 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 ## 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. - **>>** connects nodes in left to right direction.
* **<<**: Connect nodes in right to left direction. - **<<** connects nodes in right to left direction.
* **-**: Connect nodes in no direction. Undirected. - **-** connects nodes in no direction. Undirected.
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -80,15 +82,15 @@ with Diagram("Web Services", show=False):
(ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb") (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) ![web services diagram](/img/web_services_diagram.png)
> The order of rendered diagrams is the reverse of the declaration order. > 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 ```python
from diagrams import Diagram from diagrams import Diagram
@ -110,7 +112,7 @@ with Diagram("Workers", show=False, direction="TB"):
## Group Data Flow ## 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 ```python
from diagrams import Diagram from diagrams import Diagram

@ -3,128 +3,316 @@ id: alibabacloud
title: AlibabaCloud title: AlibabaCloud
--- ---
Node classes list of alibabacloud provider. Node classes list of the alibabacloud provider.
## alibabacloud.analytics ## alibabacloud.analytics
- **diagrams.alibabacloud.analytics.AnalyticDb**
- **diagrams.alibabacloud.analytics.ClickHouse** <img width="30" src="/img/resources/alibabacloud/analytics/analytic-db.png" alt="AnalyticDb" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.analytics.DataLakeAnalytics** **diagrams.alibabacloud.analytics.AnalyticDb**
- **diagrams.alibabacloud.analytics.ElaticMapReduce**
- **diagrams.alibabacloud.analytics.OpenSearch** <img width="30" src="/img/resources/alibabacloud/analytics/click-house.png" alt="ClickHouse" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.analytics.ClickHouse**
<img width="30" src="/img/resources/alibabacloud/analytics/data-lake-analytics.png" alt="DataLakeAnalytics" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.analytics.DataLakeAnalytics**
<img width="30" src="/img/resources/alibabacloud/analytics/elatic-map-reduce.png" alt="ElaticMapReduce" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.analytics.ElaticMapReduce**
<img width="30" src="/img/resources/alibabacloud/analytics/open-search.png" alt="OpenSearch" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.analytics.OpenSearch**
## alibabacloud.application ## alibabacloud.application
- **diagrams.alibabacloud.application.ApiGateway**
- **diagrams.alibabacloud.application.BeeBot** <img width="30" src="/img/resources/alibabacloud/application/api-gateway.png" alt="ApiGateway" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.application.BlockchainAsAService** **diagrams.alibabacloud.application.ApiGateway**
- **diagrams.alibabacloud.application.CloudCallCenter**
- **diagrams.alibabacloud.application.CodePipeline** <img width="30" src="/img/resources/alibabacloud/application/bee-bot.png" alt="BeeBot" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.application.DirectMail** **diagrams.alibabacloud.application.BeeBot**
- **diagrams.alibabacloud.application.LogService**, **SLS** (alias)
- **diagrams.alibabacloud.application.MessageNotificationService**, **MNS** (alias) <img width="30" src="/img/resources/alibabacloud/application/blockchain-as-a-service.png" alt="BlockchainAsAService" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.application.NodeJsPerformancePlatform** **diagrams.alibabacloud.application.BlockchainAsAService**
- **diagrams.alibabacloud.application.OpenSearch**
- **diagrams.alibabacloud.application.PerformanceTestingService**, **PTS** (alias) <img width="30" src="/img/resources/alibabacloud/application/cloud-call-center.png" alt="CloudCallCenter" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.application.RdCloud** **diagrams.alibabacloud.application.CloudCallCenter**
- **diagrams.alibabacloud.application.SmartConversationAnalysis**, **SCA** (alias)
- **diagrams.alibabacloud.application.Yida** <img width="30" src="/img/resources/alibabacloud/application/code-pipeline.png" alt="CodePipeline" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.CodePipeline**
<img width="30" src="/img/resources/alibabacloud/application/direct-mail.png" alt="DirectMail" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.DirectMail**
<img width="30" src="/img/resources/alibabacloud/application/log-service.png" alt="LogService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.LogService**, **SLS** (alias)
<img width="30" src="/img/resources/alibabacloud/application/message-notification-service.png" alt="MessageNotificationService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.MessageNotificationService**, **MNS** (alias)
<img width="30" src="/img/resources/alibabacloud/application/node-js-performance-platform.png" alt="NodeJsPerformancePlatform" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.NodeJsPerformancePlatform**
<img width="30" src="/img/resources/alibabacloud/application/open-search.png" alt="OpenSearch" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.OpenSearch**
<img width="30" src="/img/resources/alibabacloud/application/performance-testing-service.png" alt="PerformanceTestingService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.PerformanceTestingService**, **PTS** (alias)
<img width="30" src="/img/resources/alibabacloud/application/rd-cloud.png" alt="RdCloud" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.RdCloud**
<img width="30" src="/img/resources/alibabacloud/application/smart-conversation-analysis.png" alt="SmartConversationAnalysis" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.SmartConversationAnalysis**, **SCA** (alias)
<img width="30" src="/img/resources/alibabacloud/application/yida.png" alt="Yida" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.application.Yida**
## alibabacloud.communication ## alibabacloud.communication
- **diagrams.alibabacloud.communication.DirectMail**
- **diagrams.alibabacloud.communication.MobilePush** <img width="30" src="/img/resources/alibabacloud/communication/direct-mail.png" alt="DirectMail" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.communication.DirectMail**
<img width="30" src="/img/resources/alibabacloud/communication/mobile-push.png" alt="MobilePush" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.communication.MobilePush**
## alibabacloud.compute ## alibabacloud.compute
- **diagrams.alibabacloud.compute.AutoScaling**, **ESS** (alias)
- **diagrams.alibabacloud.compute.BatchCompute** <img width="30" src="/img/resources/alibabacloud/compute/auto-scaling.png" alt="AutoScaling" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.compute.ContainerRegistry** **diagrams.alibabacloud.compute.AutoScaling**, **ESS** (alias)
- **diagrams.alibabacloud.compute.ContainerService**
- **diagrams.alibabacloud.compute.ElasticComputeService**, **ECS** (alias) <img width="30" src="/img/resources/alibabacloud/compute/batch-compute.png" alt="BatchCompute" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.compute.ElasticContainerInstance**, **ECI** (alias) **diagrams.alibabacloud.compute.BatchCompute**
- **diagrams.alibabacloud.compute.ElasticHighPerformanceComputing**, **EHPC** (alias)
- **diagrams.alibabacloud.compute.ElasticSearch** <img width="30" src="/img/resources/alibabacloud/compute/container-registry.png" alt="ContainerRegistry" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.compute.FunctionCompute**, **FC** (alias) **diagrams.alibabacloud.compute.ContainerRegistry**
- **diagrams.alibabacloud.compute.OperationOrchestrationService**, **OOS** (alias)
- **diagrams.alibabacloud.compute.ResourceOrchestrationService**, **ROS** (alias) <img width="30" src="/img/resources/alibabacloud/compute/container-service.png" alt="ContainerService" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.compute.ServerLoadBalancer**, **SLB** (alias) **diagrams.alibabacloud.compute.ContainerService**
- **diagrams.alibabacloud.compute.ServerlessAppEngine**, **SAE** (alias)
- **diagrams.alibabacloud.compute.SimpleApplicationServer**, **SAS** (alias) <img width="30" src="/img/resources/alibabacloud/compute/elastic-compute-service.png" alt="ElasticComputeService" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.compute.WebAppService**, **WAS** (alias) **diagrams.alibabacloud.compute.ElasticComputeService**, **ECS** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/elastic-container-instance.png" alt="ElasticContainerInstance" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.ElasticContainerInstance**, **ECI** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/elastic-high-performance-computing.png" alt="ElasticHighPerformanceComputing" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.ElasticHighPerformanceComputing**, **EHPC** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/elastic-search.png" alt="ElasticSearch" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.ElasticSearch**
<img width="30" src="/img/resources/alibabacloud/compute/function-compute.png" alt="FunctionCompute" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.FunctionCompute**, **FC** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/operation-orchestration-service.png" alt="OperationOrchestrationService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.OperationOrchestrationService**, **OOS** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/resource-orchestration-service.png" alt="ResourceOrchestrationService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.ResourceOrchestrationService**, **ROS** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/server-load-balancer.png" alt="ServerLoadBalancer" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.ServerLoadBalancer**, **SLB** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/serverless-app-engine.png" alt="ServerlessAppEngine" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.ServerlessAppEngine**, **SAE** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/simple-application-server.png" alt="SimpleApplicationServer" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.SimpleApplicationServer**, **SAS** (alias)
<img width="30" src="/img/resources/alibabacloud/compute/web-app-service.png" alt="WebAppService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.compute.WebAppService**, **WAS** (alias)
## alibabacloud.database ## alibabacloud.database
- **diagrams.alibabacloud.database.ApsaradbCassandra**
- **diagrams.alibabacloud.database.ApsaradbHbase** <img width="30" src="/img/resources/alibabacloud/database/apsaradb-cassandra.png" alt="ApsaradbCassandra" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.database.ApsaradbMemcache** **diagrams.alibabacloud.database.ApsaradbCassandra**
- **diagrams.alibabacloud.database.ApsaradbMongodb**
- **diagrams.alibabacloud.database.ApsaradbOceanbase** <img width="30" src="/img/resources/alibabacloud/database/apsaradb-hbase.png" alt="ApsaradbHbase" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.database.ApsaradbPolardb** **diagrams.alibabacloud.database.ApsaradbHbase**
- **diagrams.alibabacloud.database.ApsaradbPostgresql**
- **diagrams.alibabacloud.database.ApsaradbPpas** <img width="30" src="/img/resources/alibabacloud/database/apsaradb-memcache.png" alt="ApsaradbMemcache" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.database.ApsaradbRedis** **diagrams.alibabacloud.database.ApsaradbMemcache**
- **diagrams.alibabacloud.database.ApsaradbSqlserver**
- **diagrams.alibabacloud.database.DataManagementService**, **DMS** (alias) <img width="30" src="/img/resources/alibabacloud/database/apsaradb-mongodb.png" alt="ApsaradbMongodb" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.database.DataTransmissionService**, **DTS** (alias) **diagrams.alibabacloud.database.ApsaradbMongodb**
- **diagrams.alibabacloud.database.DatabaseBackupService**, **DBS** (alias)
- **diagrams.alibabacloud.database.DisributeRelationalDatabaseService**, **DRDS** (alias) <img width="30" src="/img/resources/alibabacloud/database/apsaradb-oceanbase.png" alt="ApsaradbOceanbase" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.database.GraphDatabaseService**, **GDS** (alias) **diagrams.alibabacloud.database.ApsaradbOceanbase**
- **diagrams.alibabacloud.database.HybriddbForMysql**
- **diagrams.alibabacloud.database.RelationalDatabaseService**, **RDS** (alias) <img width="30" src="/img/resources/alibabacloud/database/apsaradb-polardb.png" alt="ApsaradbPolardb" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.ApsaradbPolardb**
<img width="30" src="/img/resources/alibabacloud/database/apsaradb-postgresql.png" alt="ApsaradbPostgresql" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.ApsaradbPostgresql**
<img width="30" src="/img/resources/alibabacloud/database/apsaradb-ppas.png" alt="ApsaradbPpas" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.ApsaradbPpas**
<img width="30" src="/img/resources/alibabacloud/database/apsaradb-redis.png" alt="ApsaradbRedis" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.ApsaradbRedis**
<img width="30" src="/img/resources/alibabacloud/database/apsaradb-sqlserver.png" alt="ApsaradbSqlserver" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.ApsaradbSqlserver**
<img width="30" src="/img/resources/alibabacloud/database/data-management-service.png" alt="DataManagementService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.DataManagementService**, **DMS** (alias)
<img width="30" src="/img/resources/alibabacloud/database/data-transmission-service.png" alt="DataTransmissionService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.DataTransmissionService**, **DTS** (alias)
<img width="30" src="/img/resources/alibabacloud/database/database-backup-service.png" alt="DatabaseBackupService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.DatabaseBackupService**, **DBS** (alias)
<img width="30" src="/img/resources/alibabacloud/database/disribute-relational-database-service.png" alt="DisributeRelationalDatabaseService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.DisributeRelationalDatabaseService**, **DRDS** (alias)
<img width="30" src="/img/resources/alibabacloud/database/graph-database-service.png" alt="GraphDatabaseService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.GraphDatabaseService**, **GDS** (alias)
<img width="30" src="/img/resources/alibabacloud/database/hybriddb-for-mysql.png" alt="HybriddbForMysql" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.HybriddbForMysql**
<img width="30" src="/img/resources/alibabacloud/database/relational-database-service.png" alt="RelationalDatabaseService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.database.RelationalDatabaseService**, **RDS** (alias)
## alibabacloud.iot ## alibabacloud.iot
- **diagrams.alibabacloud.iot.IotInternetDeviceId**
- **diagrams.alibabacloud.iot.IotLinkWan** <img width="30" src="/img/resources/alibabacloud/iot/iot-internet-device-id.png" alt="IotInternetDeviceId" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.iot.IotMobileConnectionPackage** **diagrams.alibabacloud.iot.IotInternetDeviceId**
- **diagrams.alibabacloud.iot.IotPlatform**
<img width="30" src="/img/resources/alibabacloud/iot/iot-link-wan.png" alt="IotLinkWan" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.iot.IotLinkWan**
<img width="30" src="/img/resources/alibabacloud/iot/iot-mobile-connection-package.png" alt="IotMobileConnectionPackage" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.iot.IotMobileConnectionPackage**
<img width="30" src="/img/resources/alibabacloud/iot/iot-platform.png" alt="IotPlatform" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.iot.IotPlatform**
## alibabacloud.network ## alibabacloud.network
- **diagrams.alibabacloud.network.Cdn**
- **diagrams.alibabacloud.network.CloudEnterpriseNetwork**, **CEN** (alias) <img width="30" src="/img/resources/alibabacloud/network/cdn.png" alt="Cdn" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.network.ElasticIpAddress**, **EIP** (alias) **diagrams.alibabacloud.network.Cdn**
- **diagrams.alibabacloud.network.ExpressConnect**
- **diagrams.alibabacloud.network.NatGateway** <img width="30" src="/img/resources/alibabacloud/network/cloud-enterprise-network.png" alt="CloudEnterpriseNetwork" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.network.ServerLoadBalancer**, **SLB** (alias) **diagrams.alibabacloud.network.CloudEnterpriseNetwork**, **CEN** (alias)
- **diagrams.alibabacloud.network.SmartAccessGateway**
- **diagrams.alibabacloud.network.VirtualPrivateCloud**, **VPC** (alias) <img width="30" src="/img/resources/alibabacloud/network/elastic-ip-address.png" alt="ElasticIpAddress" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.network.VpnGateway** **diagrams.alibabacloud.network.ElasticIpAddress**, **EIP** (alias)
<img width="30" src="/img/resources/alibabacloud/network/express-connect.png" alt="ExpressConnect" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.network.ExpressConnect**
<img width="30" src="/img/resources/alibabacloud/network/nat-gateway.png" alt="NatGateway" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.network.NatGateway**
<img width="30" src="/img/resources/alibabacloud/network/server-load-balancer.png" alt="ServerLoadBalancer" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.network.ServerLoadBalancer**, **SLB** (alias)
<img width="30" src="/img/resources/alibabacloud/network/smart-access-gateway.png" alt="SmartAccessGateway" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.network.SmartAccessGateway**
<img width="30" src="/img/resources/alibabacloud/network/virtual-private-cloud.png" alt="VirtualPrivateCloud" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.network.VirtualPrivateCloud**, **VPC** (alias)
<img width="30" src="/img/resources/alibabacloud/network/vpn-gateway.png" alt="VpnGateway" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.network.VpnGateway**
## alibabacloud.security ## alibabacloud.security
- **diagrams.alibabacloud.security.AntiBotService**, **ABS** (alias)
- **diagrams.alibabacloud.security.AntiDdosBasic** <img width="30" src="/img/resources/alibabacloud/security/anti-bot-service.png" alt="AntiBotService" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.security.AntiDdosPro** **diagrams.alibabacloud.security.AntiBotService**, **ABS** (alias)
- **diagrams.alibabacloud.security.AntifraudService**, **AS** (alias)
- **diagrams.alibabacloud.security.BastionHost** <img width="30" src="/img/resources/alibabacloud/security/anti-ddos-basic.png" alt="AntiDdosBasic" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.security.CloudFirewall**, **CFW** (alias) **diagrams.alibabacloud.security.AntiDdosBasic**
- **diagrams.alibabacloud.security.CloudSecurityScanner**
- **diagrams.alibabacloud.security.ContentModeration**, **CM** (alias) <img width="30" src="/img/resources/alibabacloud/security/anti-ddos-pro.png" alt="AntiDdosPro" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.security.CrowdsourcedSecurityTesting** **diagrams.alibabacloud.security.AntiDdosPro**
- **diagrams.alibabacloud.security.DataEncryptionService**, **DES** (alias)
- **diagrams.alibabacloud.security.DbAudit** <img width="30" src="/img/resources/alibabacloud/security/antifraud-service.png" alt="AntifraudService" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.security.GameShield** **diagrams.alibabacloud.security.AntifraudService**, **AS** (alias)
- **diagrams.alibabacloud.security.IdVerification**
- **diagrams.alibabacloud.security.ManagedSecurityService** <img width="30" src="/img/resources/alibabacloud/security/bastion-host.png" alt="BastionHost" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.security.SecurityCenter** **diagrams.alibabacloud.security.BastionHost**
- **diagrams.alibabacloud.security.ServerGuard**
- **diagrams.alibabacloud.security.SslCertificates** <img width="30" src="/img/resources/alibabacloud/security/cloud-firewall.png" alt="CloudFirewall" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.security.WebApplicationFirewall**, **WAF** (alias) **diagrams.alibabacloud.security.CloudFirewall**, **CFW** (alias)
<img width="30" src="/img/resources/alibabacloud/security/cloud-security-scanner.png" alt="CloudSecurityScanner" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.CloudSecurityScanner**
<img width="30" src="/img/resources/alibabacloud/security/content-moderation.png" alt="ContentModeration" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.ContentModeration**, **CM** (alias)
<img width="30" src="/img/resources/alibabacloud/security/crowdsourced-security-testing.png" alt="CrowdsourcedSecurityTesting" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.CrowdsourcedSecurityTesting**
<img width="30" src="/img/resources/alibabacloud/security/data-encryption-service.png" alt="DataEncryptionService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.DataEncryptionService**, **DES** (alias)
<img width="30" src="/img/resources/alibabacloud/security/db-audit.png" alt="DbAudit" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.DbAudit**
<img width="30" src="/img/resources/alibabacloud/security/game-shield.png" alt="GameShield" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.GameShield**
<img width="30" src="/img/resources/alibabacloud/security/id-verification.png" alt="IdVerification" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.IdVerification**
<img width="30" src="/img/resources/alibabacloud/security/managed-security-service.png" alt="ManagedSecurityService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.ManagedSecurityService**
<img width="30" src="/img/resources/alibabacloud/security/security-center.png" alt="SecurityCenter" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.SecurityCenter**
<img width="30" src="/img/resources/alibabacloud/security/server-guard.png" alt="ServerGuard" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.ServerGuard**
<img width="30" src="/img/resources/alibabacloud/security/ssl-certificates.png" alt="SslCertificates" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.SslCertificates**
<img width="30" src="/img/resources/alibabacloud/security/web-application-firewall.png" alt="WebApplicationFirewall" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.security.WebApplicationFirewall**, **WAF** (alias)
## alibabacloud.storage ## alibabacloud.storage
- **diagrams.alibabacloud.storage.CloudStorageGateway**
- **diagrams.alibabacloud.storage.FileStorageHdfs**, **HDFS** (alias) <img width="30" src="/img/resources/alibabacloud/storage/cloud-storage-gateway.png" alt="CloudStorageGateway" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.storage.FileStorageNas**, **NAS** (alias) **diagrams.alibabacloud.storage.CloudStorageGateway**
- **diagrams.alibabacloud.storage.HybridBackupRecovery**, **HBR** (alias)
- **diagrams.alibabacloud.storage.HybridCloudDisasterRecovery**, **HDR** (alias) <img width="30" src="/img/resources/alibabacloud/storage/file-storage-hdfs.png" alt="FileStorageHdfs" style="float: left; padding-right: 5px;" >
- **diagrams.alibabacloud.storage.Imm** **diagrams.alibabacloud.storage.FileStorageHdfs**, **HDFS** (alias)
- **diagrams.alibabacloud.storage.ObjectStorageService**, **OSS** (alias)
- **diagrams.alibabacloud.storage.ObjectTableStore**, **OTS** (alias) <img width="30" src="/img/resources/alibabacloud/storage/file-storage-nas.png" alt="FileStorageNas" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.storage.FileStorageNas**, **NAS** (alias)
<img width="30" src="/img/resources/alibabacloud/storage/hybrid-backup-recovery.png" alt="HybridBackupRecovery" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.storage.HybridBackupRecovery**, **HBR** (alias)
<img width="30" src="/img/resources/alibabacloud/storage/hybrid-cloud-disaster-recovery.png" alt="HybridCloudDisasterRecovery" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.storage.HybridCloudDisasterRecovery**, **HDR** (alias)
<img width="30" src="/img/resources/alibabacloud/storage/imm.png" alt="Imm" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.storage.Imm**
<img width="30" src="/img/resources/alibabacloud/storage/object-storage-service.png" alt="ObjectStorageService" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.storage.ObjectStorageService**, **OSS** (alias)
<img width="30" src="/img/resources/alibabacloud/storage/object-table-store.png" alt="ObjectTableStore" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.storage.ObjectTableStore**, **OTS** (alias)
## alibabacloud.web ## alibabacloud.web
- **diagrams.alibabacloud.web.Dns**
- **diagrams.alibabacloud.web.Domain** <img width="30" src="/img/resources/alibabacloud/web/dns.png" alt="Dns" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.web.Dns**
<img width="30" src="/img/resources/alibabacloud/web/domain.png" alt="Domain" style="float: left; padding-right: 5px;" >
**diagrams.alibabacloud.web.Domain**

File diff suppressed because it is too large Load Diff

@ -3,242 +3,739 @@ id: azure
title: Azure title: Azure
--- ---
Node classes list of azure provider. Node classes list of the azure provider.
## azure.analytics ## azure.analytics
- **diagrams.azure.analytics.AnalysisServices**
- **diagrams.azure.analytics.DataExplorerClusters** <img width="30" src="/img/resources/azure/analytics/analysis-services.png" alt="AnalysisServices" style="float: left; padding-right: 5px;" >
- **diagrams.azure.analytics.DataFactories** **diagrams.azure.analytics.AnalysisServices**
- **diagrams.azure.analytics.DataLakeAnalytics**
- **diagrams.azure.analytics.DataLakeStoreGen1** <img width="30" src="/img/resources/azure/analytics/data-explorer-clusters.png" alt="DataExplorerClusters" style="float: left; padding-right: 5px;" >
- **diagrams.azure.analytics.Databricks** **diagrams.azure.analytics.DataExplorerClusters**
- **diagrams.azure.analytics.EventHubClusters**
- **diagrams.azure.analytics.EventHubs** <img width="30" src="/img/resources/azure/analytics/data-factories.png" alt="DataFactories" style="float: left; padding-right: 5px;" >
- **diagrams.azure.analytics.Hdinsightclusters** **diagrams.azure.analytics.DataFactories**
- **diagrams.azure.analytics.LogAnalyticsWorkspaces**
- **diagrams.azure.analytics.StreamAnalyticsJobs** <img width="30" src="/img/resources/azure/analytics/data-lake-analytics.png" alt="DataLakeAnalytics" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.DataLakeAnalytics**
<img width="30" src="/img/resources/azure/analytics/data-lake-store-gen1.png" alt="DataLakeStoreGen1" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.DataLakeStoreGen1**
<img width="30" src="/img/resources/azure/analytics/databricks.png" alt="Databricks" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.Databricks**
<img width="30" src="/img/resources/azure/analytics/event-hub-clusters.png" alt="EventHubClusters" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.EventHubClusters**
<img width="30" src="/img/resources/azure/analytics/event-hubs.png" alt="EventHubs" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.EventHubs**
<img width="30" src="/img/resources/azure/analytics/hdinsightclusters.png" alt="Hdinsightclusters" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.Hdinsightclusters**
<img width="30" src="/img/resources/azure/analytics/log-analytics-workspaces.png" alt="LogAnalyticsWorkspaces" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.LogAnalyticsWorkspaces**
<img width="30" src="/img/resources/azure/analytics/stream-analytics-jobs.png" alt="StreamAnalyticsJobs" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.StreamAnalyticsJobs**
<img width="30" src="/img/resources/azure/analytics/synapse-analytics.png" alt="SynapseAnalytics" style="float: left; padding-right: 5px;" >
**diagrams.azure.analytics.SynapseAnalytics**
## azure.compute ## azure.compute
- **diagrams.azure.compute.AvailabilitySets**
- **diagrams.azure.compute.BatchAccounts** <img width="30" src="/img/resources/azure/compute/app-services.png" alt="AppServices" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.CitrixVirtualDesktopsEssentials** **diagrams.azure.compute.AppServices**
- **diagrams.azure.compute.CloudServicesClassic**
- **diagrams.azure.compute.CloudServices** <img width="30" src="/img/resources/azure/compute/automanaged-vm.png" alt="AutomanagedVM" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.CloudsimpleVirtualMachines** **diagrams.azure.compute.AutomanagedVM**
- **diagrams.azure.compute.ContainerInstances**
- **diagrams.azure.compute.ContainerRegistries**, **ACR** (alias) <img width="30" src="/img/resources/azure/compute/availability-sets.png" alt="AvailabilitySets" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.DiskSnapshots** **diagrams.azure.compute.AvailabilitySets**
- **diagrams.azure.compute.Disks**
- **diagrams.azure.compute.FunctionApps** <img width="30" src="/img/resources/azure/compute/batch-accounts.png" alt="BatchAccounts" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.KubernetesServices**, **AKS** (alias) **diagrams.azure.compute.BatchAccounts**
- **diagrams.azure.compute.MeshApplications**
- **diagrams.azure.compute.SAPHANAOnAzure** <img width="30" src="/img/resources/azure/compute/citrix-virtual-desktops-essentials.png" alt="CitrixVirtualDesktopsEssentials" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.ServiceFabricClusters** **diagrams.azure.compute.CitrixVirtualDesktopsEssentials**
- **diagrams.azure.compute.VMClassic**
- **diagrams.azure.compute.VMImages** <img width="30" src="/img/resources/azure/compute/cloud-services-classic.png" alt="CloudServicesClassic" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.VMLinux** **diagrams.azure.compute.CloudServicesClassic**
- **diagrams.azure.compute.VMScaleSet**, **VMSS** (alias)
- **diagrams.azure.compute.VMWindows** <img width="30" src="/img/resources/azure/compute/cloud-services.png" alt="CloudServices" style="float: left; padding-right: 5px;" >
- **diagrams.azure.compute.VM** **diagrams.azure.compute.CloudServices**
<img width="30" src="/img/resources/azure/compute/cloudsimple-virtual-machines.png" alt="CloudsimpleVirtualMachines" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.CloudsimpleVirtualMachines**
<img width="30" src="/img/resources/azure/compute/container-apps.png" alt="ContainerApps" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.ContainerApps**
<img width="30" src="/img/resources/azure/compute/container-instances.png" alt="ContainerInstances" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.ContainerInstances**
<img width="30" src="/img/resources/azure/compute/container-registries.png" alt="ContainerRegistries" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.ContainerRegistries**, **ACR** (alias)
<img width="30" src="/img/resources/azure/compute/disk-encryption-sets.png" alt="DiskEncryptionSets" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.DiskEncryptionSets**
<img width="30" src="/img/resources/azure/compute/disk-snapshots.png" alt="DiskSnapshots" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.DiskSnapshots**
<img width="30" src="/img/resources/azure/compute/disks.png" alt="Disks" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.Disks**
<img width="30" src="/img/resources/azure/compute/function-apps.png" alt="FunctionApps" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.FunctionApps**
<img width="30" src="/img/resources/azure/compute/image-definitions.png" alt="ImageDefinitions" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.ImageDefinitions**
<img width="30" src="/img/resources/azure/compute/image-versions.png" alt="ImageVersions" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.ImageVersions**
<img width="30" src="/img/resources/azure/compute/kubernetes-services.png" alt="KubernetesServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.KubernetesServices**, **AKS** (alias)
<img width="30" src="/img/resources/azure/compute/mesh-applications.png" alt="MeshApplications" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.MeshApplications**
<img width="30" src="/img/resources/azure/compute/os-images.png" alt="OsImages" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.OsImages**
<img width="30" src="/img/resources/azure/compute/sap-hana-on-azure.png" alt="SAPHANAOnAzure" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.SAPHANAOnAzure**
<img width="30" src="/img/resources/azure/compute/service-fabric-clusters.png" alt="ServiceFabricClusters" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.ServiceFabricClusters**
<img width="30" src="/img/resources/azure/compute/shared-image-galleries.png" alt="SharedImageGalleries" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.SharedImageGalleries**
<img width="30" src="/img/resources/azure/compute/spring-cloud.png" alt="SpringCloud" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.SpringCloud**
<img width="30" src="/img/resources/azure/compute/vm-classic.png" alt="VMClassic" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.VMClassic**
<img width="30" src="/img/resources/azure/compute/vm-images.png" alt="VMImages" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.VMImages**
<img width="30" src="/img/resources/azure/compute/vm-linux.png" alt="VMLinux" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.VMLinux**
<img width="30" src="/img/resources/azure/compute/vm-scale-set.png" alt="VMScaleSet" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.VMScaleSet**, **VMSS** (alias)
<img width="30" src="/img/resources/azure/compute/vm-windows.png" alt="VMWindows" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.VMWindows**
<img width="30" src="/img/resources/azure/compute/vm.png" alt="VM" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.VM**
<img width="30" src="/img/resources/azure/compute/workspaces.png" alt="Workspaces" style="float: left; padding-right: 5px;" >
**diagrams.azure.compute.Workspaces**
## azure.database ## azure.database
- **diagrams.azure.database.BlobStorage**
- **diagrams.azure.database.CacheForRedis** <img width="30" src="/img/resources/azure/database/blob-storage.png" alt="BlobStorage" style="float: left; padding-right: 5px;" >
- **diagrams.azure.database.CosmosDb** **diagrams.azure.database.BlobStorage**
- **diagrams.azure.database.DataLake**
- **diagrams.azure.database.DatabaseForMariadbServers** <img width="30" src="/img/resources/azure/database/cache-for-redis.png" alt="CacheForRedis" style="float: left; padding-right: 5px;" >
- **diagrams.azure.database.DatabaseForMysqlServers** **diagrams.azure.database.CacheForRedis**
- **diagrams.azure.database.DatabaseForPostgresqlServers**
- **diagrams.azure.database.ElasticDatabasePools** <img width="30" src="/img/resources/azure/database/cosmos-db.png" alt="CosmosDb" style="float: left; padding-right: 5px;" >
- **diagrams.azure.database.ElasticJobAgents** **diagrams.azure.database.CosmosDb**
- **diagrams.azure.database.ManagedDatabases**
- **diagrams.azure.database.SQLDatabases** <img width="30" src="/img/resources/azure/database/data-explorer-clusters.png" alt="DataExplorerClusters" style="float: left; padding-right: 5px;" >
- **diagrams.azure.database.SQLDatawarehouse** **diagrams.azure.database.DataExplorerClusters**
- **diagrams.azure.database.SQLManagedInstances**
- **diagrams.azure.database.SQLServerStretchDatabases** <img width="30" src="/img/resources/azure/database/data-factory.png" alt="DataFactory" style="float: left; padding-right: 5px;" >
- **diagrams.azure.database.SQLServers** **diagrams.azure.database.DataFactory**
- **diagrams.azure.database.VirtualClusters**
- **diagrams.azure.database.VirtualDatacenter** <img width="30" src="/img/resources/azure/database/data-lake.png" alt="DataLake" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.DataLake**
<img width="30" src="/img/resources/azure/database/database-for-mariadb-servers.png" alt="DatabaseForMariadbServers" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.DatabaseForMariadbServers**
<img width="30" src="/img/resources/azure/database/database-for-mysql-servers.png" alt="DatabaseForMysqlServers" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.DatabaseForMysqlServers**
<img width="30" src="/img/resources/azure/database/database-for-postgresql-servers.png" alt="DatabaseForPostgresqlServers" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.DatabaseForPostgresqlServers**
<img width="30" src="/img/resources/azure/database/elastic-database-pools.png" alt="ElasticDatabasePools" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.ElasticDatabasePools**
<img width="30" src="/img/resources/azure/database/elastic-job-agents.png" alt="ElasticJobAgents" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.ElasticJobAgents**
<img width="30" src="/img/resources/azure/database/instance-pools.png" alt="InstancePools" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.InstancePools**
<img width="30" src="/img/resources/azure/database/managed-databases.png" alt="ManagedDatabases" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.ManagedDatabases**
<img width="30" src="/img/resources/azure/database/sql-databases.png" alt="SQLDatabases" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQLDatabases**
<img width="30" src="/img/resources/azure/database/sql-datawarehouse.png" alt="SQLDatawarehouse" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQLDatawarehouse**
<img width="30" src="/img/resources/azure/database/sql-managed-instances.png" alt="SQLManagedInstances" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQLManagedInstances**
<img width="30" src="/img/resources/azure/database/sql-server-stretch-databases.png" alt="SQLServerStretchDatabases" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQLServerStretchDatabases**
<img width="30" src="/img/resources/azure/database/sql-servers.png" alt="SQLServers" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQLServers**
<img width="30" src="/img/resources/azure/database/sql-vm.png" alt="SQLVM" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQLVM**
<img width="30" src="/img/resources/azure/database/sql.png" alt="SQL" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SQL**
<img width="30" src="/img/resources/azure/database/ssis-lift-and-shift-ir.png" alt="SsisLiftAndShiftIr" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SsisLiftAndShiftIr**
<img width="30" src="/img/resources/azure/database/synapse-analytics.png" alt="SynapseAnalytics" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.SynapseAnalytics**
<img width="30" src="/img/resources/azure/database/virtual-clusters.png" alt="VirtualClusters" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.VirtualClusters**
<img width="30" src="/img/resources/azure/database/virtual-datacenter.png" alt="VirtualDatacenter" style="float: left; padding-right: 5px;" >
**diagrams.azure.database.VirtualDatacenter**
## azure.devops ## azure.devops
- **diagrams.azure.devops.ApplicationInsights**
- **diagrams.azure.devops.Artifacts** <img width="30" src="/img/resources/azure/devops/application-insights.png" alt="ApplicationInsights" style="float: left; padding-right: 5px;" >
- **diagrams.azure.devops.Boards** **diagrams.azure.devops.ApplicationInsights**
- **diagrams.azure.devops.Devops**
- **diagrams.azure.devops.DevtestLabs** <img width="30" src="/img/resources/azure/devops/artifacts.png" alt="Artifacts" style="float: left; padding-right: 5px;" >
- **diagrams.azure.devops.Pipelines** **diagrams.azure.devops.Artifacts**
- **diagrams.azure.devops.Repos**
- **diagrams.azure.devops.TestPlans** <img width="30" src="/img/resources/azure/devops/boards.png" alt="Boards" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.Boards**
<img width="30" src="/img/resources/azure/devops/devops.png" alt="Devops" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.Devops**
<img width="30" src="/img/resources/azure/devops/devtest-labs.png" alt="DevtestLabs" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.DevtestLabs**
<img width="30" src="/img/resources/azure/devops/lab-services.png" alt="LabServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.LabServices**
<img width="30" src="/img/resources/azure/devops/pipelines.png" alt="Pipelines" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.Pipelines**
<img width="30" src="/img/resources/azure/devops/repos.png" alt="Repos" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.Repos**
<img width="30" src="/img/resources/azure/devops/test-plans.png" alt="TestPlans" style="float: left; padding-right: 5px;" >
**diagrams.azure.devops.TestPlans**
## azure.general ## azure.general
- **diagrams.azure.general.Allresources**
- **diagrams.azure.general.Azurehome** <img width="30" src="/img/resources/azure/general/allresources.png" alt="Allresources" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Developertools** **diagrams.azure.general.Allresources**
- **diagrams.azure.general.Helpsupport**
- **diagrams.azure.general.Information** <img width="30" src="/img/resources/azure/general/azurehome.png" alt="Azurehome" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Managementgroups** **diagrams.azure.general.Azurehome**
- **diagrams.azure.general.Marketplace**
- **diagrams.azure.general.Quickstartcenter** <img width="30" src="/img/resources/azure/general/developertools.png" alt="Developertools" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Recent** **diagrams.azure.general.Developertools**
- **diagrams.azure.general.Reservations**
- **diagrams.azure.general.Resource** <img width="30" src="/img/resources/azure/general/helpsupport.png" alt="Helpsupport" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Resourcegroups** **diagrams.azure.general.Helpsupport**
- **diagrams.azure.general.Servicehealth**
- **diagrams.azure.general.Shareddashboard** <img width="30" src="/img/resources/azure/general/information.png" alt="Information" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Subscriptions** **diagrams.azure.general.Information**
- **diagrams.azure.general.Support**
- **diagrams.azure.general.Supportrequests** <img width="30" src="/img/resources/azure/general/managementgroups.png" alt="Managementgroups" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Tag** **diagrams.azure.general.Managementgroups**
- **diagrams.azure.general.Tags**
- **diagrams.azure.general.Templates** <img width="30" src="/img/resources/azure/general/marketplace.png" alt="Marketplace" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Twousericon** **diagrams.azure.general.Marketplace**
- **diagrams.azure.general.Userhealthicon**
- **diagrams.azure.general.Usericon** <img width="30" src="/img/resources/azure/general/quickstartcenter.png" alt="Quickstartcenter" style="float: left; padding-right: 5px;" >
- **diagrams.azure.general.Userprivacy** **diagrams.azure.general.Quickstartcenter**
- **diagrams.azure.general.Userresource**
- **diagrams.azure.general.Whatsnew** <img width="30" src="/img/resources/azure/general/recent.png" alt="Recent" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Recent**
<img width="30" src="/img/resources/azure/general/reservations.png" alt="Reservations" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Reservations**
<img width="30" src="/img/resources/azure/general/resource.png" alt="Resource" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Resource**
<img width="30" src="/img/resources/azure/general/resourcegroups.png" alt="Resourcegroups" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Resourcegroups**
<img width="30" src="/img/resources/azure/general/servicehealth.png" alt="Servicehealth" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Servicehealth**
<img width="30" src="/img/resources/azure/general/shareddashboard.png" alt="Shareddashboard" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Shareddashboard**
<img width="30" src="/img/resources/azure/general/subscriptions.png" alt="Subscriptions" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Subscriptions**
<img width="30" src="/img/resources/azure/general/support.png" alt="Support" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Support**
<img width="30" src="/img/resources/azure/general/supportrequests.png" alt="Supportrequests" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Supportrequests**
<img width="30" src="/img/resources/azure/general/tag.png" alt="Tag" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Tag**
<img width="30" src="/img/resources/azure/general/tags.png" alt="Tags" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Tags**
<img width="30" src="/img/resources/azure/general/templates.png" alt="Templates" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Templates**
<img width="30" src="/img/resources/azure/general/twousericon.png" alt="Twousericon" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Twousericon**
<img width="30" src="/img/resources/azure/general/userhealthicon.png" alt="Userhealthicon" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Userhealthicon**
<img width="30" src="/img/resources/azure/general/usericon.png" alt="Usericon" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Usericon**
<img width="30" src="/img/resources/azure/general/userprivacy.png" alt="Userprivacy" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Userprivacy**
<img width="30" src="/img/resources/azure/general/userresource.png" alt="Userresource" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Userresource**
<img width="30" src="/img/resources/azure/general/whatsnew.png" alt="Whatsnew" style="float: left; padding-right: 5px;" >
**diagrams.azure.general.Whatsnew**
## azure.identity ## azure.identity
- **diagrams.azure.identity.AccessReview**
- **diagrams.azure.identity.ActiveDirectoryConnectHealth** <img width="30" src="/img/resources/azure/identity/access-review.png" alt="AccessReview" style="float: left; padding-right: 5px;" >
- **diagrams.azure.identity.ActiveDirectory** **diagrams.azure.identity.AccessReview**
- **diagrams.azure.identity.ADB2C**
- **diagrams.azure.identity.ADDomainServices** <img width="30" src="/img/resources/azure/identity/active-directory-connect-health.png" alt="ActiveDirectoryConnectHealth" style="float: left; padding-right: 5px;" >
- **diagrams.azure.identity.ADIdentityProtection** **diagrams.azure.identity.ActiveDirectoryConnectHealth**
- **diagrams.azure.identity.ADPrivilegedIdentityManagement**
- **diagrams.azure.identity.AppRegistrations** <img width="30" src="/img/resources/azure/identity/active-directory.png" alt="ActiveDirectory" style="float: left; padding-right: 5px;" >
- **diagrams.azure.identity.ConditionalAccess** **diagrams.azure.identity.ActiveDirectory**
- **diagrams.azure.identity.EnterpriseApplications**
- **diagrams.azure.identity.IdentityGovernance** <img width="30" src="/img/resources/azure/identity/ad-b2c.png" alt="ADB2C" style="float: left; padding-right: 5px;" >
- **diagrams.azure.identity.InformationProtection** **diagrams.azure.identity.ADB2C**
- **diagrams.azure.identity.ManagedIdentities**
<img width="30" src="/img/resources/azure/identity/ad-domain-services.png" alt="ADDomainServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.ADDomainServices**
<img width="30" src="/img/resources/azure/identity/ad-identity-protection.png" alt="ADIdentityProtection" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.ADIdentityProtection**
<img width="30" src="/img/resources/azure/identity/ad-privileged-identity-management.png" alt="ADPrivilegedIdentityManagement" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.ADPrivilegedIdentityManagement**
<img width="30" src="/img/resources/azure/identity/app-registrations.png" alt="AppRegistrations" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.AppRegistrations**
<img width="30" src="/img/resources/azure/identity/conditional-access.png" alt="ConditionalAccess" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.ConditionalAccess**
<img width="30" src="/img/resources/azure/identity/enterprise-applications.png" alt="EnterpriseApplications" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.EnterpriseApplications**
<img width="30" src="/img/resources/azure/identity/groups.png" alt="Groups" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.Groups**
<img width="30" src="/img/resources/azure/identity/identity-governance.png" alt="IdentityGovernance" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.IdentityGovernance**
<img width="30" src="/img/resources/azure/identity/information-protection.png" alt="InformationProtection" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.InformationProtection**
<img width="30" src="/img/resources/azure/identity/managed-identities.png" alt="ManagedIdentities" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.ManagedIdentities**
<img width="30" src="/img/resources/azure/identity/users.png" alt="Users" style="float: left; padding-right: 5px;" >
**diagrams.azure.identity.Users**
## azure.integration ## azure.integration
- **diagrams.azure.integration.APIForFhir**
- **diagrams.azure.integration.APIManagement** <img width="30" src="/img/resources/azure/integration/api-for-fhir.png" alt="APIForFhir" style="float: left; padding-right: 5px;" >
- **diagrams.azure.integration.AppConfiguration** **diagrams.azure.integration.APIForFhir**
- **diagrams.azure.integration.DataCatalog**
- **diagrams.azure.integration.EventGridDomains** <img width="30" src="/img/resources/azure/integration/api-management.png" alt="APIManagement" style="float: left; padding-right: 5px;" >
- **diagrams.azure.integration.EventGridSubscriptions** **diagrams.azure.integration.APIManagement**
- **diagrams.azure.integration.EventGridTopics**
- **diagrams.azure.integration.IntegrationAccounts** <img width="30" src="/img/resources/azure/integration/app-configuration.png" alt="AppConfiguration" style="float: left; padding-right: 5px;" >
- **diagrams.azure.integration.IntegrationServiceEnvironments** **diagrams.azure.integration.AppConfiguration**
- **diagrams.azure.integration.LogicAppsCustomConnector**
- **diagrams.azure.integration.LogicApps** <img width="30" src="/img/resources/azure/integration/data-catalog.png" alt="DataCatalog" style="float: left; padding-right: 5px;" >
- **diagrams.azure.integration.SendgridAccounts** **diagrams.azure.integration.DataCatalog**
- **diagrams.azure.integration.ServiceBusRelays**
- **diagrams.azure.integration.ServiceBus** <img width="30" src="/img/resources/azure/integration/event-grid-domains.png" alt="EventGridDomains" style="float: left; padding-right: 5px;" >
- **diagrams.azure.integration.ServiceCatalogManagedApplicationDefinitions** **diagrams.azure.integration.EventGridDomains**
- **diagrams.azure.integration.SoftwareAsAService**
- **diagrams.azure.integration.StorsimpleDeviceManagers** <img width="30" src="/img/resources/azure/integration/event-grid-subscriptions.png" alt="EventGridSubscriptions" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.EventGridSubscriptions**
<img width="30" src="/img/resources/azure/integration/event-grid-topics.png" alt="EventGridTopics" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.EventGridTopics**
<img width="30" src="/img/resources/azure/integration/integration-accounts.png" alt="IntegrationAccounts" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.IntegrationAccounts**
<img width="30" src="/img/resources/azure/integration/integration-service-environments.png" alt="IntegrationServiceEnvironments" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.IntegrationServiceEnvironments**
<img width="30" src="/img/resources/azure/integration/logic-apps-custom-connector.png" alt="LogicAppsCustomConnector" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.LogicAppsCustomConnector**
<img width="30" src="/img/resources/azure/integration/logic-apps.png" alt="LogicApps" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.LogicApps**
<img width="30" src="/img/resources/azure/integration/partner-topic.png" alt="PartnerTopic" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.PartnerTopic**
<img width="30" src="/img/resources/azure/integration/sendgrid-accounts.png" alt="SendgridAccounts" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.SendgridAccounts**
<img width="30" src="/img/resources/azure/integration/service-bus-relays.png" alt="ServiceBusRelays" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.ServiceBusRelays**
<img width="30" src="/img/resources/azure/integration/service-bus.png" alt="ServiceBus" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.ServiceBus**
<img width="30" src="/img/resources/azure/integration/service-catalog-managed-application-definitions.png" alt="ServiceCatalogManagedApplicationDefinitions" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.ServiceCatalogManagedApplicationDefinitions**
<img width="30" src="/img/resources/azure/integration/software-as-a-service.png" alt="SoftwareAsAService" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.SoftwareAsAService**
<img width="30" src="/img/resources/azure/integration/storsimple-device-managers.png" alt="StorsimpleDeviceManagers" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.StorsimpleDeviceManagers**
<img width="30" src="/img/resources/azure/integration/system-topic.png" alt="SystemTopic" style="float: left; padding-right: 5px;" >
**diagrams.azure.integration.SystemTopic**
## azure.iot ## azure.iot
- **diagrams.azure.iot.DeviceProvisioningServices**
- **diagrams.azure.iot.DigitalTwins** <img width="30" src="/img/resources/azure/iot/device-provisioning-services.png" alt="DeviceProvisioningServices" style="float: left; padding-right: 5px;" >
- **diagrams.azure.iot.IotCentralApplications** **diagrams.azure.iot.DeviceProvisioningServices**
- **diagrams.azure.iot.IotHubSecurity**
- **diagrams.azure.iot.IotHub** <img width="30" src="/img/resources/azure/iot/digital-twins.png" alt="DigitalTwins" style="float: left; padding-right: 5px;" >
- **diagrams.azure.iot.Maps** **diagrams.azure.iot.DigitalTwins**
- **diagrams.azure.iot.Sphere**
- **diagrams.azure.iot.TimeSeriesInsightsEnvironments** <img width="30" src="/img/resources/azure/iot/iot-central-applications.png" alt="IotCentralApplications" style="float: left; padding-right: 5px;" >
- **diagrams.azure.iot.TimeSeriesInsightsEventsSources** **diagrams.azure.iot.IotCentralApplications**
- **diagrams.azure.iot.Windows10IotCoreServices**
<img width="30" src="/img/resources/azure/iot/iot-hub-security.png" alt="IotHubSecurity" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.IotHubSecurity**
<img width="30" src="/img/resources/azure/iot/iot-hub.png" alt="IotHub" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.IotHub**
<img width="30" src="/img/resources/azure/iot/maps.png" alt="Maps" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.Maps**
<img width="30" src="/img/resources/azure/iot/sphere.png" alt="Sphere" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.Sphere**
<img width="30" src="/img/resources/azure/iot/time-series-insights-environments.png" alt="TimeSeriesInsightsEnvironments" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.TimeSeriesInsightsEnvironments**
<img width="30" src="/img/resources/azure/iot/time-series-insights-events-sources.png" alt="TimeSeriesInsightsEventsSources" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.TimeSeriesInsightsEventsSources**
<img width="30" src="/img/resources/azure/iot/windows-10-iot-core-services.png" alt="Windows10IotCoreServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.iot.Windows10IotCoreServices**
## azure.migration ## azure.migration
- **diagrams.azure.migration.DatabaseMigrationServices**
- **diagrams.azure.migration.MigrationProjects** <img width="30" src="/img/resources/azure/migration/data-box-edge.png" alt="DataBoxEdge" style="float: left; padding-right: 5px;" >
- **diagrams.azure.migration.RecoveryServicesVaults** **diagrams.azure.migration.DataBoxEdge**
<img width="30" src="/img/resources/azure/migration/data-box.png" alt="DataBox" style="float: left; padding-right: 5px;" >
**diagrams.azure.migration.DataBox**
<img width="30" src="/img/resources/azure/migration/database-migration-services.png" alt="DatabaseMigrationServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.migration.DatabaseMigrationServices**
<img width="30" src="/img/resources/azure/migration/migration-projects.png" alt="MigrationProjects" style="float: left; padding-right: 5px;" >
**diagrams.azure.migration.MigrationProjects**
<img width="30" src="/img/resources/azure/migration/recovery-services-vaults.png" alt="RecoveryServicesVaults" style="float: left; padding-right: 5px;" >
**diagrams.azure.migration.RecoveryServicesVaults**
## azure.ml ## azure.ml
- **diagrams.azure.ml.BatchAI**
- **diagrams.azure.ml.BotServices** <img width="30" src="/img/resources/azure/ml/azure-open-ai.png" alt="AzureOpenAI" style="float: left; padding-right: 5px;" >
- **diagrams.azure.ml.CognitiveServices** **diagrams.azure.ml.AzureOpenAI**
- **diagrams.azure.ml.GenomicsAccounts**
- **diagrams.azure.ml.MachineLearningServiceWorkspaces** <img width="30" src="/img/resources/azure/ml/azure-speed-to-text.png" alt="AzureSpeedToText" style="float: left; padding-right: 5px;" >
- **diagrams.azure.ml.MachineLearningStudioWebServicePlans** **diagrams.azure.ml.AzureSpeedToText**
- **diagrams.azure.ml.MachineLearningStudioWebServices**
- **diagrams.azure.ml.MachineLearningStudioWorkspaces** <img width="30" src="/img/resources/azure/ml/batch-ai.png" alt="BatchAI" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.BatchAI**
<img width="30" src="/img/resources/azure/ml/bot-services.png" alt="BotServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.BotServices**
<img width="30" src="/img/resources/azure/ml/cognitive-services.png" alt="CognitiveServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.CognitiveServices**
<img width="30" src="/img/resources/azure/ml/genomics-accounts.png" alt="GenomicsAccounts" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.GenomicsAccounts**
<img width="30" src="/img/resources/azure/ml/machine-learning-service-workspaces.png" alt="MachineLearningServiceWorkspaces" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.MachineLearningServiceWorkspaces**
<img width="30" src="/img/resources/azure/ml/machine-learning-studio-web-service-plans.png" alt="MachineLearningStudioWebServicePlans" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.MachineLearningStudioWebServicePlans**
<img width="30" src="/img/resources/azure/ml/machine-learning-studio-web-services.png" alt="MachineLearningStudioWebServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.MachineLearningStudioWebServices**
<img width="30" src="/img/resources/azure/ml/machine-learning-studio-workspaces.png" alt="MachineLearningStudioWorkspaces" style="float: left; padding-right: 5px;" >
**diagrams.azure.ml.MachineLearningStudioWorkspaces**
## azure.mobile ## azure.mobile
- **diagrams.azure.mobile.AppServiceMobile**
- **diagrams.azure.mobile.MobileEngagement** <img width="30" src="/img/resources/azure/mobile/app-service-mobile.png" alt="AppServiceMobile" style="float: left; padding-right: 5px;" >
- **diagrams.azure.mobile.NotificationHubs** **diagrams.azure.mobile.AppServiceMobile**
<img width="30" src="/img/resources/azure/mobile/mobile-engagement.png" alt="MobileEngagement" style="float: left; padding-right: 5px;" >
**diagrams.azure.mobile.MobileEngagement**
<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 ## azure.network
- **diagrams.azure.network.ApplicationGateway**
- **diagrams.azure.network.ApplicationSecurityGroups** <img width="30" src="/img/resources/azure/network/application-gateway.png" alt="ApplicationGateway" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.CDNProfiles** **diagrams.azure.network.ApplicationGateway**
- **diagrams.azure.network.Connections**
- **diagrams.azure.network.DDOSProtectionPlans** <img width="30" src="/img/resources/azure/network/application-security-groups.png" alt="ApplicationSecurityGroups" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.DNSPrivateZones** **diagrams.azure.network.ApplicationSecurityGroups**
- **diagrams.azure.network.DNSZones**
- **diagrams.azure.network.ExpressrouteCircuits** <img width="30" src="/img/resources/azure/network/cdn-profiles.png" alt="CDNProfiles" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.Firewall** **diagrams.azure.network.CDNProfiles**
- **diagrams.azure.network.FrontDoors**
- **diagrams.azure.network.LoadBalancers** <img width="30" src="/img/resources/azure/network/connections.png" alt="Connections" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.LocalNetworkGateways** **diagrams.azure.network.Connections**
- **diagrams.azure.network.NetworkInterfaces**
- **diagrams.azure.network.NetworkSecurityGroupsClassic** <img width="30" src="/img/resources/azure/network/ddos-protection-plans.png" alt="DDOSProtectionPlans" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.NetworkWatcher** **diagrams.azure.network.DDOSProtectionPlans**
- **diagrams.azure.network.OnPremisesDataGateways**
- **diagrams.azure.network.PublicIpAddresses** <img width="30" src="/img/resources/azure/network/dns-private-zones.png" alt="DNSPrivateZones" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.ReservedIpAddressesClassic** **diagrams.azure.network.DNSPrivateZones**
- **diagrams.azure.network.RouteFilters**
- **diagrams.azure.network.RouteTables** <img width="30" src="/img/resources/azure/network/dns-zones.png" alt="DNSZones" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.ServiceEndpointPolicies** **diagrams.azure.network.DNSZones**
- **diagrams.azure.network.Subnets**
- **diagrams.azure.network.TrafficManagerProfiles** <img width="30" src="/img/resources/azure/network/expressroute-circuits.png" alt="ExpressrouteCircuits" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.VirtualNetworkClassic** **diagrams.azure.network.ExpressrouteCircuits**
- **diagrams.azure.network.VirtualNetworkGateways**
- **diagrams.azure.network.VirtualNetworks** <img width="30" src="/img/resources/azure/network/firewall.png" alt="Firewall" style="float: left; padding-right: 5px;" >
- **diagrams.azure.network.VirtualWans** **diagrams.azure.network.Firewall**
<img width="30" src="/img/resources/azure/network/front-doors.png" alt="FrontDoors" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.FrontDoors**
<img width="30" src="/img/resources/azure/network/load-balancers.png" alt="LoadBalancers" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.LoadBalancers**
<img width="30" src="/img/resources/azure/network/local-network-gateways.png" alt="LocalNetworkGateways" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.LocalNetworkGateways**
<img width="30" src="/img/resources/azure/network/network-interfaces.png" alt="NetworkInterfaces" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.NetworkInterfaces**
<img width="30" src="/img/resources/azure/network/network-security-groups-classic.png" alt="NetworkSecurityGroupsClassic" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.NetworkSecurityGroupsClassic**
<img width="30" src="/img/resources/azure/network/network-watcher.png" alt="NetworkWatcher" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.NetworkWatcher**
<img width="30" src="/img/resources/azure/network/on-premises-data-gateways.png" alt="OnPremisesDataGateways" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.OnPremisesDataGateways**
<img width="30" src="/img/resources/azure/network/private-endpoint.png" alt="PrivateEndpoint" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.PrivateEndpoint**
<img width="30" src="/img/resources/azure/network/public-ip-addresses.png" alt="PublicIpAddresses" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.PublicIpAddresses**
<img width="30" src="/img/resources/azure/network/reserved-ip-addresses-classic.png" alt="ReservedIpAddressesClassic" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.ReservedIpAddressesClassic**
<img width="30" src="/img/resources/azure/network/route-filters.png" alt="RouteFilters" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.RouteFilters**
<img width="30" src="/img/resources/azure/network/route-tables.png" alt="RouteTables" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.RouteTables**
<img width="30" src="/img/resources/azure/network/service-endpoint-policies.png" alt="ServiceEndpointPolicies" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.ServiceEndpointPolicies**
<img width="30" src="/img/resources/azure/network/subnets.png" alt="Subnets" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.Subnets**
<img width="30" src="/img/resources/azure/network/traffic-manager-profiles.png" alt="TrafficManagerProfiles" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.TrafficManagerProfiles**
<img width="30" src="/img/resources/azure/network/virtual-network-classic.png" alt="VirtualNetworkClassic" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.VirtualNetworkClassic**
<img width="30" src="/img/resources/azure/network/virtual-network-gateways.png" alt="VirtualNetworkGateways" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.VirtualNetworkGateways**
<img width="30" src="/img/resources/azure/network/virtual-networks.png" alt="VirtualNetworks" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.VirtualNetworks**
<img width="30" src="/img/resources/azure/network/virtual-wans.png" alt="VirtualWans" style="float: left; padding-right: 5px;" >
**diagrams.azure.network.VirtualWans**
## azure.security ## azure.security
- **diagrams.azure.security.KeyVaults**
- **diagrams.azure.security.SecurityCenter** <img width="30" src="/img/resources/azure/security/application-security-groups.png" alt="ApplicationSecurityGroups" style="float: left; padding-right: 5px;" >
- **diagrams.azure.security.Sentinel** **diagrams.azure.security.ApplicationSecurityGroups**
<img width="30" src="/img/resources/azure/security/conditional-access.png" alt="ConditionalAccess" style="float: left; padding-right: 5px;" >
**diagrams.azure.security.ConditionalAccess**
<img width="30" src="/img/resources/azure/security/defender.png" alt="Defender" style="float: left; padding-right: 5px;" >
**diagrams.azure.security.Defender**
<img width="30" src="/img/resources/azure/security/extended-security-updates.png" alt="ExtendedSecurityUpdates" style="float: left; padding-right: 5px;" >
**diagrams.azure.security.ExtendedSecurityUpdates**
<img width="30" src="/img/resources/azure/security/key-vaults.png" alt="KeyVaults" style="float: left; padding-right: 5px;" >
**diagrams.azure.security.KeyVaults**
<img width="30" src="/img/resources/azure/security/security-center.png" alt="SecurityCenter" style="float: left; padding-right: 5px;" >
**diagrams.azure.security.SecurityCenter**
<img width="30" src="/img/resources/azure/security/sentinel.png" alt="Sentinel" style="float: left; padding-right: 5px;" >
**diagrams.azure.security.Sentinel**
## azure.storage ## azure.storage
- **diagrams.azure.storage.ArchiveStorage**
- **diagrams.azure.storage.Azurefxtedgefiler** <img width="30" src="/img/resources/azure/storage/archive-storage.png" alt="ArchiveStorage" style="float: left; padding-right: 5px;" >
- **diagrams.azure.storage.BlobStorage** **diagrams.azure.storage.ArchiveStorage**
- **diagrams.azure.storage.DataBoxEdgeDataBoxGateway**
- **diagrams.azure.storage.DataBox** <img width="30" src="/img/resources/azure/storage/azurefxtedgefiler.png" alt="Azurefxtedgefiler" style="float: left; padding-right: 5px;" >
- **diagrams.azure.storage.DataLakeStorage** **diagrams.azure.storage.Azurefxtedgefiler**
- **diagrams.azure.storage.GeneralStorage**
- **diagrams.azure.storage.NetappFiles** <img width="30" src="/img/resources/azure/storage/blob-storage.png" alt="BlobStorage" style="float: left; padding-right: 5px;" >
- **diagrams.azure.storage.QueuesStorage** **diagrams.azure.storage.BlobStorage**
- **diagrams.azure.storage.StorageAccountsClassic**
- **diagrams.azure.storage.StorageAccounts** <img width="30" src="/img/resources/azure/storage/data-box-edge-data-box-gateway.png" alt="DataBoxEdgeDataBoxGateway" style="float: left; padding-right: 5px;" >
- **diagrams.azure.storage.StorageExplorer** **diagrams.azure.storage.DataBoxEdgeDataBoxGateway**
- **diagrams.azure.storage.StorageSyncServices**
- **diagrams.azure.storage.StorsimpleDataManagers** <img width="30" src="/img/resources/azure/storage/data-box.png" alt="DataBox" style="float: left; padding-right: 5px;" >
- **diagrams.azure.storage.StorsimpleDeviceManagers** **diagrams.azure.storage.DataBox**
- **diagrams.azure.storage.TableStorage**
<img width="30" src="/img/resources/azure/storage/data-lake-storage.png" alt="DataLakeStorage" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.DataLakeStorage**
<img width="30" src="/img/resources/azure/storage/general-storage.png" alt="GeneralStorage" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.GeneralStorage**
<img width="30" src="/img/resources/azure/storage/netapp-files.png" alt="NetappFiles" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.NetappFiles**
<img width="30" src="/img/resources/azure/storage/queues-storage.png" alt="QueuesStorage" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.QueuesStorage**
<img width="30" src="/img/resources/azure/storage/storage-accounts-classic.png" alt="StorageAccountsClassic" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.StorageAccountsClassic**
<img width="30" src="/img/resources/azure/storage/storage-accounts.png" alt="StorageAccounts" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.StorageAccounts**
<img width="30" src="/img/resources/azure/storage/storage-explorer.png" alt="StorageExplorer" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.StorageExplorer**
<img width="30" src="/img/resources/azure/storage/storage-sync-services.png" alt="StorageSyncServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.StorageSyncServices**
<img width="30" src="/img/resources/azure/storage/storsimple-data-managers.png" alt="StorsimpleDataManagers" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.StorsimpleDataManagers**
<img width="30" src="/img/resources/azure/storage/storsimple-device-managers.png" alt="StorsimpleDeviceManagers" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.StorsimpleDeviceManagers**
<img width="30" src="/img/resources/azure/storage/table-storage.png" alt="TableStorage" style="float: left; padding-right: 5px;" >
**diagrams.azure.storage.TableStorage**
## azure.web ## azure.web
- **diagrams.azure.web.APIConnections**
- **diagrams.azure.web.AppServiceCertificates** <img width="30" src="/img/resources/azure/web/api-connections.png" alt="APIConnections" style="float: left; padding-right: 5px;" >
- **diagrams.azure.web.AppServiceDomains** **diagrams.azure.web.APIConnections**
- **diagrams.azure.web.AppServiceEnvironments**
- **diagrams.azure.web.AppServicePlans** <img width="30" src="/img/resources/azure/web/app-service-certificates.png" alt="AppServiceCertificates" style="float: left; padding-right: 5px;" >
- **diagrams.azure.web.AppServices** **diagrams.azure.web.AppServiceCertificates**
- **diagrams.azure.web.MediaServices**
- **diagrams.azure.web.NotificationHubNamespaces** <img width="30" src="/img/resources/azure/web/app-service-domains.png" alt="AppServiceDomains" style="float: left; padding-right: 5px;" >
- **diagrams.azure.web.Search** **diagrams.azure.web.AppServiceDomains**
- **diagrams.azure.web.Signalr**
<img width="30" src="/img/resources/azure/web/app-service-environments.png" alt="AppServiceEnvironments" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.AppServiceEnvironments**
<img width="30" src="/img/resources/azure/web/app-service-plans.png" alt="AppServicePlans" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.AppServicePlans**
<img width="30" src="/img/resources/azure/web/app-services.png" alt="AppServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.AppServices**
<img width="30" src="/img/resources/azure/web/media-services.png" alt="MediaServices" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.MediaServices**
<img width="30" src="/img/resources/azure/web/notification-hub-namespaces.png" alt="NotificationHubNamespaces" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.NotificationHubNamespaces**
<img width="30" src="/img/resources/azure/web/search.png" alt="Search" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.Search**
<img width="30" src="/img/resources/azure/web/signalr.png" alt="Signalr" style="float: left; padding-right: 5px;" >
**diagrams.azure.web.Signalr**

@ -0,0 +1,77 @@
---
id: c4
title: C4
---
## C4 Diagrams
[C4](https://c4model.com/) is a standardized model to visualize software architecture.
You can generate C4 diagrams by using the node and edge classes from the `diagrams.c4` package:
```python
from diagrams import Diagram
from diagrams.c4 import Person, Container, Database, System, SystemBoundary, Relationship
graph_attr = {
"splines": "spline",
}
with Diagram("Container diagram for Internet Banking System", direction="TB", graph_attr=graph_attr):
customer = Person(
name="Personal Banking Customer", description="A customer of the bank, with personal bank accounts."
)
with SystemBoundary("Internet Banking System"):
webapp = Container(
name="Web Application",
technology="Java and Spring MVC",
description="Delivers the static content and the Internet banking single page application.",
)
spa = Container(
name="Single-Page Application",
technology="Javascript and Angular",
description="Provides all of the Internet banking functionality to customers via their web browser.",
)
mobileapp = Container(
name="Mobile App",
technology="Xamarin",
description="Provides a limited subset of the Internet banking functionality to customers via their mobile device.",
)
api = Container(
name="API Application",
technology="Java and Spring MVC",
description="Provides Internet banking functionality via a JSON/HTTPS API.",
)
database = Database(
name="Database",
technology="Oracle Database Schema",
description="Stores user registration information, hashed authentication credentials, access logs, etc.",
)
email = System(name="E-mail System", description="The internal Microsoft Exchange e-mail system.", external=True)
mainframe = System(
name="Mainframe Banking System",
description="Stores all of the core banking information about customers, accounts, transactions, etc.",
external=True,
)
customer >> Relationship("Visits bigbank.com/ib using [HTTPS]") >> webapp
customer >> Relationship("Views account balances, and makes payments using") >> [spa, mobileapp]
webapp >> Relationship("Delivers to the customer's web browser") >> spa
spa >> Relationship("Make API calls to [JSON/HTTPS]") >> api
mobileapp >> Relationship("Make API calls to [JSON/HTTPS]") >> api
api >> Relationship("reads from and writes to") >> database
api >> Relationship("Sends email using [SMTP]") >> email
api >> Relationship("Makes API calls to [XML/HTTPS]") >> mainframe
customer << Relationship("Sends e-mails to") << email
```
It will produce the following diagram:
![c4](/img/c4.png)

@ -0,0 +1,93 @@
---
id: digitalocean
title: DigitalOcean
---
Node classes list of the digitalocean provider.
## digitalocean.compute
<img width="30" src="/img/resources/digitalocean/compute/containers.png" alt="Containers" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.Containers**
<img width="30" src="/img/resources/digitalocean/compute/docker.png" alt="Docker" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.Docker**
<img width="30" src="/img/resources/digitalocean/compute/droplet-connect.png" alt="DropletConnect" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.DropletConnect**
<img width="30" src="/img/resources/digitalocean/compute/droplet-snapshot.png" alt="DropletSnapshot" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.DropletSnapshot**
<img width="30" src="/img/resources/digitalocean/compute/droplet.png" alt="Droplet" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.Droplet**
<img width="30" src="/img/resources/digitalocean/compute/k8s-cluster.png" alt="K8SCluster" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.K8SCluster**
<img width="30" src="/img/resources/digitalocean/compute/k8s-node-pool.png" alt="K8SNodePool" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.K8SNodePool**
<img width="30" src="/img/resources/digitalocean/compute/k8s-node.png" alt="K8SNode" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.compute.K8SNode**
## digitalocean.database
<img width="30" src="/img/resources/digitalocean/database/dbaas-primary-standby-more.png" alt="DbaasPrimaryStandbyMore" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.database.DbaasPrimaryStandbyMore**
<img width="30" src="/img/resources/digitalocean/database/dbaas-primary.png" alt="DbaasPrimary" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.database.DbaasPrimary**
<img width="30" src="/img/resources/digitalocean/database/dbaas-read-only.png" alt="DbaasReadOnly" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.database.DbaasReadOnly**
<img width="30" src="/img/resources/digitalocean/database/dbaas-standby.png" alt="DbaasStandby" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.database.DbaasStandby**
## digitalocean.network
<img width="30" src="/img/resources/digitalocean/network/certificate.png" alt="Certificate" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.Certificate**
<img width="30" src="/img/resources/digitalocean/network/domain-registration.png" alt="DomainRegistration" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.DomainRegistration**
<img width="30" src="/img/resources/digitalocean/network/domain.png" alt="Domain" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.Domain**
<img width="30" src="/img/resources/digitalocean/network/firewall.png" alt="Firewall" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.Firewall**
<img width="30" src="/img/resources/digitalocean/network/floating-ip.png" alt="FloatingIp" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.FloatingIp**
<img width="30" src="/img/resources/digitalocean/network/internet-gateway.png" alt="InternetGateway" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.InternetGateway**
<img width="30" src="/img/resources/digitalocean/network/load-balancer.png" alt="LoadBalancer" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.LoadBalancer**
<img width="30" src="/img/resources/digitalocean/network/managed-vpn.png" alt="ManagedVpn" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.ManagedVpn**
<img width="30" src="/img/resources/digitalocean/network/vpc.png" alt="Vpc" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.network.Vpc**
## digitalocean.storage
<img width="30" src="/img/resources/digitalocean/storage/folder.png" alt="Folder" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.storage.Folder**
<img width="30" src="/img/resources/digitalocean/storage/space.png" alt="Space" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.storage.Space**
<img width="30" src="/img/resources/digitalocean/storage/volume-snapshot.png" alt="VolumeSnapshot" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.storage.VolumeSnapshot**
<img width="30" src="/img/resources/digitalocean/storage/volume.png" alt="Volume" style="float: left; padding-right: 5px;" >
**diagrams.digitalocean.storage.Volume**

@ -3,48 +3,160 @@ id: elastic
title: Elastic title: Elastic
--- ---
Node classes list of elastic provider. Node classes list of the elastic provider.
## elastic.agent
<img width="30" src="/img/resources/elastic/agent/agent.png" alt="Agent" style="float: left; padding-right: 5px;" >
**diagrams.elastic.agent.Agent**
<img width="30" src="/img/resources/elastic/agent/endpoint.png" alt="Endpoint" style="float: left; padding-right: 5px;" >
**diagrams.elastic.agent.Endpoint**
<img width="30" src="/img/resources/elastic/agent/fleet.png" alt="Fleet" style="float: left; padding-right: 5px;" >
**diagrams.elastic.agent.Fleet**
<img width="30" src="/img/resources/elastic/agent/integrations.png" alt="Integrations" style="float: left; padding-right: 5px;" >
**diagrams.elastic.agent.Integrations**
## elastic.beats
<img width="30" src="/img/resources/elastic/beats/apm.png" alt="APM" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.APM**
<img width="30" src="/img/resources/elastic/beats/auditbeat.png" alt="Auditbeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Auditbeat**
<img width="30" src="/img/resources/elastic/beats/filebeat.png" alt="Filebeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Filebeat**
<img width="30" src="/img/resources/elastic/beats/functionbeat.png" alt="Functionbeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Functionbeat**
<img width="30" src="/img/resources/elastic/beats/heartbeat.png" alt="Heartbeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Heartbeat**
<img width="30" src="/img/resources/elastic/beats/metricbeat.png" alt="Metricbeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Metricbeat**
<img width="30" src="/img/resources/elastic/beats/packetbeat.png" alt="Packetbeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Packetbeat**
<img width="30" src="/img/resources/elastic/beats/winlogbeat.png" alt="Winlogbeat" style="float: left; padding-right: 5px;" >
**diagrams.elastic.beats.Winlogbeat**
## elastic.elasticsearch ## elastic.elasticsearch
- **diagrams.elastic.elasticsearch.Alerting**
- **diagrams.elastic.elasticsearch.Beats** <img width="30" src="/img/resources/elastic/elasticsearch/alerting.png" alt="Alerting" style="float: left; padding-right: 5px;" >
- **diagrams.elastic.elasticsearch.Elasticsearch** **diagrams.elastic.elasticsearch.Alerting**
- **diagrams.elastic.elasticsearch.Kibana**
- **diagrams.elastic.elasticsearch.Logstash**, **LogStash** (alias) <img width="30" src="/img/resources/elastic/elasticsearch/beats.png" alt="Beats" style="float: left; padding-right: 5px;" >
- **diagrams.elastic.elasticsearch.MachineLearning** **diagrams.elastic.elasticsearch.Beats**
- **diagrams.elastic.elasticsearch.Maps**
- **diagrams.elastic.elasticsearch.Monitoring** <img width="30" src="/img/resources/elastic/elasticsearch/elasticsearch.png" alt="Elasticsearch" style="float: left; padding-right: 5px;" >
- **diagrams.elastic.elasticsearch.SecuritySettings** **diagrams.elastic.elasticsearch.Elasticsearch**, **ElasticSearch** (alias)
- **diagrams.elastic.elasticsearch.Sql**
<img width="30" src="/img/resources/elastic/elasticsearch/kibana.png" alt="Kibana" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.Kibana**
<img width="30" src="/img/resources/elastic/elasticsearch/logstash-pipeline.png" alt="LogstashPipeline" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.LogstashPipeline**
<img width="30" src="/img/resources/elastic/elasticsearch/logstash.png" alt="Logstash" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.Logstash**, **LogStash** (alias)
<img width="30" src="/img/resources/elastic/elasticsearch/machine-learning.png" alt="MachineLearning" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.MachineLearning**, **ML** (alias)
<img width="30" src="/img/resources/elastic/elasticsearch/map-services.png" alt="MapServices" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.MapServices**
<img width="30" src="/img/resources/elastic/elasticsearch/maps.png" alt="Maps" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.Maps**
<img width="30" src="/img/resources/elastic/elasticsearch/monitoring.png" alt="Monitoring" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.Monitoring**
<img width="30" src="/img/resources/elastic/elasticsearch/searchable-snapshots.png" alt="SearchableSnapshots" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.SearchableSnapshots**
<img width="30" src="/img/resources/elastic/elasticsearch/security-settings.png" alt="SecuritySettings" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.SecuritySettings**
<img width="30" src="/img/resources/elastic/elasticsearch/sql.png" alt="SQL" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.SQL**
<img width="30" src="/img/resources/elastic/elasticsearch/stack.png" alt="Stack" style="float: left; padding-right: 5px;" >
**diagrams.elastic.elasticsearch.Stack**
## elastic.enterprisesearch ## elastic.enterprisesearch
- **diagrams.elastic.enterprisesearch.AppSearch**
- **diagrams.elastic.enterprisesearch.EnterpriseSearch** <img width="30" src="/img/resources/elastic/enterprisesearch/app-search.png" alt="AppSearch" style="float: left; padding-right: 5px;" >
- **diagrams.elastic.enterprisesearch.SiteSearch** **diagrams.elastic.enterprisesearch.AppSearch**
- **diagrams.elastic.enterprisesearch.WorkplaceSearch**
<img width="30" src="/img/resources/elastic/enterprisesearch/crawler.png" alt="Crawler" style="float: left; padding-right: 5px;" >
**diagrams.elastic.enterprisesearch.Crawler**
<img width="30" src="/img/resources/elastic/enterprisesearch/enterprise-search.png" alt="EnterpriseSearch" style="float: left; padding-right: 5px;" >
**diagrams.elastic.enterprisesearch.EnterpriseSearch**
<img width="30" src="/img/resources/elastic/enterprisesearch/site-search.png" alt="SiteSearch" style="float: left; padding-right: 5px;" >
**diagrams.elastic.enterprisesearch.SiteSearch**
<img width="30" src="/img/resources/elastic/enterprisesearch/workplace-search.png" alt="WorkplaceSearch" style="float: left; padding-right: 5px;" >
**diagrams.elastic.enterprisesearch.WorkplaceSearch**
## elastic.observability ## elastic.observability
- **diagrams.elastic.observability.APM**
- **diagrams.elastic.observability.Logs** <img width="30" src="/img/resources/elastic/observability/apm.png" alt="APM" style="float: left; padding-right: 5px;" >
- **diagrams.elastic.observability.Metrics** **diagrams.elastic.observability.APM**
- **diagrams.elastic.observability.Observability**
- **diagrams.elastic.observability.Uptime** <img width="30" src="/img/resources/elastic/observability/logs.png" alt="Logs" style="float: left; padding-right: 5px;" >
**diagrams.elastic.observability.Logs**
<img width="30" src="/img/resources/elastic/observability/metrics.png" alt="Metrics" style="float: left; padding-right: 5px;" >
**diagrams.elastic.observability.Metrics**
<img width="30" src="/img/resources/elastic/observability/observability.png" alt="Observability" style="float: left; padding-right: 5px;" >
**diagrams.elastic.observability.Observability**
<img width="30" src="/img/resources/elastic/observability/uptime.png" alt="Uptime" style="float: left; padding-right: 5px;" >
**diagrams.elastic.observability.Uptime**
## elastic.orchestration ## elastic.orchestration
- **diagrams.elastic.orchestration.ECE**
- **diagrams.elastic.orchestration.ECK** <img width="30" src="/img/resources/elastic/orchestration/ece.png" alt="ECE" style="float: left; padding-right: 5px;" >
**diagrams.elastic.orchestration.ECE**
<img width="30" src="/img/resources/elastic/orchestration/eck.png" alt="ECK" style="float: left; padding-right: 5px;" >
**diagrams.elastic.orchestration.ECK**
## elastic.saas ## elastic.saas
- **diagrams.elastic.saas.Cloud**
- **diagrams.elastic.saas.Elastic** <img width="30" src="/img/resources/elastic/saas/cloud.png" alt="Cloud" style="float: left; padding-right: 5px;" >
**diagrams.elastic.saas.Cloud**
<img width="30" src="/img/resources/elastic/saas/elastic.png" alt="Elastic" style="float: left; padding-right: 5px;" >
**diagrams.elastic.saas.Elastic**
## elastic.security ## elastic.security
- **diagrams.elastic.security.Endpoint**
- **diagrams.elastic.security.Security** <img width="30" src="/img/resources/elastic/security/endpoint.png" alt="Endpoint" style="float: left; padding-right: 5px;" >
- **diagrams.elastic.security.SIEM** **diagrams.elastic.security.Endpoint**
<img width="30" src="/img/resources/elastic/security/security.png" alt="Security" style="float: left; padding-right: 5px;" >
**diagrams.elastic.security.Security**
<img width="30" src="/img/resources/elastic/security/siem.png" alt="SIEM" style="float: left; padding-right: 5px;" >
**diagrams.elastic.security.SIEM**
<img width="30" src="/img/resources/elastic/security/xdr.png" alt="Xdr" style="float: left; padding-right: 5px;" >
**diagrams.elastic.security.Xdr**

@ -3,41 +3,85 @@ id: firebase
title: Firebase title: Firebase
--- ---
Node classes list of firebase provider. Node classes list of the firebase provider.
## firebase.base ## firebase.base
- **diagrams.firebase.base.Firebase**
<img width="30" src="/img/resources/firebase/base/firebase.png" alt="Firebase" style="float: left; padding-right: 5px;" >
**diagrams.firebase.base.Firebase**
## firebase.develop ## firebase.develop
- **diagrams.firebase.develop.Authentication**
- **diagrams.firebase.develop.Firestore** <img width="30" src="/img/resources/firebase/develop/authentication.png" alt="Authentication" style="float: left; padding-right: 5px;" >
- **diagrams.firebase.develop.Functions** **diagrams.firebase.develop.Authentication**
- **diagrams.firebase.develop.Hosting**
- **diagrams.firebase.develop.MLKit** <img width="30" src="/img/resources/firebase/develop/firestore.png" alt="Firestore" style="float: left; padding-right: 5px;" >
- **diagrams.firebase.develop.RealtimeDatabase** **diagrams.firebase.develop.Firestore**
- **diagrams.firebase.develop.Storage**
<img width="30" src="/img/resources/firebase/develop/functions.png" alt="Functions" style="float: left; padding-right: 5px;" >
**diagrams.firebase.develop.Functions**
<img width="30" src="/img/resources/firebase/develop/hosting.png" alt="Hosting" style="float: left; padding-right: 5px;" >
**diagrams.firebase.develop.Hosting**
<img width="30" src="/img/resources/firebase/develop/ml-kit.png" alt="MLKit" style="float: left; padding-right: 5px;" >
**diagrams.firebase.develop.MLKit**
<img width="30" src="/img/resources/firebase/develop/realtime-database.png" alt="RealtimeDatabase" style="float: left; padding-right: 5px;" >
**diagrams.firebase.develop.RealtimeDatabase**
<img width="30" src="/img/resources/firebase/develop/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
**diagrams.firebase.develop.Storage**
## firebase.extentions ## firebase.extentions
- **diagrams.firebase.extentions.Extensions**
<img width="30" src="/img/resources/firebase/extentions/extensions.png" alt="Extensions" style="float: left; padding-right: 5px;" >
**diagrams.firebase.extentions.Extensions**
## firebase.grow ## firebase.grow
- **diagrams.firebase.grow.ABTesting**
- **diagrams.firebase.grow.AppIndexing** <img width="30" src="/img/resources/firebase/grow/ab-testing.png" alt="ABTesting" style="float: left; padding-right: 5px;" >
- **diagrams.firebase.grow.DynamicLinks** **diagrams.firebase.grow.ABTesting**
- **diagrams.firebase.grow.InAppMessaging**
- **diagrams.firebase.grow.Invites** <img width="30" src="/img/resources/firebase/grow/app-indexing.png" alt="AppIndexing" style="float: left; padding-right: 5px;" >
- **diagrams.firebase.grow.Messaging**, **FCM** (alias) **diagrams.firebase.grow.AppIndexing**
- **diagrams.firebase.grow.Predictions**
- **diagrams.firebase.grow.RemoteConfig** <img width="30" src="/img/resources/firebase/grow/dynamic-links.png" alt="DynamicLinks" style="float: left; padding-right: 5px;" >
**diagrams.firebase.grow.DynamicLinks**
<img width="30" src="/img/resources/firebase/grow/in-app-messaging.png" alt="InAppMessaging" style="float: left; padding-right: 5px;" >
**diagrams.firebase.grow.InAppMessaging**
<img width="30" src="/img/resources/firebase/grow/invites.png" alt="Invites" style="float: left; padding-right: 5px;" >
**diagrams.firebase.grow.Invites**
<img width="30" src="/img/resources/firebase/grow/messaging.png" alt="Messaging" style="float: left; padding-right: 5px;" >
**diagrams.firebase.grow.Messaging**, **FCM** (alias)
<img width="30" src="/img/resources/firebase/grow/predictions.png" alt="Predictions" style="float: left; padding-right: 5px;" >
**diagrams.firebase.grow.Predictions**
<img width="30" src="/img/resources/firebase/grow/remote-config.png" alt="RemoteConfig" style="float: left; padding-right: 5px;" >
**diagrams.firebase.grow.RemoteConfig**
## firebase.quality ## firebase.quality
- **diagrams.firebase.quality.AppDistribution**
- **diagrams.firebase.quality.CrashReporting** <img width="30" src="/img/resources/firebase/quality/app-distribution.png" alt="AppDistribution" style="float: left; padding-right: 5px;" >
- **diagrams.firebase.quality.Crashlytics** **diagrams.firebase.quality.AppDistribution**
- **diagrams.firebase.quality.PerformanceMonitoring**
- **diagrams.firebase.quality.TestLab** <img width="30" src="/img/resources/firebase/quality/crash-reporting.png" alt="CrashReporting" style="float: left; padding-right: 5px;" >
**diagrams.firebase.quality.CrashReporting**
<img width="30" src="/img/resources/firebase/quality/crashlytics.png" alt="Crashlytics" style="float: left; padding-right: 5px;" >
**diagrams.firebase.quality.Crashlytics**
<img width="30" src="/img/resources/firebase/quality/performance-monitoring.png" alt="PerformanceMonitoring" style="float: left; padding-right: 5px;" >
**diagrams.firebase.quality.PerformanceMonitoring**
<img width="30" src="/img/resources/firebase/quality/test-lab.png" alt="TestLab" style="float: left; padding-right: 5px;" >
**diagrams.firebase.quality.TestLab**

@ -3,130 +3,319 @@ id: gcp
title: GCP title: GCP
--- ---
Node classes list of gcp provider. Node classes list of the gcp provider.
## gcp.analytics ## gcp.analytics
- **diagrams.gcp.analytics.Bigquery**, **BigQuery** (alias)
- **diagrams.gcp.analytics.Composer** <img width="30" src="/img/resources/gcp/analytics/bigquery.png" alt="Bigquery" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.analytics.DataCatalog** **diagrams.gcp.analytics.Bigquery**, **BigQuery** (alias)
- **diagrams.gcp.analytics.DataFusion**
- **diagrams.gcp.analytics.Dataflow** <img width="30" src="/img/resources/gcp/analytics/composer.png" alt="Composer" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.analytics.Datalab** **diagrams.gcp.analytics.Composer**
- **diagrams.gcp.analytics.Dataprep**
- **diagrams.gcp.analytics.Dataproc** <img width="30" src="/img/resources/gcp/analytics/data-catalog.png" alt="DataCatalog" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.analytics.Genomics** **diagrams.gcp.analytics.DataCatalog**
- **diagrams.gcp.analytics.Pubsub**, **PubSub** (alias)
<img width="30" src="/img/resources/gcp/analytics/data-fusion.png" alt="DataFusion" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.DataFusion**
<img width="30" src="/img/resources/gcp/analytics/dataflow.png" alt="Dataflow" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.Dataflow**
<img width="30" src="/img/resources/gcp/analytics/datalab.png" alt="Datalab" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.Datalab**
<img width="30" src="/img/resources/gcp/analytics/dataprep.png" alt="Dataprep" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.Dataprep**
<img width="30" src="/img/resources/gcp/analytics/dataproc.png" alt="Dataproc" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.Dataproc**
<img width="30" src="/img/resources/gcp/analytics/genomics.png" alt="Genomics" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.Genomics**
<img width="30" src="/img/resources/gcp/analytics/pubsub.png" alt="Pubsub" style="float: left; padding-right: 5px;" >
**diagrams.gcp.analytics.Pubsub**, **PubSub** (alias)
## gcp.api ## gcp.api
- **diagrams.gcp.api.Endpoints**
<img width="30" src="/img/resources/gcp/api/api-gateway.png" alt="APIGateway" style="float: left; padding-right: 5px;" >
**diagrams.gcp.api.APIGateway**
<img width="30" src="/img/resources/gcp/api/apigee.png" alt="Apigee" style="float: left; padding-right: 5px;" >
**diagrams.gcp.api.Apigee**
<img width="30" src="/img/resources/gcp/api/endpoints.png" alt="Endpoints" style="float: left; padding-right: 5px;" >
**diagrams.gcp.api.Endpoints**
## gcp.compute ## gcp.compute
- **diagrams.gcp.compute.AppEngine**, **GAE** (alias)
- **diagrams.gcp.compute.ComputeEngine**, **GCE** (alias) <img width="30" src="/img/resources/gcp/compute/app-engine.png" alt="AppEngine" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.compute.ContainerOptimizedOS** **diagrams.gcp.compute.AppEngine**, **GAE** (alias)
- **diagrams.gcp.compute.Functions**, **GCF** (alias)
- **diagrams.gcp.compute.GKEOnPrem** <img width="30" src="/img/resources/gcp/compute/compute-engine.png" alt="ComputeEngine" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.compute.GPU** **diagrams.gcp.compute.ComputeEngine**, **GCE** (alias)
- **diagrams.gcp.compute.KubernetesEngine**, **GKE** (alias)
- **diagrams.gcp.compute.Run** <img width="30" src="/img/resources/gcp/compute/container-optimized-os.png" alt="ContainerOptimizedOS" style="float: left; padding-right: 5px;" >
**diagrams.gcp.compute.ContainerOptimizedOS**
<img width="30" src="/img/resources/gcp/compute/functions.png" alt="Functions" style="float: left; padding-right: 5px;" >
**diagrams.gcp.compute.Functions**, **GCF** (alias)
<img width="30" src="/img/resources/gcp/compute/gke-on-prem.png" alt="GKEOnPrem" style="float: left; padding-right: 5px;" >
**diagrams.gcp.compute.GKEOnPrem**
<img width="30" src="/img/resources/gcp/compute/gpu.png" alt="GPU" style="float: left; padding-right: 5px;" >
**diagrams.gcp.compute.GPU**
<img width="30" src="/img/resources/gcp/compute/kubernetes-engine.png" alt="KubernetesEngine" style="float: left; padding-right: 5px;" >
**diagrams.gcp.compute.KubernetesEngine**, **GKE** (alias)
<img width="30" src="/img/resources/gcp/compute/run.png" alt="Run" style="float: left; padding-right: 5px;" >
**diagrams.gcp.compute.Run**
## gcp.database ## gcp.database
- **diagrams.gcp.database.Bigtable**, **BigTable** (alias)
- **diagrams.gcp.database.Datastore** <img width="30" src="/img/resources/gcp/database/bigtable.png" alt="Bigtable" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.database.Firestore** **diagrams.gcp.database.Bigtable**, **BigTable** (alias)
- **diagrams.gcp.database.Memorystore**
- **diagrams.gcp.database.Spanner** <img width="30" src="/img/resources/gcp/database/datastore.png" alt="Datastore" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.database.SQL** **diagrams.gcp.database.Datastore**
<img width="30" src="/img/resources/gcp/database/firestore.png" alt="Firestore" style="float: left; padding-right: 5px;" >
**diagrams.gcp.database.Firestore**
<img width="30" src="/img/resources/gcp/database/memorystore.png" alt="Memorystore" style="float: left; padding-right: 5px;" >
**diagrams.gcp.database.Memorystore**
<img width="30" src="/img/resources/gcp/database/spanner.png" alt="Spanner" style="float: left; padding-right: 5px;" >
**diagrams.gcp.database.Spanner**
<img width="30" src="/img/resources/gcp/database/sql.png" alt="SQL" style="float: left; padding-right: 5px;" >
**diagrams.gcp.database.SQL**
## gcp.devtools ## gcp.devtools
- **diagrams.gcp.devtools.Build**
- **diagrams.gcp.devtools.CodeForIntellij** <img width="30" src="/img/resources/gcp/devtools/build.png" alt="Build" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.devtools.Code** **diagrams.gcp.devtools.Build**
- **diagrams.gcp.devtools.ContainerRegistry**, **GCR** (alias)
- **diagrams.gcp.devtools.GradleAppEnginePlugin** <img width="30" src="/img/resources/gcp/devtools/code-for-intellij.png" alt="CodeForIntellij" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.devtools.IdePlugins** **diagrams.gcp.devtools.CodeForIntellij**
- **diagrams.gcp.devtools.MavenAppEnginePlugin**
- **diagrams.gcp.devtools.Scheduler** <img width="30" src="/img/resources/gcp/devtools/code.png" alt="Code" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.devtools.SDK** **diagrams.gcp.devtools.Code**
- **diagrams.gcp.devtools.SourceRepositories**
- **diagrams.gcp.devtools.Tasks** <img width="30" src="/img/resources/gcp/devtools/container-registry.png" alt="ContainerRegistry" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.devtools.TestLab** **diagrams.gcp.devtools.ContainerRegistry**, **GCR** (alias)
- **diagrams.gcp.devtools.ToolsForEclipse**
- **diagrams.gcp.devtools.ToolsForPowershell** <img width="30" src="/img/resources/gcp/devtools/gradle-app-engine-plugin.png" alt="GradleAppEnginePlugin" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.devtools.ToolsForVisualStudio** **diagrams.gcp.devtools.GradleAppEnginePlugin**
<img width="30" src="/img/resources/gcp/devtools/ide-plugins.png" alt="IdePlugins" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.IdePlugins**
<img width="30" src="/img/resources/gcp/devtools/maven-app-engine-plugin.png" alt="MavenAppEnginePlugin" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.MavenAppEnginePlugin**
<img width="30" src="/img/resources/gcp/devtools/scheduler.png" alt="Scheduler" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.Scheduler**
<img width="30" src="/img/resources/gcp/devtools/sdk.png" alt="SDK" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.SDK**
<img width="30" src="/img/resources/gcp/devtools/source-repositories.png" alt="SourceRepositories" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.SourceRepositories**
<img width="30" src="/img/resources/gcp/devtools/tasks.png" alt="Tasks" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.Tasks**
<img width="30" src="/img/resources/gcp/devtools/test-lab.png" alt="TestLab" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.TestLab**
<img width="30" src="/img/resources/gcp/devtools/tools-for-eclipse.png" alt="ToolsForEclipse" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.ToolsForEclipse**
<img width="30" src="/img/resources/gcp/devtools/tools-for-powershell.png" alt="ToolsForPowershell" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.ToolsForPowershell**
<img width="30" src="/img/resources/gcp/devtools/tools-for-visual-studio.png" alt="ToolsForVisualStudio" style="float: left; padding-right: 5px;" >
**diagrams.gcp.devtools.ToolsForVisualStudio**
## gcp.iot ## gcp.iot
- **diagrams.gcp.iot.IotCore**
<img width="30" src="/img/resources/gcp/iot/iot-core.png" alt="IotCore" style="float: left; padding-right: 5px;" >
**diagrams.gcp.iot.IotCore**
## gcp.migration ## gcp.migration
- **diagrams.gcp.migration.TransferAppliance**
<img width="30" src="/img/resources/gcp/migration/transfer-appliance.png" alt="TransferAppliance" style="float: left; padding-right: 5px;" >
**diagrams.gcp.migration.TransferAppliance**
## gcp.ml ## gcp.ml
- **diagrams.gcp.ml.AdvancedSolutionsLab**
- **diagrams.gcp.ml.AIHub** <img width="30" src="/img/resources/gcp/ml/advanced-solutions-lab.png" alt="AdvancedSolutionsLab" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.AIPlatformDataLabelingService** **diagrams.gcp.ml.AdvancedSolutionsLab**
- **diagrams.gcp.ml.AIPlatform**
- **diagrams.gcp.ml.AutomlNaturalLanguage** <img width="30" src="/img/resources/gcp/ml/ai-hub.png" alt="AIHub" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.AutomlTables** **diagrams.gcp.ml.AIHub**
- **diagrams.gcp.ml.AutomlTranslation**
- **diagrams.gcp.ml.AutomlVideoIntelligence** <img width="30" src="/img/resources/gcp/ml/ai-platform-data-labeling-service.png" alt="AIPlatformDataLabelingService" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.AutomlVision** **diagrams.gcp.ml.AIPlatformDataLabelingService**
- **diagrams.gcp.ml.Automl**, **AutoML** (alias)
- **diagrams.gcp.ml.DialogFlowEnterpriseEdition** <img width="30" src="/img/resources/gcp/ml/ai-platform.png" alt="AIPlatform" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.InferenceAPI** **diagrams.gcp.ml.AIPlatform**
- **diagrams.gcp.ml.JobsAPI**
- **diagrams.gcp.ml.NaturalLanguageAPI**, **NLAPI** (alias) <img width="30" src="/img/resources/gcp/ml/automl-natural-language.png" alt="AutomlNaturalLanguage" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.RecommendationsAI** **diagrams.gcp.ml.AutomlNaturalLanguage**
- **diagrams.gcp.ml.SpeechToText**, **STT** (alias)
- **diagrams.gcp.ml.TextToSpeech**, **TTS** (alias) <img width="30" src="/img/resources/gcp/ml/automl-tables.png" alt="AutomlTables" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.TPU** **diagrams.gcp.ml.AutomlTables**
- **diagrams.gcp.ml.TranslationAPI**
- **diagrams.gcp.ml.VideoIntelligenceAPI** <img width="30" src="/img/resources/gcp/ml/automl-translation.png" alt="AutomlTranslation" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.ml.VisionAPI** **diagrams.gcp.ml.AutomlTranslation**
<img width="30" src="/img/resources/gcp/ml/automl-video-intelligence.png" alt="AutomlVideoIntelligence" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.AutomlVideoIntelligence**
<img width="30" src="/img/resources/gcp/ml/automl-vision.png" alt="AutomlVision" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.AutomlVision**
<img width="30" src="/img/resources/gcp/ml/automl.png" alt="Automl" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.Automl**, **AutoML** (alias)
<img width="30" src="/img/resources/gcp/ml/dialog-flow-enterprise-edition.png" alt="DialogFlowEnterpriseEdition" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.DialogFlowEnterpriseEdition**
<img width="30" src="/img/resources/gcp/ml/inference-api.png" alt="InferenceAPI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.InferenceAPI**
<img width="30" src="/img/resources/gcp/ml/jobs-api.png" alt="JobsAPI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.JobsAPI**
<img width="30" src="/img/resources/gcp/ml/natural-language-api.png" alt="NaturalLanguageAPI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.NaturalLanguageAPI**, **NLAPI** (alias)
<img width="30" src="/img/resources/gcp/ml/recommendations-ai.png" alt="RecommendationsAI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.RecommendationsAI**
<img width="30" src="/img/resources/gcp/ml/speech-to-text.png" alt="SpeechToText" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.SpeechToText**, **STT** (alias)
<img width="30" src="/img/resources/gcp/ml/text-to-speech.png" alt="TextToSpeech" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.TextToSpeech**, **TTS** (alias)
<img width="30" src="/img/resources/gcp/ml/tpu.png" alt="TPU" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.TPU**
<img width="30" src="/img/resources/gcp/ml/translation-api.png" alt="TranslationAPI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.TranslationAPI**
<img width="30" src="/img/resources/gcp/ml/video-intelligence-api.png" alt="VideoIntelligenceAPI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.VideoIntelligenceAPI**
<img width="30" src="/img/resources/gcp/ml/vision-api.png" alt="VisionAPI" style="float: left; padding-right: 5px;" >
**diagrams.gcp.ml.VisionAPI**
## gcp.network ## gcp.network
- **diagrams.gcp.network.Armor**
- **diagrams.gcp.network.CDN** <img width="30" src="/img/resources/gcp/network/armor.png" alt="Armor" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.network.DedicatedInterconnect** **diagrams.gcp.network.Armor**
- **diagrams.gcp.network.DNS**
- **diagrams.gcp.network.ExternalIpAddresses** <img width="30" src="/img/resources/gcp/network/cdn.png" alt="CDN" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.network.FirewallRules** **diagrams.gcp.network.CDN**
- **diagrams.gcp.network.LoadBalancing**
- **diagrams.gcp.network.NAT** <img width="30" src="/img/resources/gcp/network/dedicated-interconnect.png" alt="DedicatedInterconnect" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.network.Network** **diagrams.gcp.network.DedicatedInterconnect**
- **diagrams.gcp.network.PartnerInterconnect**
- **diagrams.gcp.network.PremiumNetworkTier** <img width="30" src="/img/resources/gcp/network/dns.png" alt="DNS" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.network.Router** **diagrams.gcp.network.DNS**
- **diagrams.gcp.network.Routes**
- **diagrams.gcp.network.StandardNetworkTier** <img width="30" src="/img/resources/gcp/network/external-ip-addresses.png" alt="ExternalIpAddresses" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.network.TrafficDirector** **diagrams.gcp.network.ExternalIpAddresses**
- **diagrams.gcp.network.VirtualPrivateCloud**, **VPC** (alias)
- **diagrams.gcp.network.VPN** <img width="30" src="/img/resources/gcp/network/firewall-rules.png" alt="FirewallRules" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.FirewallRules**
<img width="30" src="/img/resources/gcp/network/load-balancing.png" alt="LoadBalancing" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.LoadBalancing**
<img width="30" src="/img/resources/gcp/network/nat.png" alt="NAT" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.NAT**
<img width="30" src="/img/resources/gcp/network/network.png" alt="Network" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.Network**
<img width="30" src="/img/resources/gcp/network/partner-interconnect.png" alt="PartnerInterconnect" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.PartnerInterconnect**
<img width="30" src="/img/resources/gcp/network/premium-network-tier.png" alt="PremiumNetworkTier" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.PremiumNetworkTier**
<img width="30" src="/img/resources/gcp/network/router.png" alt="Router" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.Router**
<img width="30" src="/img/resources/gcp/network/routes.png" alt="Routes" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.Routes**
<img width="30" src="/img/resources/gcp/network/standard-network-tier.png" alt="StandardNetworkTier" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.StandardNetworkTier**
<img width="30" src="/img/resources/gcp/network/traffic-director.png" alt="TrafficDirector" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.TrafficDirector**
<img width="30" src="/img/resources/gcp/network/virtual-private-cloud.png" alt="VirtualPrivateCloud" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.VirtualPrivateCloud**, **VPC** (alias)
<img width="30" src="/img/resources/gcp/network/vpn.png" alt="VPN" style="float: left; padding-right: 5px;" >
**diagrams.gcp.network.VPN**
## gcp.operations ## gcp.operations
- **diagrams.gcp.operations.Monitoring**
<img width="30" src="/img/resources/gcp/operations/logging.png" alt="Logging" style="float: left; padding-right: 5px;" >
**diagrams.gcp.operations.Logging**
<img width="30" src="/img/resources/gcp/operations/monitoring.png" alt="Monitoring" style="float: left; padding-right: 5px;" >
**diagrams.gcp.operations.Monitoring**
## gcp.security ## gcp.security
- **diagrams.gcp.security.Iam**
- **diagrams.gcp.security.IAP** <img width="30" src="/img/resources/gcp/security/iam.png" alt="Iam" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.security.KeyManagementService**, **KMS** (alias) **diagrams.gcp.security.Iam**
- **diagrams.gcp.security.ResourceManager**
- **diagrams.gcp.security.SecurityCommandCenter**, **SCC** (alias) <img width="30" src="/img/resources/gcp/security/iap.png" alt="IAP" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.security.SecurityScanner** **diagrams.gcp.security.IAP**
<img width="30" src="/img/resources/gcp/security/key-management-service.png" alt="KeyManagementService" style="float: left; padding-right: 5px;" >
**diagrams.gcp.security.KeyManagementService**, **KMS** (alias)
<img width="30" src="/img/resources/gcp/security/resource-manager.png" alt="ResourceManager" style="float: left; padding-right: 5px;" >
**diagrams.gcp.security.ResourceManager**
<img width="30" src="/img/resources/gcp/security/security-command-center.png" alt="SecurityCommandCenter" style="float: left; padding-right: 5px;" >
**diagrams.gcp.security.SecurityCommandCenter**, **SCC** (alias)
<img width="30" src="/img/resources/gcp/security/security-scanner.png" alt="SecurityScanner" style="float: left; padding-right: 5px;" >
**diagrams.gcp.security.SecurityScanner**
## gcp.storage ## gcp.storage
- **diagrams.gcp.storage.Filestore**
- **diagrams.gcp.storage.PersistentDisk** <img width="30" src="/img/resources/gcp/storage/filestore.png" alt="Filestore" style="float: left; padding-right: 5px;" >
- **diagrams.gcp.storage.Storage**, **GCS** (alias) **diagrams.gcp.storage.Filestore**
<img width="30" src="/img/resources/gcp/storage/persistent-disk.png" alt="PersistentDisk" style="float: left; padding-right: 5px;" >
**diagrams.gcp.storage.PersistentDisk**
<img width="30" src="/img/resources/gcp/storage/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
**diagrams.gcp.storage.Storage**, **GCS** (alias)

@ -3,53 +3,109 @@ id: generic
title: Generic title: Generic
--- ---
Node classes list of generic provider. Node classes list of the generic provider.
## generic.blank ## generic.blank
- **diagrams.generic.blank.Blank**
<img width="30" src="/img/resources/generic/blank/blank.png" alt="Blank" style="float: left; padding-right: 5px;" >
**diagrams.generic.blank.Blank**
## generic.compute ## generic.compute
- **diagrams.generic.compute.Rack**
<img width="30" src="/img/resources/generic/compute/rack.png" alt="Rack" style="float: left; padding-right: 5px;" >
**diagrams.generic.compute.Rack**
## generic.database ## generic.database
- **diagrams.generic.database.SQL**
<img width="30" src="/img/resources/generic/database/sql.png" alt="SQL" style="float: left; padding-right: 5px;" >
**diagrams.generic.database.SQL**
## generic.device ## generic.device
- **diagrams.generic.device.Mobile**
- **diagrams.generic.device.Tablet** <img width="30" src="/img/resources/generic/device/mobile.png" alt="Mobile" style="float: left; padding-right: 5px;" >
**diagrams.generic.device.Mobile**
<img width="30" src="/img/resources/generic/device/tablet.png" alt="Tablet" style="float: left; padding-right: 5px;" >
**diagrams.generic.device.Tablet**
## generic.network ## generic.network
- **diagrams.generic.network.Firewall**
- **diagrams.generic.network.Router** <img width="30" src="/img/resources/generic/network/firewall.png" alt="Firewall" style="float: left; padding-right: 5px;" >
- **diagrams.generic.network.Subnet** **diagrams.generic.network.Firewall**
- **diagrams.generic.network.Switch**
- **diagrams.generic.network.VPN** <img width="30" src="/img/resources/generic/network/router.png" alt="Router" style="float: left; padding-right: 5px;" >
**diagrams.generic.network.Router**
<img width="30" src="/img/resources/generic/network/subnet.png" alt="Subnet" style="float: left; padding-right: 5px;" >
**diagrams.generic.network.Subnet**
<img width="30" src="/img/resources/generic/network/switch.png" alt="Switch" style="float: left; padding-right: 5px;" >
**diagrams.generic.network.Switch**
<img width="30" src="/img/resources/generic/network/vpn.png" alt="VPN" style="float: left; padding-right: 5px;" >
**diagrams.generic.network.VPN**
## generic.os ## generic.os
- **diagrams.generic.os.Android**
- **diagrams.generic.os.Centos** <img width="30" src="/img/resources/generic/os/android.png" alt="Android" style="float: left; padding-right: 5px;" >
- **diagrams.generic.os.IOS** **diagrams.generic.os.Android**
- **diagrams.generic.os.LinuxGeneral**
- **diagrams.generic.os.Suse** <img width="30" src="/img/resources/generic/os/centos.png" alt="Centos" style="float: left; padding-right: 5px;" >
- **diagrams.generic.os.Ubuntu** **diagrams.generic.os.Centos**
- **diagrams.generic.os.Windows**
<img width="30" src="/img/resources/generic/os/debian.png" alt="Debian" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.Debian**
<img width="30" src="/img/resources/generic/os/ios.png" alt="IOS" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.IOS**
<img width="30" src="/img/resources/generic/os/linux-general.png" alt="LinuxGeneral" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.LinuxGeneral**
<img width="30" src="/img/resources/generic/os/raspbian.png" alt="Raspbian" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.Raspbian**
<img width="30" src="/img/resources/generic/os/red-hat.png" alt="RedHat" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.RedHat**
<img width="30" src="/img/resources/generic/os/suse.png" alt="Suse" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.Suse**
<img width="30" src="/img/resources/generic/os/ubuntu.png" alt="Ubuntu" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.Ubuntu**
<img width="30" src="/img/resources/generic/os/windows.png" alt="Windows" style="float: left; padding-right: 5px;" >
**diagrams.generic.os.Windows**
## generic.place ## generic.place
- **diagrams.generic.place.Datacenter**
<img width="30" src="/img/resources/generic/place/datacenter.png" alt="Datacenter" style="float: left; padding-right: 5px;" >
**diagrams.generic.place.Datacenter**
## generic.storage ## generic.storage
- **diagrams.generic.storage.Storage**
<img width="30" src="/img/resources/generic/storage/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
**diagrams.generic.storage.Storage**
## generic.virtualization ## generic.virtualization
- **diagrams.generic.virtualization.Virtualbox**
- **diagrams.generic.virtualization.Vmware** <img width="30" src="/img/resources/generic/virtualization/qemu.png" alt="Qemu" style="float: left; padding-right: 5px;" >
- **diagrams.generic.virtualization.XEN** **diagrams.generic.virtualization.Qemu**
<img width="30" src="/img/resources/generic/virtualization/virtualbox.png" alt="Virtualbox" style="float: left; padding-right: 5px;" >
**diagrams.generic.virtualization.Virtualbox**
<img width="30" src="/img/resources/generic/virtualization/vmware.png" alt="Vmware" style="float: left; padding-right: 5px;" >
**diagrams.generic.virtualization.Vmware**
<img width="30" src="/img/resources/generic/virtualization/xen.png" alt="XEN" style="float: left; padding-right: 5px;" >
**diagrams.generic.virtualization.XEN**

@ -0,0 +1,588 @@
---
id: ibm
title: IBM
---
Node classes list of the ibm provider.
## ibm.analytics
<img width="30" src="/img/resources/ibm/analytics/analytics.png" alt="Analytics" style="float: left; padding-right: 5px;" >
**diagrams.ibm.analytics.Analytics**
<img width="30" src="/img/resources/ibm/analytics/data-integration.png" alt="DataIntegration" style="float: left; padding-right: 5px;" >
**diagrams.ibm.analytics.DataIntegration**
<img width="30" src="/img/resources/ibm/analytics/data-repositories.png" alt="DataRepositories" style="float: left; padding-right: 5px;" >
**diagrams.ibm.analytics.DataRepositories**
<img width="30" src="/img/resources/ibm/analytics/device-analytics.png" alt="DeviceAnalytics" style="float: left; padding-right: 5px;" >
**diagrams.ibm.analytics.DeviceAnalytics**
<img width="30" src="/img/resources/ibm/analytics/streaming-computing.png" alt="StreamingComputing" style="float: left; padding-right: 5px;" >
**diagrams.ibm.analytics.StreamingComputing**
## ibm.applications
<img width="30" src="/img/resources/ibm/applications/actionable-insight.png" alt="ActionableInsight" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.ActionableInsight**
<img width="30" src="/img/resources/ibm/applications/annotate.png" alt="Annotate" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.Annotate**
<img width="30" src="/img/resources/ibm/applications/api-developer-portal.png" alt="ApiDeveloperPortal" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.ApiDeveloperPortal**
<img width="30" src="/img/resources/ibm/applications/api-polyglot-runtimes.png" alt="ApiPolyglotRuntimes" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.ApiPolyglotRuntimes**
<img width="30" src="/img/resources/ibm/applications/app-server.png" alt="AppServer" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.AppServer**
<img width="30" src="/img/resources/ibm/applications/application-logic.png" alt="ApplicationLogic" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.ApplicationLogic**
<img width="30" src="/img/resources/ibm/applications/enterprise-applications.png" alt="EnterpriseApplications" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.EnterpriseApplications**
<img width="30" src="/img/resources/ibm/applications/index.png" alt="Index" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.Index**
<img width="30" src="/img/resources/ibm/applications/iot-application.png" alt="IotApplication" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.IotApplication**
<img width="30" src="/img/resources/ibm/applications/microservice.png" alt="Microservice" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.Microservice**
<img width="30" src="/img/resources/ibm/applications/mobile-app.png" alt="MobileApp" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.MobileApp**
<img width="30" src="/img/resources/ibm/applications/ontology.png" alt="Ontology" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.Ontology**
<img width="30" src="/img/resources/ibm/applications/open-source-tools.png" alt="OpenSourceTools" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.OpenSourceTools**
<img width="30" src="/img/resources/ibm/applications/runtime-services.png" alt="RuntimeServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.RuntimeServices**
<img width="30" src="/img/resources/ibm/applications/saas-applications.png" alt="SaasApplications" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.SaasApplications**
<img width="30" src="/img/resources/ibm/applications/service-broker.png" alt="ServiceBroker" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.ServiceBroker**
<img width="30" src="/img/resources/ibm/applications/speech-to-text.png" alt="SpeechToText" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.SpeechToText**
<img width="30" src="/img/resources/ibm/applications/visual-recognition.png" alt="VisualRecognition" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.VisualRecognition**
<img width="30" src="/img/resources/ibm/applications/visualization.png" alt="Visualization" style="float: left; padding-right: 5px;" >
**diagrams.ibm.applications.Visualization**
## ibm.blockchain
<img width="30" src="/img/resources/ibm/blockchain/blockchain-developer.png" alt="BlockchainDeveloper" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.BlockchainDeveloper**
<img width="30" src="/img/resources/ibm/blockchain/blockchain.png" alt="Blockchain" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Blockchain**
<img width="30" src="/img/resources/ibm/blockchain/certificate-authority.png" alt="CertificateAuthority" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.CertificateAuthority**
<img width="30" src="/img/resources/ibm/blockchain/client-application.png" alt="ClientApplication" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.ClientApplication**
<img width="30" src="/img/resources/ibm/blockchain/communication.png" alt="Communication" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Communication**
<img width="30" src="/img/resources/ibm/blockchain/consensus.png" alt="Consensus" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Consensus**
<img width="30" src="/img/resources/ibm/blockchain/event-listener.png" alt="EventListener" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.EventListener**
<img width="30" src="/img/resources/ibm/blockchain/event.png" alt="Event" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Event**
<img width="30" src="/img/resources/ibm/blockchain/existing-enterprise-systems.png" alt="ExistingEnterpriseSystems" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.ExistingEnterpriseSystems**
<img width="30" src="/img/resources/ibm/blockchain/hyperledger-fabric.png" alt="HyperledgerFabric" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.HyperledgerFabric**
<img width="30" src="/img/resources/ibm/blockchain/key-management.png" alt="KeyManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.KeyManagement**
<img width="30" src="/img/resources/ibm/blockchain/ledger.png" alt="Ledger" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Ledger**
<img width="30" src="/img/resources/ibm/blockchain/membership-services-provider-api.png" alt="MembershipServicesProviderApi" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.MembershipServicesProviderApi**
<img width="30" src="/img/resources/ibm/blockchain/membership.png" alt="Membership" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Membership**
<img width="30" src="/img/resources/ibm/blockchain/message-bus.png" alt="MessageBus" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.MessageBus**
<img width="30" src="/img/resources/ibm/blockchain/node.png" alt="Node" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Node**
<img width="30" src="/img/resources/ibm/blockchain/services.png" alt="Services" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Services**
<img width="30" src="/img/resources/ibm/blockchain/smart-contract.png" alt="SmartContract" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.SmartContract**
<img width="30" src="/img/resources/ibm/blockchain/transaction-manager.png" alt="TransactionManager" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.TransactionManager**
<img width="30" src="/img/resources/ibm/blockchain/wallet.png" alt="Wallet" style="float: left; padding-right: 5px;" >
**diagrams.ibm.blockchain.Wallet**
## ibm.compute
<img width="30" src="/img/resources/ibm/compute/bare-metal-server.png" alt="BareMetalServer" style="float: left; padding-right: 5px;" >
**diagrams.ibm.compute.BareMetalServer**
<img width="30" src="/img/resources/ibm/compute/image-service.png" alt="ImageService" style="float: left; padding-right: 5px;" >
**diagrams.ibm.compute.ImageService**
<img width="30" src="/img/resources/ibm/compute/instance.png" alt="Instance" style="float: left; padding-right: 5px;" >
**diagrams.ibm.compute.Instance**
<img width="30" src="/img/resources/ibm/compute/key.png" alt="Key" style="float: left; padding-right: 5px;" >
**diagrams.ibm.compute.Key**
<img width="30" src="/img/resources/ibm/compute/power-instance.png" alt="PowerInstance" style="float: left; padding-right: 5px;" >
**diagrams.ibm.compute.PowerInstance**
## ibm.data
<img width="30" src="/img/resources/ibm/data/caches.png" alt="Caches" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.Caches**
<img width="30" src="/img/resources/ibm/data/cloud.png" alt="Cloud" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.Cloud**
<img width="30" src="/img/resources/ibm/data/conversation-trained-deployed.png" alt="ConversationTrainedDeployed" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.ConversationTrainedDeployed**
<img width="30" src="/img/resources/ibm/data/data-services.png" alt="DataServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.DataServices**
<img width="30" src="/img/resources/ibm/data/data-sources.png" alt="DataSources" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.DataSources**
<img width="30" src="/img/resources/ibm/data/device-identity-service.png" alt="DeviceIdentityService" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.DeviceIdentityService**
<img width="30" src="/img/resources/ibm/data/device-registry.png" alt="DeviceRegistry" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.DeviceRegistry**
<img width="30" src="/img/resources/ibm/data/enterprise-data.png" alt="EnterpriseData" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.EnterpriseData**
<img width="30" src="/img/resources/ibm/data/enterprise-user-directory.png" alt="EnterpriseUserDirectory" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.EnterpriseUserDirectory**
<img width="30" src="/img/resources/ibm/data/file-repository.png" alt="FileRepository" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.FileRepository**
<img width="30" src="/img/resources/ibm/data/ground-truth.png" alt="GroundTruth" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.GroundTruth**
<img width="30" src="/img/resources/ibm/data/model.png" alt="Model" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.Model**
<img width="30" src="/img/resources/ibm/data/tms-data-interface.png" alt="TmsDataInterface" style="float: left; padding-right: 5px;" >
**diagrams.ibm.data.TmsDataInterface**
## ibm.devops
<img width="30" src="/img/resources/ibm/devops/artifact-management.png" alt="ArtifactManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.ArtifactManagement**
<img width="30" src="/img/resources/ibm/devops/build-test.png" alt="BuildTest" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.BuildTest**
<img width="30" src="/img/resources/ibm/devops/code-editor.png" alt="CodeEditor" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.CodeEditor**
<img width="30" src="/img/resources/ibm/devops/collaborative-development.png" alt="CollaborativeDevelopment" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.CollaborativeDevelopment**
<img width="30" src="/img/resources/ibm/devops/configuration-management.png" alt="ConfigurationManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.ConfigurationManagement**
<img width="30" src="/img/resources/ibm/devops/continuous-deploy.png" alt="ContinuousDeploy" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.ContinuousDeploy**
<img width="30" src="/img/resources/ibm/devops/continuous-testing.png" alt="ContinuousTesting" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.ContinuousTesting**
<img width="30" src="/img/resources/ibm/devops/devops.png" alt="Devops" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.Devops**
<img width="30" src="/img/resources/ibm/devops/provision.png" alt="Provision" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.Provision**
<img width="30" src="/img/resources/ibm/devops/release-management.png" alt="ReleaseManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.devops.ReleaseManagement**
## ibm.general
<img width="30" src="/img/resources/ibm/general/cloud-messaging.png" alt="CloudMessaging" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.CloudMessaging**
<img width="30" src="/img/resources/ibm/general/cloud-services.png" alt="CloudServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.CloudServices**
<img width="30" src="/img/resources/ibm/general/cloudant.png" alt="Cloudant" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.Cloudant**
<img width="30" src="/img/resources/ibm/general/cognitive-services.png" alt="CognitiveServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.CognitiveServices**
<img width="30" src="/img/resources/ibm/general/data-security.png" alt="DataSecurity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.DataSecurity**
<img width="30" src="/img/resources/ibm/general/enterprise.png" alt="Enterprise" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.Enterprise**
<img width="30" src="/img/resources/ibm/general/governance-risk-compliance.png" alt="GovernanceRiskCompliance" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.GovernanceRiskCompliance**
<img width="30" src="/img/resources/ibm/general/ibm-containers.png" alt="IBMContainers" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.IBMContainers**
<img width="30" src="/img/resources/ibm/general/ibm-public-cloud.png" alt="IBMPublicCloud" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.IBMPublicCloud**
<img width="30" src="/img/resources/ibm/general/identity-access-management.png" alt="IdentityAccessManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.IdentityAccessManagement**
<img width="30" src="/img/resources/ibm/general/identity-provider.png" alt="IdentityProvider" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.IdentityProvider**
<img width="30" src="/img/resources/ibm/general/infrastructure-security.png" alt="InfrastructureSecurity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.InfrastructureSecurity**
<img width="30" src="/img/resources/ibm/general/internet.png" alt="Internet" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.Internet**
<img width="30" src="/img/resources/ibm/general/iot-cloud.png" alt="IotCloud" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.IotCloud**
<img width="30" src="/img/resources/ibm/general/microservices-application.png" alt="MicroservicesApplication" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.MicroservicesApplication**
<img width="30" src="/img/resources/ibm/general/microservices-mesh.png" alt="MicroservicesMesh" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.MicroservicesMesh**
<img width="30" src="/img/resources/ibm/general/monitoring-logging.png" alt="MonitoringLogging" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.MonitoringLogging**
<img width="30" src="/img/resources/ibm/general/monitoring.png" alt="Monitoring" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.Monitoring**
<img width="30" src="/img/resources/ibm/general/object-storage.png" alt="ObjectStorage" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.ObjectStorage**
<img width="30" src="/img/resources/ibm/general/offline-capabilities.png" alt="OfflineCapabilities" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.OfflineCapabilities**
<img width="30" src="/img/resources/ibm/general/openwhisk.png" alt="Openwhisk" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.Openwhisk**
<img width="30" src="/img/resources/ibm/general/peer-cloud.png" alt="PeerCloud" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.PeerCloud**
<img width="30" src="/img/resources/ibm/general/retrieve-rank.png" alt="RetrieveRank" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.RetrieveRank**
<img width="30" src="/img/resources/ibm/general/scalable.png" alt="Scalable" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.Scalable**
<img width="30" src="/img/resources/ibm/general/service-discovery-configuration.png" alt="ServiceDiscoveryConfiguration" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.ServiceDiscoveryConfiguration**
<img width="30" src="/img/resources/ibm/general/text-to-speech.png" alt="TextToSpeech" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.TextToSpeech**
<img width="30" src="/img/resources/ibm/general/transformation-connectivity.png" alt="TransformationConnectivity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.general.TransformationConnectivity**
## ibm.infrastructure
<img width="30" src="/img/resources/ibm/infrastructure/channels.png" alt="Channels" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.Channels**
<img width="30" src="/img/resources/ibm/infrastructure/cloud-messaging.png" alt="CloudMessaging" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.CloudMessaging**
<img width="30" src="/img/resources/ibm/infrastructure/dashboard.png" alt="Dashboard" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.Dashboard**
<img width="30" src="/img/resources/ibm/infrastructure/diagnostics.png" alt="Diagnostics" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.Diagnostics**
<img width="30" src="/img/resources/ibm/infrastructure/edge-services.png" alt="EdgeServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.EdgeServices**
<img width="30" src="/img/resources/ibm/infrastructure/enterprise-messaging.png" alt="EnterpriseMessaging" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.EnterpriseMessaging**
<img width="30" src="/img/resources/ibm/infrastructure/event-feed.png" alt="EventFeed" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.EventFeed**
<img width="30" src="/img/resources/ibm/infrastructure/infrastructure-services.png" alt="InfrastructureServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.InfrastructureServices**
<img width="30" src="/img/resources/ibm/infrastructure/interservice-communication.png" alt="InterserviceCommunication" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.InterserviceCommunication**
<img width="30" src="/img/resources/ibm/infrastructure/load-balancing-routing.png" alt="LoadBalancingRouting" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.LoadBalancingRouting**
<img width="30" src="/img/resources/ibm/infrastructure/microservices-mesh.png" alt="MicroservicesMesh" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.MicroservicesMesh**
<img width="30" src="/img/resources/ibm/infrastructure/mobile-backend.png" alt="MobileBackend" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.MobileBackend**
<img width="30" src="/img/resources/ibm/infrastructure/mobile-provider-network.png" alt="MobileProviderNetwork" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.MobileProviderNetwork**
<img width="30" src="/img/resources/ibm/infrastructure/monitoring-logging.png" alt="MonitoringLogging" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.MonitoringLogging**
<img width="30" src="/img/resources/ibm/infrastructure/monitoring.png" alt="Monitoring" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.Monitoring**
<img width="30" src="/img/resources/ibm/infrastructure/peer-services.png" alt="PeerServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.PeerServices**
<img width="30" src="/img/resources/ibm/infrastructure/service-discovery-configuration.png" alt="ServiceDiscoveryConfiguration" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.ServiceDiscoveryConfiguration**
<img width="30" src="/img/resources/ibm/infrastructure/transformation-connectivity.png" alt="TransformationConnectivity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.infrastructure.TransformationConnectivity**
## ibm.management
<img width="30" src="/img/resources/ibm/management/alert-notification.png" alt="AlertNotification" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.AlertNotification**
<img width="30" src="/img/resources/ibm/management/api-management.png" alt="ApiManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ApiManagement**
<img width="30" src="/img/resources/ibm/management/cloud-management.png" alt="CloudManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.CloudManagement**
<img width="30" src="/img/resources/ibm/management/cluster-management.png" alt="ClusterManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ClusterManagement**
<img width="30" src="/img/resources/ibm/management/content-management.png" alt="ContentManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ContentManagement**
<img width="30" src="/img/resources/ibm/management/data-services.png" alt="DataServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.DataServices**
<img width="30" src="/img/resources/ibm/management/device-management.png" alt="DeviceManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.DeviceManagement**
<img width="30" src="/img/resources/ibm/management/information-governance.png" alt="InformationGovernance" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.InformationGovernance**
<img width="30" src="/img/resources/ibm/management/it-service-management.png" alt="ItServiceManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ItServiceManagement**
<img width="30" src="/img/resources/ibm/management/management.png" alt="Management" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.Management**
<img width="30" src="/img/resources/ibm/management/monitoring-metrics.png" alt="MonitoringMetrics" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.MonitoringMetrics**
<img width="30" src="/img/resources/ibm/management/process-management.png" alt="ProcessManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ProcessManagement**
<img width="30" src="/img/resources/ibm/management/provider-cloud-portal-service.png" alt="ProviderCloudPortalService" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ProviderCloudPortalService**
<img width="30" src="/img/resources/ibm/management/push-notifications.png" alt="PushNotifications" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.PushNotifications**
<img width="30" src="/img/resources/ibm/management/service-management-tools.png" alt="ServiceManagementTools" style="float: left; padding-right: 5px;" >
**diagrams.ibm.management.ServiceManagementTools**
## ibm.network
<img width="30" src="/img/resources/ibm/network/bridge.png" alt="Bridge" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Bridge**
<img width="30" src="/img/resources/ibm/network/direct-link.png" alt="DirectLink" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.DirectLink**
<img width="30" src="/img/resources/ibm/network/enterprise.png" alt="Enterprise" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Enterprise**
<img width="30" src="/img/resources/ibm/network/firewall.png" alt="Firewall" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Firewall**
<img width="30" src="/img/resources/ibm/network/floating-ip.png" alt="FloatingIp" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.FloatingIp**
<img width="30" src="/img/resources/ibm/network/gateway.png" alt="Gateway" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Gateway**
<img width="30" src="/img/resources/ibm/network/internet-services.png" alt="InternetServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.InternetServices**
<img width="30" src="/img/resources/ibm/network/load-balancer-listener.png" alt="LoadBalancerListener" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.LoadBalancerListener**
<img width="30" src="/img/resources/ibm/network/load-balancer-pool.png" alt="LoadBalancerPool" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.LoadBalancerPool**
<img width="30" src="/img/resources/ibm/network/load-balancer.png" alt="LoadBalancer" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.LoadBalancer**
<img width="30" src="/img/resources/ibm/network/load-balancing-routing.png" alt="LoadBalancingRouting" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.LoadBalancingRouting**
<img width="30" src="/img/resources/ibm/network/public-gateway.png" alt="PublicGateway" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.PublicGateway**
<img width="30" src="/img/resources/ibm/network/region.png" alt="Region" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Region**
<img width="30" src="/img/resources/ibm/network/router.png" alt="Router" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Router**
<img width="30" src="/img/resources/ibm/network/rules.png" alt="Rules" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Rules**
<img width="30" src="/img/resources/ibm/network/subnet.png" alt="Subnet" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Subnet**
<img width="30" src="/img/resources/ibm/network/transit-gateway.png" alt="TransitGateway" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.TransitGateway**
<img width="30" src="/img/resources/ibm/network/vpc.png" alt="Vpc" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.Vpc**
<img width="30" src="/img/resources/ibm/network/vpn-connection.png" alt="VpnConnection" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.VpnConnection**
<img width="30" src="/img/resources/ibm/network/vpn-gateway.png" alt="VpnGateway" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.VpnGateway**
<img width="30" src="/img/resources/ibm/network/vpn-policy.png" alt="VpnPolicy" style="float: left; padding-right: 5px;" >
**diagrams.ibm.network.VpnPolicy**
## ibm.security
<img width="30" src="/img/resources/ibm/security/api-security.png" alt="ApiSecurity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.ApiSecurity**
<img width="30" src="/img/resources/ibm/security/blockchain-security-service.png" alt="BlockchainSecurityService" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.BlockchainSecurityService**
<img width="30" src="/img/resources/ibm/security/data-security.png" alt="DataSecurity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.DataSecurity**
<img width="30" src="/img/resources/ibm/security/firewall.png" alt="Firewall" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.Firewall**
<img width="30" src="/img/resources/ibm/security/gateway.png" alt="Gateway" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.Gateway**
<img width="30" src="/img/resources/ibm/security/governance-risk-compliance.png" alt="GovernanceRiskCompliance" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.GovernanceRiskCompliance**
<img width="30" src="/img/resources/ibm/security/identity-access-management.png" alt="IdentityAccessManagement" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.IdentityAccessManagement**
<img width="30" src="/img/resources/ibm/security/identity-provider.png" alt="IdentityProvider" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.IdentityProvider**
<img width="30" src="/img/resources/ibm/security/infrastructure-security.png" alt="InfrastructureSecurity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.InfrastructureSecurity**
<img width="30" src="/img/resources/ibm/security/physical-security.png" alt="PhysicalSecurity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.PhysicalSecurity**
<img width="30" src="/img/resources/ibm/security/security-monitoring-intelligence.png" alt="SecurityMonitoringIntelligence" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.SecurityMonitoringIntelligence**
<img width="30" src="/img/resources/ibm/security/security-services.png" alt="SecurityServices" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.SecurityServices**
<img width="30" src="/img/resources/ibm/security/trustend-computing.png" alt="TrustendComputing" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.TrustendComputing**
<img width="30" src="/img/resources/ibm/security/vpn.png" alt="Vpn" style="float: left; padding-right: 5px;" >
**diagrams.ibm.security.Vpn**
## ibm.social
<img width="30" src="/img/resources/ibm/social/communities.png" alt="Communities" style="float: left; padding-right: 5px;" >
**diagrams.ibm.social.Communities**
<img width="30" src="/img/resources/ibm/social/file-sync.png" alt="FileSync" style="float: left; padding-right: 5px;" >
**diagrams.ibm.social.FileSync**
<img width="30" src="/img/resources/ibm/social/live-collaboration.png" alt="LiveCollaboration" style="float: left; padding-right: 5px;" >
**diagrams.ibm.social.LiveCollaboration**
<img width="30" src="/img/resources/ibm/social/messaging.png" alt="Messaging" style="float: left; padding-right: 5px;" >
**diagrams.ibm.social.Messaging**
<img width="30" src="/img/resources/ibm/social/networking.png" alt="Networking" style="float: left; padding-right: 5px;" >
**diagrams.ibm.social.Networking**
## ibm.storage
<img width="30" src="/img/resources/ibm/storage/block-storage.png" alt="BlockStorage" style="float: left; padding-right: 5px;" >
**diagrams.ibm.storage.BlockStorage**
<img width="30" src="/img/resources/ibm/storage/object-storage.png" alt="ObjectStorage" style="float: left; padding-right: 5px;" >
**diagrams.ibm.storage.ObjectStorage**
## ibm.user
<img width="30" src="/img/resources/ibm/user/browser.png" alt="Browser" style="float: left; padding-right: 5px;" >
**diagrams.ibm.user.Browser**
<img width="30" src="/img/resources/ibm/user/device.png" alt="Device" style="float: left; padding-right: 5px;" >
**diagrams.ibm.user.Device**
<img width="30" src="/img/resources/ibm/user/integrated-digital-experiences.png" alt="IntegratedDigitalExperiences" style="float: left; padding-right: 5px;" >
**diagrams.ibm.user.IntegratedDigitalExperiences**
<img width="30" src="/img/resources/ibm/user/physical-entity.png" alt="PhysicalEntity" style="float: left; padding-right: 5px;" >
**diagrams.ibm.user.PhysicalEntity**
<img width="30" src="/img/resources/ibm/user/sensor.png" alt="Sensor" style="float: left; padding-right: 5px;" >
**diagrams.ibm.user.Sensor**
<img width="30" src="/img/resources/ibm/user/user.png" alt="User" style="float: left; padding-right: 5px;" >
**diagrams.ibm.user.User**

@ -3,85 +3,175 @@ id: k8s
title: K8S title: K8S
--- ---
Node classes list of k8s provider. Node classes list of the k8s provider.
## k8s.chaos ## k8s.chaos
- **diagrams.k8s.chaos.ChaosMesh**
- **diagrams.k8s.chaos.LitmusChaos** <img width="30" src="/img/resources/k8s/chaos/chaos-mesh.png" alt="ChaosMesh" style="float: left; padding-right: 5px;" >
**diagrams.k8s.chaos.ChaosMesh**
<img width="30" src="/img/resources/k8s/chaos/litmus-chaos.png" alt="LitmusChaos" style="float: left; padding-right: 5px;" >
**diagrams.k8s.chaos.LitmusChaos**
## k8s.clusterconfig ## k8s.clusterconfig
- **diagrams.k8s.clusterconfig.HPA**, **HorizontalPodAutoscaler** (alias)
- **diagrams.k8s.clusterconfig.Limits**, **LimitRange** (alias) <img width="30" src="/img/resources/k8s/clusterconfig/hpa.png" alt="HPA" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.clusterconfig.Quota** **diagrams.k8s.clusterconfig.HPA**, **HorizontalPodAutoscaler** (alias)
<img width="30" src="/img/resources/k8s/clusterconfig/limits.png" alt="Limits" style="float: left; padding-right: 5px;" >
**diagrams.k8s.clusterconfig.Limits**, **LimitRange** (alias)
<img width="30" src="/img/resources/k8s/clusterconfig/quota.png" alt="Quota" style="float: left; padding-right: 5px;" >
**diagrams.k8s.clusterconfig.Quota**
## k8s.compute ## k8s.compute
- **diagrams.k8s.compute.Cronjob**
- **diagrams.k8s.compute.Deploy**, **Deployment** (alias) <img width="30" src="/img/resources/k8s/compute/cronjob.png" alt="Cronjob" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.compute.DS**, **DaemonSet** (alias) **diagrams.k8s.compute.Cronjob**
- **diagrams.k8s.compute.Job**
- **diagrams.k8s.compute.Pod** <img width="30" src="/img/resources/k8s/compute/deploy.png" alt="Deploy" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.compute.RS**, **ReplicaSet** (alias) **diagrams.k8s.compute.Deploy**, **Deployment** (alias)
- **diagrams.k8s.compute.STS**, **StatefulSet** (alias)
<img width="30" src="/img/resources/k8s/compute/ds.png" alt="DS" style="float: left; padding-right: 5px;" >
**diagrams.k8s.compute.DS**, **DaemonSet** (alias)
<img width="30" src="/img/resources/k8s/compute/job.png" alt="Job" style="float: left; padding-right: 5px;" >
**diagrams.k8s.compute.Job**
<img width="30" src="/img/resources/k8s/compute/pod.png" alt="Pod" style="float: left; padding-right: 5px;" >
**diagrams.k8s.compute.Pod**
<img width="30" src="/img/resources/k8s/compute/rs.png" alt="RS" style="float: left; padding-right: 5px;" >
**diagrams.k8s.compute.RS**, **ReplicaSet** (alias)
<img width="30" src="/img/resources/k8s/compute/sts.png" alt="STS" style="float: left; padding-right: 5px;" >
**diagrams.k8s.compute.STS**, **StatefulSet** (alias)
## k8s.controlplane ## k8s.controlplane
- **diagrams.k8s.controlplane.API**, **APIServer** (alias)
- **diagrams.k8s.controlplane.CCM** <img width="30" src="/img/resources/k8s/controlplane/api.png" alt="API" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.controlplane.CM**, **ControllerManager** (alias) **diagrams.k8s.controlplane.API**, **APIServer** (alias)
- **diagrams.k8s.controlplane.KProxy**, **KubeProxy** (alias)
- **diagrams.k8s.controlplane.Kubelet** <img width="30" src="/img/resources/k8s/controlplane/c-c-m.png" alt="CCM" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.controlplane.Sched**, **Scheduler** (alias) **diagrams.k8s.controlplane.CCM**
<img width="30" src="/img/resources/k8s/controlplane/c-m.png" alt="CM" style="float: left; padding-right: 5px;" >
**diagrams.k8s.controlplane.CM**, **ControllerManager** (alias)
<img width="30" src="/img/resources/k8s/controlplane/k-proxy.png" alt="KProxy" style="float: left; padding-right: 5px;" >
**diagrams.k8s.controlplane.KProxy**, **KubeProxy** (alias)
<img width="30" src="/img/resources/k8s/controlplane/kubelet.png" alt="Kubelet" style="float: left; padding-right: 5px;" >
**diagrams.k8s.controlplane.Kubelet**
<img width="30" src="/img/resources/k8s/controlplane/sched.png" alt="Sched" style="float: left; padding-right: 5px;" >
**diagrams.k8s.controlplane.Sched**, **Scheduler** (alias)
## k8s.ecosystem ## k8s.ecosystem
- **diagrams.k8s.ecosystem.ExternalDns**
- **diagrams.k8s.ecosystem.Helm** <img width="30" src="/img/resources/k8s/ecosystem/external-dns.png" alt="ExternalDns" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.ecosystem.Krew** **diagrams.k8s.ecosystem.ExternalDns**
- **diagrams.k8s.ecosystem.Kustomize**
<img width="30" src="/img/resources/k8s/ecosystem/helm.png" alt="Helm" style="float: left; padding-right: 5px;" >
**diagrams.k8s.ecosystem.Helm**
<img width="30" src="/img/resources/k8s/ecosystem/krew.png" alt="Krew" style="float: left; padding-right: 5px;" >
**diagrams.k8s.ecosystem.Krew**
<img width="30" src="/img/resources/k8s/ecosystem/kustomize.png" alt="Kustomize" style="float: left; padding-right: 5px;" >
**diagrams.k8s.ecosystem.Kustomize**
## k8s.group ## k8s.group
- **diagrams.k8s.group.NS**, **Namespace** (alias)
<img width="30" src="/img/resources/k8s/group/ns.png" alt="NS" style="float: left; padding-right: 5px;" >
**diagrams.k8s.group.NS**, **Namespace** (alias)
## k8s.infra ## k8s.infra
- **diagrams.k8s.infra.ETCD**
- **diagrams.k8s.infra.Master** <img width="30" src="/img/resources/k8s/infra/etcd.png" alt="ETCD" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.infra.Node** **diagrams.k8s.infra.ETCD**
<img width="30" src="/img/resources/k8s/infra/master.png" alt="Master" style="float: left; padding-right: 5px;" >
**diagrams.k8s.infra.Master**
<img width="30" src="/img/resources/k8s/infra/node.png" alt="Node" style="float: left; padding-right: 5px;" >
**diagrams.k8s.infra.Node**
## k8s.network ## k8s.network
- **diagrams.k8s.network.Ep**, **Endpoint** (alias)
- **diagrams.k8s.network.Ing**, **Ingress** (alias) <img width="30" src="/img/resources/k8s/network/ep.png" alt="Ep" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.network.Netpol**, **NetworkPolicy** (alias) **diagrams.k8s.network.Ep**, **Endpoint** (alias)
- **diagrams.k8s.network.SVC**, **Service** (alias)
<img width="30" src="/img/resources/k8s/network/ing.png" alt="Ing" style="float: left; padding-right: 5px;" >
**diagrams.k8s.network.Ing**, **Ingress** (alias)
<img width="30" src="/img/resources/k8s/network/netpol.png" alt="Netpol" style="float: left; padding-right: 5px;" >
**diagrams.k8s.network.Netpol**, **NetworkPolicy** (alias)
<img width="30" src="/img/resources/k8s/network/svc.png" alt="SVC" style="float: left; padding-right: 5px;" >
**diagrams.k8s.network.SVC**, **Service** (alias)
## k8s.others ## k8s.others
- **diagrams.k8s.others.CRD**
- **diagrams.k8s.others.PSP** <img width="30" src="/img/resources/k8s/others/crd.png" alt="CRD" style="float: left; padding-right: 5px;" >
**diagrams.k8s.others.CRD**
<img width="30" src="/img/resources/k8s/others/psp.png" alt="PSP" style="float: left; padding-right: 5px;" >
**diagrams.k8s.others.PSP**
## k8s.podconfig ## k8s.podconfig
- **diagrams.k8s.podconfig.CM**, **ConfigMap** (alias)
- **diagrams.k8s.podconfig.Secret** <img width="30" src="/img/resources/k8s/podconfig/cm.png" alt="CM" style="float: left; padding-right: 5px;" >
**diagrams.k8s.podconfig.CM**, **ConfigMap** (alias)
<img width="30" src="/img/resources/k8s/podconfig/secret.png" alt="Secret" style="float: left; padding-right: 5px;" >
**diagrams.k8s.podconfig.Secret**
## k8s.rbac ## k8s.rbac
- **diagrams.k8s.rbac.CRole**, **ClusterRole** (alias)
- **diagrams.k8s.rbac.CRB**, **ClusterRoleBinding** (alias) <img width="30" src="/img/resources/k8s/rbac/c-role.png" alt="CRole" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.rbac.Group** **diagrams.k8s.rbac.CRole**, **ClusterRole** (alias)
- **diagrams.k8s.rbac.RB**, **RoleBinding** (alias)
- **diagrams.k8s.rbac.Role** <img width="30" src="/img/resources/k8s/rbac/crb.png" alt="CRB" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.rbac.SA**, **ServiceAccount** (alias) **diagrams.k8s.rbac.CRB**, **ClusterRoleBinding** (alias)
- **diagrams.k8s.rbac.User**
<img width="30" src="/img/resources/k8s/rbac/group.png" alt="Group" style="float: left; padding-right: 5px;" >
**diagrams.k8s.rbac.Group**
<img width="30" src="/img/resources/k8s/rbac/rb.png" alt="RB" style="float: left; padding-right: 5px;" >
**diagrams.k8s.rbac.RB**, **RoleBinding** (alias)
<img width="30" src="/img/resources/k8s/rbac/role.png" alt="Role" style="float: left; padding-right: 5px;" >
**diagrams.k8s.rbac.Role**
<img width="30" src="/img/resources/k8s/rbac/sa.png" alt="SA" style="float: left; padding-right: 5px;" >
**diagrams.k8s.rbac.SA**, **ServiceAccount** (alias)
<img width="30" src="/img/resources/k8s/rbac/user.png" alt="User" style="float: left; padding-right: 5px;" >
**diagrams.k8s.rbac.User**
## k8s.storage ## k8s.storage
- **diagrams.k8s.storage.PV**, **PersistentVolume** (alias)
- **diagrams.k8s.storage.PVC**, **PersistentVolumeClaim** (alias) <img width="30" src="/img/resources/k8s/storage/pv.png" alt="PV" style="float: left; padding-right: 5px;" >
- **diagrams.k8s.storage.SC**, **StorageClass** (alias) **diagrams.k8s.storage.PV**, **PersistentVolume** (alias)
- **diagrams.k8s.storage.Vol**, **Volume** (alias)
<img width="30" src="/img/resources/k8s/storage/pvc.png" alt="PVC" style="float: left; padding-right: 5px;" >
**diagrams.k8s.storage.PVC**, **PersistentVolumeClaim** (alias)
<img width="30" src="/img/resources/k8s/storage/sc.png" alt="SC" style="float: left; padding-right: 5px;" >
**diagrams.k8s.storage.SC**, **StorageClass** (alias)
<img width="30" src="/img/resources/k8s/storage/vol.png" alt="Vol" style="float: left; padding-right: 5px;" >
**diagrams.k8s.storage.Vol**, **Volume** (alias)

@ -3,171 +3,451 @@ id: oci
title: OCI title: OCI
--- ---
Node classes list of oci provider. Node classes list of the oci provider.
## oci.compute ## oci.compute
- **diagrams.oci.compute.AutoscaleWhite**
- **diagrams.oci.compute.Autoscale** <img width="30" src="/img/resources/oci/compute/autoscale-white.png" alt="AutoscaleWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.compute.BMWhite**, **BareMetalWhite** (alias) **diagrams.oci.compute.AutoscaleWhite**
- **diagrams.oci.compute.BM**, **BareMetal** (alias)
- **diagrams.oci.compute.ContainerWhite** <img width="30" src="/img/resources/oci/compute/autoscale.png" alt="Autoscale" style="float: left; padding-right: 5px;" >
- **diagrams.oci.compute.Container** **diagrams.oci.compute.Autoscale**
- **diagrams.oci.compute.FunctionsWhite**
- **diagrams.oci.compute.Functions** <img width="30" src="/img/resources/oci/compute/bm-white.png" alt="BMWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.compute.InstancePoolsWhite** **diagrams.oci.compute.BMWhite**, **BareMetalWhite** (alias)
- **diagrams.oci.compute.InstancePools**
- **diagrams.oci.compute.OCIRWhite**, **OCIRegistryWhite** (alias) <img width="30" src="/img/resources/oci/compute/bm.png" alt="BM" style="float: left; padding-right: 5px;" >
- **diagrams.oci.compute.OCIR**, **OCIRegistry** (alias) **diagrams.oci.compute.BM**, **BareMetal** (alias)
- **diagrams.oci.compute.OKEWhite**, **ContainerEngineWhite** (alias)
- **diagrams.oci.compute.OKE**, **ContainerEngine** (alias) <img width="30" src="/img/resources/oci/compute/container-white.png" alt="ContainerWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.compute.VMWhite**, **VirtualMachineWhite** (alias) **diagrams.oci.compute.ContainerWhite**
- **diagrams.oci.compute.VM**, **VirtualMachine** (alias)
<img width="30" src="/img/resources/oci/compute/container.png" alt="Container" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.Container**
<img width="30" src="/img/resources/oci/compute/functions-white.png" alt="FunctionsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.FunctionsWhite**
<img width="30" src="/img/resources/oci/compute/functions.png" alt="Functions" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.Functions**
<img width="30" src="/img/resources/oci/compute/instance-pools-white.png" alt="InstancePoolsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.InstancePoolsWhite**
<img width="30" src="/img/resources/oci/compute/instance-pools.png" alt="InstancePools" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.InstancePools**
<img width="30" src="/img/resources/oci/compute/ocir-white.png" alt="OCIRWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.OCIRWhite**, **OCIRegistryWhite** (alias)
<img width="30" src="/img/resources/oci/compute/ocir.png" alt="OCIR" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.OCIR**, **OCIRegistry** (alias)
<img width="30" src="/img/resources/oci/compute/oke-white.png" alt="OKEWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.OKEWhite**, **ContainerEngineWhite** (alias)
<img width="30" src="/img/resources/oci/compute/oke.png" alt="OKE" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.OKE**, **ContainerEngine** (alias)
<img width="30" src="/img/resources/oci/compute/vm-white.png" alt="VMWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.VMWhite**, **VirtualMachineWhite** (alias)
<img width="30" src="/img/resources/oci/compute/vm.png" alt="VM" style="float: left; padding-right: 5px;" >
**diagrams.oci.compute.VM**, **VirtualMachine** (alias)
## oci.connectivity ## oci.connectivity
- **diagrams.oci.connectivity.BackboneWhite**
- **diagrams.oci.connectivity.Backbone** <img width="30" src="/img/resources/oci/connectivity/backbone-white.png" alt="BackboneWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.connectivity.CDNWhite** **diagrams.oci.connectivity.BackboneWhite**
- **diagrams.oci.connectivity.CDN**
- **diagrams.oci.connectivity.CustomerDatacenter** <img width="30" src="/img/resources/oci/connectivity/backbone.png" alt="Backbone" style="float: left; padding-right: 5px;" >
- **diagrams.oci.connectivity.CustomerDatacntrWhite** **diagrams.oci.connectivity.Backbone**
- **diagrams.oci.connectivity.CustomerPremiseWhite**
- **diagrams.oci.connectivity.CustomerPremise** <img width="30" src="/img/resources/oci/connectivity/cdn-white.png" alt="CDNWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.connectivity.DisconnectedRegionsWhite** **diagrams.oci.connectivity.CDNWhite**
- **diagrams.oci.connectivity.DisconnectedRegions**
- **diagrams.oci.connectivity.DNSWhite** <img width="30" src="/img/resources/oci/connectivity/cdn.png" alt="CDN" style="float: left; padding-right: 5px;" >
- **diagrams.oci.connectivity.DNS** **diagrams.oci.connectivity.CDN**
- **diagrams.oci.connectivity.FastConnectWhite**
- **diagrams.oci.connectivity.FastConnect** <img width="30" src="/img/resources/oci/connectivity/customer-datacenter.png" alt="CustomerDatacenter" style="float: left; padding-right: 5px;" >
- **diagrams.oci.connectivity.NATGatewayWhite** **diagrams.oci.connectivity.CustomerDatacenter**
- **diagrams.oci.connectivity.NATGateway**
- **diagrams.oci.connectivity.VPNWhite** <img width="30" src="/img/resources/oci/connectivity/customer-datacntr-white.png" alt="CustomerDatacntrWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.connectivity.VPN** **diagrams.oci.connectivity.CustomerDatacntrWhite**
<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-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**
<img width="30" src="/img/resources/oci/connectivity/disconnected-regions.png" alt="DisconnectedRegions" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.DisconnectedRegions**
<img width="30" src="/img/resources/oci/connectivity/dns-white.png" alt="DNSWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.DNSWhite**
<img width="30" src="/img/resources/oci/connectivity/dns.png" alt="DNS" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.DNS**
<img width="30" src="/img/resources/oci/connectivity/fast-connect-white.png" alt="FastConnectWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.FastConnectWhite**
<img width="30" src="/img/resources/oci/connectivity/fast-connect.png" alt="FastConnect" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.FastConnect**
<img width="30" src="/img/resources/oci/connectivity/nat-gateway-white.png" alt="NATGatewayWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.NATGatewayWhite**
<img width="30" src="/img/resources/oci/connectivity/nat-gateway.png" alt="NATGateway" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.NATGateway**
<img width="30" src="/img/resources/oci/connectivity/vpn-white.png" alt="VPNWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.VPNWhite**
<img width="30" src="/img/resources/oci/connectivity/vpn.png" alt="VPN" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.VPN**
## oci.database ## oci.database
- **diagrams.oci.database.AutonomousWhite**, **ADBWhite** (alias)
- **diagrams.oci.database.Autonomous**, **ADB** (alias) <img width="30" src="/img/resources/oci/database/autonomous-white.png" alt="AutonomousWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.database.BigdataServiceWhite** **diagrams.oci.database.AutonomousWhite**, **ADBWhite** (alias)
- **diagrams.oci.database.BigdataService**
- **diagrams.oci.database.DatabaseServiceWhite**, **DBServiceWhite** (alias) <img width="30" src="/img/resources/oci/database/autonomous.png" alt="Autonomous" style="float: left; padding-right: 5px;" >
- **diagrams.oci.database.DatabaseService**, **DBService** (alias) **diagrams.oci.database.Autonomous**, **ADB** (alias)
- **diagrams.oci.database.DataflowApacheWhite**
- **diagrams.oci.database.DataflowApache** <img width="30" src="/img/resources/oci/database/bigdata-service-white.png" alt="BigdataServiceWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.database.DcatWhite** **diagrams.oci.database.BigdataServiceWhite**
- **diagrams.oci.database.Dcat**
- **diagrams.oci.database.DisWhite** <img width="30" src="/img/resources/oci/database/bigdata-service.png" alt="BigdataService" style="float: left; padding-right: 5px;" >
- **diagrams.oci.database.Dis** **diagrams.oci.database.BigdataService**
- **diagrams.oci.database.DMSWhite**
- **diagrams.oci.database.DMS** <img width="30" src="/img/resources/oci/database/database-service-white.png" alt="DatabaseServiceWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.database.ScienceWhite** **diagrams.oci.database.DatabaseServiceWhite**, **DBServiceWhite** (alias)
- **diagrams.oci.database.Science**
- **diagrams.oci.database.StreamWhite** <img width="30" src="/img/resources/oci/database/database-service.png" alt="DatabaseService" style="float: left; padding-right: 5px;" >
- **diagrams.oci.database.Stream** **diagrams.oci.database.DatabaseService**, **DBService** (alias)
<img width="30" src="/img/resources/oci/database/dataflow-apache-white.png" alt="DataflowApacheWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.DataflowApacheWhite**
<img width="30" src="/img/resources/oci/database/dataflow-apache.png" alt="DataflowApache" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.DataflowApache**
<img width="30" src="/img/resources/oci/database/dcat-white.png" alt="DcatWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.DcatWhite**
<img width="30" src="/img/resources/oci/database/dcat.png" alt="Dcat" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.Dcat**
<img width="30" src="/img/resources/oci/database/dis-white.png" alt="DisWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.DisWhite**
<img width="30" src="/img/resources/oci/database/dis.png" alt="Dis" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.Dis**
<img width="30" src="/img/resources/oci/database/dms-white.png" alt="DMSWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.DMSWhite**
<img width="30" src="/img/resources/oci/database/dms.png" alt="DMS" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.DMS**
<img width="30" src="/img/resources/oci/database/science-white.png" alt="ScienceWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.ScienceWhite**
<img width="30" src="/img/resources/oci/database/science.png" alt="Science" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.Science**
<img width="30" src="/img/resources/oci/database/stream-white.png" alt="StreamWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.StreamWhite**
<img width="30" src="/img/resources/oci/database/stream.png" alt="Stream" style="float: left; padding-right: 5px;" >
**diagrams.oci.database.Stream**
## oci.devops ## oci.devops
- **diagrams.oci.devops.APIGatewayWhite**
- **diagrams.oci.devops.APIGateway** <img width="30" src="/img/resources/oci/devops/api-gateway-white.png" alt="APIGatewayWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.devops.APIServiceWhite** **diagrams.oci.devops.APIGatewayWhite**
- **diagrams.oci.devops.APIService**
- **diagrams.oci.devops.ResourceMgmtWhite** <img width="30" src="/img/resources/oci/devops/api-gateway.png" alt="APIGateway" style="float: left; padding-right: 5px;" >
- **diagrams.oci.devops.ResourceMgmt** **diagrams.oci.devops.APIGateway**
<img width="30" src="/img/resources/oci/devops/api-service-white.png" alt="APIServiceWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.devops.APIServiceWhite**
<img width="30" src="/img/resources/oci/devops/api-service.png" alt="APIService" style="float: left; padding-right: 5px;" >
**diagrams.oci.devops.APIService**
<img width="30" src="/img/resources/oci/devops/resource-mgmt-white.png" alt="ResourceMgmtWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.devops.ResourceMgmtWhite**
<img width="30" src="/img/resources/oci/devops/resource-mgmt.png" alt="ResourceMgmt" style="float: left; padding-right: 5px;" >
**diagrams.oci.devops.ResourceMgmt**
## oci.governance ## oci.governance
- **diagrams.oci.governance.AuditWhite**
- **diagrams.oci.governance.Audit** <img width="30" src="/img/resources/oci/governance/audit-white.png" alt="AuditWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.governance.CompartmentsWhite** **diagrams.oci.governance.AuditWhite**
- **diagrams.oci.governance.Compartments**
- **diagrams.oci.governance.GroupsWhite** <img width="30" src="/img/resources/oci/governance/audit.png" alt="Audit" style="float: left; padding-right: 5px;" >
- **diagrams.oci.governance.Groups** **diagrams.oci.governance.Audit**
- **diagrams.oci.governance.LoggingWhite**
- **diagrams.oci.governance.Logging** <img width="30" src="/img/resources/oci/governance/compartments-white.png" alt="CompartmentsWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.governance.OCIDWhite** **diagrams.oci.governance.CompartmentsWhite**
- **diagrams.oci.governance.OCID**
- **diagrams.oci.governance.PoliciesWhite** <img width="30" src="/img/resources/oci/governance/compartments.png" alt="Compartments" style="float: left; padding-right: 5px;" >
- **diagrams.oci.governance.Policies** **diagrams.oci.governance.Compartments**
- **diagrams.oci.governance.TaggingWhite**
- **diagrams.oci.governance.Tagging** <img width="30" src="/img/resources/oci/governance/groups-white.png" alt="GroupsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.GroupsWhite**
<img width="30" src="/img/resources/oci/governance/groups.png" alt="Groups" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.Groups**
<img width="30" src="/img/resources/oci/governance/logging-white.png" alt="LoggingWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.LoggingWhite**
<img width="30" src="/img/resources/oci/governance/logging.png" alt="Logging" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.Logging**
<img width="30" src="/img/resources/oci/governance/ocid-white.png" alt="OCIDWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.OCIDWhite**
<img width="30" src="/img/resources/oci/governance/ocid.png" alt="OCID" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.OCID**
<img width="30" src="/img/resources/oci/governance/policies-white.png" alt="PoliciesWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.PoliciesWhite**
<img width="30" src="/img/resources/oci/governance/policies.png" alt="Policies" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.Policies**
<img width="30" src="/img/resources/oci/governance/tagging-white.png" alt="TaggingWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.TaggingWhite**
<img width="30" src="/img/resources/oci/governance/tagging.png" alt="Tagging" style="float: left; padding-right: 5px;" >
**diagrams.oci.governance.Tagging**
## oci.monitoring ## oci.monitoring
- **diagrams.oci.monitoring.AlarmWhite**
- **diagrams.oci.monitoring.Alarm** <img width="30" src="/img/resources/oci/monitoring/alarm-white.png" alt="AlarmWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.monitoring.EmailWhite** **diagrams.oci.monitoring.AlarmWhite**
- **diagrams.oci.monitoring.Email**
- **diagrams.oci.monitoring.EventsWhite** <img width="30" src="/img/resources/oci/monitoring/alarm.png" alt="Alarm" style="float: left; padding-right: 5px;" >
- **diagrams.oci.monitoring.Events** **diagrams.oci.monitoring.Alarm**
- **diagrams.oci.monitoring.HealthCheckWhite**
- **diagrams.oci.monitoring.HealthCheck** <img width="30" src="/img/resources/oci/monitoring/email-white.png" alt="EmailWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.monitoring.NotificationsWhite** **diagrams.oci.monitoring.EmailWhite**
- **diagrams.oci.monitoring.Notifications**
- **diagrams.oci.monitoring.QueueWhite** <img width="30" src="/img/resources/oci/monitoring/email.png" alt="Email" style="float: left; padding-right: 5px;" >
- **diagrams.oci.monitoring.Queue** **diagrams.oci.monitoring.Email**
- **diagrams.oci.monitoring.SearchWhite**
- **diagrams.oci.monitoring.Search** <img width="30" src="/img/resources/oci/monitoring/events-white.png" alt="EventsWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.monitoring.TelemetryWhite** **diagrams.oci.monitoring.EventsWhite**
- **diagrams.oci.monitoring.Telemetry**
- **diagrams.oci.monitoring.WorkflowWhite** <img width="30" src="/img/resources/oci/monitoring/events.png" alt="Events" style="float: left; padding-right: 5px;" >
- **diagrams.oci.monitoring.Workflow** **diagrams.oci.monitoring.Events**
<img width="30" src="/img/resources/oci/monitoring/health-check-white.png" alt="HealthCheckWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.HealthCheckWhite**
<img width="30" src="/img/resources/oci/monitoring/health-check.png" alt="HealthCheck" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.HealthCheck**
<img width="30" src="/img/resources/oci/monitoring/notifications-white.png" alt="NotificationsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.NotificationsWhite**
<img width="30" src="/img/resources/oci/monitoring/notifications.png" alt="Notifications" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.Notifications**
<img width="30" src="/img/resources/oci/monitoring/queue-white.png" alt="QueueWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.QueueWhite**
<img width="30" src="/img/resources/oci/monitoring/queue.png" alt="Queue" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.Queue**
<img width="30" src="/img/resources/oci/monitoring/search-white.png" alt="SearchWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.SearchWhite**
<img width="30" src="/img/resources/oci/monitoring/search.png" alt="Search" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.Search**
<img width="30" src="/img/resources/oci/monitoring/telemetry-white.png" alt="TelemetryWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.TelemetryWhite**
<img width="30" src="/img/resources/oci/monitoring/telemetry.png" alt="Telemetry" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.Telemetry**
<img width="30" src="/img/resources/oci/monitoring/workflow-white.png" alt="WorkflowWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.WorkflowWhite**
<img width="30" src="/img/resources/oci/monitoring/workflow.png" alt="Workflow" style="float: left; padding-right: 5px;" >
**diagrams.oci.monitoring.Workflow**
## oci.network ## oci.network
- **diagrams.oci.network.DrgWhite**
- **diagrams.oci.network.Drg** <img width="30" src="/img/resources/oci/network/drg-white.png" alt="DrgWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.network.FirewallWhite** **diagrams.oci.network.DrgWhite**
- **diagrams.oci.network.Firewall**
- **diagrams.oci.network.InternetGatewayWhite** <img width="30" src="/img/resources/oci/network/drg.png" alt="Drg" style="float: left; padding-right: 5px;" >
- **diagrams.oci.network.InternetGateway** **diagrams.oci.network.Drg**
- **diagrams.oci.network.LoadBalancerWhite**
- **diagrams.oci.network.LoadBalancer** <img width="30" src="/img/resources/oci/network/firewall-white.png" alt="FirewallWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.network.RouteTableWhite** **diagrams.oci.network.FirewallWhite**
- **diagrams.oci.network.RouteTable**
- **diagrams.oci.network.SecurityListsWhite** <img width="30" src="/img/resources/oci/network/firewall.png" alt="Firewall" style="float: left; padding-right: 5px;" >
- **diagrams.oci.network.SecurityLists** **diagrams.oci.network.Firewall**
- **diagrams.oci.network.ServiceGatewayWhite**
- **diagrams.oci.network.ServiceGateway** <img width="30" src="/img/resources/oci/network/internet-gateway-white.png" alt="InternetGatewayWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.network.VcnWhite** **diagrams.oci.network.InternetGatewayWhite**
- **diagrams.oci.network.Vcn**
<img width="30" src="/img/resources/oci/network/internet-gateway.png" alt="InternetGateway" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.InternetGateway**
<img width="30" src="/img/resources/oci/network/load-balancer-white.png" alt="LoadBalancerWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.LoadBalancerWhite**
<img width="30" src="/img/resources/oci/network/load-balancer.png" alt="LoadBalancer" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.LoadBalancer**
<img width="30" src="/img/resources/oci/network/route-table-white.png" alt="RouteTableWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.RouteTableWhite**
<img width="30" src="/img/resources/oci/network/route-table.png" alt="RouteTable" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.RouteTable**
<img width="30" src="/img/resources/oci/network/security-lists-white.png" alt="SecurityListsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.SecurityListsWhite**
<img width="30" src="/img/resources/oci/network/security-lists.png" alt="SecurityLists" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.SecurityLists**
<img width="30" src="/img/resources/oci/network/service-gateway-white.png" alt="ServiceGatewayWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.ServiceGatewayWhite**
<img width="30" src="/img/resources/oci/network/service-gateway.png" alt="ServiceGateway" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.ServiceGateway**
<img width="30" src="/img/resources/oci/network/vcn-white.png" alt="VcnWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.VcnWhite**
<img width="30" src="/img/resources/oci/network/vcn.png" alt="Vcn" style="float: left; padding-right: 5px;" >
**diagrams.oci.network.Vcn**
## oci.security ## oci.security
- **diagrams.oci.security.CloudGuardWhite**
- **diagrams.oci.security.CloudGuard** <img width="30" src="/img/resources/oci/security/cloud-guard-white.png" alt="CloudGuardWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.security.DDOSWhite** **diagrams.oci.security.CloudGuardWhite**
- **diagrams.oci.security.DDOS**
- **diagrams.oci.security.EncryptionWhite** <img width="30" src="/img/resources/oci/security/cloud-guard.png" alt="CloudGuard" style="float: left; padding-right: 5px;" >
- **diagrams.oci.security.Encryption** **diagrams.oci.security.CloudGuard**
- **diagrams.oci.security.IDAccessWhite**
- **diagrams.oci.security.IDAccess** <img width="30" src="/img/resources/oci/security/ddos-white.png" alt="DDOSWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.security.KeyManagementWhite** **diagrams.oci.security.DDOSWhite**
- **diagrams.oci.security.KeyManagement**
- **diagrams.oci.security.MaxSecurityZoneWhite** <img width="30" src="/img/resources/oci/security/ddos.png" alt="DDOS" style="float: left; padding-right: 5px;" >
- **diagrams.oci.security.MaxSecurityZone** **diagrams.oci.security.DDOS**
- **diagrams.oci.security.VaultWhite**
- **diagrams.oci.security.Vault** <img width="30" src="/img/resources/oci/security/encryption-white.png" alt="EncryptionWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.security.WAFWhite** **diagrams.oci.security.EncryptionWhite**
- **diagrams.oci.security.WAF**
<img width="30" src="/img/resources/oci/security/encryption.png" alt="Encryption" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.Encryption**
<img width="30" src="/img/resources/oci/security/id-access-white.png" alt="IDAccessWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.IDAccessWhite**
<img width="30" src="/img/resources/oci/security/id-access.png" alt="IDAccess" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.IDAccess**
<img width="30" src="/img/resources/oci/security/key-management-white.png" alt="KeyManagementWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.KeyManagementWhite**
<img width="30" src="/img/resources/oci/security/key-management.png" alt="KeyManagement" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.KeyManagement**
<img width="30" src="/img/resources/oci/security/max-security-zone-white.png" alt="MaxSecurityZoneWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.MaxSecurityZoneWhite**
<img width="30" src="/img/resources/oci/security/max-security-zone.png" alt="MaxSecurityZone" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.MaxSecurityZone**
<img width="30" src="/img/resources/oci/security/vault-white.png" alt="VaultWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.VaultWhite**
<img width="30" src="/img/resources/oci/security/vault.png" alt="Vault" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.Vault**
<img width="30" src="/img/resources/oci/security/waf-white.png" alt="WAFWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.WAFWhite**
<img width="30" src="/img/resources/oci/security/waf.png" alt="WAF" style="float: left; padding-right: 5px;" >
**diagrams.oci.security.WAF**
## oci.storage ## oci.storage
- **diagrams.oci.storage.BackupRestoreWhite**
- **diagrams.oci.storage.BackupRestore** <img width="30" src="/img/resources/oci/storage/backup-restore-white.png" alt="BackupRestoreWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.storage.BlockStorageCloneWhite** **diagrams.oci.storage.BackupRestoreWhite**
- **diagrams.oci.storage.BlockStorageClone**
- **diagrams.oci.storage.BlockStorageWhite** <img width="30" src="/img/resources/oci/storage/backup-restore.png" alt="BackupRestore" style="float: left; padding-right: 5px;" >
- **diagrams.oci.storage.BlockStorage** **diagrams.oci.storage.BackupRestore**
- **diagrams.oci.storage.BucketsWhite**
- **diagrams.oci.storage.Buckets** <img width="30" src="/img/resources/oci/storage/block-storage-clone-white.png" alt="BlockStorageCloneWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.storage.DataTransferWhite** **diagrams.oci.storage.BlockStorageCloneWhite**
- **diagrams.oci.storage.DataTransfer**
- **diagrams.oci.storage.ElasticPerformanceWhite** <img width="30" src="/img/resources/oci/storage/block-storage-clone.png" alt="BlockStorageClone" style="float: left; padding-right: 5px;" >
- **diagrams.oci.storage.ElasticPerformance** **diagrams.oci.storage.BlockStorageClone**
- **diagrams.oci.storage.FileStorageWhite**
- **diagrams.oci.storage.FileStorage** <img width="30" src="/img/resources/oci/storage/block-storage-white.png" alt="BlockStorageWhite" style="float: left; padding-right: 5px;" >
- **diagrams.oci.storage.ObjectStorageWhite** **diagrams.oci.storage.BlockStorageWhite**
- **diagrams.oci.storage.ObjectStorage**
- **diagrams.oci.storage.StorageGatewayWhite** <img width="30" src="/img/resources/oci/storage/block-storage.png" alt="BlockStorage" style="float: left; padding-right: 5px;" >
- **diagrams.oci.storage.StorageGateway** **diagrams.oci.storage.BlockStorage**
<img width="30" src="/img/resources/oci/storage/buckets-white.png" alt="BucketsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.BucketsWhite**
<img width="30" src="/img/resources/oci/storage/buckets.png" alt="Buckets" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.Buckets**
<img width="30" src="/img/resources/oci/storage/data-transfer-white.png" alt="DataTransferWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.DataTransferWhite**
<img width="30" src="/img/resources/oci/storage/data-transfer.png" alt="DataTransfer" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.DataTransfer**
<img width="30" src="/img/resources/oci/storage/elastic-performance-white.png" alt="ElasticPerformanceWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.ElasticPerformanceWhite**
<img width="30" src="/img/resources/oci/storage/elastic-performance.png" alt="ElasticPerformance" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.ElasticPerformance**
<img width="30" src="/img/resources/oci/storage/file-storage-white.png" alt="FileStorageWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.FileStorageWhite**
<img width="30" src="/img/resources/oci/storage/file-storage.png" alt="FileStorage" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.FileStorage**
<img width="30" src="/img/resources/oci/storage/object-storage-white.png" alt="ObjectStorageWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.ObjectStorageWhite**
<img width="30" src="/img/resources/oci/storage/object-storage.png" alt="ObjectStorage" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.ObjectStorage**
<img width="30" src="/img/resources/oci/storage/storage-gateway-white.png" alt="StorageGatewayWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.StorageGatewayWhite**
<img width="30" src="/img/resources/oci/storage/storage-gateway.png" alt="StorageGateway" style="float: left; padding-right: 5px;" >
**diagrams.oci.storage.StorageGateway**

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save