Skip to content

Commit 33bb1b4

Browse files
committed
Implement EventDrivenScriptExecutor
1 parent 4796b05 commit 33bb1b4

File tree

2 files changed

+41
-22
lines changed

2 files changed

+41
-22
lines changed

source/Octopus.Tentacle.Client/EventDrivenScriptExecutor.cs

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -63,44 +63,63 @@ internal EventDrivenScriptExecutor(ITentacleClientTaskLog logger,
6363
return (new ScriptStatus(ProcessState.Complete, ScriptExitCodes.UnknownScriptExitCode, new List<ProcessOutput>()), new DefaultTicketForNextStatus(new ScriptTicket(Guid.NewGuid().ToString()), 0, ScriptServiceVersion.ScriptServiceVersion1));
6464
}
6565

66-
var scriptOrchestratorFactory = new ScriptOrchestratorFactory(clientsHolder,
67-
new DefaultScriptObserverBackoffStrategy(),
68-
rpcCallExecutor,
69-
operationMetricsBuilder,
70-
status => { },
71-
token => Task.CompletedTask,
72-
onCancellationAbandonCompleteScriptAfter,
73-
clientOptions,
74-
logger);
66+
var scriptOrchestratorFactory = GetNewScriptOrchestratorFactory(operationMetricsBuilder);
7567

7668
var orchestrator = scriptOrchestratorFactory.CreateOrchestrator(scriptServiceToUse);
77-
78-
// and return stuff.
79-
throw new System.NotImplementedException();
69+
return await orchestrator.StartScript(executeScriptCommand, cancellationToken);
8070
}
8171

82-
public Task<(ScriptStatus, ITicketForNextStatus)> GetStatus(ITicketForNextStatus ticketForNextNextStatus, CancellationToken cancellationToken)
72+
public async Task<(ScriptStatus, ITicketForNextStatus)> GetStatus(ITicketForNextStatus ticketForNextNextStatus, CancellationToken cancellationToken)
8373
{
84-
85-
ScriptOrchestratorFactory scriptOrchestratorFactory = null!;
86-
var orch = scriptOrchestratorFactory.CreateOrchestrator(ticketForNextNextStatus.WhichService);
74+
var operationMetricsBuilder = ClientOperationMetricsBuilder.Start();
8775

88-
throw new System.NotImplementedException();
76+
var scriptOrchestratorFactory = GetNewScriptOrchestratorFactory(operationMetricsBuilder);
77+
78+
var orchestrator = scriptOrchestratorFactory.CreateOrchestrator(ticketForNextNextStatus.WhichService);
79+
80+
return await orchestrator.GetStatus(ticketForNextNextStatus, cancellationToken);
8981
}
9082

91-
public Task<(ScriptStatus, ITicketForNextStatus)> CancelScript(ITicketForNextStatus ticketForNextNextStatus, CancellationToken cancellationToken)
83+
public async Task<(ScriptStatus, ITicketForNextStatus)> CancelScript(ITicketForNextStatus ticketForNextNextStatus, CancellationToken cancellationToken)
9284
{
93-
throw new System.NotImplementedException();
85+
var operationMetricsBuilder = ClientOperationMetricsBuilder.Start();
86+
87+
var scriptOrchestratorFactory = GetNewScriptOrchestratorFactory(operationMetricsBuilder);
88+
89+
var orchestrator = scriptOrchestratorFactory.CreateOrchestrator(ticketForNextNextStatus.WhichService);
90+
91+
return await orchestrator.Cancel(ticketForNextNextStatus, cancellationToken);
9492
}
9593

9694
public Task<(ScriptStatus, ITicketForNextStatus)> CancelScript(ScriptTicket scriptTicket, CancellationToken cancellationToken)
9795
{
96+
var operationMetricsBuilder = ClientOperationMetricsBuilder.Start();
9897
throw new System.NotImplementedException();
9998
}
10099

101-
public Task CleanUpScript(ScriptTicket scriptTicket, CancellationToken cancellationToken)
100+
public async Task CleanUpScript(ITicketForNextStatus ticketForNextNextStatus, CancellationToken cancellationToken)
102101
{
103-
throw new System.NotImplementedException();
102+
var operationMetricsBuilder = ClientOperationMetricsBuilder.Start();
103+
104+
var scriptOrchestratorFactory = GetNewScriptOrchestratorFactory(operationMetricsBuilder);
105+
106+
var orchestrator = scriptOrchestratorFactory.CreateOrchestrator(ticketForNextNextStatus.WhichService);
107+
108+
await orchestrator.Finish(ticketForNextNextStatus, cancellationToken);
104109
}
110+
111+
ScriptOrchestratorFactory GetNewScriptOrchestratorFactory(ClientOperationMetricsBuilder operationMetricsBuilder)
112+
{
113+
return new ScriptOrchestratorFactory(clientsHolder,
114+
new DefaultScriptObserverBackoffStrategy(),
115+
rpcCallExecutor,
116+
operationMetricsBuilder,
117+
status => { },
118+
token => Task.CompletedTask,
119+
onCancellationAbandonCompleteScriptAfter,
120+
clientOptions,
121+
logger);
122+
}
123+
105124
}
106125
}

source/Octopus.Tentacle.Client/IEventDrivenScriptExecutor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public interface IEventDrivenScriptExecutor
3030
/// <returns></returns>
3131
Task<(ScriptStatus, ITicketForNextStatus)> CancelScript(ScriptTicket scriptTicket, CancellationToken cancellationToken);
3232

33-
Task CleanUpScript(ScriptTicket scriptTicket, CancellationToken cancellationToken);
33+
Task CleanUpScript(ITicketForNextStatus ticketForNextNextStatus, CancellationToken cancellationToken);
3434
}
3535

3636
public enum HasStartScriptBeenCalledBefore

0 commit comments

Comments
 (0)