private Amazon.EC2.Model.ModifyVpnTunnelOptionsResponse CallAWSServiceOperation(IAmazonEC2 client, Amazon.EC2.Model.ModifyVpnTunnelOptionsRequest request)
 {
     Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Elastic Compute Cloud (EC2)", "ModifyVpnTunnelOptions");
     try
     {
         #if DESKTOP
         return(client.ModifyVpnTunnelOptions(request));
         #elif CORECLR
         return(client.ModifyVpnTunnelOptionsAsync(request).GetAwaiter().GetResult());
         #else
                 #error "Unknown build edition"
         #endif
     }
     catch (AmazonServiceException exc)
     {
         var webException = exc.InnerException as System.Net.WebException;
         if (webException != null)
         {
             throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
         }
         throw;
     }
 }
        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;
            // create request
            var request = new Amazon.EC2.Model.ModifyVpnTunnelOptionsRequest();


            // populate TunnelOptions
            var requestTunnelOptionsIsNull = true;

            request.TunnelOptions = new Amazon.EC2.Model.ModifyVpnTunnelOptionsSpecification();
            System.String requestTunnelOptions_tunnelOptions_DPDTimeoutAction = null;
            if (cmdletContext.TunnelOptions_DPDTimeoutAction != null)
            {
                requestTunnelOptions_tunnelOptions_DPDTimeoutAction = cmdletContext.TunnelOptions_DPDTimeoutAction;
            }
            if (requestTunnelOptions_tunnelOptions_DPDTimeoutAction != null)
            {
                request.TunnelOptions.DPDTimeoutAction = requestTunnelOptions_tunnelOptions_DPDTimeoutAction;
                requestTunnelOptionsIsNull             = false;
            }
            System.Int32?requestTunnelOptions_tunnelOptions_DPDTimeoutSecond = null;
            if (cmdletContext.TunnelOptions_DPDTimeoutSecond != null)
            {
                requestTunnelOptions_tunnelOptions_DPDTimeoutSecond = cmdletContext.TunnelOptions_DPDTimeoutSecond.Value;
            }
            if (requestTunnelOptions_tunnelOptions_DPDTimeoutSecond != null)
            {
                request.TunnelOptions.DPDTimeoutSeconds = requestTunnelOptions_tunnelOptions_DPDTimeoutSecond.Value;
                requestTunnelOptionsIsNull = false;
            }
            List <Amazon.EC2.Model.IKEVersionsRequestListValue> requestTunnelOptions_tunnelOptions_IKEVersion = null;

            if (cmdletContext.TunnelOptions_IKEVersion != null)
            {
                requestTunnelOptions_tunnelOptions_IKEVersion = cmdletContext.TunnelOptions_IKEVersion;
            }
            if (requestTunnelOptions_tunnelOptions_IKEVersion != null)
            {
                request.TunnelOptions.IKEVersions = requestTunnelOptions_tunnelOptions_IKEVersion;
                requestTunnelOptionsIsNull        = false;
            }
            List <Amazon.EC2.Model.Phase1DHGroupNumbersRequestListValue> requestTunnelOptions_tunnelOptions_Phase1DHGroupNumber = null;

            if (cmdletContext.TunnelOptions_Phase1DHGroupNumber != null)
            {
                requestTunnelOptions_tunnelOptions_Phase1DHGroupNumber = cmdletContext.TunnelOptions_Phase1DHGroupNumber;
            }
            if (requestTunnelOptions_tunnelOptions_Phase1DHGroupNumber != null)
            {
                request.TunnelOptions.Phase1DHGroupNumbers = requestTunnelOptions_tunnelOptions_Phase1DHGroupNumber;
                requestTunnelOptionsIsNull = false;
            }
            List <Amazon.EC2.Model.Phase1EncryptionAlgorithmsRequestListValue> requestTunnelOptions_tunnelOptions_Phase1EncryptionAlgorithm = null;

            if (cmdletContext.TunnelOptions_Phase1EncryptionAlgorithm != null)
            {
                requestTunnelOptions_tunnelOptions_Phase1EncryptionAlgorithm = cmdletContext.TunnelOptions_Phase1EncryptionAlgorithm;
            }
            if (requestTunnelOptions_tunnelOptions_Phase1EncryptionAlgorithm != null)
            {
                request.TunnelOptions.Phase1EncryptionAlgorithms = requestTunnelOptions_tunnelOptions_Phase1EncryptionAlgorithm;
                requestTunnelOptionsIsNull = false;
            }
            List <Amazon.EC2.Model.Phase1IntegrityAlgorithmsRequestListValue> requestTunnelOptions_tunnelOptions_Phase1IntegrityAlgorithm = null;

            if (cmdletContext.TunnelOptions_Phase1IntegrityAlgorithm != null)
            {
                requestTunnelOptions_tunnelOptions_Phase1IntegrityAlgorithm = cmdletContext.TunnelOptions_Phase1IntegrityAlgorithm;
            }
            if (requestTunnelOptions_tunnelOptions_Phase1IntegrityAlgorithm != null)
            {
                request.TunnelOptions.Phase1IntegrityAlgorithms = requestTunnelOptions_tunnelOptions_Phase1IntegrityAlgorithm;
                requestTunnelOptionsIsNull = false;
            }
            System.Int32?requestTunnelOptions_tunnelOptions_Phase1LifetimeSecond = null;
            if (cmdletContext.TunnelOptions_Phase1LifetimeSecond != null)
            {
                requestTunnelOptions_tunnelOptions_Phase1LifetimeSecond = cmdletContext.TunnelOptions_Phase1LifetimeSecond.Value;
            }
            if (requestTunnelOptions_tunnelOptions_Phase1LifetimeSecond != null)
            {
                request.TunnelOptions.Phase1LifetimeSeconds = requestTunnelOptions_tunnelOptions_Phase1LifetimeSecond.Value;
                requestTunnelOptionsIsNull = false;
            }
            List <Amazon.EC2.Model.Phase2DHGroupNumbersRequestListValue> requestTunnelOptions_tunnelOptions_Phase2DHGroupNumber = null;

            if (cmdletContext.TunnelOptions_Phase2DHGroupNumber != null)
            {
                requestTunnelOptions_tunnelOptions_Phase2DHGroupNumber = cmdletContext.TunnelOptions_Phase2DHGroupNumber;
            }
            if (requestTunnelOptions_tunnelOptions_Phase2DHGroupNumber != null)
            {
                request.TunnelOptions.Phase2DHGroupNumbers = requestTunnelOptions_tunnelOptions_Phase2DHGroupNumber;
                requestTunnelOptionsIsNull = false;
            }
            List <Amazon.EC2.Model.Phase2EncryptionAlgorithmsRequestListValue> requestTunnelOptions_tunnelOptions_Phase2EncryptionAlgorithm = null;

            if (cmdletContext.TunnelOptions_Phase2EncryptionAlgorithm != null)
            {
                requestTunnelOptions_tunnelOptions_Phase2EncryptionAlgorithm = cmdletContext.TunnelOptions_Phase2EncryptionAlgorithm;
            }
            if (requestTunnelOptions_tunnelOptions_Phase2EncryptionAlgorithm != null)
            {
                request.TunnelOptions.Phase2EncryptionAlgorithms = requestTunnelOptions_tunnelOptions_Phase2EncryptionAlgorithm;
                requestTunnelOptionsIsNull = false;
            }
            List <Amazon.EC2.Model.Phase2IntegrityAlgorithmsRequestListValue> requestTunnelOptions_tunnelOptions_Phase2IntegrityAlgorithm = null;

            if (cmdletContext.TunnelOptions_Phase2IntegrityAlgorithm != null)
            {
                requestTunnelOptions_tunnelOptions_Phase2IntegrityAlgorithm = cmdletContext.TunnelOptions_Phase2IntegrityAlgorithm;
            }
            if (requestTunnelOptions_tunnelOptions_Phase2IntegrityAlgorithm != null)
            {
                request.TunnelOptions.Phase2IntegrityAlgorithms = requestTunnelOptions_tunnelOptions_Phase2IntegrityAlgorithm;
                requestTunnelOptionsIsNull = false;
            }
            System.Int32?requestTunnelOptions_tunnelOptions_Phase2LifetimeSecond = null;
            if (cmdletContext.TunnelOptions_Phase2LifetimeSecond != null)
            {
                requestTunnelOptions_tunnelOptions_Phase2LifetimeSecond = cmdletContext.TunnelOptions_Phase2LifetimeSecond.Value;
            }
            if (requestTunnelOptions_tunnelOptions_Phase2LifetimeSecond != null)
            {
                request.TunnelOptions.Phase2LifetimeSeconds = requestTunnelOptions_tunnelOptions_Phase2LifetimeSecond.Value;
                requestTunnelOptionsIsNull = false;
            }
            System.String requestTunnelOptions_tunnelOptions_PreSharedKey = null;
            if (cmdletContext.TunnelOptions_PreSharedKey != null)
            {
                requestTunnelOptions_tunnelOptions_PreSharedKey = cmdletContext.TunnelOptions_PreSharedKey;
            }
            if (requestTunnelOptions_tunnelOptions_PreSharedKey != null)
            {
                request.TunnelOptions.PreSharedKey = requestTunnelOptions_tunnelOptions_PreSharedKey;
                requestTunnelOptionsIsNull         = false;
            }
            System.Int32?requestTunnelOptions_tunnelOptions_RekeyFuzzPercentage = null;
            if (cmdletContext.TunnelOptions_RekeyFuzzPercentage != null)
            {
                requestTunnelOptions_tunnelOptions_RekeyFuzzPercentage = cmdletContext.TunnelOptions_RekeyFuzzPercentage.Value;
            }
            if (requestTunnelOptions_tunnelOptions_RekeyFuzzPercentage != null)
            {
                request.TunnelOptions.RekeyFuzzPercentage = requestTunnelOptions_tunnelOptions_RekeyFuzzPercentage.Value;
                requestTunnelOptionsIsNull = false;
            }
            System.Int32?requestTunnelOptions_tunnelOptions_RekeyMarginTimeSecond = null;
            if (cmdletContext.TunnelOptions_RekeyMarginTimeSecond != null)
            {
                requestTunnelOptions_tunnelOptions_RekeyMarginTimeSecond = cmdletContext.TunnelOptions_RekeyMarginTimeSecond.Value;
            }
            if (requestTunnelOptions_tunnelOptions_RekeyMarginTimeSecond != null)
            {
                request.TunnelOptions.RekeyMarginTimeSeconds = requestTunnelOptions_tunnelOptions_RekeyMarginTimeSecond.Value;
                requestTunnelOptionsIsNull = false;
            }
            System.Int32?requestTunnelOptions_tunnelOptions_ReplayWindowSize = null;
            if (cmdletContext.TunnelOptions_ReplayWindowSize != null)
            {
                requestTunnelOptions_tunnelOptions_ReplayWindowSize = cmdletContext.TunnelOptions_ReplayWindowSize.Value;
            }
            if (requestTunnelOptions_tunnelOptions_ReplayWindowSize != null)
            {
                request.TunnelOptions.ReplayWindowSize = requestTunnelOptions_tunnelOptions_ReplayWindowSize.Value;
                requestTunnelOptionsIsNull             = false;
            }
            System.String requestTunnelOptions_tunnelOptions_StartupAction = null;
            if (cmdletContext.TunnelOptions_StartupAction != null)
            {
                requestTunnelOptions_tunnelOptions_StartupAction = cmdletContext.TunnelOptions_StartupAction;
            }
            if (requestTunnelOptions_tunnelOptions_StartupAction != null)
            {
                request.TunnelOptions.StartupAction = requestTunnelOptions_tunnelOptions_StartupAction;
                requestTunnelOptionsIsNull          = false;
            }
            System.String requestTunnelOptions_tunnelOptions_TunnelInsideCidr = null;
            if (cmdletContext.TunnelOptions_TunnelInsideCidr != null)
            {
                requestTunnelOptions_tunnelOptions_TunnelInsideCidr = cmdletContext.TunnelOptions_TunnelInsideCidr;
            }
            if (requestTunnelOptions_tunnelOptions_TunnelInsideCidr != null)
            {
                request.TunnelOptions.TunnelInsideCidr = requestTunnelOptions_tunnelOptions_TunnelInsideCidr;
                requestTunnelOptionsIsNull             = false;
            }
            System.String requestTunnelOptions_tunnelOptions_TunnelInsideIpv6Cidr = null;
            if (cmdletContext.TunnelOptions_TunnelInsideIpv6Cidr != null)
            {
                requestTunnelOptions_tunnelOptions_TunnelInsideIpv6Cidr = cmdletContext.TunnelOptions_TunnelInsideIpv6Cidr;
            }
            if (requestTunnelOptions_tunnelOptions_TunnelInsideIpv6Cidr != null)
            {
                request.TunnelOptions.TunnelInsideIpv6Cidr = requestTunnelOptions_tunnelOptions_TunnelInsideIpv6Cidr;
                requestTunnelOptionsIsNull = false;
            }
            // determine if request.TunnelOptions should be set to null
            if (requestTunnelOptionsIsNull)
            {
                request.TunnelOptions = null;
            }
            if (cmdletContext.VpnConnectionId != null)
            {
                request.VpnConnectionId = cmdletContext.VpnConnectionId;
            }
            if (cmdletContext.VpnTunnelOutsideIpAddress != null)
            {
                request.VpnTunnelOutsideIpAddress = cmdletContext.VpnTunnelOutsideIpAddress;
            }

            CmdletOutput output;

            // issue call
            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);

            try
            {
                var    response       = CallAWSServiceOperation(client, request);
                object pipelineOutput = null;
                pipelineOutput = cmdletContext.Select(response, this);
                output         = new CmdletOutput
                {
                    PipelineOutput  = pipelineOutput,
                    ServiceResponse = response
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput {
                    ErrorResponse = e
                };
            }

            return(output);
        }