コード例 #1
0
        public async Task <ApiResultLite> UpdateAsync(ReservationUpdateRequest request)
        {
            Reservation rv = await _context.Reservations.FindAsync(request.Id);

            if (rv == null)
            {
                return(new ApiErrorResultLite("Không tìm thấy"));
            }
            else
            {
                rv.Id                = request.Id;
                rv.Paid              = request.Paid;
                rv.Active            = request.Active;
                rv.ReservationTypeId = request.ReservationTypeId;
                rv.UserId            = request.UserId;
                rv.EmployeeId        = request.EmployeeId;
                _context.Update(rv);
                int rs = await _context.SaveChangesAsync();

                if (rs == 0)
                {
                    return(new ApiErrorResultLite("Cập nhật thất bại"));
                }
                return(new ApiSuccessResultLite("Cập nhật thành công"));
            }
        }
コード例 #2
0
        public virtual void TestUpdateReservationExceedsGangSize()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 1, 1,
                                                                                    5, 4);

            Org.Apache.Hadoop.Yarn.Api.Records.Resource resource = Org.Apache.Hadoop.Yarn.Api.Records.Resource
                                                                   .NewInstance(512, 1);
            Org.Mockito.Mockito.When(plan.GetTotalCapacity()).ThenReturn(resource);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
                NUnit.Framework.Assert.Fail();
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.IsNull(plan);
                string message = e.Message;
                NUnit.Framework.Assert.IsTrue(message.StartsWith("The size of the largest gang in the reservation refinition"
                                                                 ));
                NUnit.Framework.Assert.IsTrue(message.Contains("exceed the capacity available "));
                Log.Info(message);
            }
        }
コード例 #3
0
        public async Task <IActionResult> Update(int id, [FromBody] ReservationUpdateRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var userIdClaim = ((ClaimsIdentity)User.Identity).FindFirst(ClaimTypes.NameIdentifier);
                var userId      = int.Parse(userIdClaim.Value);

                await _reservationsRepository.Update(id, request, userId);

                return(NoContent());
            }
            catch (InvalidReservationException)
            {
                return(NotFound());
            }
            catch (InvalidDeviceException)
            {
                string errorText = String.Format("Device with ID: {0} doesn't exist", request.DeviceId);
                return(StatusCode(StatusCodes.Status409Conflict, new { Message = errorText }));
            }
            catch (InvalidOfficeException)
            {
                string errorText = String.Format("Office with ID: {0} doesn't exist", request.OfficeId);
                return(StatusCode(StatusCodes.Status409Conflict, new { Message = errorText }));
            }
        }
コード例 #4
0
        /// <summary>
        /// Quick validation on the input to check some obvious fail conditions (fail
        /// fast) the input and returns the appropriate
        /// <see cref="Plan"/>
        /// associated with
        /// the specified
        /// <see cref="Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.Queue"/>
        /// or throws an exception message illustrating the
        /// details of any validation check failures
        /// </summary>
        /// <param name="reservationSystem">
        /// the
        /// <see cref="ReservationSystem"/>
        /// to validate against
        /// </param>
        /// <param name="request">
        /// the
        /// <see cref="Org.Apache.Hadoop.Yarn.Api.Protocolrecords.ReservationUpdateRequest"/>
        /// defining the resources
        /// required over time for the request
        /// </param>
        /// <returns>
        /// the
        /// <see cref="Plan"/>
        /// to submit the request to
        /// </returns>
        /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
        public virtual Plan ValidateReservationUpdateRequest(ReservationSystem reservationSystem
                                                             , ReservationUpdateRequest request)
        {
            ReservationId reservationId = request.GetReservationId();
            Plan          plan          = ValidateReservation(reservationSystem, reservationId, RMAuditLogger.AuditConstants
                                                              .UpdateReservationRequest);

            ValidateReservationDefinition(reservationId, request.GetReservationDefinition(),
                                          plan, RMAuditLogger.AuditConstants.UpdateReservationRequest);
            return(plan);
        }
コード例 #5
0
 /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
 /// <exception cref="System.IO.IOException"/>
 public virtual ReservationUpdateResponse UpdateReservation(ReservationUpdateRequest
                                                            request)
 {
     YarnServiceProtos.ReservationUpdateRequestProto requestProto = ((ReservationUpdateRequestPBImpl
                                                                      )request).GetProto();
     try
     {
         return(new ReservationUpdateResponsePBImpl(proxy.UpdateReservation(null, requestProto
                                                                            )));
     }
     catch (ServiceException e)
     {
         RPCUtil.UnwrapAndThrowException(e);
         return(null);
     }
 }
コード例 #6
0
        public virtual void TestUpdateReservationNormal()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 1, 1,
                                                                                    5, 3);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.Fail(e.Message);
            }
            NUnit.Framework.Assert.IsNotNull(plan);
        }
コード例 #7
0
        public virtual void TestUpdateReservationInvalidDuration()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 1, 1,
                                                                                    3, 4);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
                NUnit.Framework.Assert.Fail();
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.IsNull(plan);
                string message = e.Message;
                NUnit.Framework.Assert.IsTrue(message.Contains("must  be greater or equal to the minimum resource duration"
                                                               ));
                Log.Info(message);
            }
        }
