From 82739645598ce024f75e8b87d6cb89b6033d5493 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Thu, 27 Sep 2018 16:25:09 -0400 Subject: [PATCH] Implement unimplemented event types --- .../Components/Byond/ByondManager.cs | 17 +++++++++++-- .../Components/EventType.cs | 25 ++++++------------- .../Components/Instance.cs | 10 +++++++- .../Components/InstanceFactory.cs | 4 +-- .../Components/Repository/Repository.cs | 2 ++ 5 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs b/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs index a286224384..543cadecab 100644 --- a/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs +++ b/src/Tgstation.Server.Host/Components/Byond/ByondManager.cs @@ -52,6 +52,11 @@ namespace Tgstation.Server.Host.Components.Byond /// readonly IByondInstaller byondInstaller; + /// + /// The for the + /// + readonly IEventConsumer eventConsumer; + /// /// The for the /// @@ -80,10 +85,11 @@ namespace Tgstation.Server.Host.Components.Byond /// The value of /// The value of /// The value of - public ByondManager(IIOManager ioManager, IByondInstaller byondInstaller, ILogger logger) + public ByondManager(IIOManager ioManager, IByondInstaller byondInstaller, IEventConsumer eventConsumer, ILogger logger) { this.ioManager = ioManager ?? throw new ArgumentNullException(nameof(ioManager)); this.byondInstaller = byondInstaller ?? throw new ArgumentNullException(nameof(byondInstaller)); + this.eventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); installedVersions = new Dictionary(); @@ -122,6 +128,7 @@ namespace Tgstation.Server.Host.Components.Byond //okay up to us to install it then try { + await eventConsumer.HandleEvent(EventType.ByondInstallStart, new List { versionKey }, cancellationToken).ConfigureAwait(false); var downloadTask = byondInstaller.DownloadVersion(version, cancellationToken); await ioManager.DeleteDirectory(versionKey, cancellationToken).ConfigureAwait(false); @@ -155,6 +162,8 @@ namespace Tgstation.Server.Host.Components.Byond } catch (Exception e) { + if (!(e is OperationCanceledException)) + await eventConsumer.HandleEvent(EventType.ByondInstallFail, new List { e.Message }, cancellationToken).ConfigureAwait(false); lock (installedVersions) installedVersions.Remove(versionKey); ourTcs.SetException(e); @@ -165,10 +174,14 @@ namespace Tgstation.Server.Host.Components.Byond /// public async Task ChangeVersion(Version version, CancellationToken cancellationToken) { + if (version == null) + throw new ArgumentNullException(nameof(version)); + var versionKey = VersionKey(version); await InstallVersion(version, cancellationToken).ConfigureAwait(false); using (await SemaphoreSlimContext.Lock(semaphore, cancellationToken).ConfigureAwait(false)) { - await ioManager.WriteAllBytes(ActiveVersionFileName, Encoding.UTF8.GetBytes(version.ToString()), cancellationToken).ConfigureAwait(false); + await ioManager.WriteAllBytes(ActiveVersionFileName, Encoding.UTF8.GetBytes(versionKey), cancellationToken).ConfigureAwait(false); + await eventConsumer.HandleEvent(EventType.ByondActiveVersionChange, new List { VersionKey(ActiveVersion), versionKey }, cancellationToken).ConfigureAwait(false); ActiveVersion = version; } } diff --git a/src/Tgstation.Server.Host/Components/EventType.cs b/src/Tgstation.Server.Host/Components/EventType.cs index a46b4ddb4e..945261bcec 100644 --- a/src/Tgstation.Server.Host/Components/EventType.cs +++ b/src/Tgstation.Server.Host/Components/EventType.cs @@ -18,7 +18,7 @@ /// RepoFetch = 2, /// - /// Parameters: Pull request number, pull request sha, merger name, merger message + /// Parameters: Pull request number, pull request sha, merger message /// RepoMergePullRequest = 3, /// @@ -27,17 +27,17 @@ RepoPreSynchronize = 4, /// - /// Parameters: Current version, new version + /// Parameters: Version being installed /// - ByondChangeStart = 5, + ByondInstallStart = 5, /// /// Parameters: Error string /// - ByondFail = 6, + ByondInstallFail = 6, /// - /// No parameters + /// Parameters: Old active version, new active version /// - ByondChangeComplete = 7, + ByondActiveVersionChange = 7, /// /// Parameters: Game directory path, origin commit sha /// @@ -55,23 +55,14 @@ /// CompileComplete = 11, - /// - /// Parameters: Exit code - /// - DDOtherCrash = 12, /// /// No parameters /// - DDOtherExit = 13, - - /// - /// No parameters - /// - InstanceAutoUpdateStart = 14, + InstanceAutoUpdateStart = 12, /// /// Parameters: Base sha, target sha, base reference, target reference /// - RepoMergeConflict = 15, + RepoMergeConflict = 13, } } diff --git a/src/Tgstation.Server.Host/Components/Instance.cs b/src/Tgstation.Server.Host/Components/Instance.cs index 3ef8586bef..db9161d28b 100644 --- a/src/Tgstation.Server.Host/Components/Instance.cs +++ b/src/Tgstation.Server.Host/Components/Instance.cs @@ -55,6 +55,11 @@ namespace Tgstation.Server.Host.Components /// readonly IJobManager jobManager; + /// + /// The for the + /// + readonly IEventConsumer eventConsumer; + /// /// The for the /// @@ -88,8 +93,9 @@ namespace Tgstation.Server.Host.Components /// The value of /// The value of /// The value of + /// The value of /// The value of - public Instance(Api.Models.Instance metadata, IRepositoryManager repositoryManager, IByondManager byondManager, IDreamMaker dreamMaker, IWatchdog watchdog, IChat chat, StaticFiles.IConfiguration configuration, ICompileJobConsumer compileJobConsumer, IDatabaseContextFactory databaseContextFactory, IDmbFactory dmbFactory, IJobManager jobManager, ILogger logger) + public Instance(Api.Models.Instance metadata, IRepositoryManager repositoryManager, IByondManager byondManager, IDreamMaker dreamMaker, IWatchdog watchdog, IChat chat, StaticFiles.IConfiguration configuration, ICompileJobConsumer compileJobConsumer, IDatabaseContextFactory databaseContextFactory, IDmbFactory dmbFactory, IJobManager jobManager, IEventConsumer eventConsumer, ILogger logger) { this.metadata = metadata ?? throw new ArgumentNullException(nameof(metadata)); RepositoryManager = repositoryManager ?? throw new ArgumentNullException(nameof(repositoryManager)); @@ -102,6 +108,7 @@ namespace Tgstation.Server.Host.Components this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory)); this.dmbFactory = dmbFactory ?? throw new ArgumentNullException(nameof(dmbFactory)); this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager)); + this.eventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); } @@ -187,6 +194,7 @@ namespace Tgstation.Server.Host.Components { await Task.Delay(TimeSpan.FromMinutes(minutes > Int32.MaxValue ? Int32.MaxValue : (int)minutes), cancellationToken).ConfigureAwait(false); logger.LogDebug("Beginning auto update..."); + await eventConsumer.HandleEvent(EventType.InstanceAutoUpdateStart, new List(), cancellationToken).ConfigureAwait(false); try { Models.User user = null; diff --git a/src/Tgstation.Server.Host/Components/InstanceFactory.cs b/src/Tgstation.Server.Host/Components/InstanceFactory.cs index c702355b55..0823f16db8 100644 --- a/src/Tgstation.Server.Host/Components/InstanceFactory.cs +++ b/src/Tgstation.Server.Host/Components/InstanceFactory.cs @@ -158,7 +158,7 @@ namespace Tgstation.Server.Host.Components var repoManager = new RepositoryManager(metadata.RepositorySettings, repoIoManager, eventConsumer, credentialsProvider, loggerFactory.CreateLogger(), loggerFactory.CreateLogger()); try { - var byond = new ByondManager(byondIOManager, byondInstaller, loggerFactory.CreateLogger()); + var byond = new ByondManager(byondIOManager, byondInstaller, eventConsumer, loggerFactory.CreateLogger()); var commandFactory = new CommandFactory(application, byond, repoManager, databaseContextFactory, metadata); @@ -174,7 +174,7 @@ namespace Tgstation.Server.Host.Components { var dreamMaker = new DreamMaker(byond, gameIoManager, configuration, sessionControllerFactory, dmbFactory, application, eventConsumer, chat, processExecutor, watchdog, loggerFactory.CreateLogger()); - return new Instance(metadata.CloneMetadata(), repoManager, byond, dreamMaker, watchdog, chat, configuration, dmbFactory, databaseContextFactory, dmbFactory, jobManager, loggerFactory.CreateLogger()); + return new Instance(metadata.CloneMetadata(), repoManager, byond, dreamMaker, watchdog, chat, configuration, dmbFactory, databaseContextFactory, dmbFactory, jobManager, eventConsumer, loggerFactory.CreateLogger()); } catch { diff --git a/src/Tgstation.Server.Host/Components/Repository/Repository.cs b/src/Tgstation.Server.Host/Components/Repository/Repository.cs index c7652fddfc..1365a98810 100644 --- a/src/Tgstation.Server.Host/Components/Repository/Repository.cs +++ b/src/Tgstation.Server.Host/Components/Repository/Repository.cs @@ -299,6 +299,8 @@ namespace Tgstation.Server.Host.Components.Repository }), cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Current).ConfigureAwait(false); } + await eventConsumer.HandleEvent(EventType.RepoMergePullRequest, new List { testMergeParameters.Number.ToString(), testMergeParameters.PullRequestRevision, testMergeParameters.Comment }, cancellationToken).ConfigureAwait(false); + return result.Status != MergeStatus.NonFastForward; }