Skip to content

Commit 7fa1760

Browse files
updates and cleanup improvment
1 parent 7ff4f70 commit 7fa1760

3 files changed

Lines changed: 37 additions & 27 deletions

File tree

ApiController.cs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,23 @@ public async Task<IResult> GetProvisionScript(string provisionId,[FromHeader(Nam
103103

104104
[Route("kill-non-processing-runners")]
105105
[HttpPost]
106-
public async Task<IResult> KillNonProcessingRunners()
106+
public async Task<IResult> KillNonProcessingRunners([FromQuery] string cloud = null)
107107
{
108108
await using var db = new ActionsRunnerContext();
109109

110-
// Find all runners that are not in Processing state using the lifecycle table
110+
// Find all runners that are not in Processing state using the lifecycle table.
111+
// Exclude runners with no cloud server (CloudServerId == 0) — nothing to delete on the CSP.
111112
var excludedStatuses = new[] { RunnerStatus.Processing, RunnerStatus.DeletionQueued, RunnerStatus.Deleted };
112-
var runnersToKill = await db.Runners
113+
var query = db.Runners
113114
.AsNoTracking()
115+
.Where(r => r.CloudServerId != 0);
116+
117+
if (!string.IsNullOrEmpty(cloud))
118+
{
119+
query = query.Where(r => r.Cloud == cloud);
120+
}
121+
122+
var runnersToKill = await query
114123
.Where(r => db.RunnerLifecycles
115124
.Where(rl => rl.RunnerId == r.RunnerId)
116125
.Any() &&
@@ -120,7 +129,7 @@ public async Task<IResult> KillNonProcessingRunners()
120129
.OrderByDescending(rl => rl.EventTimeUtc)
121130
.Select(rl => rl.Status)
122131
.FirstOrDefault()))
123-
.Select(r => new { r.RunnerId, r.CloudServerId, r.Hostname })
132+
.Select(r => new { r.RunnerId, r.CloudServerId, r.Hostname, r.Cloud })
124133
.ToListAsync();
125134

126135
// Queue deletion for each runner
@@ -133,10 +142,10 @@ public async Task<IResult> KillNonProcessingRunners()
133142
});
134143
}
135144

136-
return Results.Json(new
137-
{
138-
message = $"Queued {runnersToKill.Count} runners for deletion",
139-
killedRunners = runnersToKill.Select(r => new { r.RunnerId, r.Hostname }).ToList()
145+
return Results.Json(new
146+
{
147+
message = $"Queued {runnersToKill.Count} runners for deletion" + (cloud != null ? $" on cloud '{cloud}'" : ""),
148+
killedRunners = runnersToKill.Select(r => new { r.RunnerId, r.Hostname, r.Cloud }).ToList()
140149
});
141150
}
142151

GithubActionsOrchestrator.IntegrationTests/GithubActionsOrchestrator.IntegrationTests.csproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.6.0" />
1313
<PackageReference Include="xunit" Version="2.9.3" />
1414
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -19,16 +19,16 @@
1919
<PrivateAssets>all</PrivateAssets>
2020
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2121
</PackageReference>
22-
<PackageReference Include="coverlet.collector" Version="6.0.4">
22+
<PackageReference Include="coverlet.collector" Version="10.0.1">
2323
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2424
<PrivateAssets>all</PrivateAssets>
2525
</PackageReference>
26-
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.3" />
27-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.3" />
28-
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.3" />
29-
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.3" />
30-
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.3" />
31-
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
26+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.9" />
27+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.9" />
28+
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.9" />
29+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.9" />
30+
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.9" />
31+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.2" />
3232
<PackageReference Include="Moq" Version="4.20.72" />
3333
</ItemGroup>
3434

GithubActionsOrchestrator.csproj

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,26 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="HetznerCloud.API" Version="1.1.9" />
13-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.3" />
14-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.3">
13+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.9" />
14+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.9">
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
<PrivateAssets>all</PrivateAssets>
1717
</PackageReference>
18-
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
18+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.2" />
1919
<PackageReference Include="prometheus-net" Version="8.2.1" />
2020
<PackageReference Include="prometheus-net.AspNetCore" Version="8.2.1" />
2121
<PackageReference Include="RandomFriendlyNameGenerator" Version="1.0.9" />
22-
<PackageReference Include="Sentry" Version="6.1.0" />
22+
<PackageReference Include="Sentry" Version="6.6.0" />
23+
<PackageReference Include="Sentry.AspNetCore" Version="6.6.0" />
2324
<PackageReference Include="Serilog" Version="4.3.1" />
2425
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
25-
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.2" />
26-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.*" />
27-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.*" />
28-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.*" />
29-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.*" />
30-
<PackageReference Include="Pyroscope" Version="0.*" />
31-
<PackageReference Include="Pyroscope.OpenTelemetry" Version="0.*" />
26+
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.2.2" />
27+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.16.0" />
28+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
29+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
30+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.16.0" />
31+
<PackageReference Include="Pyroscope" Version="1.2.0" />
32+
<PackageReference Include="Pyroscope.OpenTelemetry" Version="0.5.0" />
3233
</ItemGroup>
3334

3435
<ItemGroup>

0 commit comments

Comments
 (0)