コード例 #8
0
        public virtual void TestUpdateReservationEmptyRR()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 0, 1,
                                                                                    5, 3);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
                NUnit.Framework.Assert.Fail();
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.IsNull(plan);
                string message = e.Message;
                NUnit.Framework.Assert.IsTrue(message.StartsWith("No resources have been specified to reserve"
                                                                 ));
                Log.Info(message);
            }
        }
コード例 #9
0
        public virtual void TestUpdateReservationInvalidDeadline()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 1, 1,
                                                                                    0, 3);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
                NUnit.Framework.Assert.Fail();
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.IsNull(plan);
                string message = e.Message;
                NUnit.Framework.Assert.IsTrue(message.StartsWith("The specified deadline: 0 is the past"
                                                                 ));
                Log.Info(message);
            }
        }
コード例 #10
0
        public virtual void TestUpdateReservationInvalidPlan()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 1, 1,
                                                                                    5, 4);

            Org.Mockito.Mockito.When(rSystem.GetPlan(PlanName)).ThenReturn(null);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
                NUnit.Framework.Assert.Fail();
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.IsNull(plan);
                string message = e.Message;
                NUnit.Framework.Assert.IsTrue(message.EndsWith(" is not associated with any valid plan. Please try again with a valid reservation."
                                                               ));
                Log.Info(message);
            }
        }
コード例 #11
0
        public virtual void TestUpdateReservationDoesnotExist()
        {
            ReservationUpdateRequest request = CreateSimpleReservationUpdateRequest(1, 1, 1,
                                                                                    5, 4);
            ReservationId rId = request.GetReservationId();

            Org.Mockito.Mockito.When(rSystem.GetQueueForReservation(rId)).ThenReturn(null);
            Plan plan = null;

            try
            {
                plan = rrValidator.ValidateReservationUpdateRequest(rSystem, request);
                NUnit.Framework.Assert.Fail();
            }
            catch (YarnException e)
            {
                NUnit.Framework.Assert.IsNull(plan);
                string message = e.Message;
                NUnit.Framework.Assert.IsTrue(message.Equals(MessageFormat.Format("The specified reservation with ID: {0} is unknown. Please try again with a valid reservation."
                                                                                  , rId)));
                Log.Info(message);
            }
        }
コード例 #12
0
        public async Task Update(int id, ReservationUpdateRequest request, int userId)
        {
            var item = await _dbContext.Reservations
                       .FirstOrDefaultAsync(x => x.Id == id);

            if (item == null)
            {
                throw new InvalidReservationException();
            }

            var device = await _dbContext.Devices
                         .FirstOrDefaultAsync(x => x.Id == request.DeviceId);

            if (device == null)
            {
                throw new InvalidDeviceException();
            }

            Action eventAction = Action.ReservationCanceled;
            int    officeId    = device.OfficeId;

            if (request.Status == Status.CheckedIn)
            {
                device.UserId    = userId;
                device.Available = false;
                eventAction      = Action.CheckedIn;
            }

            if (request.Status == Status.Completed)
            {
                var office = await _dbContext.Offices
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == request.OfficeId);

                if (office == null)
                {
                    throw new InvalidOfficeException();
                }

                eventAction = item.Status == Status.OverDue ? Action.ReturnedLate : Action.Returned;
                officeId    = office.Id;

                device.UserId    = null;
                device.Available = true;
                device.OfficeId  = request.OfficeId.Value;
            }

            await _dbContext.Events.AddAsync(new Event
            {
                Action    = eventAction,
                OfficeId  = officeId,
                UserId    = userId,
                CreatedOn = DateTime.UtcNow,
                DeviceId  = request.DeviceId,
            });

            item.Status   = request.Status;
            item.DeviceId = device.Id;
            item.UserId   = userId;
            item.From     = request.From;
            item.To       = request.To;

            await _dbContext.SaveChangesAsync();
        }
コード例 #13
0
 public async Task <ApiResultLite> UpdateAsync(ReservationUpdateRequest request)
 {
     return(await PostAsync <ApiResultLite>("/api/Reservation/Update", request));
 }
コード例 #14
0
 /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
 /// <exception cref="System.IO.IOException"/>
 public virtual ReservationUpdateResponse UpdateReservation(ReservationUpdateRequest
                                                            request)
 {
     return(null);
 }
コード例 #15
0
        public async Task <ApiResultLite> UpdateAsync(ReservationUpdateRequest request)
        {
            var result = await _reservationService.UpdateAsync(request);

            return(result);
        }
コード例 #16
0
ファイル: YarnClientImpl.cs プロジェクト: orf53975/hadoop.net
 /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
 /// <exception cref="System.IO.IOException"/>
 public override ReservationUpdateResponse UpdateReservation(ReservationUpdateRequest
                                                             request)
 {
     return(rmClient.UpdateReservation(request));
 }
コード例 #17
0
ファイル: YarnClient.cs プロジェクト: orf53975/hadoop.net
 public abstract ReservationUpdateResponse UpdateReservation(ReservationUpdateRequest
                                                             request);