From 13cbaba94299015ef48149b3c317da8af12167e5 Mon Sep 17 00:00:00 2001
From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Date: Wed, 28 Apr 2021 14:27:32 +0100
Subject: [PATCH 1/6] Event for successful DD launches
---
build/Version.props | 2 +-
src/DMAPI/tgs.dm | 2 ++
.../Components/Deployment/DreamMaker.cs | 2 +-
.../Components/Events/EventType.cs | 6 ++++++
.../Components/InstanceFactory.cs | 3 ++-
.../Session/ISessionControllerFactory.cs | 4 +++-
.../Session/SessionControllerFactory.cs | 21 ++++++++++++++++++-
.../Components/Watchdog/BasicWatchdog.cs | 1 +
8 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/build/Version.props b/build/Version.props
index dc72d597a5..5e8bc3e55f 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -8,7 +8,7 @@
9.0.1
9.0.0
10.0.0
- 6.0.3
+ 6.0.4
5.3.0
1.1.1
1.2.0
diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm
index af09ab6711..24efe11b90 100644
--- a/src/DMAPI/tgs.dm
+++ b/src/DMAPI/tgs.dm
@@ -102,6 +102,8 @@
// #define TGS_EVENT_WORLD_REBOOT 20
/// Watchdog event when TgsInitializationComplete() is called. No parameters.
#define TGS_EVENT_WORLD_PRIME 21
+// DMAPI also doesnt implement this
+// #define TGS_EVENT_WATCHEDOG_LAUNCH_SUCCESS 22
// OTHER ENUMS
diff --git a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
index a028bc497d..78c1f8843a 100644
--- a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
+++ b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
@@ -230,7 +230,7 @@ namespace Tgstation.Server.Host.Components.Deployment
ApiValidationStatus validationStatus;
using (var provider = new TemporaryDmbProvider(ioManager.ResolvePath(job.DirectoryName.ToString()), String.Concat(job.DmeName, DmbExtension), job))
- await using (var controller = await sessionControllerFactory.LaunchNew(provider, byondLock, launchParameters, true, cancellationToken).ConfigureAwait(false))
+ await using (var controller = await sessionControllerFactory.LaunchNew(provider, byondLock, launchParameters, true, false, cancellationToken).ConfigureAwait(false))
{
var launchResult = await controller.LaunchResult.ConfigureAwait(false);
diff --git a/src/Tgstation.Server.Host/Components/Events/EventType.cs b/src/Tgstation.Server.Host/Components/Events/EventType.cs
index 5de479b2a6..c6697b233f 100644
--- a/src/Tgstation.Server.Host/Components/Events/EventType.cs
+++ b/src/Tgstation.Server.Host/Components/Events/EventType.cs
@@ -137,5 +137,11 @@ namespace Tgstation.Server.Host.Components.Events
///
[EventScript("WorldPrime")]
WorldPrime,
+
+ ///
+ /// After the watchdog has launched successfully. Parameters: PID of DreamDaemon
+ ///
+ [EventScript("WatchdogSuccessfulLaunch")]
+ WatchdogSuccessfulLaunch,
}
}
diff --git a/src/Tgstation.Server.Host/Components/InstanceFactory.cs b/src/Tgstation.Server.Host/Components/InstanceFactory.cs
index e2c0a5afda..1c93991629 100644
--- a/src/Tgstation.Server.Host/Components/InstanceFactory.cs
+++ b/src/Tgstation.Server.Host/Components/InstanceFactory.cs
@@ -273,7 +273,8 @@ namespace Tgstation.Server.Host.Components
serverPortProvider,
loggerFactory,
loggerFactory.CreateLogger(),
- metadata);
+ metadata,
+ eventConsumer);
var dmbFactory = new DmbFactory(
databaseContextFactory,
diff --git a/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs
index 89a7e3d4aa..27dd2b0a70 100644
--- a/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs
@@ -1,4 +1,4 @@
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.Components.Byond;
@@ -18,6 +18,7 @@ namespace Tgstation.Server.Host.Components.Session
/// The current if any
/// The to use. will be updated with the minumum required security level for the launch.
/// If the should only validate the DMAPI then exit
+ /// If the is starting a production DD and not a staging DD
/// The for the operation
/// A resulting in a new
Task LaunchNew(
@@ -25,6 +26,7 @@ namespace Tgstation.Server.Host.Components.Session
IByondExecutableLock currentByondLock,
DreamDaemonLaunchParameters launchParameters,
bool apiValidate,
+ bool isProduction,
CancellationToken cancellationToken);
///
diff --git a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
index 1cc3960a7a..52d040227f 100644
--- a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
@@ -1,5 +1,6 @@
using Microsoft.Extensions.Logging;
using System;
+using System.Collections.Generic;
using System.Globalization;
using System.Net.Sockets;
using System.Text;
@@ -11,6 +12,7 @@ using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.Components.Byond;
using Tgstation.Server.Host.Components.Chat;
using Tgstation.Server.Host.Components.Deployment;
+using Tgstation.Server.Host.Components.Events;
using Tgstation.Server.Host.Components.Interop;
using Tgstation.Server.Host.Components.Interop.Bridge;
using Tgstation.Server.Host.Core;
@@ -95,6 +97,11 @@ namespace Tgstation.Server.Host.Components.Session
///
readonly Api.Models.Instance instance;
+ ///
+ /// The for the
+ ///
+ private IEventConsumer EventConsumer { get; }
+
///
/// Change a given into the appropriate DreamDaemon command line word
///
@@ -145,6 +152,7 @@ namespace Tgstation.Server.Host.Components.Session
/// The value of .
/// The value of
/// The value of .
+ /// The value of .
public SessionControllerFactory(
IProcessExecutor processExecutor,
IByondManager byond,
@@ -159,7 +167,8 @@ namespace Tgstation.Server.Host.Components.Session
IServerPortProvider serverPortProvider,
ILoggerFactory loggerFactory,
ILogger logger,
- Api.Models.Instance instance)
+ Api.Models.Instance instance,
+ EventConsumer eventConsumer)
{
this.processExecutor = processExecutor ?? throw new ArgumentNullException(nameof(processExecutor));
this.byond = byond ?? throw new ArgumentNullException(nameof(byond));
@@ -175,6 +184,7 @@ namespace Tgstation.Server.Host.Components.Session
this.serverPortProvider = serverPortProvider ?? throw new ArgumentNullException(nameof(serverPortProvider));
this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ EventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer));
}
///
@@ -184,6 +194,7 @@ namespace Tgstation.Server.Host.Components.Session
IByondExecutableLock currentByondLock,
DreamDaemonLaunchParameters launchParameters,
bool apiValidate,
+ bool isProduction,
CancellationToken cancellationToken)
{
logger.LogTrace("Begin session launch...");
@@ -266,6 +277,14 @@ namespace Tgstation.Server.Host.Components.Session
noShellExecute,
noShellExecute: noShellExecute);
+ // If this isnt a staging DD (Deployment DD), fire off an event
+ if(isProduction) {
+ await EventConsumer.HandleEvent(EventType.WatchdogSuccessfulLaunch, new List
+ {
+ process.Id.ToString(CultureInfo.InvariantCulture)
+ }, cancellationToken).ConfigureAwait(false);
+ }
+
async Task GetDDOutput()
{
// DCT x2: None available
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
index 3cddd03a02..3bc88c2f5c 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
@@ -210,6 +210,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
null,
ActiveLaunchParameters,
false,
+ true,
cancellationToken);
}
else
From cf58486dbee849338c1f889539e90c043730e02a Mon Sep 17 00:00:00 2001
From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Date: Wed, 28 Apr 2021 14:49:02 +0100
Subject: [PATCH 2/6] Need this
---
src/DMAPI/tgs.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm
index 24efe11b90..a2e46f20c8 100644
--- a/src/DMAPI/tgs.dm
+++ b/src/DMAPI/tgs.dm
@@ -1,6 +1,6 @@
// tgstation-server DMAPI
-#define TGS_DMAPI_VERSION "6.0.3"
+#define TGS_DMAPI_VERSION "6.0.4"
// All functions and datums outside this document are subject to change with any version and should not be relied on.
From b12af828274d32857d2bcd398863563036b84e9c Mon Sep 17 00:00:00 2001
From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Date: Wed, 28 Apr 2021 18:47:38 +0100
Subject: [PATCH 3/6] Cybertweaks
---
.../Components/Deployment/DreamMaker.cs | 2 +-
.../Components/Events/EventType.cs | 6 ++--
.../Components/InstanceFactory.cs | 4 +--
.../Session/ISessionControllerFactory.cs | 2 --
.../Session/SessionControllerFactory.cs | 34 +++++++++++--------
.../Components/Watchdog/BasicWatchdog.cs | 1 -
6 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
index 78c1f8843a..a028bc497d 100644
--- a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
+++ b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
@@ -230,7 +230,7 @@ namespace Tgstation.Server.Host.Components.Deployment
ApiValidationStatus validationStatus;
using (var provider = new TemporaryDmbProvider(ioManager.ResolvePath(job.DirectoryName.ToString()), String.Concat(job.DmeName, DmbExtension), job))
- await using (var controller = await sessionControllerFactory.LaunchNew(provider, byondLock, launchParameters, true, false, cancellationToken).ConfigureAwait(false))
+ await using (var controller = await sessionControllerFactory.LaunchNew(provider, byondLock, launchParameters, true, cancellationToken).ConfigureAwait(false))
{
var launchResult = await controller.LaunchResult.ConfigureAwait(false);
diff --git a/src/Tgstation.Server.Host/Components/Events/EventType.cs b/src/Tgstation.Server.Host/Components/Events/EventType.cs
index c6697b233f..a91bc2ab3f 100644
--- a/src/Tgstation.Server.Host/Components/Events/EventType.cs
+++ b/src/Tgstation.Server.Host/Components/Events/EventType.cs
@@ -139,9 +139,9 @@ namespace Tgstation.Server.Host.Components.Events
WorldPrime,
///
- /// After the watchdog has launched successfully. Parameters: PID of DreamDaemon
+ /// After DD has launched. Not the same as WatchdogLaunch. Parameters: PID of DreamDaemon
///
- [EventScript("WatchdogSuccessfulLaunch")]
- WatchdogSuccessfulLaunch,
+ [EventScript("DreamDaemonLaunch")]
+ DreamDaemonLaunch,
}
}
diff --git a/src/Tgstation.Server.Host/Components/InstanceFactory.cs b/src/Tgstation.Server.Host/Components/InstanceFactory.cs
index 1c93991629..45b14b674a 100644
--- a/src/Tgstation.Server.Host/Components/InstanceFactory.cs
+++ b/src/Tgstation.Server.Host/Components/InstanceFactory.cs
@@ -271,10 +271,10 @@ namespace Tgstation.Server.Host.Components
platformIdentifier,
bridgeRegistrar,
serverPortProvider,
+ eventConsumer,
loggerFactory,
loggerFactory.CreateLogger(),
- metadata,
- eventConsumer);
+ metadata);
var dmbFactory = new DmbFactory(
databaseContextFactory,
diff --git a/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs
index 27dd2b0a70..1248cc8b9d 100644
--- a/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs
@@ -18,7 +18,6 @@ namespace Tgstation.Server.Host.Components.Session
/// The current if any
/// The to use. will be updated with the minumum required security level for the launch.
/// If the should only validate the DMAPI then exit
- /// If the is starting a production DD and not a staging DD
/// The for the operation
/// A resulting in a new
Task LaunchNew(
@@ -26,7 +25,6 @@ namespace Tgstation.Server.Host.Components.Session
IByondExecutableLock currentByondLock,
DreamDaemonLaunchParameters launchParameters,
bool apiValidate,
- bool isProduction,
CancellationToken cancellationToken);
///
diff --git a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
index 52d040227f..8cb4024376 100644
--- a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
@@ -82,6 +82,11 @@ namespace Tgstation.Server.Host.Components.Session
///
readonly IServerPortProvider serverPortProvider;
+ ///
+ /// The for the
+ ///
+ readonly IEventConsumer eventConsumer;
+
///
/// The for the
///
@@ -97,10 +102,7 @@ namespace Tgstation.Server.Host.Components.Session
///
readonly Api.Models.Instance instance;
- ///
- /// The for the
- ///
- private IEventConsumer EventConsumer { get; }
+
///
/// Change a given into the appropriate DreamDaemon command line word
@@ -165,10 +167,10 @@ namespace Tgstation.Server.Host.Components.Session
IPlatformIdentifier platformIdentifier,
IBridgeRegistrar bridgeRegistrar,
IServerPortProvider serverPortProvider,
+ EventConsumer eventConsumer,
ILoggerFactory loggerFactory,
ILogger logger,
- Api.Models.Instance instance,
- EventConsumer eventConsumer)
+ Api.Models.Instance instance)
{
this.processExecutor = processExecutor ?? throw new ArgumentNullException(nameof(processExecutor));
this.byond = byond ?? throw new ArgumentNullException(nameof(byond));
@@ -182,9 +184,9 @@ namespace Tgstation.Server.Host.Components.Session
this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier));
this.bridgeRegistrar = bridgeRegistrar ?? throw new ArgumentNullException(nameof(bridgeRegistrar));
this.serverPortProvider = serverPortProvider ?? throw new ArgumentNullException(nameof(serverPortProvider));
+ this.eventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer));
this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
- EventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer));
}
///
@@ -194,7 +196,6 @@ namespace Tgstation.Server.Host.Components.Session
IByondExecutableLock currentByondLock,
DreamDaemonLaunchParameters launchParameters,
bool apiValidate,
- bool isProduction,
CancellationToken cancellationToken)
{
logger.LogTrace("Begin session launch...");
@@ -277,13 +278,16 @@ namespace Tgstation.Server.Host.Components.Session
noShellExecute,
noShellExecute: noShellExecute);
- // If this isnt a staging DD (Deployment DD), fire off an event
- if(isProduction) {
- await EventConsumer.HandleEvent(EventType.WatchdogSuccessfulLaunch, new List
- {
- process.Id.ToString(CultureInfo.InvariantCulture)
- }, cancellationToken).ConfigureAwait(false);
- }
+ // If this isnt a staging DD (From a Deployment), fire off an event
+ if(!apiValidate)
+ await eventConsumer.HandleEvent(
+ EventType.DreamDaemonLaunch,
+ new List
+ {
+ process.Id.ToString(CultureInfo.InvariantCulture)
+ },
+ cancellationToken)
+ .ConfigureAwait(false);
async Task GetDDOutput()
{
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
index 3bc88c2f5c..3cddd03a02 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
@@ -210,7 +210,6 @@ namespace Tgstation.Server.Host.Components.Watchdog
null,
ActiveLaunchParameters,
false,
- true,
cancellationToken);
}
else
From 994d079237430200659c19967333f283ba93e8df Mon Sep 17 00:00:00 2001
From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Date: Wed, 28 Apr 2021 18:48:15 +0100
Subject: [PATCH 4/6] Update src/DMAPI/tgs.dm
---
src/DMAPI/tgs.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm
index a2e46f20c8..7ddae3b0bb 100644
--- a/src/DMAPI/tgs.dm
+++ b/src/DMAPI/tgs.dm
@@ -103,7 +103,7 @@
/// Watchdog event when TgsInitializationComplete() is called. No parameters.
#define TGS_EVENT_WORLD_PRIME 21
// DMAPI also doesnt implement this
-// #define TGS_EVENT_WATCHEDOG_LAUNCH_SUCCESS 22
+// #define TGS_EVENT_DREAM_DAEMON_LAUNCH 22
// OTHER ENUMS
From 73c073c8d04790e0b89d161d973af5b1685427e6 Mon Sep 17 00:00:00 2001
From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Date: Thu, 29 Apr 2021 15:49:42 +0100
Subject: [PATCH 5/6] Think this is it
---
.../Session/SessionControllerFactory.cs | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
index 8cb4024376..ae6fe179d3 100644
--- a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs
@@ -278,17 +278,6 @@ namespace Tgstation.Server.Host.Components.Session
noShellExecute,
noShellExecute: noShellExecute);
- // If this isnt a staging DD (From a Deployment), fire off an event
- if(!apiValidate)
- await eventConsumer.HandleEvent(
- EventType.DreamDaemonLaunch,
- new List
- {
- process.Id.ToString(CultureInfo.InvariantCulture)
- },
- cancellationToken)
- .ConfigureAwait(false);
-
async Task GetDDOutput()
{
// DCT x2: None available
@@ -368,6 +357,17 @@ namespace Tgstation.Server.Host.Components.Session
false,
apiValidate);
+ // If this isnt a staging DD (From a Deployment), fire off an event
+ if (!apiValidate)
+ await eventConsumer.HandleEvent(
+ EventType.DreamDaemonLaunch,
+ new List
+ {
+ process.Id.ToString(CultureInfo.InvariantCulture)
+ },
+ cancellationToken)
+ .ConfigureAwait(false);
+
return sessionController;
}
catch
From 6f7b9b5017d8c792fbe1734bea342ef2f48c3579 Mon Sep 17 00:00:00 2001
From: Jordan Brown
Date: Thu, 6 May 2021 09:33:30 -0400
Subject: [PATCH 6/6] Version bump to 4.11.0
---
build/Version.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/Version.props b/build/Version.props
index 5e8bc3e55f..35c46f8d56 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -3,7 +3,7 @@
- 4.10.6
+ 4.11.0
3.0.0
9.0.1
9.0.0