Merge branch 'master' into thanos

pull/99/head
Victor Lantier 6 years ago committed by GitHub
commit 8c602f6307
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

3
.gitignore vendored

@ -18,5 +18,8 @@ website/build
# node modules # node modules
node_modules node_modules
# testing
main.py
# trash # trash
.DS_Store .DS_Store

@ -72,6 +72,7 @@ ALIASES = {
"ci": { "ci": {
"Circleci": "CircleCI", "Circleci": "CircleCI",
"Travisci": "TravisCI", "Travisci": "TravisCI",
"Teamcity": "TC",
}, },
"container": { "container": {
"Rkt": "RKT", "Rkt": "RKT",

@ -1,6 +1,6 @@
import contextvars import contextvars
import os import os
from hashlib import md5 import uuid
from pathlib import Path from pathlib import Path
from random import getrandbits from random import getrandbits
from typing import List, Union, Dict from typing import List, Union, Dict
@ -159,13 +159,13 @@ class Diagram:
return True return True
return False return False
def node(self, hashid: str, label: str, **attrs) -> None: def node(self, nodeid: str, label: str, **attrs) -> None:
"""Create a new node.""" """Create a new node."""
self.dot.node(hashid, label=label, **attrs) self.dot.node(nodeid, label=label, **attrs)
def connect(self, node: "Node", node2: "Node", edge: "Edge") -> None: def connect(self, node: "Node", node2: "Node", edge: "Edge") -> None:
"""Connect the two Nodes.""" """Connect the two Nodes."""
self.dot.edge(node.hashid, node2.hashid, **edge.attrs) self.dot.edge(node.nodeid, node2.nodeid, **edge.attrs)
def subgraph(self, dot: Digraph) -> None: def subgraph(self, dot: Digraph) -> None:
"""Create a subgraph for clustering""" """Create a subgraph for clustering"""
@ -243,9 +243,9 @@ class Cluster:
return True return True
return False return False
def node(self, hashid: str, label: str, **attrs) -> None: def node(self, nodeid: str, label: str, **attrs) -> None:
"""Create a new node in the cluster.""" """Create a new node in the cluster."""
self.dot.node(hashid, label=label, **attrs) self.dot.node(nodeid, label=label, **attrs)
def subgraph(self, dot: Digraph) -> None: def subgraph(self, dot: Digraph) -> None:
self.dot.subgraph(dot) self.dot.subgraph(dot)
@ -267,8 +267,8 @@ class Node:
:param label: Node label. :param label: Node label.
""" """
# Generates a hash for identifying a node. # Generates an ID for identifying a node.
self._hash = self._rand_hash() self._id = self._rand_id()
self.label = label self.label = label
# fmt: off # fmt: off
@ -291,9 +291,9 @@ class Node:
# If a node is in the cluster context, add it to cluster. # If a node is in the cluster context, add it to cluster.
if self._cluster: if self._cluster:
self._cluster.node(self._hash, self.label, **self.attrs) self._cluster.node(self._id, self.label, **self.attrs)
else: else:
self._diagram.node(self._hash, self.label, **self.attrs) self._diagram.node(self._id, self.label, **self.attrs)
def __repr__(self): def __repr__(self):
_name = self.__class__.__name__ _name = self.__class__.__name__
@ -366,8 +366,8 @@ class Node:
return self return self
@property @property
def hashid(self): def nodeid(self):
return self._hash return self._id
# TODO: option for adding flow description to the connection edge # TODO: option for adding flow description to the connection edge
def connect(self, node: "Node", edge: "Edge"): def connect(self, node: "Node", edge: "Edge"):
@ -386,8 +386,8 @@ class Node:
return node return node
@staticmethod @staticmethod
def _rand_hash(): def _rand_id():
return md5(getrandbits(64).to_bytes(64, "big")).hexdigest() return uuid.uuid4().hex
def _load_icon(self): def _load_icon(self):
basedir = Path(os.path.abspath(os.path.dirname(__file__))) basedir = Path(os.path.abspath(os.path.dirname(__file__)))
@ -436,10 +436,13 @@ class Edge:
for k, v in self._default_edge_attrs.items(): for k, v in self._default_edge_attrs.items():
self._attrs[k] = v self._attrs[k] = v
# Graphviz complaining about using label for edges, so replace it with xlabel. if label:
self._attrs["xlabel"] = label # Graphviz complaining about using label for edges, so replace it with xlabel.
self._attrs["color"] = color self._attrs["xlabel"] = label
self._attrs["style"] = style if color:
self._attrs["color"] = color
if style:
self._attrs["style"] = style
self._attrs.update(attrs) self._attrs.update(attrs)
def __sub__(self, other: Union["Node", "Edge", List["Node"]]): def __sub__(self, other: Union["Node", "Edge", List["Node"]]):

@ -36,6 +36,10 @@ class ElasticLoadBalancing(_Network):
_icon = "elastic-load-balancing.png" _icon = "elastic-load-balancing.png"
class Endpoint(_Network):
_icon = "endpoint.png"
class GlobalAccelerator(_Network): class GlobalAccelerator(_Network):
_icon = "global-accelerator.png" _icon = "global-accelerator.png"
@ -68,6 +72,10 @@ class TransitGateway(_Network):
_icon = "transit-gateway.png" _icon = "transit-gateway.png"
class VPCRouter(_Network):
_icon = "vpc-router.png"
class VPC(_Network): class VPC(_Network):
_icon = "vpc.png" _icon = "vpc.png"

@ -16,6 +16,10 @@ class Jenkins(_Ci):
_icon = "jenkins.png" _icon = "jenkins.png"
class Teamcity(_Ci):
_icon = "teamcity.png"
class Travisci(_Ci): class Travisci(_Ci):
_icon = "travisci.png" _icon = "travisci.png"
@ -24,3 +28,4 @@ class Travisci(_Ci):
CircleCI = Circleci CircleCI = Circleci
TravisCI = Travisci TravisCI = Travisci
TC = Teamcity

@ -8,6 +8,14 @@ class _Iac(_OnPrem):
_icon_dir = "resources/onprem/iac" _icon_dir = "resources/onprem/iac"
class Ansible(_Iac):
_icon = "ansible.png"
class Awx(_Iac):
_icon = "awx.png"
class Terraform(_Iac): class Terraform(_Iac):
_icon = "terraform.png" _icon = "terraform.png"

@ -56,6 +56,10 @@ class Pfsense(_Network):
_icon = "pfsense.png" _icon = "pfsense.png"
class Pomerium(_Network):
_icon = "pomerium.png"
class Tomcat(_Network): class Tomcat(_Network):
_icon = "tomcat.png" _icon = "tomcat.png"

@ -62,6 +62,7 @@ Node classes list of aws provider.
- **diagrams.aws.network.Cloudfront**, **CF** (alias) - **diagrams.aws.network.Cloudfront**, **CF** (alias)
- **diagrams.aws.network.DirectConnect** - **diagrams.aws.network.DirectConnect**
- **diagrams.aws.network.ElasticLoadBalancing**, **ELB** (alias) - **diagrams.aws.network.ElasticLoadBalancing**, **ELB** (alias)
- **diagrams.aws.network.Endpoint**
- **diagrams.aws.network.GlobalAccelerator**, **GAX** (alias) - **diagrams.aws.network.GlobalAccelerator**, **GAX** (alias)
- **diagrams.aws.network.InternetGateway** - **diagrams.aws.network.InternetGateway**
- **diagrams.aws.network.NATGateway** - **diagrams.aws.network.NATGateway**
@ -70,6 +71,7 @@ Node classes list of aws provider.
- **diagrams.aws.network.Route53** - **diagrams.aws.network.Route53**
- **diagrams.aws.network.SiteToSiteVpn** - **diagrams.aws.network.SiteToSiteVpn**
- **diagrams.aws.network.TransitGateway** - **diagrams.aws.network.TransitGateway**
- **diagrams.aws.network.VPCRouter**
- **diagrams.aws.network.VPC** - **diagrams.aws.network.VPC**
## aws.management ## aws.management

@ -14,6 +14,7 @@ Node classes list of onprem provider.
- **diagrams.onprem.ci.Circleci**, **CircleCI** (alias) - **diagrams.onprem.ci.Circleci**, **CircleCI** (alias)
- **diagrams.onprem.ci.Jenkins** - **diagrams.onprem.ci.Jenkins**
- **diagrams.onprem.ci.Teamcity**, **TC** (alias)
- **diagrams.onprem.ci.Travisci**, **TravisCI** (alias) - **diagrams.onprem.ci.Travisci**, **TravisCI** (alias)
## onprem.queue ## onprem.queue
@ -77,6 +78,7 @@ Node classes list of onprem provider.
- **diagrams.onprem.network.Linkerd** - **diagrams.onprem.network.Linkerd**
- **diagrams.onprem.network.Nginx** - **diagrams.onprem.network.Nginx**
- **diagrams.onprem.network.Pfsense**, **PFSense** (alias) - **diagrams.onprem.network.Pfsense**, **PFSense** (alias)
- **diagrams.onprem.network.Pomerium**
- **diagrams.onprem.network.Tomcat** - **diagrams.onprem.network.Tomcat**
- **diagrams.onprem.network.Traefik** - **diagrams.onprem.network.Traefik**
- **diagrams.onprem.network.Vyos**, **VyOS** (alias) - **diagrams.onprem.network.Vyos**, **VyOS** (alias)
@ -90,6 +92,8 @@ Node classes list of onprem provider.
## onprem.iac ## onprem.iac
- **diagrams.onprem.iac.Ansible**
- **diagrams.onprem.iac.Awx**
- **diagrams.onprem.iac.Terraform** - **diagrams.onprem.iac.Terraform**
## onprem.analytics ## onprem.analytics

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Loading…
Cancel
Save