Esempio n. 1
0
        async Task <UpdatedScheduledScaleEvent> IScaleManager.ScheduleScaleEvent(ScaleEvent scaleEvent, CancellationToken cancellationToken)
        {
            var events = await StateManager.GetStateAsync <List <ManagedScaleEvent> >(Events);

            var modifiedEvent = events.Find(e => e.Id == scaleEvent.Id);
            var state         = modifiedEvent?.State ?? ScaleEventState.NotFound;

            if (modifiedEvent == null)
            {
                modifiedEvent = new ManagedScaleEvent {
                    Id = scaleEvent.Id
                }
            }
            ;
            modifiedEvent.Name               = scaleEvent.Name;
            modifiedEvent.RequiredScaleAt    = scaleEvent.RequiredScaleAt;
            modifiedEvent.Scale              = scaleEvent.Scale;
            modifiedEvent.StartScaleDownAt   = scaleEvent.StartScaleDownAt;
            modifiedEvent.EstimatedScaleUpAt = modifiedEvent.RequiredScaleAt - EstimatedScaleTime;
            events.Add(modifiedEvent);

            await StateManager.SetStateAsync(Events, events, cancellationToken);

            return(new UpdatedScheduledScaleEvent
            {
                PreState = state,
                Id = modifiedEvent.Id,
                EstimatedScaleUpAt = modifiedEvent.EstimatedScaleUpAt,
                Name = modifiedEvent.Name,
                RequiredScaleAt = modifiedEvent.RequiredScaleAt,
                Scale = modifiedEvent.Scale,
                StartScaleDownAt = modifiedEvent.StartScaleDownAt,
            });
        }
Esempio n. 2
0
 private static ScheduledScaleEvent ToScheduledScaleEvent(ManagedScaleEvent foundEvent)
 {
     return(new ScheduledScaleEvent
     {
         EstimatedScaleUpAt = foundEvent.EstimatedScaleUpAt,
         Id = foundEvent.Id,
         Name = foundEvent.Name,
         RequiredScaleAt = foundEvent.RequiredScaleAt,
         Scale = foundEvent.Scale,
         StartScaleDownAt = foundEvent.StartScaleDownAt,
     });
 }