Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perforce networking refactor #410

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 51 additions & 35 deletions assets/packer/perforce/helix-core/p4_configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ prepare_site_tags() {
set_unicode() {
log_message "Setting unicode flag for p4d."
log_message "sourcing p4_vars"

# Capture the command output
output=$(su - perforce -c "source /p4/common/bin/p4_vars && /p4/common/bin/p4d -xi" 2>&1)

# Check if the output matches exactly what we expect
if [ "$output" = "Server switched to Unicode mode." ]; then
log_message "Successfully switched server to Unicode mode"
Expand Down Expand Up @@ -164,11 +164,12 @@ print_help() {
echo " --case_sensitive <0/1> Set the case sensitivity of the Helix Core server"
echo " --unicode <true/false> Set the Helix Core Server with -xi flag for Unicode"
echo " --selinux <true/false> Update labels for SELinux"
echo " --plaintext <true/false> Remove the SSL prefix and do not create self signed certificate"
echo " --help Display this help and exit"
}

# Parse command-line options
OPTS=$(getopt -o '' --long p4d_type:,username:,password:,auth:,fqdn:,hx_logs:,hx_metadata:,hx_depots:,case_sensitive:,unicode:,selinux:,help -n 'parse-options' -- "$@")
OPTS=$(getopt -o '' --long p4d_type:,username:,password:,auth:,fqdn:,hx_logs:,hx_metadata:,hx_depots:,case_sensitive:,unicode:,selinux:,plaintext:,help -n 'parse-options' -- "$@")

if [ $? != 0 ]; then
log_message "Failed to parse options"
Expand Down Expand Up @@ -248,6 +249,16 @@ while true; do
exit 1
fi
;;
--plaintext)
if [ "${2,,}" = "true" ] || [ "${2,,}" = "false" ]; then
PLAINTEXT="$2"
log_message "PLAINTEXT: $PLAINTEXT"
shift 2
else
log_message "Error: --plaintext flag must be either 'true' or 'false'"
exit 1
fi
;;
--help)
print_help
exit 0
Expand Down Expand Up @@ -407,10 +418,18 @@ sed -i "s/^P4MASTERHOST=.*/P4MASTERHOST=$EC2_DNS_PRIVATE/" "$SDP_Setup_Script_Co
log_message "Updated P4MASTERHOST to $EC2_DNS_PRIVATE in $SDP_Setup_Script_Config."

# Update Perforce case_sensitivity in configuration
sed -i "s/^CASE_SENSITIVE=.*/CASE_SENSITIVE=CASE_SENSITIVE/" "$SDP_Setup_Script_Config"
sed -i "s/^CASE_SENSITIVE=.*/CASE_SENSITIVE=$CASE_SENSITIVE/" "$SDP_Setup_Script_Config"

log_message "Updated CASE_SENSITIVE in $SDP_Setup_Script_Config."

# Update SSL prefix in configuration if plaintext is true
if [ "${PLAINTEXT,,}" = "true" ]; then
sed -i "s/^SSL_PREFIX=.*/SSL_PREFIX=/" "$SDP_Setup_Script_Config"
log_message "SSL_PREFIX removed from $SDP_Setup_Script_Config. Server will be configured to use plaintext."
else
log_message "Skipping SSL_PREFIX removal from $SDP_Setup_Script_Config. Server will be configured to use SSL."
fi

log_message "Mounting done ok - continue to the install"

# Execute mkdirs.sh from the package
Expand All @@ -421,37 +440,32 @@ else
log_message "Setup script (mkdirs.sh) not found or P4D Type: $P4D_TYPE not provided."
fi

# update cert config with ec2 DNS name
FILE_PATH="/p4/ssl/config.txt"

