Skip to content

Commit

Permalink
feat: Moved fallback icons to dedicated file. Added loading all cloud…
Browse files Browse the repository at this point in the history
… providers. updated augmented_resources.yaml
  • Loading branch information
tsypuk committed Jun 15, 2023
1 parent 8ac6739 commit 182b2fc
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 10 deletions.
6 changes: 4 additions & 2 deletions multicloud_diagrams/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ def __init__(self):
supported_vertex = {}

# Load supported vertexes for registered Cloud Providers
path = pkgutil.get_data(__package__, 'providers/aws_services.json')
supported_vertex.update(json.loads(path.decode("utf-8")))
providers = ['aws_services', 'azure_services', 'gcp_services', 'on_prem_services', 'fallback']
for provider in providers:
path = pkgutil.get_data(__package__, f'providers/{provider}.json')
supported_vertex.update(json.loads(path.decode("utf-8")))

def get_vertex_metadata(self, node_type: str) -> object:
if node_type in self.supported_vertex:
Expand Down
6 changes: 0 additions & 6 deletions multicloud_diagrams/providers/aws_services.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,5 @@
"width": "46.5",
"height": "63",
"nodeLevel": "2"
},
"fallback_vertex": {
"style": "sketch=0;aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/mscae/Info.svg;",
"width": "78",
"height": "78",
"nodeLevel": "1"
}
}
8 changes: 8 additions & 0 deletions multicloud_diagrams/providers/fallback.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"fallback_vertex": {
"style": "sketch=0;aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/mscae/Info.svg;",
"width": "78",
"height": "78",
"nodeLevel": "1"
}
}
67 changes: 66 additions & 1 deletion samples/output/output.prod.iam-roles-from-yaml.drawio
Original file line number Diff line number Diff line change
@@ -1 +1,66 @@
<mxfile host="drawio-plugin" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" modified="2023-05-17T16:22:13.049Z" version="20.5.3" etag="Rv_sKyoHeq_Uo0W-P7bM" type="embed"><diagram id="diagram_1" name="AWS components"><mxGraphModel dx="569" dy="358" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name" value="&lt;b&gt;Name&lt;/b&gt;: prod-lambda-name&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;shape=mxgraph.aws3.lambda_function;prIcon=server;fillColor=#F58534;gradientColor=none;html=1;" parent="1" vertex="1"><mxGeometry x="306" width="69" height="72" as="geometry"/></mxCell><mxCell id="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" value="&lt;b&gt;Name&lt;/b&gt;: role-lambda-name&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:role/prod-lambda-name &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;shape=mxgraph.aws3.role;fillColor=#759C3E;gradientColor=none;" parent="1" vertex="1"><mxGeometry x="353.5" y="172" width="94.5" height="79.5" as="geometry"/></mxCell><mxCell id="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" value="&lt;b&gt;Name&lt;/b&gt;: prod-cloudwatch-policy&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:policy/prod-cloudwatch-policy &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#3F8624;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.policy;" parent="1" vertex="1"><mxGeometry y="351.5" width="78" height="67" as="geometry"/></mxCell><mxCell id="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" value="&lt;b&gt;Name&lt;/b&gt;: prod-s3-policy&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:policy/prod-s3-policy &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#3F8624;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.policy;" parent="1" vertex="1"><mxGeometry x="370" y="351.5" width="78" height="67" as="geometry"/></mxCell><mxCell id="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" value="&lt;b&gt;Name&lt;/b&gt;: prod-dynamodb-policy&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:policy/prod-dynamo-policy &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#3F8624;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.policy;" parent="1" vertex="1"><mxGeometry x="692" y="351.5" width="78" height="67" as="geometry"/></mxCell><mxCell id="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name" target="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" value="HasRole" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" target="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" value="Allow CloudWatch logs" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" target="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" value="Allow S3 access" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" target="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" value="Allow DynamoDB read access" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile>
<mxfile host="multicloud-diagrams" agent="PIP package multicloud-diagrams. Generate resources in draw.io compatible format for Cloud infrastructure. Copyrights @ Roman Tsypuk 2023. MIT license." type="MultiCloud">
<diagram id="diagram_1" name="AWS components">
<mxGraphModel dx="1015" dy="661" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name" value="&lt;b&gt;Name&lt;/b&gt;: prod-lambda-name&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;shape=mxgraph.aws3.lambda_function;prIcon=server;fillColor=#F58534;gradientColor=none;html=1;" parent="1" vertex="1">
<!--vertex:prod-lambda-name-->
<mxGeometry width="69" height="72" as="geometry" x="306" />
</mxCell>
<mxCell id="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" value="&lt;b&gt;Name&lt;/b&gt;: role-lambda-name&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:role/prod-lambda-name &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;shape=mxgraph.aws3.role;fillColor=#759C3E;gradientColor=none;" parent="1" vertex="1">
<!--vertex:role-lambda-name-->
<mxGeometry width="94.5" height="79.5" as="geometry" x="353.5" y="172" />
</mxCell>
<mxCell id="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" value="&lt;b&gt;Name&lt;/b&gt;: prod-cloudwatch-policy&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:policy/prod-cloudwatch-policy &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#3F8624;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.policy;" parent="1" vertex="1">
<!--vertex:prod-cloudwatch-policy-->
<mxGeometry width="78" height="67" as="geometry" y="351.5" />
</mxCell>
<mxCell id="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" value="&lt;b&gt;Name&lt;/b&gt;: prod-s3-policy&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:policy/prod-s3-policy &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#3F8624;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.policy;" parent="1" vertex="1">
<!--vertex:prod-s3-policy-->
<mxGeometry width="78" height="67" as="geometry" x="370" y="351.5" />
</mxCell>
<mxCell id="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" value="&lt;b&gt;Name&lt;/b&gt;: prod-dynamodb-policy&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:iam::123456789:policy/prod-dynamo-policy &lt;BR&gt;-----------&lt;BR&gt;" style="verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#3F8624;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.policy;" parent="1" vertex="1">
<!--vertex:prod-dynamodb-policy-->
<mxGeometry width="78" height="67" as="geometry" x="692" y="351.5" />
</mxCell>
<mxCell id="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name" target="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" edge="2">
<!--edge:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name-->
<mxGeometry as="geometry" />
</mxCell>
<mxCell id="label:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" value="HasRole" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789:function:prod-lambda-name:to:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" target="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" edge="2">
<!--edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy-->
<mxGeometry as="geometry" />
</mxCell>
<mxCell id="label:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" value="Allow CloudWatch logs" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-cloudwatch-policy" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" target="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" edge="2">
<!--edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy-->
<mxGeometry as="geometry" />
</mxCell>
<mxCell id="label:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" value="Allow S3 access" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-s3-policy" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" style="endFill=0;endArrow=none;endArrow=none;" parent="1" source="vertex:iam_role:arn:aws:iam::123456789:role/prod-lambda-name" target="vertex:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" edge="2">
<!--edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy-->
<mxGeometry as="geometry" />
</mxCell>
<mxCell id="label:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" value="Allow DynamoDB read access" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="edge:iam_role:arn:aws:iam::123456789:role/prod-lambda-name:to:iam_policy:arn:aws:iam::123456789:policy/prod-dynamo-policy" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
1 change: 0 additions & 1 deletion samples/samples/augmented_resources.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ vertices:
type: iam_role
arn: arn:aws:iam::123456789:role/prod-lambda-name
- name: prod-cloudwatch-policy
icon: broker
type: iam_policy
arn: arn:aws:iam::123456789:policy/prod-cloudwatch-policy
- name: prod-s3-policy
Expand Down

0 comments on commit 182b2fc

Please sign in to comment.