private Amazon.Budgets.Model.CreateBudgetActionResponse CallAWSServiceOperation(IAmazonBudgets client, Amazon.Budgets.Model.CreateBudgetActionRequest request)
 {
     Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "AWS Budgets", "CreateBudgetAction");
     try
     {
         #if DESKTOP
         return(client.CreateBudgetAction(request));
         #elif CORECLR
         return(client.CreateBudgetActionAsync(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.Budgets.Model.CreateBudgetActionRequest();

            if (cmdletContext.AccountId != null)
            {
                request.AccountId = cmdletContext.AccountId;
            }

            // populate ActionThreshold
            var requestActionThresholdIsNull = true;

            request.ActionThreshold = new Amazon.Budgets.Model.ActionThreshold();
            Amazon.Budgets.ThresholdType requestActionThreshold_actionThreshold_ActionThresholdType = null;
            if (cmdletContext.ActionThreshold_ActionThresholdType != null)
            {
                requestActionThreshold_actionThreshold_ActionThresholdType = cmdletContext.ActionThreshold_ActionThresholdType;
            }
            if (requestActionThreshold_actionThreshold_ActionThresholdType != null)
            {
                request.ActionThreshold.ActionThresholdType = requestActionThreshold_actionThreshold_ActionThresholdType;
                requestActionThresholdIsNull = false;
            }
            System.Double?requestActionThreshold_actionThreshold_ActionThresholdValue = null;
            if (cmdletContext.ActionThreshold_ActionThresholdValue != null)
            {
                requestActionThreshold_actionThreshold_ActionThresholdValue = cmdletContext.ActionThreshold_ActionThresholdValue.Value;
            }
            if (requestActionThreshold_actionThreshold_ActionThresholdValue != null)
            {
                request.ActionThreshold.ActionThresholdValue = requestActionThreshold_actionThreshold_ActionThresholdValue.Value;
                requestActionThresholdIsNull = false;
            }
            // determine if request.ActionThreshold should be set to null
            if (requestActionThresholdIsNull)
            {
                request.ActionThreshold = null;
            }
            if (cmdletContext.ActionType != null)
            {
                request.ActionType = cmdletContext.ActionType;
            }
            if (cmdletContext.ApprovalModel != null)
            {
                request.ApprovalModel = cmdletContext.ApprovalModel;
            }
            if (cmdletContext.BudgetName != null)
            {
                request.BudgetName = cmdletContext.BudgetName;
            }

            // populate Definition
            var requestDefinitionIsNull = true;

            request.Definition = new Amazon.Budgets.Model.Definition();
            Amazon.Budgets.Model.ScpActionDefinition requestDefinition_definition_ScpActionDefinition = null;

            // populate ScpActionDefinition
            var requestDefinition_definition_ScpActionDefinitionIsNull = true;

            requestDefinition_definition_ScpActionDefinition = new Amazon.Budgets.Model.ScpActionDefinition();
            System.String requestDefinition_definition_ScpActionDefinition_scpActionDefinition_PolicyId = null;
            if (cmdletContext.ScpActionDefinition_PolicyId != null)
            {
                requestDefinition_definition_ScpActionDefinition_scpActionDefinition_PolicyId = cmdletContext.ScpActionDefinition_PolicyId;
            }
            if (requestDefinition_definition_ScpActionDefinition_scpActionDefinition_PolicyId != null)
            {
                requestDefinition_definition_ScpActionDefinition.PolicyId = requestDefinition_definition_ScpActionDefinition_scpActionDefinition_PolicyId;
                requestDefinition_definition_ScpActionDefinitionIsNull    = false;
            }
            List <System.String> requestDefinition_definition_ScpActionDefinition_scpActionDefinition_TargetId = null;

            if (cmdletContext.ScpActionDefinition_TargetId != null)
            {
                requestDefinition_definition_ScpActionDefinition_scpActionDefinition_TargetId = cmdletContext.ScpActionDefinition_TargetId;
            }
            if (requestDefinition_definition_ScpActionDefinition_scpActionDefinition_TargetId != null)
            {
                requestDefinition_definition_ScpActionDefinition.TargetIds = requestDefinition_definition_ScpActionDefinition_scpActionDefinition_TargetId;
                requestDefinition_definition_ScpActionDefinitionIsNull     = false;
            }
            // determine if requestDefinition_definition_ScpActionDefinition should be set to null
            if (requestDefinition_definition_ScpActionDefinitionIsNull)
            {
                requestDefinition_definition_ScpActionDefinition = null;
            }
            if (requestDefinition_definition_ScpActionDefinition != null)
            {
                request.Definition.ScpActionDefinition = requestDefinition_definition_ScpActionDefinition;
                requestDefinitionIsNull = false;
            }
            Amazon.Budgets.Model.SsmActionDefinition requestDefinition_definition_SsmActionDefinition = null;

            // populate SsmActionDefinition
            var requestDefinition_definition_SsmActionDefinitionIsNull = true;

            requestDefinition_definition_SsmActionDefinition = new Amazon.Budgets.Model.SsmActionDefinition();
            Amazon.Budgets.ActionSubType requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_ActionSubType = null;
            if (cmdletContext.SsmActionDefinition_ActionSubType != null)
            {
                requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_ActionSubType = cmdletContext.SsmActionDefinition_ActionSubType;
            }
            if (requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_ActionSubType != null)
            {
                requestDefinition_definition_SsmActionDefinition.ActionSubType = requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_ActionSubType;
                requestDefinition_definition_SsmActionDefinitionIsNull         = false;
            }
            List <System.String> requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_InstanceId = null;

            if (cmdletContext.SsmActionDefinition_InstanceId != null)
            {
                requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_InstanceId = cmdletContext.SsmActionDefinition_InstanceId;
            }
            if (requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_InstanceId != null)
            {
                requestDefinition_definition_SsmActionDefinition.InstanceIds = requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_InstanceId;
                requestDefinition_definition_SsmActionDefinitionIsNull       = false;
            }
            System.String requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_Region = null;
            if (cmdletContext.SsmActionDefinition_Region != null)
            {
                requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_Region = cmdletContext.SsmActionDefinition_Region;
            }
            if (requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_Region != null)
            {
                requestDefinition_definition_SsmActionDefinition.Region = requestDefinition_definition_SsmActionDefinition_ssmActionDefinition_Region;
                requestDefinition_definition_SsmActionDefinitionIsNull  = false;
            }
            // determine if requestDefinition_definition_SsmActionDefinition should be set to null
            if (requestDefinition_definition_SsmActionDefinitionIsNull)
            {
                requestDefinition_definition_SsmActionDefinition = null;
            }
            if (requestDefinition_definition_SsmActionDefinition != null)
            {
                request.Definition.SsmActionDefinition = requestDefinition_definition_SsmActionDefinition;
                requestDefinitionIsNull = false;
            }
            Amazon.Budgets.Model.IamActionDefinition requestDefinition_definition_IamActionDefinition = null;

            // populate IamActionDefinition
            var requestDefinition_definition_IamActionDefinitionIsNull = true;

            requestDefinition_definition_IamActionDefinition = new Amazon.Budgets.Model.IamActionDefinition();
            List <System.String> requestDefinition_definition_IamActionDefinition_iamActionDefinition_Group = null;

            if (cmdletContext.IamActionDefinition_Group != null)
            {
                requestDefinition_definition_IamActionDefinition_iamActionDefinition_Group = cmdletContext.IamActionDefinition_Group;
            }
            if (requestDefinition_definition_IamActionDefinition_iamActionDefinition_Group != null)
            {
                requestDefinition_definition_IamActionDefinition.Groups = requestDefinition_definition_IamActionDefinition_iamActionDefinition_Group;
                requestDefinition_definition_IamActionDefinitionIsNull  = false;
            }
            System.String requestDefinition_definition_IamActionDefinition_iamActionDefinition_PolicyArn = null;
            if (cmdletContext.IamActionDefinition_PolicyArn != null)
            {
                requestDefinition_definition_IamActionDefinition_iamActionDefinition_PolicyArn = cmdletContext.IamActionDefinition_PolicyArn;
            }
            if (requestDefinition_definition_IamActionDefinition_iamActionDefinition_PolicyArn != null)
            {
                requestDefinition_definition_IamActionDefinition.PolicyArn = requestDefinition_definition_IamActionDefinition_iamActionDefinition_PolicyArn;
                requestDefinition_definition_IamActionDefinitionIsNull     = false;
            }
            List <System.String> requestDefinition_definition_IamActionDefinition_iamActionDefinition_Role = null;

            if (cmdletContext.IamActionDefinition_Role != null)
            {
                requestDefinition_definition_IamActionDefinition_iamActionDefinition_Role = cmdletContext.IamActionDefinition_Role;
            }
            if (requestDefinition_definition_IamActionDefinition_iamActionDefinition_Role != null)
            {
                requestDefinition_definition_IamActionDefinition.Roles = requestDefinition_definition_IamActionDefinition_iamActionDefinition_Role;
                requestDefinition_definition_IamActionDefinitionIsNull = false;
            }
            List <System.String> requestDefinition_definition_IamActionDefinition_iamActionDefinition_User = null;

            if (cmdletContext.IamActionDefinition_User != null)
            {
                requestDefinition_definition_IamActionDefinition_iamActionDefinition_User = cmdletContext.IamActionDefinition_User;
            }
            if (requestDefinition_definition_IamActionDefinition_iamActionDefinition_User != null)
            {
                requestDefinition_definition_IamActionDefinition.Users = requestDefinition_definition_IamActionDefinition_iamActionDefinition_User;
                requestDefinition_definition_IamActionDefinitionIsNull = false;
            }
            // determine if requestDefinition_definition_IamActionDefinition should be set to null
            if (requestDefinition_definition_IamActionDefinitionIsNull)
            {
                requestDefinition_definition_IamActionDefinition = null;
            }
            if (requestDefinition_definition_IamActionDefinition != null)
            {
                request.Definition.IamActionDefinition = requestDefinition_definition_IamActionDefinition;
                requestDefinitionIsNull = false;
            }
            // determine if request.Definition should be set to null
            if (requestDefinitionIsNull)
            {
                request.Definition = null;
            }
            if (cmdletContext.ExecutionRoleArn != null)
            {
                request.ExecutionRoleArn = cmdletContext.ExecutionRoleArn;
            }
            if (cmdletContext.NotificationType != null)
            {
                request.NotificationType = cmdletContext.NotificationType;
            }
            if (cmdletContext.Subscriber != null)
            {
                request.Subscribers = cmdletContext.Subscriber;
            }

            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);
        }