private void OnSessionDataExpired(object sender, DataLogCleanupEventArgs e) { if (e.SessionIds.Any()) { AssetReservationManager assetManager = new AssetReservationManager(DbConnect.AssetInventoryConnectionString, null); FrameworkClientReservationManager clientManager = new FrameworkClientReservationManager(DbConnect.AssetInventoryConnectionString); DomainAccountReservationManager accountManager = new DomainAccountReservationManager(DbConnect.AssetInventoryConnectionString); assetManager.ReleaseSessionReservations(e.SessionIds); clientManager.ReleaseSessionReservations(e.SessionIds); accountManager.ReleaseSessionReservations(e.SessionIds); } }
private void CleanupAssetHosts(string sessionId) { try { SetTraceSessionContext(sessionId); using (AssetInventoryContext context = DbConnect.AssetInventoryContext()) { var reservedAssets = context.AssetReservations.Where(n => n.SessionId == sessionId).Select(n => n.AssetId).ToList(); // Parallel process each Jedi simulator reserved for this session - shut down the host machine. List <DeviceSimulator> jediSimulators = context.Assets.OfType <DeviceSimulator>().Where(n => reservedAssets.Contains(n.AssetId) && n.SimulatorType == "Jedi").ToList(); Parallel.ForEach(jediSimulators, a => CleanupAssetHostsHandler(a)); } AssetReservationManager reservationManager = new AssetReservationManager(DbConnect.AssetInventoryConnectionString, "STF Console"); reservationManager.ReleaseSessionReservations(sessionId); } catch (Exception ex) { EventPublisher.PublishDispatcherException(ex); } }