public Task Handle(FactoryProvisionedEvent evnt) { var factory = _state.GetFactory(evnt.EntityId); factory.State = FactoryState.Starting; factory.ResourceId = evnt.ResourceId; return(Task.CompletedTask); }
public async Task OnEndReached(string topic, int partition, long offset) { foreach (var factory in _fakeFactories) { _logger.Information($"Factory created: {factory.Key} but not provisioned, provisioning fake resource in 3 seconds.."); var response = new FactoryProvisionedEvent(factory.Key, factory.Value.Initiator.ToPlayer()); await Task.Delay(3000).ContinueWith((_) => _producer.Produce(KafkaTopics.EVENTS, response)); } }
public async Task <IEnumerable <IEvent> > Evaluate(State state) { var changeSet = new List <IEvent>(); // For all factories in a creation state, we need to provision resources var factoriesToProvision = state.Factories .Where(f => f.State == FactoryState.Creating) .ToList(); _logger.Information($"Provisioning {factoriesToProvision.Count()} factories.."); foreach (var factory in factoriesToProvision) { try { var result = await _provisioner.ProvisionFactory(factory); var evnt = new FactoryProvisionedEvent(factory.FactoryId, null) { ResourceId = result.ResourceId, Port = result.Port, Host = result.Host, }; factory.State = FactoryState.Starting; _logger.Information($"Successfully provisioned resources for factory {factory.FactoryId}, producing event.."); changeSet.Add(evnt); } catch (Exception e) { _logger.Error(e, $"Could not provision resources for factory {factory.FactoryId}!"); } } // For all factories in a destroying state, we need to decommission resources var factoriesToDecommission = state.Factories .Where(f => f.State == FactoryState.Destroying) .ToList(); _logger.Information($"Decommissioning {factoriesToDecommission.Count()} factories.."); foreach (var factory in factoriesToDecommission) { try { await _provisioner.DecommissionFactory(factory); var evnt = new FactoryDecommissionedEvent(factory.FactoryId, null); factory.State = FactoryState.Destroyed; _logger.Information($"Successfully decommissioned resources for factory {factory.FactoryId}, producing event.."); changeSet.Add(evnt); } catch (Exception e) { _logger.Error(e, $"Could not decommission resources for factory {factory.FactoryId}!"); } } return(changeSet); }
public Task Handle(FactoryProvisionedEvent evnt) { var factory = _dbContext.Factories.FirstOrDefault(f => f.FactoryId == evnt.EntityId); if (factory != null) { factory.State = FactoryState.Starting; factory.Port = evnt.Port; } return(Task.CompletedTask); }