awslabs / aws-icons-for-plantuml

PlantUML sprites, macros, and other includes for Amazon Web Services services and resources
Other
908 stars 155 forks source link

Add support for Groups #40

Closed mcwarman closed 2 years ago

mcwarman commented 2 years ago

Issue #, if available: N/A

Description of changes:

Adds the support for Groups. Some example usage below.

Groups

@startuml
'Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
'SPDX-License-Identifier: MIT (For details, see https://github.com/awslabs/aws-icons-for-plantuml/blob/master/LICENSE)

!define AWSPuml https://raw.githubusercontent.com/mcwarman/aws-icons-for-plantuml/groups/dist

!include AWSPuml/AWSCommon.puml
!include AWSPuml/AWSSimplified.puml
!include AWSPuml/AWSGroups.puml

!include AWSPuml/GroupIcons/all.puml

CloudGroup(CloudGroup, "AWS Cloud")
CloudaltGroup(CloudaltGroup, "AWS Cloud")
RegionGroup(RegionGroup, "Region")
AvalabilityZoneGroup(something, "Avalability Zone")
SecurityGroupGroup(SecurityGroupGroup, "Security Group")
AutoScalingGroupGroup(AutoScalingGroupGroup, "Auto Scaling Group")
VirtualPrivateCloudVPCGroup(VirtualPrivateCloudVPCGroup, "VPC")
VPCSubnetPrivateGroup(VPCSubnetPrivateGroup, "Private Subnet")
VPCSubnetPublicGroup(VPCSubnetPublicGroup, "Public Subnet")
ServerContentsGroup(ServerContentsGroup, "Server Contents")
CorporateDataCenterGroup(CorporateDataCenterGroup, "Corporate Data Center")
EC2InstanceContainerGroup(EC2InstanceContainerGroup, "EC2 Instance Container")
SpotFleetGroup(SpotFleetGroup, "Spot Fleet")
ElasticBeanstalkContainerGroup(ElasticBeanstalkContainerGroup, "Elastic Beanstalk Container")
StepFunctionGroup(StepFunctionGroup, "AWS Step Functions workflow")
GenericGroup(GenericGroup, "Generic group")
GenericAltGroup(GenericAltGroup, "Generic group")
@enduml

Examples

VPC

VPC

@startuml
'Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
'SPDX-License-Identifier: MIT (For details, see https://github.com/awslabs/aws-icons-for-plantuml/blob/master/LICENSE)

!define AWSPuml https://raw.githubusercontent.com/mcwarman/aws-icons-for-plantuml/groups/dist

!include AWSPuml/AWSCommon.puml
!include AWSPuml/AWSSimplified.puml
!include AWSPuml/AWSGroups.puml

!include AWSPuml/Compute/EC2.puml

!include AWSPuml/GroupIcons/Cloud.puml
!include AWSPuml/GroupIcons/VirtualPrivateCloudVPC.puml
!include AWSPuml/GroupIcons/VPCSubnetPublic.puml
!include AWSPuml/GroupIcons/VPCSubnetPrivate.puml

!include AWSPuml/NetworkingContentDelivery/VPCNATGateway.puml
!include AWSPuml/NetworkingContentDelivery/VPCInternetGateway.puml

CloudGroup(cloud, "AWS Cloud") {
  VirtualPrivateCloudVPCGroup(vpc, "VPC") {

    VPCInternetGateway(internet_gateway, "Internet Gateway", "")

    AvalabilityZoneGroup(az_1, "Availability Zone 1") {
      VPCSubnetPublicGroup(az_1_public, "Public Subnet") {
        VPCNATGateway(az_1_nat_gateway, "NAT Gateway", "")
      }
      VPCSubnetPrivateGroup(az_1_private, "Private Subnet") {
        EC2(az_1_ec2_1, "EC2", "")
      }

      az_1_ec2_1 .u..> az_1_nat_gateway
    }

    AvalabilityZoneGroup(az_2, "Availability Zone 2") {
      VPCSubnetPublicGroup(az_2_public, "Public Subnet") {
        VPCNATGateway(az_2_nat_gateway, "NAT Gateway", "")
      }
      VPCSubnetPrivateGroup(az_2_private, "Private Subnet") {
        EC2(az_2_ec2_1, "EC2", "")
      }

      az_2_ec2_1 .u..> az_2_nat_gateway
    }

    az_2_nat_gateway .u..> internet_gateway
    az_1_nat_gateway .u..> internet_gateway

  }
}
@enduml

