/// <summary>
        /// <para> Creates a scheduled scaling action for a Auto Scaling group. If you leave a parameter unspecified, the corresponding value remains
        /// unchanged in the affected Auto Scaling group. </para>
        /// </summary>
        ///
        /// <param name="putScheduledUpdateGroupActionRequest">Container for the necessary parameters to execute the PutScheduledUpdateGroupAction
        ///           service method on AmazonAutoScaling.</param>
        ///
        /// <exception cref="LimitExceededException"/>
        /// <exception cref="AlreadyExistsException"/>
        public PutScheduledUpdateGroupActionResponse PutScheduledUpdateGroupAction(PutScheduledUpdateGroupActionRequest putScheduledUpdateGroupActionRequest)
        {
            IRequest <PutScheduledUpdateGroupActionRequest> request  = new PutScheduledUpdateGroupActionRequestMarshaller().Marshall(putScheduledUpdateGroupActionRequest);
            PutScheduledUpdateGroupActionResponse           response = Invoke <PutScheduledUpdateGroupActionRequest, PutScheduledUpdateGroupActionResponse> (request, this.signer, PutScheduledUpdateGroupActionResponseUnmarshaller.GetInstance());

            return(response);
        }
        public void TestUtcFields()
        {
            PutScheduledUpdateGroupActionRequest request = new PutScheduledUpdateGroupActionRequest();

            DateTime timeUtc         = new DateTime(2018, 7, 18, 0, 0, 0, DateTimeKind.Utc);
            DateTime timeLocal       = new DateTime(2018, 7, 18, 0, 0, 0, DateTimeKind.Utc).ToLocalTime();
            DateTime timeUnspecified = new DateTime(timeLocal.Ticks);

            request.StartTimeUtc = timeUtc;
            request.EndTimeUtc   = timeLocal;
            request.TimeUtc      = timeUnspecified;

#pragma warning disable CS0618 // Type or member is obsolete
            Assert.AreEqual(request.StartTime, timeUtc);
            Assert.AreEqual(request.EndTime, timeLocal);
            Assert.AreEqual(request.Time, timeUnspecified);
#pragma warning restore CS0618 // Type or member is obsolete

            Assert.AreEqual(request.StartTimeUtc, timeUtc);
            Assert.AreEqual(request.EndTimeUtc, timeLocal);
            Assert.AreEqual(request.TimeUtc, timeUnspecified);

            var marshaller        = new PutScheduledUpdateGroupActionRequestMarshaller();
            var marshalledRequest = marshaller.Marshall(request);

            Assert.AreEqual(marshalledRequest.Parameters["StartTime"], EXPECTED_MARSHALLED_STRING);
            Assert.AreEqual(marshalledRequest.Parameters["EndTime"], EXPECTED_MARSHALLED_STRING);
            Assert.AreEqual(marshalledRequest.Parameters["Time"], EXPECTED_MARSHALLED_STRING);
        }