{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "IBM Spectrum Virtualize for Public Cloud on AWS. It creates a new VPC and a SV cluster in it.",
    "Metadata": {
        "AWS::CloudFormation::Interface": {
            "ParameterGroups": [
                {
                    "Label": {
                        "default": "Network Configuration"
                    },
                    "Parameters": [
                        "AvailabilityZone",
                        "VPCCIDR",
                        "PublicSubnetCIDR",
                        "PrivateSubnetCIDR",
                        "AllowedIPRange"
                    ]
                },
                {
                    "Label": {
                        "default": "Amazon EC2 Configuration"
                    },
                    "Parameters": [
                        "NodeInstanceType",
                        "QuorumInstanceType",
                        "KeyPairName",
                        "CustomerNumber",
                        "NotificationEmail"
                    ]
                },
                {
                    "Label":{
                        "default":"GUI Configuration"
                    },
                    "Parameters": [
                        "SvcGuiPassword"
                    ]
                },
                {
                    "Label": {
                        "default": "I/O Group Configuration"
                    },
                    "Parameters":[
                        "IogrpNumber"
                    ]
                },
                {
                    "Label": {
                        "default": "Backend Storage Configuration"
                    },
                    "Parameters": [
                        "VolumeSize"
                    ]
                },
                {
                    "Label": {
                        "default": "License Information"
                    },
                    "Parameters": [
                        "LicenseAgreementTerms"
                    ]
                }
            ],
            "ParameterLabels": {
                "AvailabilityZone": {
                    "default": "Availability Zones"
                },
                "KeyPairName": {
                    "default": "Key Pair Name"
                },
                "SvcGuiPassword": {
                    "default": "Management GUI Password"
                },
                "NodeInstanceType": {
                    "default": "IBM Spectrum Virtualize for Public Cloud Node Instance Type"
                },
                "QuorumInstanceType": {
                    "default": "Quorum Instance Type"
                },
                "NotificationEmail": {
                    "default": "Notification Email"
                },
                "PublicSubnetCIDR": {
                    "default": "Public Subnet CIDR"
                },
                "PrivateSubnetCIDR": {
                    "default": "Private Subnet CIDR"
                },
                "VPCCIDR": {
                    "default": "VPC CIDR"
                },
                "AllowedIPRange": {
                    "default": "The IP address range"
                },
                "VolumeSize": {
                    "default": "Backend Storage Configuration"
                },
                "LicenseAgreementTerms": {
                    "default": "License Agreement Terms"
                },
                "CustomerNumber": {
                    "default": "IBM Passport Advantage customer number"
                },
                "IogrpNumber": {
                    "default": "I/O Group Configuration"
                }
            }
        }
    },
    "Parameters": {
        "AvailabilityZone": {
            "Description": "Select an availability zone from the list. Availability zones are used for the subnets in the VPC. Only one availability zone is used for this deployment, and the logical order of your selections is preserved.",
            "Type": "AWS::EC2::AvailabilityZone::Name"
        },
        "KeyPairName": {
            "Description": "Select the name of an existing key pair that allows you to securely connect to your instance after it launches.",
            "Type": "AWS::EC2::KeyPair::KeyName"
        },
        "NodeInstanceType": {
            "AllowedValues": [
                "c5.4xlarge",
                "c5.9xlarge",
                "c5.18xlarge"
            ],
            "Default": "c5.9xlarge",
            "Description": "Select the EC2 instance type for IBM Spectrum Virtualize for Public Cloud nodes. The c5.9xlarge instance type is the default selection and is recommended for deployment.",
            "Type": "String"
        },
        "QuorumInstanceType": {
            "AllowedValues": [
                "c5.large"
            ],
            "Default": "c5.large",
            "Type": "String",
            "Description": "Select the EC2 instance type for the quorum node. The c5.large instance type is the default selection and is recommended for quorum management."
        },
        "NotificationEmail": {
            "AllowedPattern": "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)",
            "ConstraintDescription": "Must be a valid email address.",
            "Description": "Enter a valid email address to which notifications are sent.",
            "Type": "String"
        },
        "PublicSubnetCIDR": {
            "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$",
            "ConstraintDescription": "CIDR block parameter must be in the form x.x.x.x/16-28",
            "Default": "10.0.32.0/19",
            "Description": "Displays the CIDR block for the public subnet that is in the availability zone.",
            "Type": "String"
        },
        "PrivateSubnetCIDR": {
            "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$",
            "ConstraintDescription": "CIDR block parameter must be in the form x.x.x.x/16-28",
            "Default": "10.0.64.0/19",
            "Description": "Displays the CIDR block for the private subnet that is in the availability zone.",
            "Type": "String"
        },
        "VPCCIDR": {
            "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$",
            "ConstraintDescription": "CIDR block parameter must be in the form x.x.x.x/16-28",
            "Default": "10.0.0.0/16",
            "Description": "Displays the CIDR block for the VPC.",
            "Type": "String"
        },
        "AllowedIPRange": {
            "Description": "Enter the IP address range used to connect IBM Spectrum Virtualize for Public Cloud (example for full access: 0.0.0.0/0).",
            "Type": "String",
            "MinLength": "9",
            "MaxLength": "18",
            "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})",
            "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x."
        },
        "VolumeSize": {
            "Description": "Enter the size of each volume. As part of the initial installation, two volumes are ordered and attached. Other volumes can be added after installation. The supported volume sizes are 512 - 16384 GB.",
            "Type": "Number",
            "Default": "512",
            "MinValue": "512",
            "MaxValue": "16384",
            "ConstraintDescription": "Allowed volume size are MIN=512,MAX=16384 (GB)"
        },
        "LicenseAgreementTerms": {
            "AllowedValues": [
                "Accept"
            ],
            "Description": "Review License Information documents and select Accept if you agree to the licensing terms. License Information documents: https://www.ibm.com/software/sla/sladb.nsf/displaylis/42B0DD56927424C98525841000178A9F?OpenDocument",
            "Type": "String"
        },
        "CustomerNumber": {
            "AllowedPattern": "^[0-9a-zA-Z]*$",
            "Description": "Enter the IBM Passport Advantage customer number to validate entitlement for the BYOL offering.",
            "Type": "String",
            "MinLength": "1"
        },
        "IogrpNumber": {
            "AllowedValues": [
                "1",
                "2"
            ],
            "Description": "Select the number of I/O groups in the IBM Spectrum Virtualize for Public Cloud cluster.  Each I/O group contains two IBM Spectrum Virtualize for Public Cloud nodes.",
            "Type": "String"
        },
        "SvcGuiPassword": {
            "AllowedPattern": "^[0-9a-zA-Z]*$",
            "Description": "Enter a password for the Security Administrator user profile (superuser), who completes the configuration of the IBM Spectrum Virtualize for Public Cloud software with the management GUI. Passwords must be 6 - 64 ASCII characters in length. Note: You must enter a password.  Default passwords are not supported.",
            "Type": "String",
            "MinLength": "6",
            "MaxLength": "64",
            "NoEcho" : "true"
        }
    },
    "Conditions": {
        "NVirginiaRegionCondition": {
            "Fn::Equals": [
                {
                    "Ref": "AWS::Region"
                },
                "us-east-1"
            ]
        },
        "Twoiogrp": {
            "Fn::Equals": [
                {
                    "Ref": "IogrpNumber"
                },
                "2"
            ]
        }
    },
    "Mappings": {
        "IOGroupMap": {
            "1": {
                "S3URL": "https://cn-mp-cft.s3.cn-northwest-1.amazonaws.com.cn/CN-IBM-Spectrum-Virtualize-for-Public-Cloud/2node.nested.template"
            },
            "2": {
                "S3URL": "https://cn-mp-cft.s3.cn-northwest-1.amazonaws.com.cn/CN-IBM-Spectrum-Virtualize-for-Public-Cloud/4node.nested.template"
            }
        }
    },
    "Resources": {
        "DHCPOptions": {
            "Type": "AWS::EC2::DHCPOptions",
            "Properties": {
                "DomainName": {
                    "Fn::If": [
                        "NVirginiaRegionCondition",
                        "ec2.internal",
                        {
                            "Fn::Sub": "${AWS::Region}.compute.internal"
                        }
                    ]
                },
                "DomainNameServers": [
                    "AmazonProvidedDNS"
                ],
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-DHCPOptions"
                                ]
                            ]
                        }
                    }
                ]
            }
        },
        "VPC": {
            "Type": "AWS::EC2::VPC",
            "Properties": {
                "CidrBlock": {
                    "Ref": "VPCCIDR"
                },
                "InstanceTenancy": "default",
                "EnableDnsSupport": true,
                "EnableDnsHostnames": true,
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-VPC"
                                ]
                            ]
                        }
                    }
                ]
            }
        },
        "VPCDHCPOptionsAssociation": {
            "Type": "AWS::EC2::VPCDHCPOptionsAssociation",
            "Properties": {
                "VpcId": {
                    "Ref": "VPC"
                },
                "DhcpOptionsId": {
                    "Ref": "DHCPOptions"
                }
            }
        },
        "InternetGateway": {
            "Type": "AWS::EC2::InternetGateway",
            "Properties": {
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-InternetGateway"
                                ]
                            ]
                        }
                    }
                ]
            }
        },
        "VPCGatewayAttachment": {
            "Type": "AWS::EC2::VPCGatewayAttachment",
            "Properties": {
                "VpcId": {
                    "Ref": "VPC"
                },
                "InternetGatewayId": {
                    "Ref": "InternetGateway"
                }
            }
        },
        "PrivateSubnet": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Ref": "PrivateSubnetCIDR"
                },
                "AvailabilityZone": {
                    "Ref": "AvailabilityZone"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-PrivateSubnet"
                                ]
                            ]
                        }
                    }
                ]
            }
        },
        "PublicSubnet": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Ref": "PublicSubnetCIDR"
                },
                "AvailabilityZone": {
                    "Ref": "AvailabilityZone"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-PublicSubnet"
                                ]
                            ]
                        }
                    }
                ]
            }
        },
        "EndpointEc2": {
            "Type": "AWS::EC2::VPCEndpoint",
            "Properties": {
                "VpcEndpointType": "Interface",
                "SubnetIds": [
                    {
                        "Ref": "PrivateSubnet"
                    }
                ],
                "ServiceName": {
                    "Fn::Join": [
                        "",
                        [
                            "cn.com.amazonaws.",
                            {
                                "Ref": "AWS::Region"
                            },
                            ".ec2"
                        ]
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "SecurityGroupIds": [
                    {
                        "Ref": "SecurityGroup"
                    }
                ],
                "PrivateDnsEnabled": true
            }
        },
        "EndpointCloudformation": {
            "Type": "AWS::EC2::VPCEndpoint",
            "Properties": {
                "VpcEndpointType": "Interface",
                "SubnetIds": [
                    {
                        "Ref": "PrivateSubnet"
                    }
                ],
                "ServiceName": {
                    "Fn::Join": [
                        "",
                        [
                            "cn.com.amazonaws.",
                            {
                                "Ref": "AWS::Region"
                            },
                            ".cloudformation"
                        ]
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "SecurityGroupIds": [
                    {
                        "Ref": "SecurityGroup"
                    }
                ],
                "PrivateDnsEnabled": true
            }
        },
        "EndpointSsm": {
            "Type": "AWS::EC2::VPCEndpoint",
            "Properties": {
                "VpcEndpointType": "Interface",
                "SubnetIds": [
                    {
                        "Ref": "PrivateSubnet"
                    }
                ],
                "ServiceName": {
                    "Fn::Join": [
                        "",
                        [
                            "com.amazonaws.",
                            {
                                "Ref": "AWS::Region"
                            },
                            ".ssm"
                        ]
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "SecurityGroupIds": [
                    {
                        "Ref": "SecurityGroup"
                    }
                ],
                "PrivateDnsEnabled": true
            }
        },
        "EndpointSm": {
            "Type": "AWS::EC2::VPCEndpoint",
            "Properties": {
                "VpcEndpointType": "Interface",
                "SubnetIds": [
                    {
                        "Ref": "PrivateSubnet"
                    }
                ],
                "ServiceName": {
                    "Fn::Join": [
                        "",
                        [
                            "com.amazonaws.",
                            {
                                "Ref": "AWS::Region"
                            },
                            ".secretsmanager"
                        ]
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "SecurityGroupIds": [
                    {
                        "Ref": "SecurityGroup"
                    }
                ],
                "PrivateDnsEnabled": true
            }
        },
        "PrivateSubnetRouteTable": {
            "Type": "AWS::EC2::RouteTable",
            "Properties": {
                "VpcId": {
                    "Ref": "VPC"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-PrivateSubnetRouteTable"
                                ]
                            ]
                        }
                    },
                    {
                        "Key": "Network",
                        "Value": "Private"
                    }
                ]
            }
        },
        "PrivateSubnetRoute": {
            "Type": "AWS::EC2::Route",
            "Properties": {
                "RouteTableId": {
                    "Ref": "PrivateSubnetRouteTable"
                },
                "DestinationCidrBlock": "0.0.0.0/0",
                "NatGatewayId": {
                    "Ref": "NATGateway"
                }
            }
        },
        "PrivateSubnetRouteTableAssociation": {
            "Type": "AWS::EC2::SubnetRouteTableAssociation",
            "Properties": {
                "SubnetId": {
                    "Ref": "PrivateSubnet"
                },
                "RouteTableId": {
                    "Ref": "PrivateSubnetRouteTable"
                }
            }
        },
        "PublicSubnetRouteTable": {
            "Type": "AWS::EC2::RouteTable",
            "Properties": {
                "VpcId": {
                    "Ref": "VPC"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-PublicSubnetRouteTable"
                                ]
                            ]
                        }
                    },
                    {
                        "Key": "Network",
                        "Value": "Public"
                    }
                ]
            }
        },
        "PublicSubnetRoute": {
            "DependsOn": "VPCGatewayAttachment",
            "Type": "AWS::EC2::Route",
            "Properties": {
                "RouteTableId": {
                    "Ref": "PublicSubnetRouteTable"
                },
                "DestinationCidrBlock": "0.0.0.0/0",
                "GatewayId": {
                    "Ref": "InternetGateway"
                }
            }
        },
        "PublicSubnetRouteTableAssociation": {
            "Type": "AWS::EC2::SubnetRouteTableAssociation",
            "Properties": {
                "SubnetId": {
                    "Ref": "PublicSubnet"
                },
                "RouteTableId": {
                    "Ref": "PublicSubnetRouteTable"
                }
            }
        },
        "NATEIP": {
            "DependsOn": "VPCGatewayAttachment",
            "Type": "AWS::EC2::EIP",
            "Properties": {
                "Domain": "vpc"
            }
        },
        "NATGateway": {
            "DependsOn": "VPCGatewayAttachment",
            "Type": "AWS::EC2::NatGateway",
            "Properties": {
                "AllocationId": {
                    "Fn::GetAtt": [
                        "NATEIP",
                        "AllocationId"
                    ]
                },
                "SubnetId": {
                    "Ref": "PublicSubnet"
                }
            }
        },
        "SecurityGroup": {
            "Type": "AWS::EC2::SecurityGroup",
            "Properties": {
                "GroupDescription": "defult security group",
                "VpcId": {
                    "Ref": "VPC"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "-IBM-SV-SecurityGroup"
                                ]
                            ]
                        }
                    }
                ]
            }
        },
        "Ingress": {
            "Type": "AWS::EC2::SecurityGroupIngress",
            "Properties": {
                "GroupId": {
                    "Ref": "SecurityGroup"
                },
                "IpProtocol": "-1",
                "CidrIp": {
                    "Ref": "AllowedIPRange"
                }
            }
        },
        "Egress": {
            "Type": "AWS::EC2::SecurityGroupEgress",
            "Properties": {
                "GroupId": {
                    "Ref": "SecurityGroup"
                },
                "IpProtocol": "-1",
                "CidrIp": "0.0.0.0/0"
            }
        },
        "WorkloadStack": {
            "Type": "AWS::CloudFormation::Stack",
            "Properties": {
                "TemplateURL": {
                    "Fn::FindInMap": [
                        "IOGroupMap",
                        {
                           "Ref": "IogrpNumber"
                        },
                        "S3URL"
                    ]
                },
                "Parameters": {
                    "KeyPairName": {
                        "Ref": "KeyPairName"
                    },
                    "SvcGuiPassword": {
                        "Ref": "SvcGuiPassword"
                    },
                    "NodeInstanceTypeIogrp0": {
                        "Ref": "NodeInstanceType"
                    },
                    "NodeInstanceTypeIogrp1": {
                        "Ref": "NodeInstanceType"
                    },
                    "QuorumInstanceType": {
                        "Ref": "QuorumInstanceType"
                    },
                    "NotificationEmail": {
                        "Ref": "NotificationEmail"
                    },
                    "PrivateSubnet1ID": {
                        "Ref": "PrivateSubnet"
                    },
                    "PublicSubnet1ID": {
                        "Ref": "PublicSubnet"
                    },
                    "VPCID": {
                        "Ref": "VPC"
                    },
                    "VPCCidrBlock": {
                        "Ref": "VPCCIDR"
                    },
                    "LicenseAgreementTerms": {
                        "Ref": "LicenseAgreementTerms"
                    },
                    "VolumeSize": {
                        "Ref": "VolumeSize"
                    },
                    "AllowedIPRange": {
                        "Ref": "AllowedIPRange"
                    },
                    "CustomerNumber": {
                        "Ref": "CustomerNumber"
                    }
                }
            }
        }
    },
    "Outputs": {
        "IBMSVVersion": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVVersion"
                ]
            },
            "Description": "IBM SV Cloud version"
        },
        "IBMSVQuorumClientEC2IP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVQuorumClientEC2IP"
                ]
            },
            "Description": "IBM SV Quorum Client EC2 Private IP"
        },
        "IBMSVClusterIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVClusterIP"
                ]
            },
            "Description": "IBM SV Cloud Cluster IP"
        },
        "IBMSVNode1ServiceIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode1ServiceIP"
                ]
            },
            "Description": "IBM SV Node1 Service IP"
        },
        "IBMSVNode1Port1NodeIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode1Port1NodeIP"
                ]
            },
            "Description": "IBM SV Node1 Port1 Node IP"
        },
        "IBMSVNode1Port2NodeIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode1Port2NodeIP"
                ]
            },
            "Description": "IBM SV Node1 Port2 Node IP"
        },
        "IBMSVNode1PortIP1": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode1PortIP1"
                ]
            },
            "Description": "IBM SV Node1 Port IP1"
        },
        "IBMSVNode1PortIP2": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode1PortIP2"
                ]
            },
            "Description": "IBM SV Node1 Port IP2"
        },
        "IBMSVNode2ServiceIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode2ServiceIP"
                ]
            },
            "Description": "IBM SV Node2 Service IP"
        },
        "IBMSVNode2Port1NodeIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode2Port1NodeIP"
                ]
            },
            "Description": "IBM SV Node2 Port1 Node IP"
        },
        "IBMSVNode2Port2NodeIP": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode2Port2NodeIP"
                ]
            },
            "Description": "IBM SV Node2 Port2 Node IP"
        },
        "IBMSVNode2PortIP1": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode2PortIP1"
                ]
            },
            "Description": "IBM SV Node2 Port IP1"
        },
        "IBMSVNode2PortIP2": {
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode2PortIP2"
                ]
            },
            "Description": "IBM SV Node2 Port IP2"
        },
        "IBMSVNode3ServiceIP": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode3ServiceIP"
                ]
            },
            "Description": "IBM SV Node3 Service IP"
        },
        "IBMSVNode3Port1NodeIP": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode3Port1NodeIP"
                ]
            },
            "Description": "IBM SV Node3 Port1 Node IP"
        },
        "IBMSVNode3Port2NodeIP": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode3Port2NodeIP"
                ]
            },
            "Description": "IBM SV Node3 Port2 Node IP"
        },
        "IBMSVNode3PortIP1": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode3PortIP1"
                ]
            },
            "Description": "IBM SV Node3 Port IP1"
        },
        "IBMSVNode3PortIP2": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode3PortIP2"
                ]
            },
            "Description": "IBM SV Node3 Port IP2"
        },
        "IBMSVNode4ServiceIP": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode4ServiceIP"
                ]
            },
            "Description": "IBM SV Node4 Service IP"
        },
        "IBMSVNode4Port1NodeIP": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode4Port1NodeIP"
                ]
            },
            "Description": "IBM SV Node4 Port1 Node IP"
        },
        "IBMSVNode4Port2NodeIP": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode4Port2NodeIP"
                ]
            },
            "Description": "IBM SV Node4 Port2 Node IP"
        },
        "IBMSVNode4PortIP1": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode4PortIP1"
                ]
            },
            "Description": "IBM SV Node4 Port IP1"
        },
        "IBMSVNode4PortIP2": {
            "Condition": "Twoiogrp",
            "Value": {
                "Fn::GetAtt": [
                    "WorkloadStack",
                    "Outputs.IBMSVNode4PortIP2"
                ]
            },
            "Description": "IBM SV Node4 Port IP2"
        }
    }
}