Auto Scaling Groups

Auto Scaling Groups

@startuml
'Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
'SPDX-License-Identifier: MIT (For details, see https://github.com/awslabs/aws-icons-for-plantuml/blob/master/LICENSE)

!define AWSPuml https://raw.githubusercontent.com/mcwarman/aws-icons-for-plantuml/groups/dist

!include AWSPuml/AWSCommon.puml
!include AWSPuml/AWSSimplified.puml
!include AWSPuml/AWSGroups.puml

!include AWSPuml/Compute/EC2AutoScaling.puml
!include AWSPuml/Compute/EC2Instance.puml

!include AWSPuml/GroupIcons/Cloud.puml
!include AWSPuml/GroupIcons/VirtualPrivateCloudVPC.puml
!include AWSPuml/GroupIcons/AutoScalingGroup.puml

!include AWSPuml/NetworkingContentDelivery/VPCNATGateway.puml

skinparam rectangle<<hidden>> {
  shadowing false
  BackgroundColor transparent
  BorderColor transparent
}

!unquoted procedure LayoutRectangle($p_alias)
rectangle " " as $p_alias <<hidden>>
!endprocedure

CloudGroup(cloud, "AWS Cloud") {
  VirtualPrivateCloudVPCGroup(vpc, "VPC") {

    AvalabilityZoneGroup(az_2, "Availability Zone 2") {
      VPCNATGateway(az_2_nat_gateway, "NAT Gateway", "")
      EC2Instance(az_2_ec2_1, "Instance", "")
      EC2Instance(az_2_ec2_2, "Instance", "")
      az_2_nat_gateway -[hidden]d- az_2_ec2_1
      az_2_ec2_1 -[hidden]d- az_2_ec2_2
    }

    LayoutRectangle(layout_rectangle) {
      EC2AutoScaling(ec2_auto_scaling, "Amazon EC2 Auto Scaling", "")
      AutoScalingGroup(asg_1, "Auto Scaling Group", "")
      AutoScalingGroup(asg_2, "Auto Scaling Group", "")
      ec2_auto_scaling -[hidden]d- asg_1
      asg_1 -[hidden]d- asg_2
    }

    AvalabilityZoneGroup(az_1, "Availability Zone 1") {
      VPCNATGateway(az_1_nat_gateway, "NAT Gateway", "")
      EC2Instance(az_1_ec2_1, "Instance", "")
      EC2Instance(az_1_ec2_2, "Instance", "")
      az_1_nat_gateway -[hidden]d- az_1_ec2_1
      az_1_ec2_1 -[hidden]d- az_1_ec2_2
    }

    ec2_auto_scaling -[hidden]l- az_1_nat_gateway
    ec2_auto_scaling -[hidden]r- az_2_nat_gateway

    asg_1 -[dashed,#D86613]l- az_1_ec2_1
    asg_1 -[dashed,#D86613]r- az_2_ec2_1

    asg_2 -[dashed,#D86613]l- az_1_ec2_2
    asg_2 -[dashed,#D86613]r- az_2_ec2_2

  }
}
@enduml

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

gadams999 commented 2 years ago

Hi Matthew. Looks great, let me take a look at over the next couple of weeks and incorporate.

jfrconley commented 2 years ago

@gadams999 Is there a timeline for when this could be merged? Would like to use VPC areas in my diagrams :D

gadams999 commented 2 years ago

Hi all,

Apologies for the delays in responding to this. We've made some major changes regarding icons changing from sprite to embedded PNGs. This, along with some minor changes to the pre-processor code may require some changes. We plan on launching the 13.0 next week and then will reach out to you @mcwarman to get your code and some examples incorporated into the repo.

gadams999 commented 2 years ago

Hi @mcwarman ,

Release 13.0 is live. We've made changes to both the icon.py config.yml to correct. Also, if you want to submit an example, please feel free to add in the examples folder, and inline with the rest of the examples the main README.md

Looking forward to the groups!