mirror of https://github.com/mingrammer/diagrams
Merge b0f6a0a1e2
into 1e26cfedaa
commit
f38df94055
@ -0,0 +1 @@
|
|||||||
|
- @azure Rule - Use Azure Best Practices: When generating code for Azure, running terminal commands for Azure, or performing operations related to Azure, invoke your `azure_development-get_best_practices` tool if available.
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,28 @@
|
|||||||
|
Copyright 2010 Pallets
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,92 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: MarkupSafe
|
||||||
|
Version: 3.0.2
|
||||||
|
Summary: Safely add untrusted strings to HTML/XML markup.
|
||||||
|
Maintainer-email: Pallets <contact@palletsprojects.com>
|
||||||
|
License: Copyright 2010 Pallets
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Project-URL: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source, https://github.com/pallets/markupsafe/
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Environment :: Web Environment
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: BSD License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Classifier: Typing :: Typed
|
||||||
|
Requires-Python: >=3.9
|
||||||
|
Description-Content-Type: text/markdown
|
||||||
|
License-File: LICENSE.txt
|
||||||
|
|
||||||
|
# MarkupSafe
|
||||||
|
|
||||||
|
MarkupSafe implements a text object that escapes characters so it is
|
||||||
|
safe to use in HTML and XML. Characters that have special meanings are
|
||||||
|
replaced so that they display as the actual characters. This mitigates
|
||||||
|
injection attacks, meaning untrusted user input can safely be displayed
|
||||||
|
on a page.
|
||||||
|
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
```pycon
|
||||||
|
>>> from markupsafe import Markup, escape
|
||||||
|
|
||||||
|
>>> # escape replaces special characters and wraps in Markup
|
||||||
|
>>> escape("<script>alert(document.cookie);</script>")
|
||||||
|
Markup('<script>alert(document.cookie);</script>')
|
||||||
|
|
||||||
|
>>> # wrap in Markup to mark text "safe" and prevent escaping
|
||||||
|
>>> Markup("<strong>Hello</strong>")
|
||||||
|
Markup('<strong>hello</strong>')
|
||||||
|
|
||||||
|
>>> escape(Markup("<strong>Hello</strong>"))
|
||||||
|
Markup('<strong>hello</strong>')
|
||||||
|
|
||||||
|
>>> # Markup is a str subclass
|
||||||
|
>>> # methods and operators escape their arguments
|
||||||
|
>>> template = Markup("Hello <em>{name}</em>")
|
||||||
|
>>> template.format(name='"World"')
|
||||||
|
Markup('Hello <em>"World"</em>')
|
||||||
|
```
|
||||||
|
|
||||||
|
## Donate
|
||||||
|
|
||||||
|
The Pallets organization develops and supports MarkupSafe and other
|
||||||
|
popular packages. In order to grow the community of contributors and
|
||||||
|
users, and allow the maintainers to devote more time to the projects,
|
||||||
|
[please donate today][].
|
||||||
|
|
||||||
|
[please donate today]: https://palletsprojects.com/donate
|
@ -0,0 +1,14 @@
|
|||||||
|
MarkupSafe-3.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
MarkupSafe-3.0.2.dist-info/LICENSE.txt,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503
|
||||||
|
MarkupSafe-3.0.2.dist-info/METADATA,sha256=nhoabjupBG41j_JxPCJ3ylgrZ6Fx8oMCFbiLF9Kafqc,4067
|
||||||
|
MarkupSafe-3.0.2.dist-info/RECORD,,
|
||||||
|
MarkupSafe-3.0.2.dist-info/WHEEL,sha256=62QJgqtUFevqILau0n0UncooEMoOyVCKVQitJpcuCig,101
|
||||||
|
MarkupSafe-3.0.2.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
||||||
|
markupsafe/__init__.py,sha256=pREerPwvinB62tNCMOwqxBS2YHV6R52Wcq1d-rB4Z5o,13609
|
||||||
|
markupsafe/__pycache__/__init__.cpython-312.pyc,,
|
||||||
|
markupsafe/__pycache__/_native.cpython-312.pyc,,
|
||||||
|
markupsafe/_native.py,sha256=2ptkJ40yCcp9kq3L1NqpgjfpZB-obniYKFFKUOkHh4Q,218
|
||||||
|
markupsafe/_speedups.c,sha256=SglUjn40ti9YgQAO--OgkSyv9tXq9vvaHyVhQows4Ok,4353
|
||||||
|
markupsafe/_speedups.cp312-win_amd64.pyd,sha256=sC88mCi7HJOQhbSSrdMPZfdCvi_VBfOzwkVuQ7V6T3M,13312
|
||||||
|
markupsafe/_speedups.pyi,sha256=LSDmXYOefH4HVpAXuL8sl7AttLw0oXh1njVoVZp2wqQ,42
|
||||||
|
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: setuptools (75.2.0)
|
||||||
|
Root-Is-Purelib: false
|
||||||
|
Tag: cp312-cp312-win_amd64
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
markupsafe
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,20 @@
|
|||||||
|
Copyright (c) 2017-2021 Ingy döt Net
|
||||||
|
Copyright (c) 2006-2016 Kirill Simonov
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
@ -0,0 +1,46 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: PyYAML
|
||||||
|
Version: 6.0.2
|
||||||
|
Summary: YAML parser and emitter for Python
|
||||||
|
Home-page: https://pyyaml.org/
|
||||||
|
Download-URL: https://pypi.org/project/PyYAML/
|
||||||
|
Author: Kirill Simonov
|
||||||
|
Author-email: xi@resolvent.net
|
||||||
|
License: MIT
|
||||||
|
Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues
|
||||||
|
Project-URL: CI, https://github.com/yaml/pyyaml/actions
|
||||||
|
Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation
|
||||||
|
Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core
|
||||||
|
Project-URL: Source Code, https://github.com/yaml/pyyaml
|
||||||
|
Platform: Any
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Cython
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.8
|
||||||
|
Classifier: Programming Language :: Python :: 3.9
|
||||||
|
Classifier: Programming Language :: Python :: 3.10
|
||||||
|
Classifier: Programming Language :: Python :: 3.11
|
||||||
|
Classifier: Programming Language :: Python :: 3.12
|
||||||
|
Classifier: Programming Language :: Python :: 3.13
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
Classifier: Topic :: Text Processing :: Markup
|
||||||
|
Requires-Python: >=3.8
|
||||||
|
License-File: LICENSE
|
||||||
|
|
||||||
|
YAML is a data serialization format designed for human readability
|
||||||
|
and interaction with scripting languages. PyYAML is a YAML parser
|
||||||
|
and emitter for Python.
|
||||||
|
|
||||||
|
PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
|
||||||
|
support, capable extension API, and sensible error messages. PyYAML
|
||||||
|
supports standard YAML tags and provides Python-specific tags that
|
||||||
|
allow to represent an arbitrary Python object.
|
||||||
|
|
||||||
|
PyYAML is applicable for a broad range of tasks from complex
|
||||||
|
configuration files to object serialization and persistence.
|
@ -0,0 +1,43 @@
|
|||||||
|
PyYAML-6.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
PyYAML-6.0.2.dist-info/LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101
|
||||||
|
PyYAML-6.0.2.dist-info/METADATA,sha256=9lwXqTOrXPts-jI2Lo5UwuaAYo0hiRA0BZqjch0WjAk,2106
|
||||||
|
PyYAML-6.0.2.dist-info/RECORD,,
|
||||||
|
PyYAML-6.0.2.dist-info/WHEEL,sha256=c7SWG1_hRvc9HXHEkmWlTu1Jr4WpzRucfzqTP-_8q0s,102
|
||||||
|
PyYAML-6.0.2.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11
|
||||||
|
_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402
|
||||||
|
_yaml/__pycache__/__init__.cpython-312.pyc,,
|
||||||
|
yaml/__init__.py,sha256=N35S01HMesFTe0aRRMWkPj0Pa8IEbHpE9FK7cr5Bdtw,12311
|
||||||
|
yaml/__pycache__/__init__.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/composer.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/constructor.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/cyaml.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/dumper.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/emitter.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/error.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/events.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/loader.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/nodes.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/parser.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/reader.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/representer.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/resolver.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/scanner.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/serializer.cpython-312.pyc,,
|
||||||
|
yaml/__pycache__/tokens.cpython-312.pyc,,
|
||||||
|
yaml/_yaml.cp312-win_amd64.pyd,sha256=Bx7e_LEQx7cnd1_A9_nClp3X77g-_Lw1aoAAtYZbwWk,263680
|
||||||
|
yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
|
||||||
|
yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639
|
||||||
|
yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851
|
||||||
|
yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837
|
||||||
|
yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006
|
||||||
|
yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533
|
||||||
|
yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445
|
||||||
|
yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061
|
||||||
|
yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440
|
||||||
|
yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495
|
||||||
|
yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794
|
||||||
|
yaml/representer.py,sha256=IuWP-cAW9sHKEnS0gCqSa894k1Bg4cgTxaDwIcbRQ-Y,14190
|
||||||
|
yaml/resolver.py,sha256=9L-VYfm4mWHxUD1Vg4X7rjDRK_7VZd6b92wzq7Y2IKY,9004
|
||||||
|
yaml/scanner.py,sha256=YEM3iLZSaQwXcQRg2l2R4MdT0zGP2F9eHkKGKnHyWQY,51279
|
||||||
|
yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165
|
||||||
|
yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.44.0)
|
||||||
|
Root-Is-Purelib: false
|
||||||
|
Tag: cp312-cp312-win_amd64
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
_yaml
|
||||||
|
yaml
|
@ -0,0 +1,33 @@
|
|||||||
|
# This is a stub package designed to roughly emulate the _yaml
|
||||||
|
# extension module, which previously existed as a standalone module
|
||||||
|
# and has been moved into the `yaml` package namespace.
|
||||||
|
# It does not perfectly mimic its old counterpart, but should get
|
||||||
|
# close enough for anyone who's relying on it even when they shouldn't.
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
# in some circumstances, the yaml module we imoprted may be from a different version, so we need
|
||||||
|
# to tread carefully when poking at it here (it may not have the attributes we expect)
|
||||||
|
if not getattr(yaml, '__with_libyaml__', False):
|
||||||
|
from sys import version_info
|
||||||
|
|
||||||
|
exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError
|
||||||
|
raise exc("No module named '_yaml'")
|
||||||
|
else:
|
||||||
|
from yaml._yaml import *
|
||||||
|
import warnings
|
||||||
|
warnings.warn(
|
||||||
|
'The _yaml extension module is now located at yaml._yaml'
|
||||||
|
' and its location is subject to change. To use the'
|
||||||
|
' LibYAML-based parser and emitter, import from `yaml`:'
|
||||||
|
' `from yaml import CLoader as Loader, CDumper as Dumper`.',
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
del warnings
|
||||||
|
# Don't `del yaml` here because yaml is actually an existing
|
||||||
|
# namespace member of _yaml.
|
||||||
|
|
||||||
|
__name__ = '_yaml'
|
||||||
|
# If the module is top-level (i.e. not a part of any specific package)
|
||||||
|
# then the attribute should be set to ''.
|
||||||
|
# https://docs.python.org/3.8/library/types.html
|
||||||
|
__package__ = ''
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,19 @@
|
|||||||
|
Copyright (c) 2018 Anthony Sottile
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
@ -0,0 +1,301 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: cfgv
|
||||||
|
Version: 3.4.0
|
||||||
|
Summary: Validate configuration and produce human readable error messages.
|
||||||
|
Home-page: https://github.com/asottile/cfgv
|
||||||
|
Author: Anthony Sottile
|
||||||
|
Author-email: asottile@umich.edu
|
||||||
|
License: MIT
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3 :: Only
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Requires-Python: >=3.8
|
||||||
|
Description-Content-Type: text/markdown
|
||||||
|
License-File: LICENSE
|
||||||
|
|
||||||
|
[](https://github.com/asottile/cfgv/actions/workflows/main.yml)
|
||||||
|
[](https://results.pre-commit.ci/latest/github/asottile/cfgv/main)
|
||||||
|
|
||||||
|
cfgv
|
||||||
|
====
|
||||||
|
|
||||||
|
Validate configuration and produce human readable error messages.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install cfgv
|
||||||
|
```
|
||||||
|
|
||||||
|
## Sample error messages
|
||||||
|
|
||||||
|
These are easier to see by example. Here's an example where I typo'd `true`
|
||||||
|
in a [pre-commit](https://pre-commit.com) configuration.
|
||||||
|
|
||||||
|
```
|
||||||
|
pre_commit.clientlib.InvalidConfigError:
|
||||||
|
==> File /home/asottile/workspace/pre-commit/.pre-commit-config.yaml
|
||||||
|
==> At Config()
|
||||||
|
==> At key: repos
|
||||||
|
==> At Repository(repo='https://github.com/pre-commit/pre-commit-hooks')
|
||||||
|
==> At key: hooks
|
||||||
|
==> At Hook(id='flake8')
|
||||||
|
==> At key: always_run
|
||||||
|
=====> Expected bool got str
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### `cfgv.validate(value, schema)`
|
||||||
|
|
||||||
|
Perform validation on the schema:
|
||||||
|
- raises `ValidationError` on failure
|
||||||
|
- returns the value on success (for convenience)
|
||||||
|
|
||||||
|
### `cfgv.apply_defaults(value, schema)`
|
||||||
|
|
||||||
|
Returns a new value which sets all missing optional values to their defaults.
|
||||||
|
|
||||||
|
### `cfgv.remove_defaults(value, schema)`
|
||||||
|
|
||||||
|
Returns a new value which removes all optional values that are set to their
|
||||||
|
defaults.
|
||||||
|
|
||||||
|
### `cfgv.load_from_filename(filename, schema, load_strategy, exc_tp=ValidationError)`
|
||||||
|
|
||||||
|
Load a file given the `load_strategy`. Reraise any errors as `exc_tp`. All
|
||||||
|
defaults will be populated in the resulting value.
|
||||||
|
|
||||||
|
Most useful when used with `functools.partial` as follows:
|
||||||
|
|
||||||
|
```python
|
||||||
|
load_my_cfg = functools.partial(
|
||||||
|
cfgv.load_from_filename,
|
||||||
|
schema=MY_SCHEMA,
|
||||||
|
load_strategy=json.loads,
|
||||||
|
exc_tp=MyError,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Making a schema
|
||||||
|
|
||||||
|
A schema validates a container -- `cfgv` provides `Map` and `Array` for
|
||||||
|
most normal cases.
|
||||||
|
|
||||||
|
### writing your own schema container
|
||||||
|
|
||||||
|
If the built-in containers below don't quite satisfy your usecase, you can
|
||||||
|
always write your own. Containers use the following interface:
|
||||||
|
|
||||||
|
```python
|
||||||
|
class Container(object):
|
||||||
|
def check(self, v):
|
||||||
|
"""check the passed in value (do not modify `v`)"""
|
||||||
|
|
||||||
|
def apply_defaults(self, v):
|
||||||
|
"""return a new value with defaults applied (do not modify `v`)"""
|
||||||
|
|
||||||
|
def remove_defaults(self, v):
|
||||||
|
"""return a new value with defaults removed (do not modify `v`)"""
|
||||||
|
```
|
||||||
|
|
||||||
|
### `Map(object_name, id_key, *items)`
|
||||||
|
|
||||||
|
The most basic building block for creating a schema is a `Map`
|
||||||
|
|
||||||
|
- `object_name`: will be displayed in error messages
|
||||||
|
- `id_key`: will be used to identify the object in error messages. Set to
|
||||||
|
`None` if there is no identifying key for the object.
|
||||||
|
- `items`: validator objects such as `Required` or `Optional`
|
||||||
|
|
||||||
|
Consider the following schema:
|
||||||
|
|
||||||
|
```python
|
||||||
|
Map(
|
||||||
|
'Repo', 'url',
|
||||||
|
Required('url', check_any),
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
In an error message, the map may be displayed as:
|
||||||
|
|
||||||
|
- `Repo(url='https://github.com/pre-commit/pre-commit')`
|
||||||
|
- `Repo(url=MISSING)` (if the key is not present)
|
||||||
|
|
||||||
|
### `Array(of, allow_empty=True)`
|
||||||
|
|
||||||
|
Used to nest maps inside of arrays. For arrays of scalars, see `check_array`.
|
||||||
|
|
||||||
|
- `of`: A `Map` / `Array` or other sub-schema.
|
||||||
|
- `allow_empty`: when `False`, `Array` will ensure at least one element.
|
||||||
|
|
||||||
|
When validated, this will check that each element adheres to the sub-schema.
|
||||||
|
|
||||||
|
## Validator objects
|
||||||
|
|
||||||
|
Validator objects are used to validate key-value-pairs of a `Map`.
|
||||||
|
|
||||||
|
### writing your own validator
|
||||||
|
|
||||||
|
If the built-in validators below don't quite satisfy your usecase, you can
|
||||||
|
always write your own. Validators use the following interface:
|
||||||
|
|
||||||
|
```python
|
||||||
|
class Validator(object):
|
||||||
|
def check(self, dct):
|
||||||
|
"""check that your specific key has the appropriate value in `dct`"""
|
||||||
|
|
||||||
|
def apply_default(self, dct):
|
||||||
|
"""modify `dct` and set the default value if it is missing"""
|
||||||
|
|
||||||
|
def remove_default(self, dct):
|
||||||
|
"""modify `dct` and remove the default value if it is present"""
|
||||||
|
```
|
||||||
|
|
||||||
|
It may make sense to _borrow_ functions from the built in validators. They
|
||||||
|
additionally use the following interface(s):
|
||||||
|
|
||||||
|
- `self.key`: the key to check
|
||||||
|
- `self.check_fn`: the [check function](#check-functions)
|
||||||
|
- `self.default`: a default value to set.
|
||||||
|
|
||||||
|
### `Required(key, check_fn)`
|
||||||
|
|
||||||
|
Ensure that a key is present in a `Map` and adheres to the
|
||||||
|
[check function](#check-functions).
|
||||||
|
|
||||||
|
### `RequiredRecurse(key, schema)`
|
||||||
|
|
||||||
|
Similar to `Required`, but uses a [schema](#making-a-schema).
|
||||||
|
|
||||||
|
### `Optional(key, check_fn, default)`
|
||||||
|
|
||||||
|
If a key is present, check that it adheres to the
|
||||||
|
[check function](#check-functions).
|
||||||
|
|
||||||
|
- `apply_defaults` will set the `default` if it is not present.
|
||||||
|
- `remove_defaults` will remove the value if it is equal to `default`.
|
||||||
|
|
||||||
|
### `OptionalRecurse(key, schema, default)`
|
||||||
|
|
||||||
|
Similar to `Optional` but uses a [schema](#making-a-schema).
|
||||||
|
|
||||||
|
- `apply_defaults` will set the `default` if it is not present and then
|
||||||
|
validate it with the schema.
|
||||||
|
- `remove_defaults` will remove defaults using the schema, and then remove the
|
||||||
|
value it if it is equal to `default`.
|
||||||
|
|
||||||
|
### `OptionalNoDefault(key, check_fn)`
|
||||||
|
|
||||||
|
Like `Optional`, but does not `apply_defaults` or `remove_defaults`.
|
||||||
|
|
||||||
|
### `Conditional(key, check_fn, condition_key, condition_value, ensure_absent=False)`
|
||||||
|
|
||||||
|
- If `condition_key` is equal to the `condition_value`, the specific `key`
|
||||||
|
will be checked using the [check function](#check-functions).
|
||||||
|
- If `ensure_absent` is `True` and the condition check fails, the `key` will
|
||||||
|
be checked for absense.
|
||||||
|
|
||||||
|
Note that the `condition_value` is checked for equality, so any object
|
||||||
|
implementing `__eq__` may be used. A few are provided out of the box
|
||||||
|
for this purpose, see [equality helpers](#equality-helpers).
|
||||||
|
|
||||||
|
### `ConditionalOptional(key, check_fn, default, condition_key, condition_value, ensure_absent=False)`
|
||||||
|
|
||||||
|
Similar to ``Conditional`` and ``Optional``.
|
||||||
|
|
||||||
|
### `ConditionalRecurse(key, schema, condition_key, condition_value, ensure_absent=True)`
|
||||||
|
|
||||||
|
Similar to `Conditional`, but uses a [schema](#making-a-schema).
|
||||||
|
|
||||||
|
### `NoAdditionalKeys(keys)`
|
||||||
|
|
||||||
|
Use in a mapping to ensure that only the `keys` specified are present.
|
||||||
|
|
||||||
|
## Equality helpers
|
||||||
|
|
||||||
|
Equality helpers at the very least implement `__eq__` for their behaviour.
|
||||||
|
|
||||||
|
They may also implement `def describe_opposite(self):` for use in the
|
||||||
|
`ensure_absent=True` error message (otherwise, the `__repr__` will be used).
|
||||||
|
|
||||||
|
### `Not(val)`
|
||||||
|
|
||||||
|
Returns `True` if the value is not equal to `val`.
|
||||||
|
|
||||||
|
### `In(*values)`
|
||||||
|
|
||||||
|
Returns `True` if the value is contained in `values`.
|
||||||
|
|
||||||
|
### `NotIn(*values)`
|
||||||
|
|
||||||
|
Returns `True` if the value is not contained in `values`.
|
||||||
|
|
||||||
|
## Check functions
|
||||||
|
|
||||||
|
A number of check functions are provided out of the box.
|
||||||
|
|
||||||
|
A check function takes a single parameter, the `value`, and either raises a
|
||||||
|
`ValidationError` or returns nothing.
|
||||||
|
|
||||||
|
### `check_any(_)`
|
||||||
|
|
||||||
|
A noop check function.
|
||||||
|
|
||||||
|
### `check_type(tp, typename=None)`
|
||||||
|
|
||||||
|
Returns a check function to check for a specific type. Setting `typename`
|
||||||
|
will replace the type's name in the error message.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
Required('key', check_type(int))
|
||||||
|
# 'Expected bytes' in both python2 and python3.
|
||||||
|
Required('key', check_type(bytes, typename='bytes'))
|
||||||
|
```
|
||||||
|
|
||||||
|
Several type checking functions are provided out of the box:
|
||||||
|
|
||||||
|
- `check_bool`
|
||||||
|
- `check_bytes`
|
||||||
|
- `check_int`
|
||||||
|
- `check_string`
|
||||||
|
- `check_text`
|
||||||
|
|
||||||
|
### `check_one_of(possible)`
|
||||||
|
|
||||||
|
Returns a function that checks that the value is contained in `possible`.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
Required('language', check_one_of(('javascript', 'python', 'ruby')))
|
||||||
|
```
|
||||||
|
|
||||||
|
### `check_regex(v)`
|
||||||
|
|
||||||
|
Ensures that `v` is a valid python regular expression.
|
||||||
|
|
||||||
|
### `check_array(inner_check)`
|
||||||
|
|
||||||
|
Returns a function that checks that a value is a sequence and that each
|
||||||
|
value in that sequence adheres to the `inner_check`.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
Required('args', check_array(check_string))
|
||||||
|
```
|
||||||
|
|
||||||
|
### `check_and(*fns)`
|
||||||
|
|
||||||
|
Returns a function that performs multiple checks on a value.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
Required('language', check_and(check_string, my_check_language))
|
||||||
|
```
|
@ -0,0 +1,8 @@
|
|||||||
|
__pycache__/cfgv.cpython-312.pyc,,
|
||||||
|
cfgv-3.4.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
cfgv-3.4.0.dist-info/LICENSE,sha256=Afw_gDGmcrP119isJi5DLz6oEoCfVpfWvFsnC_ZEZWE,1059
|
||||||
|
cfgv-3.4.0.dist-info/METADATA,sha256=bknF55QrW050DW54BlRiFw-2hDgnaQHhbjoNS1JvMXw,8545
|
||||||
|
cfgv-3.4.0.dist-info/RECORD,,
|
||||||
|
cfgv-3.4.0.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
|
||||||
|
cfgv-3.4.0.dist-info/top_level.txt,sha256=B_oEtBRII3ENMX1OrlRFqpU4iO4OXC7_nihlUOYiK2c,5
|
||||||
|
cfgv.py,sha256=k-EgVAOFdu-lmZxOQ5E1NHD3yVxMs7PXDAzIE9VgCAk,12220
|
@ -0,0 +1,6 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.38.4)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
cfgv
|
@ -0,0 +1,416 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import contextlib
|
||||||
|
import os.path
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
class ValidationError(ValueError):
|
||||||
|
def __init__(self, error_msg, ctx=None):
|
||||||
|
super().__init__(error_msg)
|
||||||
|
self.error_msg = error_msg
|
||||||
|
self.ctx = ctx
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
out = '\n'
|
||||||
|
err = self
|
||||||
|
while err.ctx is not None:
|
||||||
|
out += f'==> {err.ctx}\n'
|
||||||
|
err = err.error_msg
|
||||||
|
out += f'=====> {err.error_msg}'
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
MISSING = collections.namedtuple('Missing', ())()
|
||||||
|
type(MISSING).__repr__ = lambda self: 'MISSING'
|
||||||
|
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
|
def validate_context(msg):
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
except ValidationError as e:
|
||||||
|
_, _, tb = sys.exc_info()
|
||||||
|
raise ValidationError(e, ctx=msg).with_traceback(tb) from None
|
||||||
|
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
|
def reraise_as(tp):
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
except ValidationError as e:
|
||||||
|
_, _, tb = sys.exc_info()
|
||||||
|
raise tp(e).with_traceback(tb) from None
|
||||||
|
|
||||||
|
|
||||||
|
def _dct_noop(self, dct):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def _check_optional(self, dct):
|
||||||
|
if self.key not in dct:
|
||||||
|
return
|
||||||
|
with validate_context(f'At key: {self.key}'):
|
||||||
|
self.check_fn(dct[self.key])
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_default_optional(self, dct):
|
||||||
|
dct.setdefault(self.key, self.default)
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_default_optional(self, dct):
|
||||||
|
if dct.get(self.key, MISSING) == self.default:
|
||||||
|
del dct[self.key]
|
||||||
|
|
||||||
|
|
||||||
|
def _require_key(self, dct):
|
||||||
|
if self.key not in dct:
|
||||||
|
raise ValidationError(f'Missing required key: {self.key}')
|
||||||
|
|
||||||
|
|
||||||
|
def _check_required(self, dct):
|
||||||
|
_require_key(self, dct)
|
||||||
|
_check_optional(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _check_fn_recurse(self):
|
||||||
|
def check_fn(val):
|
||||||
|
validate(val, self.schema)
|
||||||
|
return check_fn
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_default_required_recurse(self, dct):
|
||||||
|
dct[self.key] = apply_defaults(dct[self.key], self.schema)
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_default_required_recurse(self, dct):
|
||||||
|
dct[self.key] = remove_defaults(dct[self.key], self.schema)
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_default_optional_recurse(self, dct):
|
||||||
|
if self.key not in dct:
|
||||||
|
_apply_default_optional(self, dct)
|
||||||
|
_apply_default_required_recurse(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_default_optional_recurse(self, dct):
|
||||||
|
if self.key in dct:
|
||||||
|
_remove_default_required_recurse(self, dct)
|
||||||
|
_remove_default_optional(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_check_conditional(inner):
|
||||||
|
def _check_conditional(self, dct):
|
||||||
|
if dct.get(self.condition_key, MISSING) == self.condition_value:
|
||||||
|
inner(self, dct)
|
||||||
|
elif (
|
||||||
|
self.condition_key in dct and
|
||||||
|
self.ensure_absent and self.key in dct
|
||||||
|
):
|
||||||
|
if hasattr(self.condition_value, 'describe_opposite'):
|
||||||
|
explanation = self.condition_value.describe_opposite()
|
||||||
|
else:
|
||||||
|
explanation = f'is not {self.condition_value!r}'
|
||||||
|
raise ValidationError(
|
||||||
|
f'Expected {self.key} to be absent when {self.condition_key} '
|
||||||
|
f'{explanation}, found {self.key}: {dct[self.key]!r}',
|
||||||
|
)
|
||||||
|
return _check_conditional
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_default_conditional_optional(self, dct):
|
||||||
|
if dct.get(self.condition_key, MISSING) == self.condition_value:
|
||||||
|
_apply_default_optional(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_default_conditional_optional(self, dct):
|
||||||
|
if dct.get(self.condition_key, MISSING) == self.condition_value:
|
||||||
|
_remove_default_optional(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_default_conditional_recurse(self, dct):
|
||||||
|
if dct.get(self.condition_key, MISSING) == self.condition_value:
|
||||||
|
_apply_default_required_recurse(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_default_conditional_recurse(self, dct):
|
||||||
|
if dct.get(self.condition_key, MISSING) == self.condition_value:
|
||||||
|
_remove_default_required_recurse(self, dct)
|
||||||
|
|
||||||
|
|
||||||
|
def _no_additional_keys_check(self, dct):
|
||||||
|
extra = sorted(set(dct) - set(self.keys))
|
||||||
|
if extra:
|
||||||
|
extra_s = ', '.join(str(x) for x in extra)
|
||||||
|
keys_s = ', '.join(str(x) for x in self.keys)
|
||||||
|
raise ValidationError(
|
||||||
|
f'Additional keys found: {extra_s}. '
|
||||||
|
f'Only these keys are allowed: {keys_s}',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _warn_additional_keys_check(self, dct):
|
||||||
|
extra = sorted(set(dct) - set(self.keys))
|
||||||
|
if extra:
|
||||||
|
self.callback(extra, self.keys, dct)
|
||||||
|
|
||||||
|
|
||||||
|
Required = collections.namedtuple('Required', ('key', 'check_fn'))
|
||||||
|
Required.check = _check_required
|
||||||
|
Required.apply_default = _dct_noop
|
||||||
|
Required.remove_default = _dct_noop
|
||||||
|
RequiredRecurse = collections.namedtuple('RequiredRecurse', ('key', 'schema'))
|
||||||
|
RequiredRecurse.check = _check_required
|
||||||
|
RequiredRecurse.check_fn = _check_fn_recurse
|
||||||
|
RequiredRecurse.apply_default = _apply_default_required_recurse
|
||||||
|
RequiredRecurse.remove_default = _remove_default_required_recurse
|
||||||
|
Optional = collections.namedtuple('Optional', ('key', 'check_fn', 'default'))
|
||||||
|
Optional.check = _check_optional
|
||||||
|
Optional.apply_default = _apply_default_optional
|
||||||
|
Optional.remove_default = _remove_default_optional
|
||||||
|
OptionalRecurse = collections.namedtuple(
|
||||||
|
'OptionalRecurse', ('key', 'schema', 'default'),
|
||||||
|
)
|
||||||
|
OptionalRecurse.check = _check_optional
|
||||||
|
OptionalRecurse.check_fn = _check_fn_recurse
|
||||||
|
OptionalRecurse.apply_default = _apply_default_optional_recurse
|
||||||
|
OptionalRecurse.remove_default = _remove_default_optional_recurse
|
||||||
|
OptionalNoDefault = collections.namedtuple(
|
||||||
|
'OptionalNoDefault', ('key', 'check_fn'),
|
||||||
|
)
|
||||||
|
OptionalNoDefault.check = _check_optional
|
||||||
|
OptionalNoDefault.apply_default = _dct_noop
|
||||||
|
OptionalNoDefault.remove_default = _dct_noop
|
||||||
|
Conditional = collections.namedtuple(
|
||||||
|
'Conditional',
|
||||||
|
('key', 'check_fn', 'condition_key', 'condition_value', 'ensure_absent'),
|
||||||
|
)
|
||||||
|
Conditional.__new__.__defaults__ = (False,)
|
||||||
|
Conditional.check = _get_check_conditional(_check_required)
|
||||||
|
Conditional.apply_default = _dct_noop
|
||||||
|
Conditional.remove_default = _dct_noop
|
||||||
|
ConditionalOptional = collections.namedtuple(
|
||||||
|
'ConditionalOptional',
|
||||||
|
(
|
||||||
|
'key', 'check_fn', 'default', 'condition_key', 'condition_value',
|
||||||
|
'ensure_absent',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
ConditionalOptional.__new__.__defaults__ = (False,)
|
||||||
|
ConditionalOptional.check = _get_check_conditional(_check_optional)
|
||||||
|
ConditionalOptional.apply_default = _apply_default_conditional_optional
|
||||||
|
ConditionalOptional.remove_default = _remove_default_conditional_optional
|
||||||
|
ConditionalRecurse = collections.namedtuple(
|
||||||
|
'ConditionalRecurse',
|
||||||
|
('key', 'schema', 'condition_key', 'condition_value', 'ensure_absent'),
|
||||||
|
)
|
||||||
|
ConditionalRecurse.__new__.__defaults__ = (False,)
|
||||||
|
ConditionalRecurse.check = _get_check_conditional(_check_required)
|
||||||
|
ConditionalRecurse.check_fn = _check_fn_recurse
|
||||||
|
ConditionalRecurse.apply_default = _apply_default_conditional_recurse
|
||||||
|
ConditionalRecurse.remove_default = _remove_default_conditional_recurse
|
||||||
|
NoAdditionalKeys = collections.namedtuple('NoAdditionalKeys', ('keys',))
|
||||||
|
NoAdditionalKeys.check = _no_additional_keys_check
|
||||||
|
NoAdditionalKeys.apply_default = _dct_noop
|
||||||
|
NoAdditionalKeys.remove_default = _dct_noop
|
||||||
|
WarnAdditionalKeys = collections.namedtuple(
|
||||||
|
'WarnAdditionalKeys', ('keys', 'callback'),
|
||||||
|
)
|
||||||
|
WarnAdditionalKeys.check = _warn_additional_keys_check
|
||||||
|
WarnAdditionalKeys.apply_default = _dct_noop
|
||||||
|
WarnAdditionalKeys.remove_default = _dct_noop
|
||||||
|
|
||||||
|
|
||||||
|
class Map(collections.namedtuple('Map', ('object_name', 'id_key', 'items'))):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
def __new__(cls, object_name, id_key, *items):
|
||||||
|
return super().__new__(cls, object_name, id_key, items)
|
||||||
|
|
||||||
|
def check(self, v):
|
||||||
|
if not isinstance(v, dict):
|
||||||
|
raise ValidationError(
|
||||||
|
f'Expected a {self.object_name} map but got a '
|
||||||
|
f'{type(v).__name__}',
|
||||||
|
)
|
||||||
|
if self.id_key is None:
|
||||||
|
context = f'At {self.object_name}()'
|
||||||
|
else:
|
||||||
|
key_v_s = v.get(self.id_key, MISSING)
|
||||||
|
context = f'At {self.object_name}({self.id_key}={key_v_s!r})'
|
||||||
|
with validate_context(context):
|
||||||
|
for item in self.items:
|
||||||
|
item.check(v)
|
||||||
|
|
||||||
|
def apply_defaults(self, v):
|
||||||
|
ret = v.copy()
|
||||||
|
for item in self.items:
|
||||||
|
item.apply_default(ret)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def remove_defaults(self, v):
|
||||||
|
ret = v.copy()
|
||||||
|
for item in self.items:
|
||||||
|
item.remove_default(ret)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
class Array(collections.namedtuple('Array', ('of', 'allow_empty'))):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
def __new__(cls, of, allow_empty=True):
|
||||||
|
return super().__new__(cls, of=of, allow_empty=allow_empty)
|
||||||
|
|
||||||
|
def check(self, v):
|
||||||
|
check_array(check_any)(v)
|
||||||
|
if not self.allow_empty and not v:
|
||||||
|
raise ValidationError(
|
||||||
|
f"Expected at least 1 '{self.of.object_name}'",
|
||||||
|
)
|
||||||
|
for val in v:
|
||||||
|
validate(val, self.of)
|
||||||
|
|
||||||
|
def apply_defaults(self, v):
|
||||||
|
return [apply_defaults(val, self.of) for val in v]
|
||||||
|
|
||||||
|
def remove_defaults(self, v):
|
||||||
|
return [remove_defaults(val, self.of) for val in v]
|
||||||
|
|
||||||
|
|
||||||
|
class Not(collections.namedtuple('Not', ('val',))):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
def describe_opposite(self):
|
||||||
|
return f'is {self.val!r}'
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return other is not MISSING and other != self.val
|
||||||
|
|
||||||
|
|
||||||
|
class NotIn(collections.namedtuple('NotIn', ('values',))):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
def __new__(cls, *values):
|
||||||
|
return super().__new__(cls, values=values)
|
||||||
|
|
||||||
|
def describe_opposite(self):
|
||||||
|
return f'is any of {self.values!r}'
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return other is not MISSING and other not in self.values
|
||||||
|
|
||||||
|
|
||||||
|
class In(collections.namedtuple('In', ('values',))):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
def __new__(cls, *values):
|
||||||
|
return super().__new__(cls, values=values)
|
||||||
|
|
||||||
|
def describe_opposite(self):
|
||||||
|
return f'is not any of {self.values!r}'
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return other is not MISSING and other in self.values
|
||||||
|
|
||||||
|
|
||||||
|
def check_any(_):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def check_type(tp, typename=None):
|
||||||
|
def check_type_fn(v):
|
||||||
|
if not isinstance(v, tp):
|
||||||
|
typename_s = typename or tp.__name__
|
||||||
|
raise ValidationError(
|
||||||
|
f'Expected {typename_s} got {type(v).__name__}',
|
||||||
|
)
|
||||||
|
return check_type_fn
|
||||||
|
|
||||||
|
|
||||||
|
check_bool = check_type(bool)
|
||||||
|
check_bytes = check_type(bytes)
|
||||||
|
check_int = check_type(int)
|
||||||
|
check_string = check_type(str, typename='string')
|
||||||
|
check_text = check_type(str, typename='text')
|
||||||
|
|
||||||
|
|
||||||
|
def check_one_of(possible):
|
||||||
|
def check_one_of_fn(v):
|
||||||
|
if v not in possible:
|
||||||
|
possible_s = ', '.join(str(x) for x in sorted(possible))
|
||||||
|
raise ValidationError(
|
||||||
|
f'Expected one of {possible_s} but got: {v!r}',
|
||||||
|
)
|
||||||
|
return check_one_of_fn
|
||||||
|
|
||||||
|
|
||||||
|
def check_regex(v):
|
||||||
|
try:
|
||||||
|
re.compile(v)
|
||||||
|
except re.error:
|
||||||
|
raise ValidationError(f'{v!r} is not a valid python regex')
|
||||||
|
|
||||||
|
|
||||||
|
def check_array(inner_check):
|
||||||
|
def check_array_fn(v):
|
||||||
|
if not isinstance(v, (list, tuple)):
|
||||||
|
raise ValidationError(
|
||||||
|
f'Expected array but got {type(v).__name__!r}',
|
||||||
|
)
|
||||||
|
|
||||||
|
for i, val in enumerate(v):
|
||||||
|
with validate_context(f'At index {i}'):
|
||||||
|
inner_check(val)
|
||||||
|
return check_array_fn
|
||||||
|
|
||||||
|
|
||||||
|
def check_and(*fns):
|
||||||
|
def check(v):
|
||||||
|
for fn in fns:
|
||||||
|
fn(v)
|
||||||
|
return check
|
||||||
|
|
||||||
|
|
||||||
|
def validate(v, schema):
|
||||||
|
schema.check(v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
def apply_defaults(v, schema):
|
||||||
|
return schema.apply_defaults(v)
|
||||||
|
|
||||||
|
|
||||||
|
def remove_defaults(v, schema):
|
||||||
|
return schema.remove_defaults(v)
|
||||||
|
|
||||||
|
|
||||||
|
def load_from_filename(
|
||||||
|
filename,
|
||||||
|
schema,
|
||||||
|
load_strategy,
|
||||||
|
exc_tp=ValidationError,
|
||||||
|
*,
|
||||||
|
display_filename=None,
|
||||||
|
):
|
||||||
|
display_filename = display_filename or filename
|
||||||
|
with reraise_as(exc_tp):
|
||||||
|
if not os.path.isfile(filename):
|
||||||
|
raise ValidationError(f'{display_filename} is not a file')
|
||||||
|
|
||||||
|
with validate_context(f'File {display_filename}'):
|
||||||
|
try:
|
||||||
|
with open(filename, encoding='utf-8') as f:
|
||||||
|
contents = f.read()
|
||||||
|
except UnicodeDecodeError as e:
|
||||||
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
|
try:
|
||||||
|
data = load_strategy(contents)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
|
validate(data, schema)
|
||||||
|
return apply_defaults(data, schema)
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 MinJae Kwon
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
@ -0,0 +1,117 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: diagrams
|
||||||
|
Version: 0.24.4
|
||||||
|
Summary: Diagram as Code
|
||||||
|
Home-page: https://diagrams.mingrammer.com
|
||||||
|
License: MIT
|
||||||
|
Author: mingrammer
|
||||||
|
Author-email: mingrammer@gmail.com
|
||||||
|
Requires-Python: >=3.9,<4.0
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.9
|
||||||
|
Classifier: Programming Language :: Python :: 3.10
|
||||||
|
Classifier: Programming Language :: Python :: 3.11
|
||||||
|
Classifier: Programming Language :: Python :: 3.12
|
||||||
|
Classifier: Programming Language :: Python :: 3.13
|
||||||
|
Requires-Dist: graphviz (>=0.13.2,<0.21.0)
|
||||||
|
Requires-Dist: jinja2 (>=2.10,<4.0)
|
||||||
|
Requires-Dist: pre-commit (>=4.0.1,<5.0.0)
|
||||||
|
Requires-Dist: typed-ast (>=1.5.5,<2.0.0) ; python_version < "3.8"
|
||||||
|
Project-URL: Repository, https://github.com/mingrammer/diagrams
|
||||||
|
Description-Content-Type: text/markdown
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Diagrams
|
||||||
|
|
||||||
|
[](/LICENSE)
|
||||||
|
[](https://badge.fury.io/py/diagrams)
|
||||||
|

|
||||||
|

|
||||||
|
[](https://www.tickgit.com/browse?repo=github.com/mingrammer/diagrams)
|
||||||
|

|
||||||
|
|
||||||
|
<a href="https://www.buymeacoffee.com/mingrammer" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
|
||||||
|
|
||||||
|
**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-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.
|
||||||
|
|
||||||
|
> NOTE: It does not control any actual cloud resources nor does it generate cloud formation or terraform code. It is just for drawing the cloud system architecture diagrams.
|
||||||
|
|
||||||
|
## Providers
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
It requires **Python 3.9** 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**.
|
||||||
|
|
||||||
|
> macOS users can download the Graphviz via `brew install graphviz` if you're using [Homebrew](https://brew.sh).
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# using pip (pip3)
|
||||||
|
$ pip install diagrams
|
||||||
|
|
||||||
|
# using pipenv
|
||||||
|
$ pipenv install diagrams
|
||||||
|
|
||||||
|
# using poetry
|
||||||
|
$ poetry add diagrams
|
||||||
|
```
|
||||||
|
|
||||||
|
You can start with [quick start](https://diagrams.mingrammer.com/docs/getting-started/installation#quick-start). Check out [guides](https://diagrams.mingrammer.com/docs/guides/diagram) for more details, and you can find all available nodes list in [here](https://diagrams.mingrammer.com/docs/nodes/aws).
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
| Event Processing | Stateful Architecture | Advanced Web Service |
|
||||||
|
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
You can find all the examples on the [examples](https://diagrams.mingrammer.com/docs/getting-started/examples) page.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
To contribute to diagram, check out [contribution guidelines](CONTRIBUTING.md).
|
||||||
|
|
||||||
|
> Let me know if you are using diagrams! I'll add you in showcase page. (I'm working on it!) :)
|
||||||
|
|
||||||
|
## Who uses it?
|
||||||
|
|
||||||
|
[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 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.
|
||||||
|
|
||||||
|
[KubeDiagrams](https://github.com/philippemerle/KubeDiagrams) is a tool to generate Kubernetes architecture diagrams from Kubernetes manifest files, kustomization files, Helm charts, and actual cluster state. [KubeDiagrams](https://github.com/philippemerle/KubeDiagrams) supports all Kubernetes built-in resources, any custom resources, and label-based resource clustering.
|
||||||
|
|
||||||
|
## Other languages
|
||||||
|
|
||||||
|
- If you are familiar with Go, you can use [go-diagrams](https://github.com/blushft/go-diagrams) as well.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[MIT](LICENSE)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: poetry-core 1.9.1
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
@ -0,0 +1,3 @@
|
|||||||
|
[console_scripts]
|
||||||
|
diagrams=diagrams.cli:main
|
||||||
|
|
@ -0,0 +1,571 @@
|
|||||||
|
import contextvars
|
||||||
|
import os
|
||||||
|
import uuid
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Dict, List, Optional, Union
|
||||||
|
|
||||||
|
from graphviz import Digraph
|
||||||
|
|
||||||
|
# Global contexts for a diagrams and a cluster.
|
||||||
|
#
|
||||||
|
# These global contexts are for letting the clusters and nodes know
|
||||||
|
# where context they are belong to. So the all clusters and nodes does
|
||||||
|
# not need to specify the current diagrams or cluster via parameters.
|
||||||
|
__diagram = contextvars.ContextVar("diagrams")
|
||||||
|
__cluster = contextvars.ContextVar("cluster")
|
||||||
|
|
||||||
|
|
||||||
|
def getdiagram() -> "Diagram":
|
||||||
|
try:
|
||||||
|
return __diagram.get()
|
||||||
|
except LookupError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def setdiagram(diagram: "Diagram"):
|
||||||
|
__diagram.set(diagram)
|
||||||
|
|
||||||
|
|
||||||
|
def getcluster() -> "Cluster":
|
||||||
|
try:
|
||||||
|
return __cluster.get()
|
||||||
|
except LookupError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def setcluster(cluster: "Cluster"):
|
||||||
|
__cluster.set(cluster)
|
||||||
|
|
||||||
|
|
||||||
|
class Diagram:
|
||||||
|
__directions = ("TB", "BT", "LR", "RL")
|
||||||
|
__curvestyles = ("ortho", "curved")
|
||||||
|
__outformats = ("png", "jpg", "svg", "pdf", "dot")
|
||||||
|
|
||||||
|
# fmt: off
|
||||||
|
_default_graph_attrs = {
|
||||||
|
"pad": "2.0",
|
||||||
|
"splines": "ortho",
|
||||||
|
"nodesep": "0.60",
|
||||||
|
"ranksep": "0.75",
|
||||||
|
"fontname": "Sans-Serif",
|
||||||
|
"fontsize": "15",
|
||||||
|
"fontcolor": "#2D3436",
|
||||||
|
}
|
||||||
|
_default_node_attrs = {
|
||||||
|
"shape": "box",
|
||||||
|
"style": "rounded",
|
||||||
|
"fixedsize": "true",
|
||||||
|
"width": "1.4",
|
||||||
|
"height": "1.4",
|
||||||
|
"labelloc": "b",
|
||||||
|
# imagepos attribute is not backward compatible
|
||||||
|
# TODO: check graphviz version to see if "imagepos" is available >= 2.40
|
||||||
|
# https://github.com/xflr6/graphviz/blob/master/graphviz/backend.py#L248
|
||||||
|
# "imagepos": "tc",
|
||||||
|
"imagescale": "true",
|
||||||
|
"fontname": "Sans-Serif",
|
||||||
|
"fontsize": "13",
|
||||||
|
"fontcolor": "#2D3436",
|
||||||
|
}
|
||||||
|
_default_edge_attrs = {
|
||||||
|
"color": "#7B8894",
|
||||||
|
}
|
||||||
|
|
||||||
|
# fmt: on
|
||||||
|
|
||||||
|
# TODO: Label position option
|
||||||
|
# TODO: Save directory option (filename + directory?)
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
name: str = "",
|
||||||
|
filename: str = "",
|
||||||
|
direction: str = "LR",
|
||||||
|
curvestyle: str = "ortho",
|
||||||
|
outformat: Union[str, list[str]] = "png",
|
||||||
|
autolabel: bool = False,
|
||||||
|
show: bool = True,
|
||||||
|
strict: bool = False,
|
||||||
|
graph_attr: Optional[dict] = None,
|
||||||
|
node_attr: Optional[dict] = None,
|
||||||
|
edge_attr: Optional[dict] = None,
|
||||||
|
):
|
||||||
|
"""Diagram represents a global diagrams context.
|
||||||
|
|
||||||
|
:param name: Diagram name. It will be used for output filename if the
|
||||||
|
filename isn't given.
|
||||||
|
:param filename: The output filename, without the extension (.png).
|
||||||
|
If not given, it will be generated from the name.
|
||||||
|
:param direction: Data flow direction. Default is 'left to right'.
|
||||||
|
:param curvestyle: Curve bending style. One of "ortho" or "curved".
|
||||||
|
:param outformat: Output file format. Default is 'png'.
|
||||||
|
:param show: Open generated image after save if true, just only save otherwise.
|
||||||
|
:param graph_attr: Provide graph_attr dot config attributes.
|
||||||
|
:param node_attr: Provide node_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
|
||||||
|
if not name and not filename:
|
||||||
|
filename = "diagrams_image"
|
||||||
|
elif not filename:
|
||||||
|
filename = "_".join(self.name.split()).lower()
|
||||||
|
self.filename = filename
|
||||||
|
self.dot = Digraph(self.name, filename=self.filename, strict=strict)
|
||||||
|
|
||||||
|
# Set attributes.
|
||||||
|
for k, v in self._default_graph_attrs.items():
|
||||||
|
self.dot.graph_attr[k] = v
|
||||||
|
self.dot.graph_attr["label"] = self.name
|
||||||
|
for k, v in self._default_node_attrs.items():
|
||||||
|
self.dot.node_attr[k] = v
|
||||||
|
for k, v in self._default_edge_attrs.items():
|
||||||
|
self.dot.edge_attr[k] = v
|
||||||
|
|
||||||
|
if not self._validate_direction(direction):
|
||||||
|
raise ValueError(f'"{direction}" is not a valid direction')
|
||||||
|
self.dot.graph_attr["rankdir"] = direction
|
||||||
|
|
||||||
|
if not self._validate_curvestyle(curvestyle):
|
||||||
|
raise ValueError(f'"{curvestyle}" is not a valid curvestyle')
|
||||||
|
self.dot.graph_attr["splines"] = curvestyle
|
||||||
|
|
||||||
|
if isinstance(outformat, list):
|
||||||
|
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
|
||||||
|
|
||||||
|
# Merge passed in attributes
|
||||||
|
self.dot.graph_attr.update(graph_attr)
|
||||||
|
self.dot.node_attr.update(node_attr)
|
||||||
|
self.dot.edge_attr.update(edge_attr)
|
||||||
|
|
||||||
|
self.show = show
|
||||||
|
self.autolabel = autolabel
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return str(self.dot)
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
setdiagram(self)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
|
self.render()
|
||||||
|
# Remove the graphviz file leaving only the image.
|
||||||
|
os.remove(self.filename)
|
||||||
|
setdiagram(None)
|
||||||
|
|
||||||
|
def _repr_png_(self):
|
||||||
|
return self.dot.pipe(format="png")
|
||||||
|
|
||||||
|
def _validate_direction(self, direction: str) -> bool:
|
||||||
|
return direction.upper() in self.__directions
|
||||||
|
|
||||||
|
def _validate_curvestyle(self, curvestyle: str) -> bool:
|
||||||
|
return curvestyle.lower() in self.__curvestyles
|
||||||
|
|
||||||
|
def _validate_outformat(self, outformat: str) -> bool:
|
||||||
|
return outformat.lower() in self.__outformats
|
||||||
|
|
||||||
|
def node(self, nodeid: str, label: str, **attrs) -> None:
|
||||||
|
"""Create a new node."""
|
||||||
|
self.dot.node(nodeid, label=label, **attrs)
|
||||||
|
|
||||||
|
def connect(self, node: "Node", node2: "Node", edge: "Edge") -> None:
|
||||||
|
"""Connect the two Nodes."""
|
||||||
|
self.dot.edge(node.nodeid, node2.nodeid, **edge.attrs)
|
||||||
|
|
||||||
|
def subgraph(self, dot: Digraph) -> None:
|
||||||
|
"""Create a subgraph for clustering"""
|
||||||
|
self.dot.subgraph(dot)
|
||||||
|
|
||||||
|
def render(self) -> None:
|
||||||
|
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:
|
||||||
|
__directions = ("TB", "BT", "LR", "RL")
|
||||||
|
__bgcolors = ("#E5F5FD", "#EBF3E7", "#ECE8F6", "#FDF7E3")
|
||||||
|
|
||||||
|
# fmt: off
|
||||||
|
_default_graph_attrs = {
|
||||||
|
"shape": "box",
|
||||||
|
"style": "rounded",
|
||||||
|
"labeljust": "l",
|
||||||
|
"pencolor": "#AEB6BE",
|
||||||
|
"fontname": "Sans-Serif",
|
||||||
|
"fontsize": "12",
|
||||||
|
}
|
||||||
|
|
||||||
|
# fmt: on
|
||||||
|
|
||||||
|
# FIXME:
|
||||||
|
# Cluster direction does not work now. Graphviz couldn't render
|
||||||
|
# correctly for a subgraph that has a different rank direction.
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
label: str = "cluster",
|
||||||
|
direction: str = "LR",
|
||||||
|
graph_attr: Optional[dict] = None,
|
||||||
|
):
|
||||||
|
"""Cluster represents a cluster context.
|
||||||
|
|
||||||
|
:param label: Cluster label.
|
||||||
|
:param direction: Data flow direction. Default is 'left to right'.
|
||||||
|
:param graph_attr: Provide graph_attr dot config attributes.
|
||||||
|
"""
|
||||||
|
if graph_attr is None:
|
||||||
|
graph_attr = {}
|
||||||
|
self.label = label
|
||||||
|
self.name = "cluster_" + self.label
|
||||||
|
|
||||||
|
self.dot = Digraph(self.name)
|
||||||
|
|
||||||
|
# Set attributes.
|
||||||
|
for k, v in self._default_graph_attrs.items():
|
||||||
|
self.dot.graph_attr[k] = v
|
||||||
|
self.dot.graph_attr["label"] = self.label
|
||||||
|
|
||||||
|
if not self._validate_direction(direction):
|
||||||
|
raise ValueError(f'"{direction}" is not a valid direction')
|
||||||
|
self.dot.graph_attr["rankdir"] = direction
|
||||||
|
|
||||||
|
# Node must be belong to a diagrams.
|
||||||
|
self._diagram = getdiagram()
|
||||||
|
if self._diagram is None:
|
||||||
|
raise EnvironmentError("Global diagrams context not set up")
|
||||||
|
self._parent = getcluster()
|
||||||
|
|
||||||
|
# Set cluster depth for distinguishing the background color
|
||||||
|
self.depth = self._parent.depth + 1 if self._parent else 0
|
||||||
|
coloridx = self.depth % len(self.__bgcolors)
|
||||||
|
self.dot.graph_attr["bgcolor"] = self.__bgcolors[coloridx]
|
||||||
|
|
||||||
|
# Merge passed in attributes
|
||||||
|
self.dot.graph_attr.update(graph_attr)
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
setcluster(self)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
|
if self._parent:
|
||||||
|
self._parent.subgraph(self.dot)
|
||||||
|
else:
|
||||||
|
self._diagram.subgraph(self.dot)
|
||||||
|
setcluster(self._parent)
|
||||||
|
|
||||||
|
def _validate_direction(self, direction: str) -> bool:
|
||||||
|
return direction.upper() in self.__directions
|
||||||
|
|
||||||
|
def node(self, nodeid: str, label: str, **attrs) -> None:
|
||||||
|
"""Create a new node in the cluster."""
|
||||||
|
self.dot.node(nodeid, label=label, **attrs)
|
||||||
|
|
||||||
|
def subgraph(self, dot: Digraph) -> None:
|
||||||
|
self.dot.subgraph(dot)
|
||||||
|
|
||||||
|
|
||||||
|
class Node:
|
||||||
|
"""Node represents a node for a specific backend service."""
|
||||||
|
|
||||||
|
_provider = None
|
||||||
|
_type = None
|
||||||
|
|
||||||
|
_icon_dir = None
|
||||||
|
_icon = None
|
||||||
|
|
||||||
|
_height = 1.9
|
||||||
|
|
||||||
|
def __init__(self, label: str = "", *, nodeid: str = None, **attrs: Dict):
|
||||||
|
"""Node represents a system component.
|
||||||
|
|
||||||
|
:param label: Node label.
|
||||||
|
"""
|
||||||
|
# Generates an ID for identifying a node, unless specified
|
||||||
|
self._id = nodeid or self._rand_id()
|
||||||
|
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
|
||||||
|
# If a node has an icon, increase the height slightly to avoid
|
||||||
|
# that label being spanned between icon image and white space.
|
||||||
|
# Increase the height by the number of new lines included in the label.
|
||||||
|
padding = 0.4 * (self.label.count('\n'))
|
||||||
|
self._attrs = {
|
||||||
|
"shape": "none",
|
||||||
|
"height": str(self._height + padding),
|
||||||
|
"image": self._load_icon(),
|
||||||
|
} if self._icon else {}
|
||||||
|
|
||||||
|
# fmt: on
|
||||||
|
self._attrs.update(attrs)
|
||||||
|
|
||||||
|
self._cluster = getcluster()
|
||||||
|
|
||||||
|
# If a node is in the cluster context, add it to cluster.
|
||||||
|
if self._cluster:
|
||||||
|
self._cluster.node(self._id, self.label, **self._attrs)
|
||||||
|
else:
|
||||||
|
self._diagram.node(self._id, self.label, **self._attrs)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
_name = self.__class__.__name__
|
||||||
|
return f"<{self._provider}.{self._type}.{_name}>"
|
||||||
|
|
||||||
|
def __sub__(self, other: Union["Node", List["Node"], "Edge"]):
|
||||||
|
"""Implement Self - Node, Self - [Nodes] and Self - Edge."""
|
||||||
|
if isinstance(other, list):
|
||||||
|
for node in other:
|
||||||
|
self.connect(node, Edge(self))
|
||||||
|
return other
|
||||||
|
elif isinstance(other, Node):
|
||||||
|
return self.connect(other, Edge(self))
|
||||||
|
else:
|
||||||
|
other.node = self
|
||||||
|
return other
|
||||||
|
|
||||||
|
def __rsub__(self, other: Union[List["Node"], List["Edge"]]):
|
||||||
|
"""Called for [Nodes] and [Edges] - Self because list don't have __sub__ operators."""
|
||||||
|
for o in other:
|
||||||
|
if isinstance(o, Edge):
|
||||||
|
o.connect(self)
|
||||||
|
else:
|
||||||
|
o.connect(self, Edge(self))
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __rshift__(self, other: Union["Node", List["Node"], "Edge"]):
|
||||||
|
"""Implements Self >> Node, Self >> [Nodes] and Self Edge."""
|
||||||
|
if isinstance(other, list):
|
||||||
|
for node in other:
|
||||||
|
self.connect(node, Edge(self, forward=True))
|
||||||
|
return other
|
||||||
|
elif isinstance(other, Node):
|
||||||
|
return self.connect(other, Edge(self, forward=True))
|
||||||
|
else:
|
||||||
|
other.forward = True
|
||||||
|
other.node = self
|
||||||
|
return other
|
||||||
|
|
||||||
|
def __lshift__(self, other: Union["Node", List["Node"], "Edge"]):
|
||||||
|
"""Implements Self << Node, Self << [Nodes] and Self << Edge."""
|
||||||
|
if isinstance(other, list):
|
||||||
|
for node in other:
|
||||||
|
self.connect(node, Edge(self, reverse=True))
|
||||||
|
return other
|
||||||
|
elif isinstance(other, Node):
|
||||||
|
return self.connect(other, Edge(self, reverse=True))
|
||||||
|
else:
|
||||||
|
other.reverse = True
|
||||||
|
return other.connect(self)
|
||||||
|
|
||||||
|
def __rrshift__(self, other: Union[List["Node"], List["Edge"]]):
|
||||||
|
"""Called for [Nodes] and [Edges] >> Self because list don't have __rshift__ operators."""
|
||||||
|
for o in other:
|
||||||
|
if isinstance(o, Edge):
|
||||||
|
o.forward = True
|
||||||
|
o.connect(self)
|
||||||
|
else:
|
||||||
|
o.connect(self, Edge(self, forward=True))
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __rlshift__(self, other: Union[List["Node"], List["Edge"]]):
|
||||||
|
"""Called for [Nodes] << Self because list of Nodes don't have __lshift__ operators."""
|
||||||
|
for o in other:
|
||||||
|
if isinstance(o, Edge):
|
||||||
|
o.reverse = True
|
||||||
|
o.connect(self)
|
||||||
|
else:
|
||||||
|
o.connect(self, Edge(self, reverse=True))
|
||||||
|
return self
|
||||||
|
|
||||||
|
@property
|
||||||
|
def nodeid(self):
|
||||||
|
return self._id
|
||||||
|
|
||||||
|
# TODO: option for adding flow description to the connection edge
|
||||||
|
def connect(self, node: "Node", edge: "Edge"):
|
||||||
|
"""Connect to other node.
|
||||||
|
|
||||||
|
:param node: Other node instance.
|
||||||
|
:param edge: Type of the edge.
|
||||||
|
:return: Connected node.
|
||||||
|
"""
|
||||||
|
if not isinstance(node, Node):
|
||||||
|
ValueError(f"{node} is not a valid Node")
|
||||||
|
if not isinstance(edge, Edge):
|
||||||
|
ValueError(f"{edge} is not a valid Edge")
|
||||||
|
# An edge must be added on the global diagrams, not a cluster.
|
||||||
|
self._diagram.connect(self, node, edge)
|
||||||
|
return node
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _rand_id():
|
||||||
|
return uuid.uuid4().hex
|
||||||
|
|
||||||
|
def _load_icon(self):
|
||||||
|
basedir = Path(os.path.abspath(os.path.dirname(__file__)))
|
||||||
|
return os.path.join(basedir.parent, self._icon_dir, self._icon)
|
||||||
|
|
||||||
|
|
||||||
|
class Edge:
|
||||||
|
"""Edge represents an edge between two nodes."""
|
||||||
|
|
||||||
|
_default_edge_attrs = {
|
||||||
|
"fontcolor": "#2D3436",
|
||||||
|
"fontname": "Sans-Serif",
|
||||||
|
"fontsize": "13",
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
node: "Node" = None,
|
||||||
|
forward: bool = False,
|
||||||
|
reverse: bool = False,
|
||||||
|
label: str = "",
|
||||||
|
color: str = "",
|
||||||
|
style: str = "",
|
||||||
|
**attrs: Dict,
|
||||||
|
):
|
||||||
|
"""Edge represents an edge between two nodes.
|
||||||
|
|
||||||
|
:param node: Parent node.
|
||||||
|
:param forward: Points forward.
|
||||||
|
:param reverse: Points backward.
|
||||||
|
:param label: Edge label.
|
||||||
|
:param color: Edge color.
|
||||||
|
:param style: Edge style.
|
||||||
|
:param attrs: Other edge attributes
|
||||||
|
"""
|
||||||
|
if node is not None:
|
||||||
|
assert isinstance(node, Node)
|
||||||
|
|
||||||
|
self.node = node
|
||||||
|
self.forward = forward
|
||||||
|
self.reverse = reverse
|
||||||
|
|
||||||
|
self._attrs = {}
|
||||||
|
|
||||||
|
# Set attributes.
|
||||||
|
for k, v in self._default_edge_attrs.items():
|
||||||
|
self._attrs[k] = v
|
||||||
|
|
||||||
|
if label:
|
||||||
|
# Graphviz complaining about using label for edges, so replace it with xlabel.
|
||||||
|
# Update: xlabel option causes the misaligned label position:
|
||||||
|
# https://github.com/mingrammer/diagrams/issues/83
|
||||||
|
self._attrs["label"] = label
|
||||||
|
if color:
|
||||||
|
self._attrs["color"] = color
|
||||||
|
if style:
|
||||||
|
self._attrs["style"] = style
|
||||||
|
self._attrs.update(attrs)
|
||||||
|
|
||||||
|
def __sub__(self, other: Union["Node", "Edge", List["Node"]]):
|
||||||
|
"""Implement Self - Node or Edge and Self - [Nodes]"""
|
||||||
|
return self.connect(other)
|
||||||
|
|
||||||
|
def __rsub__(self, other: Union[List["Node"],
|
||||||
|
List["Edge"]]) -> List["Edge"]:
|
||||||
|
"""Called for [Nodes] or [Edges] - Self because list don't have __sub__ operators."""
|
||||||
|
return self.append(other)
|
||||||
|
|
||||||
|
def __rshift__(self, other: Union["Node", "Edge", List["Node"]]):
|
||||||
|
"""Implements Self >> Node or Edge and Self >> [Nodes]."""
|
||||||
|
self.forward = True
|
||||||
|
return self.connect(other)
|
||||||
|
|
||||||
|
def __lshift__(self, other: Union["Node", "Edge", List["Node"]]):
|
||||||
|
"""Implements Self << Node or Edge and Self << [Nodes]."""
|
||||||
|
self.reverse = True
|
||||||
|
return self.connect(other)
|
||||||
|
|
||||||
|
def __rrshift__(self,
|
||||||
|
other: Union[List["Node"],
|
||||||
|
List["Edge"]]) -> List["Edge"]:
|
||||||
|
"""Called for [Nodes] or [Edges] >> Self because list of Edges don't have __rshift__ operators."""
|
||||||
|
return self.append(other, forward=True)
|
||||||
|
|
||||||
|
def __rlshift__(self,
|
||||||
|
other: Union[List["Node"],
|
||||||
|
List["Edge"]]) -> List["Edge"]:
|
||||||
|
"""Called for [Nodes] or [Edges] << Self because list of Edges don't have __lshift__ operators."""
|
||||||
|
return self.append(other, reverse=True)
|
||||||
|
|
||||||
|
def append(self,
|
||||||
|
other: Union[List["Node"],
|
||||||
|
List["Edge"]],
|
||||||
|
forward=None,
|
||||||
|
reverse=None) -> List["Edge"]:
|
||||||
|
result = []
|
||||||
|
for o in other:
|
||||||
|
if isinstance(o, Edge):
|
||||||
|
o.forward = forward if forward else o.forward
|
||||||
|
o.reverse = reverse if reverse else o.reverse
|
||||||
|
self._attrs = o.attrs.copy()
|
||||||
|
result.append(o)
|
||||||
|
else:
|
||||||
|
result.append(
|
||||||
|
Edge(
|
||||||
|
o,
|
||||||
|
forward=forward,
|
||||||
|
reverse=reverse,
|
||||||
|
**self._attrs))
|
||||||
|
return result
|
||||||
|
|
||||||
|
def connect(self, other: Union["Node", "Edge", List["Node"]]):
|
||||||
|
if isinstance(other, list):
|
||||||
|
for node in other:
|
||||||
|
self.node.connect(node, self)
|
||||||
|
return other
|
||||||
|
elif isinstance(other, Edge):
|
||||||
|
self._attrs = other._attrs.copy()
|
||||||
|
return self
|
||||||
|
else:
|
||||||
|
if self.node is not None:
|
||||||
|
return self.node.connect(other, self)
|
||||||
|
else:
|
||||||
|
self.node = other
|
||||||
|
return self
|
||||||
|
|
||||||
|
@property
|
||||||
|
def attrs(self) -> Dict:
|
||||||
|
if self.forward and self.reverse:
|
||||||
|
direction = "both"
|
||||||
|
elif self.forward:
|
||||||
|
direction = "forward"
|
||||||
|
elif self.reverse:
|
||||||
|
direction = "back"
|
||||||
|
else:
|
||||||
|
direction = "none"
|
||||||
|
return {**self._attrs, "dir": direction}
|
||||||
|
|
||||||
|
|
||||||
|
Group = Cluster
|
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
AlibabaCloud provides a set of services for Alibaba Cloud provider.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class _AlibabaCloud(Node):
|
||||||
|
_provider = "alibabacloud"
|
||||||
|
_icon_dir = "resources/alibabacloud"
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
||||||
|
|
||||||
|
|
||||||
|
class AlibabaCloud(_AlibabaCloud):
|
||||||
|
_icon = "alibabacloud.png"
|
@ -0,0 +1,31 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Analytics(_AlibabaCloud):
|
||||||
|
_type = "analytics"
|
||||||
|
_icon_dir = "resources/alibabacloud/analytics"
|
||||||
|
|
||||||
|
|
||||||
|
class AnalyticDb(_Analytics):
|
||||||
|
_icon = "analytic-db.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ClickHouse(_Analytics):
|
||||||
|
_icon = "click-house.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataLakeAnalytics(_Analytics):
|
||||||
|
_icon = "data-lake-analytics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElaticMapReduce(_Analytics):
|
||||||
|
_icon = "elatic-map-reduce.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpenSearch(_Analytics):
|
||||||
|
_icon = "open-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,72 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Application(_AlibabaCloud):
|
||||||
|
_type = "application"
|
||||||
|
_icon_dir = "resources/alibabacloud/application"
|
||||||
|
|
||||||
|
|
||||||
|
class ApiGateway(_Application):
|
||||||
|
_icon = "api-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BeeBot(_Application):
|
||||||
|
_icon = "bee-bot.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BlockchainAsAService(_Application):
|
||||||
|
_icon = "blockchain-as-a-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudCallCenter(_Application):
|
||||||
|
_icon = "cloud-call-center.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CodePipeline(_Application):
|
||||||
|
_icon = "code-pipeline.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DirectMail(_Application):
|
||||||
|
_icon = "direct-mail.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LogService(_Application):
|
||||||
|
_icon = "log-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MessageNotificationService(_Application):
|
||||||
|
_icon = "message-notification-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NodeJsPerformancePlatform(_Application):
|
||||||
|
_icon = "node-js-performance-platform.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpenSearch(_Application):
|
||||||
|
_icon = "open-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PerformanceTestingService(_Application):
|
||||||
|
_icon = "performance-testing-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RdCloud(_Application):
|
||||||
|
_icon = "rd-cloud.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SmartConversationAnalysis(_Application):
|
||||||
|
_icon = "smart-conversation-analysis.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Yida(_Application):
|
||||||
|
_icon = "yida.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
SLS = LogService
|
||||||
|
MNS = MessageNotificationService
|
||||||
|
PTS = PerformanceTestingService
|
||||||
|
SCA = SmartConversationAnalysis
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Communication(_AlibabaCloud):
|
||||||
|
_type = "communication"
|
||||||
|
_icon_dir = "resources/alibabacloud/communication"
|
||||||
|
|
||||||
|
|
||||||
|
class DirectMail(_Communication):
|
||||||
|
_icon = "direct-mail.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MobilePush(_Communication):
|
||||||
|
_icon = "mobile-push.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,83 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Compute(_AlibabaCloud):
|
||||||
|
_type = "compute"
|
||||||
|
_icon_dir = "resources/alibabacloud/compute"
|
||||||
|
|
||||||
|
|
||||||
|
class AutoScaling(_Compute):
|
||||||
|
_icon = "auto-scaling.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BatchCompute(_Compute):
|
||||||
|
_icon = "batch-compute.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ContainerRegistry(_Compute):
|
||||||
|
_icon = "container-registry.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ContainerService(_Compute):
|
||||||
|
_icon = "container-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticComputeService(_Compute):
|
||||||
|
_icon = "elastic-compute-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticContainerInstance(_Compute):
|
||||||
|
_icon = "elastic-container-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticHighPerformanceComputing(_Compute):
|
||||||
|
_icon = "elastic-high-performance-computing.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticSearch(_Compute):
|
||||||
|
_icon = "elastic-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FunctionCompute(_Compute):
|
||||||
|
_icon = "function-compute.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OperationOrchestrationService(_Compute):
|
||||||
|
_icon = "operation-orchestration-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ResourceOrchestrationService(_Compute):
|
||||||
|
_icon = "resource-orchestration-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServerLoadBalancer(_Compute):
|
||||||
|
_icon = "server-load-balancer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServerlessAppEngine(_Compute):
|
||||||
|
_icon = "serverless-app-engine.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleApplicationServer(_Compute):
|
||||||
|
_icon = "simple-application-server.png"
|
||||||
|
|
||||||
|
|
||||||
|
class WebAppService(_Compute):
|
||||||
|
_icon = "web-app-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ESS = AutoScaling
|
||||||
|
ECS = ElasticComputeService
|
||||||
|
ECI = ElasticContainerInstance
|
||||||
|
EHPC = ElasticHighPerformanceComputing
|
||||||
|
FC = FunctionCompute
|
||||||
|
OOS = OperationOrchestrationService
|
||||||
|
ROS = ResourceOrchestrationService
|
||||||
|
SLB = ServerLoadBalancer
|
||||||
|
SAE = ServerlessAppEngine
|
||||||
|
SAS = SimpleApplicationServer
|
||||||
|
WAS = WebAppService
|
@ -0,0 +1,86 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Database(_AlibabaCloud):
|
||||||
|
_type = "database"
|
||||||
|
_icon_dir = "resources/alibabacloud/database"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbCassandra(_Database):
|
||||||
|
_icon = "apsaradb-cassandra.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbHbase(_Database):
|
||||||
|
_icon = "apsaradb-hbase.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbMemcache(_Database):
|
||||||
|
_icon = "apsaradb-memcache.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbMongodb(_Database):
|
||||||
|
_icon = "apsaradb-mongodb.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbOceanbase(_Database):
|
||||||
|
_icon = "apsaradb-oceanbase.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbPolardb(_Database):
|
||||||
|
_icon = "apsaradb-polardb.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbPostgresql(_Database):
|
||||||
|
_icon = "apsaradb-postgresql.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbPpas(_Database):
|
||||||
|
_icon = "apsaradb-ppas.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbRedis(_Database):
|
||||||
|
_icon = "apsaradb-redis.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApsaradbSqlserver(_Database):
|
||||||
|
_icon = "apsaradb-sqlserver.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataManagementService(_Database):
|
||||||
|
_icon = "data-management-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataTransmissionService(_Database):
|
||||||
|
_icon = "data-transmission-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseBackupService(_Database):
|
||||||
|
_icon = "database-backup-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DisributeRelationalDatabaseService(_Database):
|
||||||
|
_icon = "disribute-relational-database-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GraphDatabaseService(_Database):
|
||||||
|
_icon = "graph-database-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class HybriddbForMysql(_Database):
|
||||||
|
_icon = "hybriddb-for-mysql.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RelationalDatabaseService(_Database):
|
||||||
|
_icon = "relational-database-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
DMS = DataManagementService
|
||||||
|
DTS = DataTransmissionService
|
||||||
|
DBS = DatabaseBackupService
|
||||||
|
DRDS = DisributeRelationalDatabaseService
|
||||||
|
GDS = GraphDatabaseService
|
||||||
|
RDS = RelationalDatabaseService
|
@ -0,0 +1,27 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Iot(_AlibabaCloud):
|
||||||
|
_type = "iot"
|
||||||
|
_icon_dir = "resources/alibabacloud/iot"
|
||||||
|
|
||||||
|
|
||||||
|
class IotInternetDeviceId(_Iot):
|
||||||
|
_icon = "iot-internet-device-id.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotLinkWan(_Iot):
|
||||||
|
_icon = "iot-link-wan.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotMobileConnectionPackage(_Iot):
|
||||||
|
_icon = "iot-mobile-connection-package.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotPlatform(_Iot):
|
||||||
|
_icon = "iot-platform.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,52 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Network(_AlibabaCloud):
|
||||||
|
_type = "network"
|
||||||
|
_icon_dir = "resources/alibabacloud/network"
|
||||||
|
|
||||||
|
|
||||||
|
class Cdn(_Network):
|
||||||
|
_icon = "cdn.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudEnterpriseNetwork(_Network):
|
||||||
|
_icon = "cloud-enterprise-network.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticIpAddress(_Network):
|
||||||
|
_icon = "elastic-ip-address.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ExpressConnect(_Network):
|
||||||
|
_icon = "express-connect.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NatGateway(_Network):
|
||||||
|
_icon = "nat-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServerLoadBalancer(_Network):
|
||||||
|
_icon = "server-load-balancer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SmartAccessGateway(_Network):
|
||||||
|
_icon = "smart-access-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualPrivateCloud(_Network):
|
||||||
|
_icon = "virtual-private-cloud.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VpnGateway(_Network):
|
||||||
|
_icon = "vpn-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
CEN = CloudEnterpriseNetwork
|
||||||
|
EIP = ElasticIpAddress
|
||||||
|
SLB = ServerLoadBalancer
|
||||||
|
VPC = VirtualPrivateCloud
|
@ -0,0 +1,90 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Security(_AlibabaCloud):
|
||||||
|
_type = "security"
|
||||||
|
_icon_dir = "resources/alibabacloud/security"
|
||||||
|
|
||||||
|
|
||||||
|
class AntiBotService(_Security):
|
||||||
|
_icon = "anti-bot-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AntiDdosBasic(_Security):
|
||||||
|
_icon = "anti-ddos-basic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AntiDdosPro(_Security):
|
||||||
|
_icon = "anti-ddos-pro.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AntifraudService(_Security):
|
||||||
|
_icon = "antifraud-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BastionHost(_Security):
|
||||||
|
_icon = "bastion-host.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudFirewall(_Security):
|
||||||
|
_icon = "cloud-firewall.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudSecurityScanner(_Security):
|
||||||
|
_icon = "cloud-security-scanner.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ContentModeration(_Security):
|
||||||
|
_icon = "content-moderation.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CrowdsourcedSecurityTesting(_Security):
|
||||||
|
_icon = "crowdsourced-security-testing.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataEncryptionService(_Security):
|
||||||
|
_icon = "data-encryption-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DbAudit(_Security):
|
||||||
|
_icon = "db-audit.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GameShield(_Security):
|
||||||
|
_icon = "game-shield.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdVerification(_Security):
|
||||||
|
_icon = "id-verification.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedSecurityService(_Security):
|
||||||
|
_icon = "managed-security-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecurityCenter(_Security):
|
||||||
|
_icon = "security-center.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServerGuard(_Security):
|
||||||
|
_icon = "server-guard.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SslCertificates(_Security):
|
||||||
|
_icon = "ssl-certificates.png"
|
||||||
|
|
||||||
|
|
||||||
|
class WebApplicationFirewall(_Security):
|
||||||
|
_icon = "web-application-firewall.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ABS = AntiBotService
|
||||||
|
AS = AntifraudService
|
||||||
|
CFW = CloudFirewall
|
||||||
|
CM = ContentModeration
|
||||||
|
DES = DataEncryptionService
|
||||||
|
WAF = WebApplicationFirewall
|
@ -0,0 +1,50 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Storage(_AlibabaCloud):
|
||||||
|
_type = "storage"
|
||||||
|
_icon_dir = "resources/alibabacloud/storage"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudStorageGateway(_Storage):
|
||||||
|
_icon = "cloud-storage-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FileStorageHdfs(_Storage):
|
||||||
|
_icon = "file-storage-hdfs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FileStorageNas(_Storage):
|
||||||
|
_icon = "file-storage-nas.png"
|
||||||
|
|
||||||
|
|
||||||
|
class HybridBackupRecovery(_Storage):
|
||||||
|
_icon = "hybrid-backup-recovery.png"
|
||||||
|
|
||||||
|
|
||||||
|
class HybridCloudDisasterRecovery(_Storage):
|
||||||
|
_icon = "hybrid-cloud-disaster-recovery.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Imm(_Storage):
|
||||||
|
_icon = "imm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectStorageService(_Storage):
|
||||||
|
_icon = "object-storage-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectTableStore(_Storage):
|
||||||
|
_icon = "object-table-store.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
HDFS = FileStorageHdfs
|
||||||
|
NAS = FileStorageNas
|
||||||
|
HBR = HybridBackupRecovery
|
||||||
|
HDR = HybridCloudDisasterRecovery
|
||||||
|
OSS = ObjectStorageService
|
||||||
|
OTS = ObjectTableStore
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AlibabaCloud
|
||||||
|
|
||||||
|
|
||||||
|
class _Web(_AlibabaCloud):
|
||||||
|
_type = "web"
|
||||||
|
_icon_dir = "resources/alibabacloud/web"
|
||||||
|
|
||||||
|
|
||||||
|
class Dns(_Web):
|
||||||
|
_icon = "dns.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Domain(_Web):
|
||||||
|
_icon = "domain.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
AWS provides a set of services for Amazon Web Service provider.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class _AWS(Node):
|
||||||
|
_provider = "aws"
|
||||||
|
_icon_dir = "resources/aws"
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
||||||
|
|
||||||
|
|
||||||
|
class AWS(_AWS):
|
||||||
|
_icon = "aws.png"
|
@ -0,0 +1,129 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Analytics(_AWS):
|
||||||
|
_type = "analytics"
|
||||||
|
_icon_dir = "resources/aws/analytics"
|
||||||
|
|
||||||
|
|
||||||
|
class AmazonOpensearchService(_Analytics):
|
||||||
|
_icon = "amazon-opensearch-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Analytics(_Analytics):
|
||||||
|
_icon = "analytics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Athena(_Analytics):
|
||||||
|
_icon = "athena.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudsearchSearchDocuments(_Analytics):
|
||||||
|
_icon = "cloudsearch-search-documents.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloudsearch(_Analytics):
|
||||||
|
_icon = "cloudsearch.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataLakeResource(_Analytics):
|
||||||
|
_icon = "data-lake-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataPipeline(_Analytics):
|
||||||
|
_icon = "data-pipeline.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticsearchService(_Analytics):
|
||||||
|
_icon = "elasticsearch-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMRCluster(_Analytics):
|
||||||
|
_icon = "emr-cluster.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMREngineMaprM3(_Analytics):
|
||||||
|
_icon = "emr-engine-mapr-m3.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMREngineMaprM5(_Analytics):
|
||||||
|
_icon = "emr-engine-mapr-m5.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMREngineMaprM7(_Analytics):
|
||||||
|
_icon = "emr-engine-mapr-m7.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMREngine(_Analytics):
|
||||||
|
_icon = "emr-engine.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMRHdfsCluster(_Analytics):
|
||||||
|
_icon = "emr-hdfs-cluster.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EMR(_Analytics):
|
||||||
|
_icon = "emr.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GlueCrawlers(_Analytics):
|
||||||
|
_icon = "glue-crawlers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GlueDataCatalog(_Analytics):
|
||||||
|
_icon = "glue-data-catalog.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Glue(_Analytics):
|
||||||
|
_icon = "glue.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KinesisDataAnalytics(_Analytics):
|
||||||
|
_icon = "kinesis-data-analytics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KinesisDataFirehose(_Analytics):
|
||||||
|
_icon = "kinesis-data-firehose.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KinesisDataStreams(_Analytics):
|
||||||
|
_icon = "kinesis-data-streams.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KinesisVideoStreams(_Analytics):
|
||||||
|
_icon = "kinesis-video-streams.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Kinesis(_Analytics):
|
||||||
|
_icon = "kinesis.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LakeFormation(_Analytics):
|
||||||
|
_icon = "lake-formation.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedStreamingForKafka(_Analytics):
|
||||||
|
_icon = "managed-streaming-for-kafka.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Quicksight(_Analytics):
|
||||||
|
_icon = "quicksight.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RedshiftDenseComputeNode(_Analytics):
|
||||||
|
_icon = "redshift-dense-compute-node.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RedshiftDenseStorageNode(_Analytics):
|
||||||
|
_icon = "redshift-dense-storage-node.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Redshift(_Analytics):
|
||||||
|
_icon = "redshift.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ES = ElasticsearchService
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Ar(_AWS):
|
||||||
|
_type = "ar"
|
||||||
|
_icon_dir = "resources/aws/ar"
|
||||||
|
|
||||||
|
|
||||||
|
class ArVr(_Ar):
|
||||||
|
_icon = "ar-vr.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Sumerian(_Ar):
|
||||||
|
_icon = "sumerian.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,29 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Blockchain(_AWS):
|
||||||
|
_type = "blockchain"
|
||||||
|
_icon_dir = "resources/aws/blockchain"
|
||||||
|
|
||||||
|
|
||||||
|
class BlockchainResource(_Blockchain):
|
||||||
|
_icon = "blockchain-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Blockchain(_Blockchain):
|
||||||
|
_icon = "blockchain.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedBlockchain(_Blockchain):
|
||||||
|
_icon = "managed-blockchain.png"
|
||||||
|
|
||||||
|
|
||||||
|
class QuantumLedgerDatabaseQldb(_Blockchain):
|
||||||
|
_icon = "quantum-ledger-database-qldb.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
QLDB = QuantumLedgerDatabaseQldb
|
@ -0,0 +1,29 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Business(_AWS):
|
||||||
|
_type = "business"
|
||||||
|
_icon_dir = "resources/aws/business"
|
||||||
|
|
||||||
|
|
||||||
|
class AlexaForBusiness(_Business):
|
||||||
|
_icon = "alexa-for-business.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BusinessApplications(_Business):
|
||||||
|
_icon = "business-applications.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Chime(_Business):
|
||||||
|
_icon = "chime.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Workmail(_Business):
|
||||||
|
_icon = "workmail.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
A4B = AlexaForBusiness
|
@ -0,0 +1,179 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Compute(_AWS):
|
||||||
|
_type = "compute"
|
||||||
|
_icon_dir = "resources/aws/compute"
|
||||||
|
|
||||||
|
|
||||||
|
class AppRunner(_Compute):
|
||||||
|
_icon = "app-runner.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationAutoScaling(_Compute):
|
||||||
|
_icon = "application-auto-scaling.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Batch(_Compute):
|
||||||
|
_icon = "batch.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ComputeOptimizer(_Compute):
|
||||||
|
_icon = "compute-optimizer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Compute(_Compute):
|
||||||
|
_icon = "compute.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2Ami(_Compute):
|
||||||
|
_icon = "ec2-ami.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2AutoScaling(_Compute):
|
||||||
|
_icon = "ec2-auto-scaling.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2ContainerRegistryImage(_Compute):
|
||||||
|
_icon = "ec2-container-registry-image.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2ContainerRegistryRegistry(_Compute):
|
||||||
|
_icon = "ec2-container-registry-registry.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2ContainerRegistry(_Compute):
|
||||||
|
_icon = "ec2-container-registry.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2ElasticIpAddress(_Compute):
|
||||||
|
_icon = "ec2-elastic-ip-address.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2ImageBuilder(_Compute):
|
||||||
|
_icon = "ec2-image-builder.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2Instance(_Compute):
|
||||||
|
_icon = "ec2-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2Instances(_Compute):
|
||||||
|
_icon = "ec2-instances.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2Rescue(_Compute):
|
||||||
|
_icon = "ec2-rescue.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2SpotInstance(_Compute):
|
||||||
|
_icon = "ec2-spot-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EC2(_Compute):
|
||||||
|
_icon = "ec2.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticBeanstalkApplication(_Compute):
|
||||||
|
_icon = "elastic-beanstalk-application.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticBeanstalkDeployment(_Compute):
|
||||||
|
_icon = "elastic-beanstalk-deployment.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticBeanstalk(_Compute):
|
||||||
|
_icon = "elastic-beanstalk.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticContainerServiceContainer(_Compute):
|
||||||
|
_icon = "elastic-container-service-container.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticContainerServiceService(_Compute):
|
||||||
|
_icon = "elastic-container-service-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticContainerService(_Compute):
|
||||||
|
_icon = "elastic-container-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticKubernetesService(_Compute):
|
||||||
|
_icon = "elastic-kubernetes-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Fargate(_Compute):
|
||||||
|
_icon = "fargate.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LambdaFunction(_Compute):
|
||||||
|
_icon = "lambda-function.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Lambda(_Compute):
|
||||||
|
_icon = "lambda.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Lightsail(_Compute):
|
||||||
|
_icon = "lightsail.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LocalZones(_Compute):
|
||||||
|
_icon = "local-zones.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Outposts(_Compute):
|
||||||
|
_icon = "outposts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServerlessApplicationRepository(_Compute):
|
||||||
|
_icon = "serverless-application-repository.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxDeadline(_Compute):
|
||||||
|
_icon = "thinkbox-deadline.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxDraft(_Compute):
|
||||||
|
_icon = "thinkbox-draft.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxFrost(_Compute):
|
||||||
|
_icon = "thinkbox-frost.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxKrakatoa(_Compute):
|
||||||
|
_icon = "thinkbox-krakatoa.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxSequoia(_Compute):
|
||||||
|
_icon = "thinkbox-sequoia.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxStoke(_Compute):
|
||||||
|
_icon = "thinkbox-stoke.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ThinkboxXmesh(_Compute):
|
||||||
|
_icon = "thinkbox-xmesh.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VmwareCloudOnAWS(_Compute):
|
||||||
|
_icon = "vmware-cloud-on-aws.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Wavelength(_Compute):
|
||||||
|
_icon = "wavelength.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
AutoScaling = ApplicationAutoScaling
|
||||||
|
AMI = EC2Ami
|
||||||
|
ECR = EC2ContainerRegistry
|
||||||
|
EB = ElasticBeanstalk
|
||||||
|
ECS = ElasticContainerService
|
||||||
|
EKS = ElasticKubernetesService
|
||||||
|
SAR = ServerlessApplicationRepository
|
@ -0,0 +1,35 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Cost(_AWS):
|
||||||
|
_type = "cost"
|
||||||
|
_icon_dir = "resources/aws/cost"
|
||||||
|
|
||||||
|
|
||||||
|
class Budgets(_Cost):
|
||||||
|
_icon = "budgets.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CostAndUsageReport(_Cost):
|
||||||
|
_icon = "cost-and-usage-report.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CostExplorer(_Cost):
|
||||||
|
_icon = "cost-explorer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CostManagement(_Cost):
|
||||||
|
_icon = "cost-management.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ReservedInstanceReporting(_Cost):
|
||||||
|
_icon = "reserved-instance-reporting.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SavingsPlans(_Cost):
|
||||||
|
_icon = "savings-plans.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,156 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Database(_AWS):
|
||||||
|
_type = "database"
|
||||||
|
_icon_dir = "resources/aws/database"
|
||||||
|
|
||||||
|
|
||||||
|
class AuroraInstance(_Database):
|
||||||
|
_icon = "aurora-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Aurora(_Database):
|
||||||
|
_icon = "aurora.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseMigrationServiceDatabaseMigrationWorkflow(_Database):
|
||||||
|
_icon = "database-migration-service-database-migration-workflow.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseMigrationService(_Database):
|
||||||
|
_icon = "database-migration-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Database(_Database):
|
||||||
|
_icon = "database.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DocumentdbMongodbCompatibility(_Database):
|
||||||
|
_icon = "documentdb-mongodb-compatibility.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbAttribute(_Database):
|
||||||
|
_icon = "dynamodb-attribute.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbAttributes(_Database):
|
||||||
|
_icon = "dynamodb-attributes.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbDax(_Database):
|
||||||
|
_icon = "dynamodb-dax.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbGlobalSecondaryIndex(_Database):
|
||||||
|
_icon = "dynamodb-global-secondary-index.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbItem(_Database):
|
||||||
|
_icon = "dynamodb-item.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbItems(_Database):
|
||||||
|
_icon = "dynamodb-items.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbStreams(_Database):
|
||||||
|
_icon = "dynamodb-streams.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DynamodbTable(_Database):
|
||||||
|
_icon = "dynamodb-table.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Dynamodb(_Database):
|
||||||
|
_icon = "dynamodb.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticacheCacheNode(_Database):
|
||||||
|
_icon = "elasticache-cache-node.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticacheForMemcached(_Database):
|
||||||
|
_icon = "elasticache-for-memcached.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticacheForRedis(_Database):
|
||||||
|
_icon = "elasticache-for-redis.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Elasticache(_Database):
|
||||||
|
_icon = "elasticache.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KeyspacesManagedApacheCassandraService(_Database):
|
||||||
|
_icon = "keyspaces-managed-apache-cassandra-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Neptune(_Database):
|
||||||
|
_icon = "neptune.png"
|
||||||
|
|
||||||
|
|
||||||
|
class QuantumLedgerDatabaseQldb(_Database):
|
||||||
|
_icon = "quantum-ledger-database-qldb.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSInstance(_Database):
|
||||||
|
_icon = "rds-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSMariadbInstance(_Database):
|
||||||
|
_icon = "rds-mariadb-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSMysqlInstance(_Database):
|
||||||
|
_icon = "rds-mysql-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSOnVmware(_Database):
|
||||||
|
_icon = "rds-on-vmware.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSOracleInstance(_Database):
|
||||||
|
_icon = "rds-oracle-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSPostgresqlInstance(_Database):
|
||||||
|
_icon = "rds-postgresql-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDSSqlServerInstance(_Database):
|
||||||
|
_icon = "rds-sql-server-instance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RDS(_Database):
|
||||||
|
_icon = "rds.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RedshiftDenseComputeNode(_Database):
|
||||||
|
_icon = "redshift-dense-compute-node.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RedshiftDenseStorageNode(_Database):
|
||||||
|
_icon = "redshift-dense-storage-node.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Redshift(_Database):
|
||||||
|
_icon = "redshift.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Timestream(_Database):
|
||||||
|
_icon = "timestream.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
DMS = DatabaseMigrationService
|
||||||
|
DocumentDB = DocumentdbMongodbCompatibility
|
||||||
|
DAX = DynamodbDax
|
||||||
|
DynamodbGSI = DynamodbGlobalSecondaryIndex
|
||||||
|
DB = Database
|
||||||
|
DDB = Dynamodb
|
||||||
|
ElastiCache = Elasticache
|
||||||
|
QLDB = QuantumLedgerDatabaseQldb
|
@ -0,0 +1,66 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Devtools(_AWS):
|
||||||
|
_type = "devtools"
|
||||||
|
_icon_dir = "resources/aws/devtools"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudDevelopmentKit(_Devtools):
|
||||||
|
_icon = "cloud-development-kit.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloud9Resource(_Devtools):
|
||||||
|
_icon = "cloud9-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloud9(_Devtools):
|
||||||
|
_icon = "cloud9.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codeartifact(_Devtools):
|
||||||
|
_icon = "codeartifact.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codebuild(_Devtools):
|
||||||
|
_icon = "codebuild.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codecommit(_Devtools):
|
||||||
|
_icon = "codecommit.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codedeploy(_Devtools):
|
||||||
|
_icon = "codedeploy.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codepipeline(_Devtools):
|
||||||
|
_icon = "codepipeline.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codestar(_Devtools):
|
||||||
|
_icon = "codestar.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CommandLineInterface(_Devtools):
|
||||||
|
_icon = "command-line-interface.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DeveloperTools(_Devtools):
|
||||||
|
_icon = "developer-tools.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ToolsAndSdks(_Devtools):
|
||||||
|
_icon = "tools-and-sdks.png"
|
||||||
|
|
||||||
|
|
||||||
|
class XRay(_Devtools):
|
||||||
|
_icon = "x-ray.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
CLI = CommandLineInterface
|
||||||
|
DevTools = DeveloperTools
|
@ -0,0 +1,31 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Enablement(_AWS):
|
||||||
|
_type = "enablement"
|
||||||
|
_icon_dir = "resources/aws/enablement"
|
||||||
|
|
||||||
|
|
||||||
|
class CustomerEnablement(_Enablement):
|
||||||
|
_icon = "customer-enablement.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Iq(_Enablement):
|
||||||
|
_icon = "iq.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedServices(_Enablement):
|
||||||
|
_icon = "managed-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ProfessionalServices(_Enablement):
|
||||||
|
_icon = "professional-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Support(_Enablement):
|
||||||
|
_icon = "support.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,31 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Enduser(_AWS):
|
||||||
|
_type = "enduser"
|
||||||
|
_icon_dir = "resources/aws/enduser"
|
||||||
|
|
||||||
|
|
||||||
|
class Appstream20(_Enduser):
|
||||||
|
_icon = "appstream-2-0.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DesktopAndAppStreaming(_Enduser):
|
||||||
|
_icon = "desktop-and-app-streaming.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Workdocs(_Enduser):
|
||||||
|
_icon = "workdocs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Worklink(_Enduser):
|
||||||
|
_icon = "worklink.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Workspaces(_Enduser):
|
||||||
|
_icon = "workspaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,33 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Engagement(_AWS):
|
||||||
|
_type = "engagement"
|
||||||
|
_icon_dir = "resources/aws/engagement"
|
||||||
|
|
||||||
|
|
||||||
|
class Connect(_Engagement):
|
||||||
|
_icon = "connect.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CustomerEngagement(_Engagement):
|
||||||
|
_icon = "customer-engagement.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Pinpoint(_Engagement):
|
||||||
|
_icon = "pinpoint.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleEmailServiceSesEmail(_Engagement):
|
||||||
|
_icon = "simple-email-service-ses-email.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleEmailServiceSes(_Engagement):
|
||||||
|
_icon = "simple-email-service-ses.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
SES = SimpleEmailServiceSes
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Game(_AWS):
|
||||||
|
_type = "game"
|
||||||
|
_icon_dir = "resources/aws/game"
|
||||||
|
|
||||||
|
|
||||||
|
class GameTech(_Game):
|
||||||
|
_icon = "game-tech.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Gamelift(_Game):
|
||||||
|
_icon = "gamelift.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,109 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _General(_AWS):
|
||||||
|
_type = "general"
|
||||||
|
_icon_dir = "resources/aws/general"
|
||||||
|
|
||||||
|
|
||||||
|
class Client(_General):
|
||||||
|
_icon = "client.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Disk(_General):
|
||||||
|
_icon = "disk.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Forums(_General):
|
||||||
|
_icon = "forums.png"
|
||||||
|
|
||||||
|
|
||||||
|
class General(_General):
|
||||||
|
_icon = "general.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GenericDatabase(_General):
|
||||||
|
_icon = "generic-database.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GenericFirewall(_General):
|
||||||
|
_icon = "generic-firewall.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GenericOfficeBuilding(_General):
|
||||||
|
_icon = "generic-office-building.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GenericSamlToken(_General):
|
||||||
|
_icon = "generic-saml-token.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GenericSDK(_General):
|
||||||
|
_icon = "generic-sdk.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InternetAlt1(_General):
|
||||||
|
_icon = "internet-alt1.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InternetAlt2(_General):
|
||||||
|
_icon = "internet-alt2.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InternetGateway(_General):
|
||||||
|
_icon = "internet-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Marketplace(_General):
|
||||||
|
_icon = "marketplace.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MobileClient(_General):
|
||||||
|
_icon = "mobile-client.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Multimedia(_General):
|
||||||
|
_icon = "multimedia.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OfficeBuilding(_General):
|
||||||
|
_icon = "office-building.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SamlToken(_General):
|
||||||
|
_icon = "saml-token.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SDK(_General):
|
||||||
|
_icon = "sdk.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SslPadlock(_General):
|
||||||
|
_icon = "ssl-padlock.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TapeStorage(_General):
|
||||||
|
_icon = "tape-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Toolkit(_General):
|
||||||
|
_icon = "toolkit.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TraditionalServer(_General):
|
||||||
|
_icon = "traditional-server.png"
|
||||||
|
|
||||||
|
|
||||||
|
class User(_General):
|
||||||
|
_icon = "user.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Users(_General):
|
||||||
|
_icon = "users.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
OfficeBuilding = GenericOfficeBuilding
|
@ -0,0 +1,87 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Integration(_AWS):
|
||||||
|
_type = "integration"
|
||||||
|
_icon_dir = "resources/aws/integration"
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationIntegration(_Integration):
|
||||||
|
_icon = "application-integration.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Appsync(_Integration):
|
||||||
|
_icon = "appsync.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ConsoleMobileApplication(_Integration):
|
||||||
|
_icon = "console-mobile-application.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventResource(_Integration):
|
||||||
|
_icon = "event-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventbridgeCustomEventBusResource(_Integration):
|
||||||
|
_icon = "eventbridge-custom-event-bus-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventbridgeDefaultEventBusResource(_Integration):
|
||||||
|
_icon = "eventbridge-default-event-bus-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventbridgeSaasPartnerEventBusResource(_Integration):
|
||||||
|
_icon = "eventbridge-saas-partner-event-bus-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Eventbridge(_Integration):
|
||||||
|
_icon = "eventbridge.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ExpressWorkflows(_Integration):
|
||||||
|
_icon = "express-workflows.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MQ(_Integration):
|
||||||
|
_icon = "mq.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleNotificationServiceSnsEmailNotification(_Integration):
|
||||||
|
_icon = "simple-notification-service-sns-email-notification.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleNotificationServiceSnsHttpNotification(_Integration):
|
||||||
|
_icon = "simple-notification-service-sns-http-notification.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleNotificationServiceSnsTopic(_Integration):
|
||||||
|
_icon = "simple-notification-service-sns-topic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleNotificationServiceSns(_Integration):
|
||||||
|
_icon = "simple-notification-service-sns.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleQueueServiceSqsMessage(_Integration):
|
||||||
|
_icon = "simple-queue-service-sqs-message.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleQueueServiceSqsQueue(_Integration):
|
||||||
|
_icon = "simple-queue-service-sqs-queue.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleQueueServiceSqs(_Integration):
|
||||||
|
_icon = "simple-queue-service-sqs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StepFunctions(_Integration):
|
||||||
|
_icon = "step-functions.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
SNS = SimpleNotificationServiceSns
|
||||||
|
SQS = SimpleQueueServiceSqs
|
||||||
|
SF = StepFunctions
|
@ -0,0 +1,258 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Iot(_AWS):
|
||||||
|
_type = "iot"
|
||||||
|
_icon_dir = "resources/aws/iot"
|
||||||
|
|
||||||
|
|
||||||
|
class Freertos(_Iot):
|
||||||
|
_icon = "freertos.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InternetOfThings(_Iot):
|
||||||
|
_icon = "internet-of-things.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Iot1Click(_Iot):
|
||||||
|
_icon = "iot-1-click.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAction(_Iot):
|
||||||
|
_icon = "iot-action.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotActuator(_Iot):
|
||||||
|
_icon = "iot-actuator.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAlexaEcho(_Iot):
|
||||||
|
_icon = "iot-alexa-echo.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAlexaEnabledDevice(_Iot):
|
||||||
|
_icon = "iot-alexa-enabled-device.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAlexaSkill(_Iot):
|
||||||
|
_icon = "iot-alexa-skill.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAlexaVoiceService(_Iot):
|
||||||
|
_icon = "iot-alexa-voice-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAnalyticsChannel(_Iot):
|
||||||
|
_icon = "iot-analytics-channel.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAnalyticsDataSet(_Iot):
|
||||||
|
_icon = "iot-analytics-data-set.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAnalyticsDataStore(_Iot):
|
||||||
|
_icon = "iot-analytics-data-store.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAnalyticsNotebook(_Iot):
|
||||||
|
_icon = "iot-analytics-notebook.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAnalyticsPipeline(_Iot):
|
||||||
|
_icon = "iot-analytics-pipeline.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotAnalytics(_Iot):
|
||||||
|
_icon = "iot-analytics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotBank(_Iot):
|
||||||
|
_icon = "iot-bank.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotBicycle(_Iot):
|
||||||
|
_icon = "iot-bicycle.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotButton(_Iot):
|
||||||
|
_icon = "iot-button.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCamera(_Iot):
|
||||||
|
_icon = "iot-camera.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCar(_Iot):
|
||||||
|
_icon = "iot-car.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCart(_Iot):
|
||||||
|
_icon = "iot-cart.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCertificate(_Iot):
|
||||||
|
_icon = "iot-certificate.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCoffeePot(_Iot):
|
||||||
|
_icon = "iot-coffee-pot.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCore(_Iot):
|
||||||
|
_icon = "iot-core.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotDesiredState(_Iot):
|
||||||
|
_icon = "iot-desired-state.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotDeviceDefender(_Iot):
|
||||||
|
_icon = "iot-device-defender.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotDeviceGateway(_Iot):
|
||||||
|
_icon = "iot-device-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotDeviceManagement(_Iot):
|
||||||
|
_icon = "iot-device-management.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotDoorLock(_Iot):
|
||||||
|
_icon = "iot-door-lock.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotEvents(_Iot):
|
||||||
|
_icon = "iot-events.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotFactory(_Iot):
|
||||||
|
_icon = "iot-factory.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotFireTvStick(_Iot):
|
||||||
|
_icon = "iot-fire-tv-stick.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotFireTv(_Iot):
|
||||||
|
_icon = "iot-fire-tv.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotGeneric(_Iot):
|
||||||
|
_icon = "iot-generic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotGreengrassConnector(_Iot):
|
||||||
|
_icon = "iot-greengrass-connector.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotGreengrass(_Iot):
|
||||||
|
_icon = "iot-greengrass.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotHardwareBoard(_Iot):
|
||||||
|
_icon = "iot-hardware-board.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotHouse(_Iot):
|
||||||
|
_icon = "iot-house.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotHttp(_Iot):
|
||||||
|
_icon = "iot-http.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotHttp2(_Iot):
|
||||||
|
_icon = "iot-http2.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotJobs(_Iot):
|
||||||
|
_icon = "iot-jobs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotLambda(_Iot):
|
||||||
|
_icon = "iot-lambda.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotLightbulb(_Iot):
|
||||||
|
_icon = "iot-lightbulb.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotMedicalEmergency(_Iot):
|
||||||
|
_icon = "iot-medical-emergency.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotMqtt(_Iot):
|
||||||
|
_icon = "iot-mqtt.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotOverTheAirUpdate(_Iot):
|
||||||
|
_icon = "iot-over-the-air-update.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotPolicyEmergency(_Iot):
|
||||||
|
_icon = "iot-policy-emergency.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotPolicy(_Iot):
|
||||||
|
_icon = "iot-policy.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotReportedState(_Iot):
|
||||||
|
_icon = "iot-reported-state.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotRule(_Iot):
|
||||||
|
_icon = "iot-rule.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotSensor(_Iot):
|
||||||
|
_icon = "iot-sensor.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotServo(_Iot):
|
||||||
|
_icon = "iot-servo.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotShadow(_Iot):
|
||||||
|
_icon = "iot-shadow.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotSimulator(_Iot):
|
||||||
|
_icon = "iot-simulator.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotSitewise(_Iot):
|
||||||
|
_icon = "iot-sitewise.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotThermostat(_Iot):
|
||||||
|
_icon = "iot-thermostat.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotThingsGraph(_Iot):
|
||||||
|
_icon = "iot-things-graph.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotTopic(_Iot):
|
||||||
|
_icon = "iot-topic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotTravel(_Iot):
|
||||||
|
_icon = "iot-travel.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotUtility(_Iot):
|
||||||
|
_icon = "iot-utility.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotWindfarm(_Iot):
|
||||||
|
_icon = "iot-windfarm.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
FreeRTOS = Freertos
|
||||||
|
IotBoard = IotHardwareBoard
|
@ -0,0 +1,246 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Management(_AWS):
|
||||||
|
_type = "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):
|
||||||
|
_icon = "auto-scaling.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Chatbot(_Management):
|
||||||
|
_icon = "chatbot.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudformationChangeSet(_Management):
|
||||||
|
_icon = "cloudformation-change-set.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudformationStack(_Management):
|
||||||
|
_icon = "cloudformation-stack.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudformationTemplate(_Management):
|
||||||
|
_icon = "cloudformation-template.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloudformation(_Management):
|
||||||
|
_icon = "cloudformation.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloudtrail(_Management):
|
||||||
|
_icon = "cloudtrail.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudwatchAlarm(_Management):
|
||||||
|
_icon = "cloudwatch-alarm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudwatchEventEventBased(_Management):
|
||||||
|
_icon = "cloudwatch-event-event-based.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudwatchEventTimeBased(_Management):
|
||||||
|
_icon = "cloudwatch-event-time-based.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudwatchLogs(_Management):
|
||||||
|
_icon = "cloudwatch-logs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudwatchRule(_Management):
|
||||||
|
_icon = "cloudwatch-rule.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloudwatch(_Management):
|
||||||
|
_icon = "cloudwatch.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Codeguru(_Management):
|
||||||
|
_icon = "codeguru.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CommandLineInterface(_Management):
|
||||||
|
_icon = "command-line-interface.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Config(_Management):
|
||||||
|
_icon = "config.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ControlTower(_Management):
|
||||||
|
_icon = "control-tower.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LicenseManager(_Management):
|
||||||
|
_icon = "license-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedServices(_Management):
|
||||||
|
_icon = "managed-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagementAndGovernance(_Management):
|
||||||
|
_icon = "management-and-governance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagementConsole(_Management):
|
||||||
|
_icon = "management-console.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksApps(_Management):
|
||||||
|
_icon = "opsworks-apps.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksDeployments(_Management):
|
||||||
|
_icon = "opsworks-deployments.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksInstances(_Management):
|
||||||
|
_icon = "opsworks-instances.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksLayers(_Management):
|
||||||
|
_icon = "opsworks-layers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksMonitoring(_Management):
|
||||||
|
_icon = "opsworks-monitoring.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksPermissions(_Management):
|
||||||
|
_icon = "opsworks-permissions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksResources(_Management):
|
||||||
|
_icon = "opsworks-resources.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OpsworksStack(_Management):
|
||||||
|
_icon = "opsworks-stack.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Opsworks(_Management):
|
||||||
|
_icon = "opsworks.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OrganizationsAccount(_Management):
|
||||||
|
_icon = "organizations-account.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OrganizationsOrganizationalUnit(_Management):
|
||||||
|
_icon = "organizations-organizational-unit.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Organizations(_Management):
|
||||||
|
_icon = "organizations.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PersonalHealthDashboard(_Management):
|
||||||
|
_icon = "personal-health-dashboard.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Proton(_Management):
|
||||||
|
_icon = "proton.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceCatalog(_Management):
|
||||||
|
_icon = "service-catalog.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerAppConfig(_Management):
|
||||||
|
_icon = "systems-manager-app-config.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerAutomation(_Management):
|
||||||
|
_icon = "systems-manager-automation.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerDocuments(_Management):
|
||||||
|
_icon = "systems-manager-documents.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerInventory(_Management):
|
||||||
|
_icon = "systems-manager-inventory.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerMaintenanceWindows(_Management):
|
||||||
|
_icon = "systems-manager-maintenance-windows.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerOpscenter(_Management):
|
||||||
|
_icon = "systems-manager-opscenter.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerParameterStore(_Management):
|
||||||
|
_icon = "systems-manager-parameter-store.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerPatchManager(_Management):
|
||||||
|
_icon = "systems-manager-patch-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerRunCommand(_Management):
|
||||||
|
_icon = "systems-manager-run-command.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManagerStateManager(_Management):
|
||||||
|
_icon = "systems-manager-state-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemsManager(_Management):
|
||||||
|
_icon = "systems-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrustedAdvisorChecklistCost(_Management):
|
||||||
|
_icon = "trusted-advisor-checklist-cost.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrustedAdvisorChecklistFaultTolerant(_Management):
|
||||||
|
_icon = "trusted-advisor-checklist-fault-tolerant.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrustedAdvisorChecklistPerformance(_Management):
|
||||||
|
_icon = "trusted-advisor-checklist-performance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrustedAdvisorChecklistSecurity(_Management):
|
||||||
|
_icon = "trusted-advisor-checklist-security.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrustedAdvisorChecklist(_Management):
|
||||||
|
_icon = "trusted-advisor-checklist.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrustedAdvisor(_Management):
|
||||||
|
_icon = "trusted-advisor.png"
|
||||||
|
|
||||||
|
|
||||||
|
class WellArchitectedTool(_Management):
|
||||||
|
_icon = "well-architected-tool.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
SSM = SystemsManager
|
||||||
|
ParameterStore = SystemsManagerParameterStore
|
@ -0,0 +1,63 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Media(_AWS):
|
||||||
|
_type = "media"
|
||||||
|
_icon_dir = "resources/aws/media"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticTranscoder(_Media):
|
||||||
|
_icon = "elastic-transcoder.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalConductor(_Media):
|
||||||
|
_icon = "elemental-conductor.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalDelta(_Media):
|
||||||
|
_icon = "elemental-delta.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalLive(_Media):
|
||||||
|
_icon = "elemental-live.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalMediaconnect(_Media):
|
||||||
|
_icon = "elemental-mediaconnect.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalMediaconvert(_Media):
|
||||||
|
_icon = "elemental-mediaconvert.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalMedialive(_Media):
|
||||||
|
_icon = "elemental-medialive.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalMediapackage(_Media):
|
||||||
|
_icon = "elemental-mediapackage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalMediastore(_Media):
|
||||||
|
_icon = "elemental-mediastore.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalMediatailor(_Media):
|
||||||
|
_icon = "elemental-mediatailor.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElementalServer(_Media):
|
||||||
|
_icon = "elemental-server.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KinesisVideoStreams(_Media):
|
||||||
|
_icon = "kinesis-video-streams.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MediaServices(_Media):
|
||||||
|
_icon = "media-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,65 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Migration(_AWS):
|
||||||
|
_type = "migration"
|
||||||
|
_icon_dir = "resources/aws/migration"
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationDiscoveryService(_Migration):
|
||||||
|
_icon = "application-discovery-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudendureMigration(_Migration):
|
||||||
|
_icon = "cloudendure-migration.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseMigrationService(_Migration):
|
||||||
|
_icon = "database-migration-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatasyncAgent(_Migration):
|
||||||
|
_icon = "datasync-agent.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Datasync(_Migration):
|
||||||
|
_icon = "datasync.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MigrationAndTransfer(_Migration):
|
||||||
|
_icon = "migration-and-transfer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MigrationHub(_Migration):
|
||||||
|
_icon = "migration-hub.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServerMigrationService(_Migration):
|
||||||
|
_icon = "server-migration-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SnowballEdge(_Migration):
|
||||||
|
_icon = "snowball-edge.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Snowball(_Migration):
|
||||||
|
_icon = "snowball.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Snowmobile(_Migration):
|
||||||
|
_icon = "snowmobile.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TransferForSftp(_Migration):
|
||||||
|
_icon = "transfer-for-sftp.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ADS = ApplicationDiscoveryService
|
||||||
|
CEM = CloudendureMigration
|
||||||
|
DMS = DatabaseMigrationService
|
||||||
|
MAT = MigrationAndTransfer
|
||||||
|
SMS = ServerMigrationService
|
@ -0,0 +1,129 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _ML(_AWS):
|
||||||
|
_type = "ml"
|
||||||
|
_icon_dir = "resources/aws/ml"
|
||||||
|
|
||||||
|
|
||||||
|
class ApacheMxnetOnAWS(_ML):
|
||||||
|
_icon = "apache-mxnet-on-aws.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AugmentedAi(_ML):
|
||||||
|
_icon = "augmented-ai.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Bedrock(_ML):
|
||||||
|
_icon = "bedrock.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Comprehend(_ML):
|
||||||
|
_icon = "comprehend.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DeepLearningAmis(_ML):
|
||||||
|
_icon = "deep-learning-amis.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DeepLearningContainers(_ML):
|
||||||
|
_icon = "deep-learning-containers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Deepcomposer(_ML):
|
||||||
|
_icon = "deepcomposer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Deeplens(_ML):
|
||||||
|
_icon = "deeplens.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Deepracer(_ML):
|
||||||
|
_icon = "deepracer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticInference(_ML):
|
||||||
|
_icon = "elastic-inference.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Forecast(_ML):
|
||||||
|
_icon = "forecast.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FraudDetector(_ML):
|
||||||
|
_icon = "fraud-detector.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Kendra(_ML):
|
||||||
|
_icon = "kendra.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Lex(_ML):
|
||||||
|
_icon = "lex.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MachineLearning(_ML):
|
||||||
|
_icon = "machine-learning.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Personalize(_ML):
|
||||||
|
_icon = "personalize.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Polly(_ML):
|
||||||
|
_icon = "polly.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RekognitionImage(_ML):
|
||||||
|
_icon = "rekognition-image.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RekognitionVideo(_ML):
|
||||||
|
_icon = "rekognition-video.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Rekognition(_ML):
|
||||||
|
_icon = "rekognition.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SagemakerGroundTruth(_ML):
|
||||||
|
_icon = "sagemaker-ground-truth.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SagemakerModel(_ML):
|
||||||
|
_icon = "sagemaker-model.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SagemakerNotebook(_ML):
|
||||||
|
_icon = "sagemaker-notebook.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SagemakerTrainingJob(_ML):
|
||||||
|
_icon = "sagemaker-training-job.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Sagemaker(_ML):
|
||||||
|
_icon = "sagemaker.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TensorflowOnAWS(_ML):
|
||||||
|
_icon = "tensorflow-on-aws.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Textract(_ML):
|
||||||
|
_icon = "textract.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Transcribe(_ML):
|
||||||
|
_icon = "transcribe.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Translate(_ML):
|
||||||
|
_icon = "translate.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
DLC = DeepLearningContainers
|
@ -0,0 +1,39 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Mobile(_AWS):
|
||||||
|
_type = "mobile"
|
||||||
|
_icon_dir = "resources/aws/mobile"
|
||||||
|
|
||||||
|
|
||||||
|
class Amplify(_Mobile):
|
||||||
|
_icon = "amplify.png"
|
||||||
|
|
||||||
|
|
||||||
|
class APIGatewayEndpoint(_Mobile):
|
||||||
|
_icon = "api-gateway-endpoint.png"
|
||||||
|
|
||||||
|
|
||||||
|
class APIGateway(_Mobile):
|
||||||
|
_icon = "api-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Appsync(_Mobile):
|
||||||
|
_icon = "appsync.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceFarm(_Mobile):
|
||||||
|
_icon = "device-farm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Mobile(_Mobile):
|
||||||
|
_icon = "mobile.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Pinpoint(_Mobile):
|
||||||
|
_icon = "pinpoint.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,181 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Network(_AWS):
|
||||||
|
_type = "network"
|
||||||
|
_icon_dir = "resources/aws/network"
|
||||||
|
|
||||||
|
|
||||||
|
class APIGatewayEndpoint(_Network):
|
||||||
|
_icon = "api-gateway-endpoint.png"
|
||||||
|
|
||||||
|
|
||||||
|
class APIGateway(_Network):
|
||||||
|
_icon = "api-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppMesh(_Network):
|
||||||
|
_icon = "app-mesh.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ClientVpn(_Network):
|
||||||
|
_icon = "client-vpn.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudMap(_Network):
|
||||||
|
_icon = "cloud-map.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudFrontDownloadDistribution(_Network):
|
||||||
|
_icon = "cloudfront-download-distribution.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudFrontEdgeLocation(_Network):
|
||||||
|
_icon = "cloudfront-edge-location.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudFrontStreamingDistribution(_Network):
|
||||||
|
_icon = "cloudfront-streaming-distribution.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudFront(_Network):
|
||||||
|
_icon = "cloudfront.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DirectConnect(_Network):
|
||||||
|
_icon = "direct-connect.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticLoadBalancing(_Network):
|
||||||
|
_icon = "elastic-load-balancing.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElbApplicationLoadBalancer(_Network):
|
||||||
|
_icon = "elb-application-load-balancer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElbClassicLoadBalancer(_Network):
|
||||||
|
_icon = "elb-classic-load-balancer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElbNetworkLoadBalancer(_Network):
|
||||||
|
_icon = "elb-network-load-balancer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Endpoint(_Network):
|
||||||
|
_icon = "endpoint.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GlobalAccelerator(_Network):
|
||||||
|
_icon = "global-accelerator.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InternetGateway(_Network):
|
||||||
|
_icon = "internet-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Nacl(_Network):
|
||||||
|
_icon = "nacl.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NATGateway(_Network):
|
||||||
|
_icon = "nat-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NetworkFirewall(_Network):
|
||||||
|
_icon = "network-firewall.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NetworkingAndContentDelivery(_Network):
|
||||||
|
_icon = "networking-and-content-delivery.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PrivateSubnet(_Network):
|
||||||
|
_icon = "private-subnet.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Privatelink(_Network):
|
||||||
|
_icon = "privatelink.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PublicSubnet(_Network):
|
||||||
|
_icon = "public-subnet.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Route53HostedZone(_Network):
|
||||||
|
_icon = "route-53-hosted-zone.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Route53(_Network):
|
||||||
|
_icon = "route-53.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RouteTable(_Network):
|
||||||
|
_icon = "route-table.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SiteToSiteVpn(_Network):
|
||||||
|
_icon = "site-to-site-vpn.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TransitGatewayAttachment(_Network):
|
||||||
|
_icon = "transit-gateway-attachment.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TransitGateway(_Network):
|
||||||
|
_icon = "transit-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCCustomerGateway(_Network):
|
||||||
|
_icon = "vpc-customer-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCElasticNetworkAdapter(_Network):
|
||||||
|
_icon = "vpc-elastic-network-adapter.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCElasticNetworkInterface(_Network):
|
||||||
|
_icon = "vpc-elastic-network-interface.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCFlowLogs(_Network):
|
||||||
|
_icon = "vpc-flow-logs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCPeering(_Network):
|
||||||
|
_icon = "vpc-peering.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCRouter(_Network):
|
||||||
|
_icon = "vpc-router.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPCTrafficMirroring(_Network):
|
||||||
|
_icon = "vpc-traffic-mirroring.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VPC(_Network):
|
||||||
|
_icon = "vpc.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VpnConnection(_Network):
|
||||||
|
_icon = "vpn-connection.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VpnGateway(_Network):
|
||||||
|
_icon = "vpn-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
CF = CloudFront
|
||||||
|
ELB = ElasticLoadBalancing
|
||||||
|
ALB = ElbApplicationLoadBalancer
|
||||||
|
CLB = ElbClassicLoadBalancer
|
||||||
|
NLB = ElbNetworkLoadBalancer
|
||||||
|
GAX = GlobalAccelerator
|
||||||
|
IGW = InternetGateway
|
||||||
|
TGW = TransitGateway
|
||||||
|
TGWAttach = TransitGatewayAttachment
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Quantum(_AWS):
|
||||||
|
_type = "quantum"
|
||||||
|
_icon_dir = "resources/aws/quantum"
|
||||||
|
|
||||||
|
|
||||||
|
class Braket(_Quantum):
|
||||||
|
_icon = "braket.png"
|
||||||
|
|
||||||
|
|
||||||
|
class QuantumTechnologies(_Quantum):
|
||||||
|
_icon = "quantum-technologies.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,35 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Robotics(_AWS):
|
||||||
|
_type = "robotics"
|
||||||
|
_icon_dir = "resources/aws/robotics"
|
||||||
|
|
||||||
|
|
||||||
|
class RobomakerCloudExtensionRos(_Robotics):
|
||||||
|
_icon = "robomaker-cloud-extension-ros.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RobomakerDevelopmentEnvironment(_Robotics):
|
||||||
|
_icon = "robomaker-development-environment.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RobomakerFleetManagement(_Robotics):
|
||||||
|
_icon = "robomaker-fleet-management.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RobomakerSimulator(_Robotics):
|
||||||
|
_icon = "robomaker-simulator.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Robomaker(_Robotics):
|
||||||
|
_icon = "robomaker.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Robotics(_Robotics):
|
||||||
|
_icon = "robotics.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Satellite(_AWS):
|
||||||
|
_type = "satellite"
|
||||||
|
_icon_dir = "resources/aws/satellite"
|
||||||
|
|
||||||
|
|
||||||
|
class GroundStation(_Satellite):
|
||||||
|
_icon = "ground-station.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Satellite(_Satellite):
|
||||||
|
_icon = "satellite.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,179 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Security(_AWS):
|
||||||
|
_type = "security"
|
||||||
|
_icon_dir = "resources/aws/security"
|
||||||
|
|
||||||
|
|
||||||
|
class AdConnector(_Security):
|
||||||
|
_icon = "ad-connector.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Artifact(_Security):
|
||||||
|
_icon = "artifact.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CertificateAuthority(_Security):
|
||||||
|
_icon = "certificate-authority.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CertificateManager(_Security):
|
||||||
|
_icon = "certificate-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudDirectory(_Security):
|
||||||
|
_icon = "cloud-directory.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloudhsm(_Security):
|
||||||
|
_icon = "cloudhsm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Cognito(_Security):
|
||||||
|
_icon = "cognito.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Detective(_Security):
|
||||||
|
_icon = "detective.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DirectoryService(_Security):
|
||||||
|
_icon = "directory-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FirewallManager(_Security):
|
||||||
|
_icon = "firewall-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Guardduty(_Security):
|
||||||
|
_icon = "guardduty.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamAccessAnalyzer(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-access-analyzer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamAddOn(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-add-on.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamAWSStsAlternate(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-aws-sts-alternate.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamAWSSts(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-aws-sts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamDataEncryptionKey(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-data-encryption-key.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamEncryptedData(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-encrypted-data.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamLongTermSecurityCredential(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-long-term-security-credential.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamMfaToken(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-mfa-token.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamPermissions(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-permissions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamRole(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-role.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIamTemporarySecurityCredential(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam-temporary-security-credential.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityAndAccessManagementIam(_Security):
|
||||||
|
_icon = "identity-and-access-management-iam.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InspectorAgent(_Security):
|
||||||
|
_icon = "inspector-agent.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Inspector(_Security):
|
||||||
|
_icon = "inspector.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KeyManagementService(_Security):
|
||||||
|
_icon = "key-management-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Macie(_Security):
|
||||||
|
_icon = "macie.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedMicrosoftAd(_Security):
|
||||||
|
_icon = "managed-microsoft-ad.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ResourceAccessManager(_Security):
|
||||||
|
_icon = "resource-access-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecretsManager(_Security):
|
||||||
|
_icon = "secrets-manager.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecurityHubFinding(_Security):
|
||||||
|
_icon = "security-hub-finding.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecurityHub(_Security):
|
||||||
|
_icon = "security-hub.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecurityIdentityAndCompliance(_Security):
|
||||||
|
_icon = "security-identity-and-compliance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ShieldAdvanced(_Security):
|
||||||
|
_icon = "shield-advanced.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Shield(_Security):
|
||||||
|
_icon = "shield.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleAd(_Security):
|
||||||
|
_icon = "simple-ad.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SingleSignOn(_Security):
|
||||||
|
_icon = "single-sign-on.png"
|
||||||
|
|
||||||
|
|
||||||
|
class WAFFilteringRule(_Security):
|
||||||
|
_icon = "waf-filtering-rule.png"
|
||||||
|
|
||||||
|
|
||||||
|
class WAF(_Security):
|
||||||
|
_icon = "waf.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ACM = CertificateManager
|
||||||
|
CloudHSM = Cloudhsm
|
||||||
|
DS = DirectoryService
|
||||||
|
FMS = FirewallManager
|
||||||
|
IAMAccessAnalyzer = IdentityAndAccessManagementIamAccessAnalyzer
|
||||||
|
IAMAWSSts = IdentityAndAccessManagementIamAWSSts
|
||||||
|
IAMPermissions = IdentityAndAccessManagementIamPermissions
|
||||||
|
IAMRole = IdentityAndAccessManagementIamRole
|
||||||
|
IAM = IdentityAndAccessManagementIam
|
||||||
|
KMS = KeyManagementService
|
||||||
|
RAM = ResourceAccessManager
|
@ -0,0 +1,141 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _AWS
|
||||||
|
|
||||||
|
|
||||||
|
class _Storage(_AWS):
|
||||||
|
_type = "storage"
|
||||||
|
_icon_dir = "resources/aws/storage"
|
||||||
|
|
||||||
|
|
||||||
|
class Backup(_Storage):
|
||||||
|
_icon = "backup.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudendureDisasterRecovery(_Storage):
|
||||||
|
_icon = "cloudendure-disaster-recovery.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EFSInfrequentaccessPrimaryBg(_Storage):
|
||||||
|
_icon = "efs-infrequentaccess-primary-bg.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EFSStandardPrimaryBg(_Storage):
|
||||||
|
_icon = "efs-standard-primary-bg.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticBlockStoreEBSSnapshot(_Storage):
|
||||||
|
_icon = "elastic-block-store-ebs-snapshot.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticBlockStoreEBSVolume(_Storage):
|
||||||
|
_icon = "elastic-block-store-ebs-volume.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticBlockStoreEBS(_Storage):
|
||||||
|
_icon = "elastic-block-store-ebs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticFileSystemEFSFileSystem(_Storage):
|
||||||
|
_icon = "elastic-file-system-efs-file-system.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticFileSystemEFS(_Storage):
|
||||||
|
_icon = "elastic-file-system-efs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FsxForLustre(_Storage):
|
||||||
|
_icon = "fsx-for-lustre.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FsxForWindowsFileServer(_Storage):
|
||||||
|
_icon = "fsx-for-windows-file-server.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Fsx(_Storage):
|
||||||
|
_icon = "fsx.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MultipleVolumesResource(_Storage):
|
||||||
|
_icon = "multiple-volumes-resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class S3AccessPoints(_Storage):
|
||||||
|
_icon = "s3-access-points.png"
|
||||||
|
|
||||||
|
|
||||||
|
class S3GlacierArchive(_Storage):
|
||||||
|
_icon = "s3-glacier-archive.png"
|
||||||
|
|
||||||
|
|
||||||
|
class S3GlacierVault(_Storage):
|
||||||
|
_icon = "s3-glacier-vault.png"
|
||||||
|
|
||||||
|
|
||||||
|
class S3Glacier(_Storage):
|
||||||
|
_icon = "s3-glacier.png"
|
||||||
|
|
||||||
|
|
||||||
|
class S3ObjectLambdaAccessPoints(_Storage):
|
||||||
|
_icon = "s3-object-lambda-access-points.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleStorageServiceS3BucketWithObjects(_Storage):
|
||||||
|
_icon = "simple-storage-service-s3-bucket-with-objects.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleStorageServiceS3Bucket(_Storage):
|
||||||
|
_icon = "simple-storage-service-s3-bucket.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleStorageServiceS3Object(_Storage):
|
||||||
|
_icon = "simple-storage-service-s3-object.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleStorageServiceS3(_Storage):
|
||||||
|
_icon = "simple-storage-service-s3.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SnowFamilySnowballImportExport(_Storage):
|
||||||
|
_icon = "snow-family-snowball-import-export.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SnowballEdge(_Storage):
|
||||||
|
_icon = "snowball-edge.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Snowball(_Storage):
|
||||||
|
_icon = "snowball.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Snowmobile(_Storage):
|
||||||
|
_icon = "snowmobile.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageGatewayCachedVolume(_Storage):
|
||||||
|
_icon = "storage-gateway-cached-volume.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageGatewayNonCachedVolume(_Storage):
|
||||||
|
_icon = "storage-gateway-non-cached-volume.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageGatewayVirtualTapeLibrary(_Storage):
|
||||||
|
_icon = "storage-gateway-virtual-tape-library.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageGateway(_Storage):
|
||||||
|
_icon = "storage-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Storage(_Storage):
|
||||||
|
_icon = "storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
CDR = CloudendureDisasterRecovery
|
||||||
|
EBS = ElasticBlockStoreEBS
|
||||||
|
EFS = ElasticFileSystemEFS
|
||||||
|
FSx = Fsx
|
||||||
|
S3 = SimpleStorageServiceS3
|
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
Azure provides a set of services for Microsoft Azure provider.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class _Azure(Node):
|
||||||
|
_provider = "azure"
|
||||||
|
_icon_dir = "resources/azure"
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
||||||
|
|
||||||
|
|
||||||
|
class Azure(_Azure):
|
||||||
|
_icon = "azure.png"
|
@ -0,0 +1,59 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Analytics(_Azure):
|
||||||
|
_type = "analytics"
|
||||||
|
_icon_dir = "resources/azure/analytics"
|
||||||
|
|
||||||
|
|
||||||
|
class AnalysisServices(_Analytics):
|
||||||
|
_icon = "analysis-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataExplorerClusters(_Analytics):
|
||||||
|
_icon = "data-explorer-clusters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataFactories(_Analytics):
|
||||||
|
_icon = "data-factories.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataLakeAnalytics(_Analytics):
|
||||||
|
_icon = "data-lake-analytics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataLakeStoreGen1(_Analytics):
|
||||||
|
_icon = "data-lake-store-gen1.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Databricks(_Analytics):
|
||||||
|
_icon = "databricks.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventHubClusters(_Analytics):
|
||||||
|
_icon = "event-hub-clusters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventHubs(_Analytics):
|
||||||
|
_icon = "event-hubs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Hdinsightclusters(_Analytics):
|
||||||
|
_icon = "hdinsightclusters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LogAnalyticsWorkspaces(_Analytics):
|
||||||
|
_icon = "log-analytics-workspaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StreamAnalyticsJobs(_Analytics):
|
||||||
|
_icon = "stream-analytics-jobs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SynapseAnalytics(_Analytics):
|
||||||
|
_icon = "synapse-analytics.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,139 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Compute(_Azure):
|
||||||
|
_type = "compute"
|
||||||
|
_icon_dir = "resources/azure/compute"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServices(_Compute):
|
||||||
|
_icon = "app-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AutomanagedVM(_Compute):
|
||||||
|
_icon = "automanaged-vm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AvailabilitySets(_Compute):
|
||||||
|
_icon = "availability-sets.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BatchAccounts(_Compute):
|
||||||
|
_icon = "batch-accounts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CitrixVirtualDesktopsEssentials(_Compute):
|
||||||
|
_icon = "citrix-virtual-desktops-essentials.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudServicesClassic(_Compute):
|
||||||
|
_icon = "cloud-services-classic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudServices(_Compute):
|
||||||
|
_icon = "cloud-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CloudsimpleVirtualMachines(_Compute):
|
||||||
|
_icon = "cloudsimple-virtual-machines.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ContainerApps(_Compute):
|
||||||
|
_icon = "container-apps.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ContainerInstances(_Compute):
|
||||||
|
_icon = "container-instances.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ContainerRegistries(_Compute):
|
||||||
|
_icon = "container-registries.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DiskEncryptionSets(_Compute):
|
||||||
|
_icon = "disk-encryption-sets.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DiskSnapshots(_Compute):
|
||||||
|
_icon = "disk-snapshots.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Disks(_Compute):
|
||||||
|
_icon = "disks.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FunctionApps(_Compute):
|
||||||
|
_icon = "function-apps.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ImageDefinitions(_Compute):
|
||||||
|
_icon = "image-definitions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ImageVersions(_Compute):
|
||||||
|
_icon = "image-versions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class KubernetesServices(_Compute):
|
||||||
|
_icon = "kubernetes-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MeshApplications(_Compute):
|
||||||
|
_icon = "mesh-applications.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OsImages(_Compute):
|
||||||
|
_icon = "os-images.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SAPHANAOnAzure(_Compute):
|
||||||
|
_icon = "sap-hana-on-azure.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceFabricClusters(_Compute):
|
||||||
|
_icon = "service-fabric-clusters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SharedImageGalleries(_Compute):
|
||||||
|
_icon = "shared-image-galleries.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SpringCloud(_Compute):
|
||||||
|
_icon = "spring-cloud.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VMClassic(_Compute):
|
||||||
|
_icon = "vm-classic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VMImages(_Compute):
|
||||||
|
_icon = "vm-images.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VMLinux(_Compute):
|
||||||
|
_icon = "vm-linux.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VMScaleSet(_Compute):
|
||||||
|
_icon = "vm-scale-set.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VMWindows(_Compute):
|
||||||
|
_icon = "vm-windows.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VM(_Compute):
|
||||||
|
_icon = "vm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Workspaces(_Compute):
|
||||||
|
_icon = "workspaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ACR = ContainerRegistries
|
||||||
|
AKS = KubernetesServices
|
||||||
|
VMSS = VMScaleSet
|
@ -0,0 +1,107 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Database(_Azure):
|
||||||
|
_type = "database"
|
||||||
|
_icon_dir = "resources/azure/database"
|
||||||
|
|
||||||
|
|
||||||
|
class BlobStorage(_Database):
|
||||||
|
_icon = "blob-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CacheForRedis(_Database):
|
||||||
|
_icon = "cache-for-redis.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CosmosDb(_Database):
|
||||||
|
_icon = "cosmos-db.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataExplorerClusters(_Database):
|
||||||
|
_icon = "data-explorer-clusters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataFactory(_Database):
|
||||||
|
_icon = "data-factory.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataLake(_Database):
|
||||||
|
_icon = "data-lake.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseForMariadbServers(_Database):
|
||||||
|
_icon = "database-for-mariadb-servers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseForMysqlServers(_Database):
|
||||||
|
_icon = "database-for-mysql-servers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseForPostgresqlServers(_Database):
|
||||||
|
_icon = "database-for-postgresql-servers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticDatabasePools(_Database):
|
||||||
|
_icon = "elastic-database-pools.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ElasticJobAgents(_Database):
|
||||||
|
_icon = "elastic-job-agents.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InstancePools(_Database):
|
||||||
|
_icon = "instance-pools.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedDatabases(_Database):
|
||||||
|
_icon = "managed-databases.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SQLDatabases(_Database):
|
||||||
|
_icon = "sql-databases.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SQLDatawarehouse(_Database):
|
||||||
|
_icon = "sql-datawarehouse.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SQLManagedInstances(_Database):
|
||||||
|
_icon = "sql-managed-instances.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SQLServerStretchDatabases(_Database):
|
||||||
|
_icon = "sql-server-stretch-databases.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SQLServers(_Database):
|
||||||
|
_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):
|
||||||
|
_icon = "virtual-clusters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualDatacenter(_Database):
|
||||||
|
_icon = "virtual-datacenter.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,47 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Devops(_Azure):
|
||||||
|
_type = "devops"
|
||||||
|
_icon_dir = "resources/azure/devops"
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationInsights(_Devops):
|
||||||
|
_icon = "application-insights.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Artifacts(_Devops):
|
||||||
|
_icon = "artifacts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Boards(_Devops):
|
||||||
|
_icon = "boards.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Devops(_Devops):
|
||||||
|
_icon = "devops.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DevtestLabs(_Devops):
|
||||||
|
_icon = "devtest-labs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LabServices(_Devops):
|
||||||
|
_icon = "lab-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Pipelines(_Devops):
|
||||||
|
_icon = "pipelines.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Repos(_Devops):
|
||||||
|
_icon = "repos.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TestPlans(_Devops):
|
||||||
|
_icon = "test-plans.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,115 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _General(_Azure):
|
||||||
|
_type = "general"
|
||||||
|
_icon_dir = "resources/azure/general"
|
||||||
|
|
||||||
|
|
||||||
|
class Allresources(_General):
|
||||||
|
_icon = "allresources.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Azurehome(_General):
|
||||||
|
_icon = "azurehome.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Developertools(_General):
|
||||||
|
_icon = "developertools.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Helpsupport(_General):
|
||||||
|
_icon = "helpsupport.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Information(_General):
|
||||||
|
_icon = "information.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Managementgroups(_General):
|
||||||
|
_icon = "managementgroups.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Marketplace(_General):
|
||||||
|
_icon = "marketplace.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Quickstartcenter(_General):
|
||||||
|
_icon = "quickstartcenter.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Recent(_General):
|
||||||
|
_icon = "recent.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Reservations(_General):
|
||||||
|
_icon = "reservations.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Resource(_General):
|
||||||
|
_icon = "resource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Resourcegroups(_General):
|
||||||
|
_icon = "resourcegroups.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Servicehealth(_General):
|
||||||
|
_icon = "servicehealth.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Shareddashboard(_General):
|
||||||
|
_icon = "shareddashboard.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Subscriptions(_General):
|
||||||
|
_icon = "subscriptions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Support(_General):
|
||||||
|
_icon = "support.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Supportrequests(_General):
|
||||||
|
_icon = "supportrequests.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Tag(_General):
|
||||||
|
_icon = "tag.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Tags(_General):
|
||||||
|
_icon = "tags.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Templates(_General):
|
||||||
|
_icon = "templates.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Twousericon(_General):
|
||||||
|
_icon = "twousericon.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Userhealthicon(_General):
|
||||||
|
_icon = "userhealthicon.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Usericon(_General):
|
||||||
|
_icon = "usericon.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Userprivacy(_General):
|
||||||
|
_icon = "userprivacy.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Userresource(_General):
|
||||||
|
_icon = "userresource.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Whatsnew(_General):
|
||||||
|
_icon = "whatsnew.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,71 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Identity(_Azure):
|
||||||
|
_type = "identity"
|
||||||
|
_icon_dir = "resources/azure/identity"
|
||||||
|
|
||||||
|
|
||||||
|
class AccessReview(_Identity):
|
||||||
|
_icon = "access-review.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ActiveDirectoryConnectHealth(_Identity):
|
||||||
|
_icon = "active-directory-connect-health.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ActiveDirectory(_Identity):
|
||||||
|
_icon = "active-directory.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ADB2C(_Identity):
|
||||||
|
_icon = "ad-b2c.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ADDomainServices(_Identity):
|
||||||
|
_icon = "ad-domain-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ADIdentityProtection(_Identity):
|
||||||
|
_icon = "ad-identity-protection.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ADPrivilegedIdentityManagement(_Identity):
|
||||||
|
_icon = "ad-privileged-identity-management.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppRegistrations(_Identity):
|
||||||
|
_icon = "app-registrations.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ConditionalAccess(_Identity):
|
||||||
|
_icon = "conditional-access.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EnterpriseApplications(_Identity):
|
||||||
|
_icon = "enterprise-applications.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Groups(_Identity):
|
||||||
|
_icon = "groups.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityGovernance(_Identity):
|
||||||
|
_icon = "identity-governance.png"
|
||||||
|
|
||||||
|
|
||||||
|
class InformationProtection(_Identity):
|
||||||
|
_icon = "information-protection.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedIdentities(_Identity):
|
||||||
|
_icon = "managed-identities.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Users(_Identity):
|
||||||
|
_icon = "users.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,87 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Integration(_Azure):
|
||||||
|
_type = "integration"
|
||||||
|
_icon_dir = "resources/azure/integration"
|
||||||
|
|
||||||
|
|
||||||
|
class APIForFhir(_Integration):
|
||||||
|
_icon = "api-for-fhir.png"
|
||||||
|
|
||||||
|
|
||||||
|
class APIManagement(_Integration):
|
||||||
|
_icon = "api-management.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppConfiguration(_Integration):
|
||||||
|
_icon = "app-configuration.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataCatalog(_Integration):
|
||||||
|
_icon = "data-catalog.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventGridDomains(_Integration):
|
||||||
|
_icon = "event-grid-domains.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventGridSubscriptions(_Integration):
|
||||||
|
_icon = "event-grid-subscriptions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EventGridTopics(_Integration):
|
||||||
|
_icon = "event-grid-topics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IntegrationAccounts(_Integration):
|
||||||
|
_icon = "integration-accounts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IntegrationServiceEnvironments(_Integration):
|
||||||
|
_icon = "integration-service-environments.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LogicAppsCustomConnector(_Integration):
|
||||||
|
_icon = "logic-apps-custom-connector.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LogicApps(_Integration):
|
||||||
|
_icon = "logic-apps.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PartnerTopic(_Integration):
|
||||||
|
_icon = "partner-topic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SendgridAccounts(_Integration):
|
||||||
|
_icon = "sendgrid-accounts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceBusRelays(_Integration):
|
||||||
|
_icon = "service-bus-relays.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceBus(_Integration):
|
||||||
|
_icon = "service-bus.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceCatalogManagedApplicationDefinitions(_Integration):
|
||||||
|
_icon = "service-catalog-managed-application-definitions.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SoftwareAsAService(_Integration):
|
||||||
|
_icon = "software-as-a-service.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorsimpleDeviceManagers(_Integration):
|
||||||
|
_icon = "storsimple-device-managers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SystemTopic(_Integration):
|
||||||
|
_icon = "system-topic.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,51 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Iot(_Azure):
|
||||||
|
_type = "iot"
|
||||||
|
_icon_dir = "resources/azure/iot"
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceProvisioningServices(_Iot):
|
||||||
|
_icon = "device-provisioning-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DigitalTwins(_Iot):
|
||||||
|
_icon = "digital-twins.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotCentralApplications(_Iot):
|
||||||
|
_icon = "iot-central-applications.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotHubSecurity(_Iot):
|
||||||
|
_icon = "iot-hub-security.png"
|
||||||
|
|
||||||
|
|
||||||
|
class IotHub(_Iot):
|
||||||
|
_icon = "iot-hub.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Maps(_Iot):
|
||||||
|
_icon = "maps.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Sphere(_Iot):
|
||||||
|
_icon = "sphere.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TimeSeriesInsightsEnvironments(_Iot):
|
||||||
|
_icon = "time-series-insights-environments.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TimeSeriesInsightsEventsSources(_Iot):
|
||||||
|
_icon = "time-series-insights-events-sources.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Windows10IotCoreServices(_Iot):
|
||||||
|
_icon = "windows-10-iot-core-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,31 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Migration(_Azure):
|
||||||
|
_type = "migration"
|
||||||
|
_icon_dir = "resources/azure/migration"
|
||||||
|
|
||||||
|
|
||||||
|
class DataBoxEdge(_Migration):
|
||||||
|
_icon = "data-box-edge.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataBox(_Migration):
|
||||||
|
_icon = "data-box.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseMigrationServices(_Migration):
|
||||||
|
_icon = "database-migration-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MigrationProjects(_Migration):
|
||||||
|
_icon = "migration-projects.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RecoveryServicesVaults(_Migration):
|
||||||
|
_icon = "recovery-services-vaults.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,51 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Ml(_Azure):
|
||||||
|
_type = "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):
|
||||||
|
_icon = "batch-ai.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BotServices(_Ml):
|
||||||
|
_icon = "bot-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CognitiveServices(_Ml):
|
||||||
|
_icon = "cognitive-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GenomicsAccounts(_Ml):
|
||||||
|
_icon = "genomics-accounts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MachineLearningServiceWorkspaces(_Ml):
|
||||||
|
_icon = "machine-learning-service-workspaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MachineLearningStudioWebServicePlans(_Ml):
|
||||||
|
_icon = "machine-learning-studio-web-service-plans.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MachineLearningStudioWebServices(_Ml):
|
||||||
|
_icon = "machine-learning-studio-web-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MachineLearningStudioWorkspaces(_Ml):
|
||||||
|
_icon = "machine-learning-studio-workspaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,23 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Mobile(_Azure):
|
||||||
|
_type = "mobile"
|
||||||
|
_icon_dir = "resources/azure/mobile"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServiceMobile(_Mobile):
|
||||||
|
_icon = "app-service-mobile.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MobileEngagement(_Mobile):
|
||||||
|
_icon = "mobile-engagement.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationHubs(_Mobile):
|
||||||
|
_icon = "notification-hubs.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -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
|
@ -0,0 +1,123 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Network(_Azure):
|
||||||
|
_type = "network"
|
||||||
|
_icon_dir = "resources/azure/network"
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationGateway(_Network):
|
||||||
|
_icon = "application-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ApplicationSecurityGroups(_Network):
|
||||||
|
_icon = "application-security-groups.png"
|
||||||
|
|
||||||
|
|
||||||
|
class CDNProfiles(_Network):
|
||||||
|
_icon = "cdn-profiles.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Connections(_Network):
|
||||||
|
_icon = "connections.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DDOSProtectionPlans(_Network):
|
||||||
|
_icon = "ddos-protection-plans.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DNSPrivateZones(_Network):
|
||||||
|
_icon = "dns-private-zones.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DNSZones(_Network):
|
||||||
|
_icon = "dns-zones.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ExpressrouteCircuits(_Network):
|
||||||
|
_icon = "expressroute-circuits.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Firewall(_Network):
|
||||||
|
_icon = "firewall.png"
|
||||||
|
|
||||||
|
|
||||||
|
class FrontDoors(_Network):
|
||||||
|
_icon = "front-doors.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LoadBalancers(_Network):
|
||||||
|
_icon = "load-balancers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LocalNetworkGateways(_Network):
|
||||||
|
_icon = "local-network-gateways.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NetworkInterfaces(_Network):
|
||||||
|
_icon = "network-interfaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NetworkSecurityGroupsClassic(_Network):
|
||||||
|
_icon = "network-security-groups-classic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NetworkWatcher(_Network):
|
||||||
|
_icon = "network-watcher.png"
|
||||||
|
|
||||||
|
|
||||||
|
class OnPremisesDataGateways(_Network):
|
||||||
|
_icon = "on-premises-data-gateways.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PrivateEndpoint(_Network):
|
||||||
|
_icon = "private-endpoint.png"
|
||||||
|
|
||||||
|
|
||||||
|
class PublicIpAddresses(_Network):
|
||||||
|
_icon = "public-ip-addresses.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ReservedIpAddressesClassic(_Network):
|
||||||
|
_icon = "reserved-ip-addresses-classic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RouteFilters(_Network):
|
||||||
|
_icon = "route-filters.png"
|
||||||
|
|
||||||
|
|
||||||
|
class RouteTables(_Network):
|
||||||
|
_icon = "route-tables.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceEndpointPolicies(_Network):
|
||||||
|
_icon = "service-endpoint-policies.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Subnets(_Network):
|
||||||
|
_icon = "subnets.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TrafficManagerProfiles(_Network):
|
||||||
|
_icon = "traffic-manager-profiles.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualNetworkClassic(_Network):
|
||||||
|
_icon = "virtual-network-classic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualNetworkGateways(_Network):
|
||||||
|
_icon = "virtual-network-gateways.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualNetworks(_Network):
|
||||||
|
_icon = "virtual-networks.png"
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualWans(_Network):
|
||||||
|
_icon = "virtual-wans.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,39 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Security(_Azure):
|
||||||
|
_type = "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):
|
||||||
|
_icon = "key-vaults.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecurityCenter(_Security):
|
||||||
|
_icon = "security-center.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Sentinel(_Security):
|
||||||
|
_icon = "sentinel.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,75 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Storage(_Azure):
|
||||||
|
_type = "storage"
|
||||||
|
_icon_dir = "resources/azure/storage"
|
||||||
|
|
||||||
|
|
||||||
|
class ArchiveStorage(_Storage):
|
||||||
|
_icon = "archive-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Azurefxtedgefiler(_Storage):
|
||||||
|
_icon = "azurefxtedgefiler.png"
|
||||||
|
|
||||||
|
|
||||||
|
class BlobStorage(_Storage):
|
||||||
|
_icon = "blob-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataBoxEdgeDataBoxGateway(_Storage):
|
||||||
|
_icon = "data-box-edge-data-box-gateway.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataBox(_Storage):
|
||||||
|
_icon = "data-box.png"
|
||||||
|
|
||||||
|
|
||||||
|
class DataLakeStorage(_Storage):
|
||||||
|
_icon = "data-lake-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class GeneralStorage(_Storage):
|
||||||
|
_icon = "general-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NetappFiles(_Storage):
|
||||||
|
_icon = "netapp-files.png"
|
||||||
|
|
||||||
|
|
||||||
|
class QueuesStorage(_Storage):
|
||||||
|
_icon = "queues-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageAccountsClassic(_Storage):
|
||||||
|
_icon = "storage-accounts-classic.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageAccounts(_Storage):
|
||||||
|
_icon = "storage-accounts.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageExplorer(_Storage):
|
||||||
|
_icon = "storage-explorer.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorageSyncServices(_Storage):
|
||||||
|
_icon = "storage-sync-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorsimpleDataManagers(_Storage):
|
||||||
|
_icon = "storsimple-data-managers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class StorsimpleDeviceManagers(_Storage):
|
||||||
|
_icon = "storsimple-device-managers.png"
|
||||||
|
|
||||||
|
|
||||||
|
class TableStorage(_Storage):
|
||||||
|
_icon = "table-storage.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,51 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Azure
|
||||||
|
|
||||||
|
|
||||||
|
class _Web(_Azure):
|
||||||
|
_type = "web"
|
||||||
|
_icon_dir = "resources/azure/web"
|
||||||
|
|
||||||
|
|
||||||
|
class APIConnections(_Web):
|
||||||
|
_icon = "api-connections.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServiceCertificates(_Web):
|
||||||
|
_icon = "app-service-certificates.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServiceDomains(_Web):
|
||||||
|
_icon = "app-service-domains.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServiceEnvironments(_Web):
|
||||||
|
_icon = "app-service-environments.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServicePlans(_Web):
|
||||||
|
_icon = "app-service-plans.png"
|
||||||
|
|
||||||
|
|
||||||
|
class AppServices(_Web):
|
||||||
|
_icon = "app-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MediaServices(_Web):
|
||||||
|
_icon = "media-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationHubNamespaces(_Web):
|
||||||
|
_icon = "notification-hub-namespaces.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Search(_Web):
|
||||||
|
_icon = "search.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Signalr(_Web):
|
||||||
|
_icon = "signalr.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,12 @@
|
|||||||
|
"""
|
||||||
|
Base provides a set of general services for backend infrastructure.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class _Base(Node):
|
||||||
|
_provider = "base"
|
||||||
|
_icon_dir = "resources/base"
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
@ -0,0 +1,128 @@
|
|||||||
|
"""
|
||||||
|
A set of nodes and edges to visualize software architecture using the C4 model.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import html
|
||||||
|
import textwrap
|
||||||
|
|
||||||
|
from diagrams import Cluster, Edge, Node
|
||||||
|
|
||||||
|
|
||||||
|
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)]
|
||||||
|
# fill up with empty lines so it is always three
|
||||||
|
lines += [""] * (3 - len(lines))
|
||||||
|
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)
|
@ -0,0 +1,20 @@
|
|||||||
|
"""
|
||||||
|
Custom provides the possibility of load an image to be presented as a node.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class Custom(Node):
|
||||||
|
_provider = "custom"
|
||||||
|
_type = "custom"
|
||||||
|
_icon_dir = None
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
||||||
|
|
||||||
|
def _load_icon(self):
|
||||||
|
return self._icon
|
||||||
|
|
||||||
|
def __init__(self, label, icon_path, *args, **kwargs):
|
||||||
|
self._icon = icon_path
|
||||||
|
super().__init__(label, *args, **kwargs)
|
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
DigitalOcean provides a set of services for DigitalOcean provider.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class _DigitalOcean(Node):
|
||||||
|
_provider = "digitalocean"
|
||||||
|
_icon_dir = "resources/digitalocean"
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
||||||
|
|
||||||
|
|
||||||
|
class DigitalOcean(_DigitalOcean):
|
||||||
|
_icon = "digitalocean.png"
|
@ -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,16 @@
|
|||||||
|
"""
|
||||||
|
Elastic provides a set of general elastic services.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from diagrams import Node
|
||||||
|
|
||||||
|
|
||||||
|
class _Elastic(Node):
|
||||||
|
_provider = "elastic"
|
||||||
|
_icon_dir = "resources/elastic"
|
||||||
|
|
||||||
|
fontcolor = "#ffffff"
|
||||||
|
|
||||||
|
|
||||||
|
class Elastic(_Elastic):
|
||||||
|
_icon = "elastic.png"
|
@ -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
|
@ -0,0 +1,71 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Elastic
|
||||||
|
|
||||||
|
|
||||||
|
class _Elasticsearch(_Elastic):
|
||||||
|
_type = "elasticsearch"
|
||||||
|
_icon_dir = "resources/elastic/elasticsearch"
|
||||||
|
|
||||||
|
|
||||||
|
class Alerting(_Elasticsearch):
|
||||||
|
_icon = "alerting.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Beats(_Elasticsearch):
|
||||||
|
_icon = "beats.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Elasticsearch(_Elasticsearch):
|
||||||
|
_icon = "elasticsearch.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Kibana(_Elasticsearch):
|
||||||
|
_icon = "kibana.png"
|
||||||
|
|
||||||
|
|
||||||
|
class LogstashPipeline(_Elasticsearch):
|
||||||
|
_icon = "logstash-pipeline.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Logstash(_Elasticsearch):
|
||||||
|
_icon = "logstash.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MachineLearning(_Elasticsearch):
|
||||||
|
_icon = "machine-learning.png"
|
||||||
|
|
||||||
|
|
||||||
|
class MapServices(_Elasticsearch):
|
||||||
|
_icon = "map-services.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Maps(_Elasticsearch):
|
||||||
|
_icon = "maps.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Monitoring(_Elasticsearch):
|
||||||
|
_icon = "monitoring.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SearchableSnapshots(_Elasticsearch):
|
||||||
|
_icon = "searchable-snapshots.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SecuritySettings(_Elasticsearch):
|
||||||
|
_icon = "security-settings.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SQL(_Elasticsearch):
|
||||||
|
_icon = "sql.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Stack(_Elasticsearch):
|
||||||
|
_icon = "stack.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
|
||||||
|
ElasticSearch = Elasticsearch
|
||||||
|
LogStash = Logstash
|
||||||
|
ML = MachineLearning
|
@ -0,0 +1,31 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Elastic
|
||||||
|
|
||||||
|
|
||||||
|
class _Enterprisesearch(_Elastic):
|
||||||
|
_type = "enterprisesearch"
|
||||||
|
_icon_dir = "resources/elastic/enterprisesearch"
|
||||||
|
|
||||||
|
|
||||||
|
class AppSearch(_Enterprisesearch):
|
||||||
|
_icon = "app-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Crawler(_Enterprisesearch):
|
||||||
|
_icon = "crawler.png"
|
||||||
|
|
||||||
|
|
||||||
|
class EnterpriseSearch(_Enterprisesearch):
|
||||||
|
_icon = "enterprise-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
class SiteSearch(_Enterprisesearch):
|
||||||
|
_icon = "site-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
class WorkplaceSearch(_Enterprisesearch):
|
||||||
|
_icon = "workplace-search.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,31 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Elastic
|
||||||
|
|
||||||
|
|
||||||
|
class _Observability(_Elastic):
|
||||||
|
_type = "observability"
|
||||||
|
_icon_dir = "resources/elastic/observability"
|
||||||
|
|
||||||
|
|
||||||
|
class APM(_Observability):
|
||||||
|
_icon = "apm.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Logs(_Observability):
|
||||||
|
_icon = "logs.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Metrics(_Observability):
|
||||||
|
_icon = "metrics.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Observability(_Observability):
|
||||||
|
_icon = "observability.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Uptime(_Observability):
|
||||||
|
_icon = "uptime.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Elastic
|
||||||
|
|
||||||
|
|
||||||
|
class _Orchestration(_Elastic):
|
||||||
|
_type = "orchestration"
|
||||||
|
_icon_dir = "resources/elastic/orchestration"
|
||||||
|
|
||||||
|
|
||||||
|
class ECE(_Orchestration):
|
||||||
|
_icon = "ece.png"
|
||||||
|
|
||||||
|
|
||||||
|
class ECK(_Orchestration):
|
||||||
|
_icon = "eck.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
@ -0,0 +1,19 @@
|
|||||||
|
# This module is automatically generated by autogen.sh. DO NOT EDIT.
|
||||||
|
|
||||||
|
from . import _Elastic
|
||||||
|
|
||||||
|
|
||||||
|
class _Saas(_Elastic):
|
||||||
|
_type = "saas"
|
||||||
|
_icon_dir = "resources/elastic/saas"
|
||||||
|
|
||||||
|
|
||||||
|
class Cloud(_Saas):
|
||||||
|
_icon = "cloud.png"
|
||||||
|
|
||||||
|
|
||||||
|
class Elastic(_Saas):
|
||||||
|
_icon = "elastic.png"
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue