forked from HariSekhon/Diagrams-as-Code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rabbitmq_broker_with_custom_icon.py
executable file
·87 lines (66 loc) · 2.36 KB
/
rabbitmq_broker_with_custom_icon.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python3
# coding=utf-8
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: 2023-04-14 13:54:52 +0100 (Fri, 14 Apr 2023)
#
# https://github.com/HariSekhon/Diagrams-as-Code
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn
# and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/HariSekhon
#
"""
RabbitMQ Broker with custom icon
"""
# based on https://diagrams.mingrammer.com/docs/getting-started/examples
__author__ = 'Hari Sekhon'
__version__ = '0.2'
import os
from urllib.request import urlretrieve
from diagrams import Diagram, Cluster
# ============================================================================ #
# AWS resources:
#
# https://diagrams.mingrammer.com/docs/nodes/aws
#
from diagrams.aws.database import Aurora
# ============================================================================ #
# Kubernetes resources:
#
# https://diagrams.mingrammer.com/docs/nodes/k8s
#
from diagrams.k8s.compute import Pod
# ============================================================================ #
#
# Custom - for creating a custom object using a downloaded image
#
# https://diagrams.mingrammer.com/docs/nodes/custom
#
from diagrams.custom import Custom
# ============================================================================ #
# pylint: disable=C0103
rabbitmq_url = "https://jpadilla.github.io/rabbitmqapp/assets/img/icon.png"
rabbitmq_icon = "rabbitmq.png"
image_dir = 'images'
# NOTE: filename=images/ parameter to Diagram() changes the $PWD so icon path must be local dir,
# but at this point we're still at top level dir so must join to prefix it with the image_dir
# nosemgrep: python.lang.security.audit.dynamic-urllib-use-detected.dynamic-urllib-use-detected
urlretrieve(rabbitmq_url, os.path.join(image_dir, rabbitmq_icon))
# pylint: disable=W0106
with Diagram("RabbitMQ Broker with custom icon",
show=not bool(os.environ.get('CI', 0)),
filename=os.path.join(image_dir, 'rabbitmq_broker_with_custom_icon'),
):
with Cluster("Consumers"):
consumers = [
Pod("worker"),
Pod("worker"),
Pod("worker")]
rabbitmq = Custom("RabbitMQ", rabbitmq_icon)
rabbitmq >> consumers >> Aurora("Database")
#os.remove(rabbitmq_icon)