# Retrieve the EC2 instance DNS name
if [ -z $FQDN ]; then
log_message "FQDN was not provided. Retrieving from EC2 metadata."
EC2_DNS_NAME=$(curl -s http://169.254.169.254/latest/meta-data/public-hostname --header "X-aws-ec2-metadata-token: $TOKEN")
else
log_message "FQDN was provided: $FQDN"
EC2_DNS_NAME=$FQDN
fi
I=1

# Check if the DNS name was successfully retrieved
if [ -z "$EC2_DNS_NAME" ]; then
echo "Failed to retrieve EC2 instance DNS name."
exit 1
fi
# Create self signed certificate if plaintext is false
if [ "${PLAINTEXT,,}" = "false" ]; then
log_message "Generating self signed certificate"
# update cert config with ec2 DNS name
FILE_PATH="/p4/ssl/config.txt"

# Replace REPL_DNSNAME with the EC2 instance DNS name for ssl certificate generation
sed -i "s/REPL_DNSNAME/$EC2_DNS_NAME/" "$FILE_PATH"
# Check if the DNS name was successfully retrieved
if [ -z "$EC2_DNS_NAME" ]; then
log_message "Failed to retrieve EC2 instance DNS name."
exit 1
fi

echo "File updated successfully."
# Replace REPL_DNSNAME with the EC2 instance DNS name for ssl certificate generation
sed -i "s/REPL_DNSNAME/$EC2_DNS_NAME/" "$FILE_PATH"

I=1
# generate certificate
echo "File updated successfully."

/p4/common/bin/p4master_run ${I} /p4/${I}/bin/p4d_${I} -Gc
# generate certificate
/p4/common/bin/p4master_run ${I} /p4/${I}/bin/p4d_${I} -Gc
else
log_message "Skipping self signed certificate generation due to --plaintext true"
fi

# Configure systemd service to start p4d


cd /etc/systemd/system
sed -e "s:__INSTANCE__:$I:g" -e "s:__OSUSER__:perforce:g" $SDP/Server/Unix/p4/common/etc/systemd/system/p4d_N.service.t > p4d_${I}.service
chmod 644 p4d_${I}.service
Expand All @@ -470,19 +484,23 @@ systemctl start p4d_1
# Wait for the p4d service to start before continuing
wait_for_service "p4d_1"

P4PORT=ssl:1666
# Set P4PORT depending on plaintext variable
if [ "${PLAINTEXT,,}" = "true" ]; then
P4PORT=:1666
else
P4PORT=ssl:1666
fi

P4USER=$P4D_ADMIN_USERNAME

#probably need to copy p4 binary to the /usr/bin or add to the path variable to avoid running with a full path adding:
#permissions for lal users:


chmod +x /hxdepots/sdp/helix_binaries/p4
ln -s $SDP_Client_Binary /usr/bin/p4

# now can test:
p4 -p ssl:$HOSTNAME:1666 trust -y

# now can test depending on plaintext
p4 -p $P4PORT -u $P4USER info

# Execute new server setup from the extracted package
if [ -f "$SDP_New_Server_Script" ]; then
Expand All @@ -492,8 +510,6 @@ else
echo "Setup script (configure_new_server.sh) not found."
fi



# create a live checkpoint and restore offline db
# switching to user perforce

Expand Down
103 changes: 103 additions & 0 deletions docs/media/diagrams/perforce_complete_example.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<mxfile host="Electron" modified="2024-12-12T23:19:31.827Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.2 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="BnUOjSSJ1oD5UVPat3Zl" version="22.0.2" type="device">
<diagram name="Page-1" id="q_XiVphevz-c0kLlP5f9">
<mxGraphModel dx="1103" dy="698" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="z3quKmZYuvxo1gOoUY7u-1" value="Perforce VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;strokeColor=#248814;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" vertex="1" parent="1">
<mxGeometry x="480" y="240" width="880" height="560" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-2" value="Private Subnet 1" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#147EBA;fillColor=#E6F2F8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="40" y="280" width="320" height="170" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-6" value="Helix Core" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.ec2_c7g_instance;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-2">
<mxGeometry x="240" y="61" width="48" height="48" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="z3quKmZYuvxo1gOoUY7u-2" source="z3quKmZYuvxo1gOoUY7u-16" target="z3quKmZYuvxo1gOoUY7u-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-16" value="Helix Swarm" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.ecs_service;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-2">
<mxGeometry x="70" y="31.5" width="31.69" height="39" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-20" value="Helix Authentication Service" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.ecs_service;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-2">
<mxGeometry x="70" y="99.5" width="31.69" height="39" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-11" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://plugins.jetbrains.com/files/69/372238/icon/pluginIcon.png;clipPath=inset(0% 18% 0% 17.33%);" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-2">
<mxGeometry x="248.24" y="68.75" width="31.53" height="32.5" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-3" value="Private Subnet 2" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#147EBA;fillColor=#E6F2F8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="400" y="280" width="320" height="170" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-21" value="Helix Swarm" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.ecs_service;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-3">
<mxGeometry x="220" y="26" width="31.69" height="39" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-22" value="Helix Authentication Service" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.ecs_service;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-3">
<mxGeometry x="220" y="99.5" width="31.69" height="39" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="z3quKmZYuvxo1gOoUY7u-3" source="z3quKmZYuvxo1gOoUY7u-28" target="z3quKmZYuvxo1gOoUY7u-21">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="z3quKmZYuvxo1gOoUY7u-3" source="z3quKmZYuvxo1gOoUY7u-28" target="z3quKmZYuvxo1gOoUY7u-22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-28" value="Perforce ALB" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.application_load_balancer;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-3">
<mxGeometry x="60" y="65" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-4" value="Public Subnet 1" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#248814;fillColor=#E9F3E6;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="40" y="80" width="320" height="120" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-37" value="Perforce NLB" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.network_load_balancer;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-4">
<mxGeometry x="90" y="39" width="39" height="39" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-5" value="Public Subnet 2" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#248814;fillColor=#E9F3E6;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="400" y="80" width="320" height="120" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-44" value="Perforce NLB" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.network_load_balancer;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-5">
<mxGeometry x="140.5" y="39" width="39" height="39" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-15" value="AWS Fargate" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="350" y="470" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="z3quKmZYuvxo1gOoUY7u-1" source="z3quKmZYuvxo1gOoUY7u-6" target="z3quKmZYuvxo1gOoUY7u-28">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="z3quKmZYuvxo1gOoUY7u-1" source="z3quKmZYuvxo1gOoUY7u-37" target="z3quKmZYuvxo1gOoUY7u-6">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="380" y="138" />
<mxPoint x="380" y="240" />
<mxPoint x="304" y="240" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-41" value="perforce.example.com" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="z3quKmZYuvxo1gOoUY7u-38">
<mxGeometry x="0.3939" relative="1" as="geometry">
<mxPoint x="-47" y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="z3quKmZYuvxo1gOoUY7u-1" source="z3quKmZYuvxo1gOoUY7u-37" target="z3quKmZYuvxo1gOoUY7u-28">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="380" y="138" />
<mxPoint x="380" y="365" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-40" value="swarm.perforce.example.com&lt;br&gt;auth.perforce.example.com" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="z3quKmZYuvxo1gOoUY7u-39">
<mxGeometry x="-0.679" y="-1" relative="1" as="geometry">
<mxPoint x="9" y="-20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-45" value="Amazon Route 53" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="460" y="470" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-46" value="AWS Secrets Manager" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.secrets_manager;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="770" y="170" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="z3quKmZYuvxo1gOoUY7u-47" value="AWS Certificate Manager" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.certificate_manager_3;" vertex="1" parent="z3quKmZYuvxo1gOoUY7u-1">
<mxGeometry x="770" y="270" width="60" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading