/**
 * Create Vpn Gateway Action Sample
 * Creates a new VPN gateway. A VPN gateway is the VPC-side endpoint for
 * your VPN connection. You can create a VPN gateway before creating the VPC
 * itself. AWS might delete any VPN gateway that you create with this operation
 * if you leave it inactive for an extended period of time (inactive means
 * that there's no VPN connection in use with the VPN gateway).  
 * @param Amazon_EC2_Interface $service instance of Amazon_EC2_Interface
 * @param mixed $request Amazon_EC2_Model_CreateVpnGateway or array of parameters
 */
function invokeCreateVpnGateway(Amazon_EC2_Interface $service, $request)
{
    try {
        $response = $service->createVpnGateway($request);
        echo "Service Response\n";
        echo "=============================================================================\n";
        echo "        CreateVpnGatewayResponse\n";
        if ($response->isSetResponseMetadata()) {
            echo "            ResponseMetadata\n";
            $responseMetadata = $response->getResponseMetadata();
            if ($responseMetadata->isSetRequestId()) {
                echo "                RequestId\n";
                echo "                    " . $responseMetadata->getRequestId() . "\n";
            }
        }
        if ($response->isSetCreateVpnGatewayResult()) {
            echo "            CreateVpnGatewayResult\n";
            $createVpnGatewayResult = $response->getCreateVpnGatewayResult();
            if ($createVpnGatewayResult->isSetVpnGateway()) {
                echo "                VpnGateway\n";
                $vpnGateway = $createVpnGatewayResult->getVpnGateway();
                if ($vpnGateway->isSetVpnGatewayId()) {
                    echo "                    VpnGatewayId\n";
                    echo "                        " . $vpnGateway->getVpnGatewayId() . "\n";
                }
                if ($vpnGateway->isSetVpnGatewayState()) {
                    echo "                    VpnGatewayState\n";
                    echo "                        " . $vpnGateway->getVpnGatewayState() . "\n";
                }
                if ($vpnGateway->isSetType()) {
                    echo "                    Type\n";
                    echo "                        " . $vpnGateway->getType() . "\n";
                }
                if ($vpnGateway->isSetAvailabilityZone()) {
                    echo "                    AvailabilityZone\n";
                    echo "                        " . $vpnGateway->getAvailabilityZone() . "\n";
                }
                $vpcAttachmentList = $vpnGateway->getVpcAttachment();
                foreach ($vpcAttachmentList as $vpcAttachment) {
                    echo "                    VpcAttachment\n";
                    if ($vpcAttachment->isSetVpcId()) {
                        echo "                        VpcId\n";
                        echo "                            " . $vpcAttachment->getVpcId() . "\n";
                    }
                    if ($vpcAttachment->isSetVpcAttachmentState()) {
                        echo "                        VpcAttachmentState\n";
                        echo "                            " . $vpcAttachment->getVpcAttachmentState() . "\n";
                    }
                }
            }
        }
    } catch (Amazon_EC2_Exception $ex) {
        echo "Caught Exception: " . $ex->getMessage() . "\n";
        echo "Response Status Code: " . $ex->getStatusCode() . "\n";
        echo "Error Code: " . $ex->getErrorCode() . "\n";
        echo "Error Type: " . $ex->getErrorType() . "\n";
        echo "Request ID: " . $ex->getRequestId() . "\n";
        echo "XML: " . $ex->getXML() . "\n";
    }
}