diff --git a/.devcontainer/demo/README.md b/.devcontainer/demo/README.md
index 991fe793f8b..1221fbeffee 100644
--- a/.devcontainer/demo/README.md
+++ b/.devcontainer/demo/README.md
@@ -5,7 +5,7 @@ Run this when the script completes
```bash
# If you are at the root of the repo
cd .devcontainer/demo
-./armadactl create queue test --priorityFactor 1
+./armadactl create queue test --priority-factor 1
./armadactl submit jobs.yaml
./armadactl watch test job-set-1
```
@@ -21,4 +21,4 @@ Forward these ports:
- 10000: Lookoutv2 API
- 8080: Armada Server API
-and go to: http://localhost:8089
\ No newline at end of file
+and go to: http://localhost:8089
diff --git a/.github/actions/setup-go-cache/action.yml b/.github/actions/setup-go-cache/action.yml
index 5754efd7063..53d21cde1a1 100644
--- a/.github/actions/setup-go-cache/action.yml
+++ b/.github/actions/setup-go-cache/action.yml
@@ -5,9 +5,9 @@ inputs:
description: "Prefix for the cache key"
required: true
go-version:
- description: "Version of Go. Default 1.20"
+ description: "Version of Go. Default 1.21"
required: false
- default: "1.20"
+ default: "1.21"
cache-tools:
description: "True/false flag to cache tools"
required: false
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4ca0ff98457..5d5b408dec7 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,7 +24,7 @@ jobs:
- uses: goreleaser/goreleaser-action@v5
with:
distribution: goreleaser
- version: v1.20.0
+ version: v1.24.0
args: release --snapshot --skip-sbom --skip-sign --clean
env:
DOCKER_REPO: "gresearch"
@@ -88,5 +88,4 @@ jobs:
with:
name: nupkg-artifacts
path: |
- ./bin/client/DotNet/G-Research.Armada.Client.${{ steps.create-release-tag.outputs.release_tag }}.nupkg
./bin/client/DotNet/ArmadaProject.Io.Client.${{ steps.create-release-tag.outputs.release_tag }}.nupkg
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 87fae9f257a..cf53c857ed3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -83,7 +83,7 @@ jobs:
uses: goreleaser/goreleaser-action@v5
with:
distribution: goreleaser
- version: v1.19.2
+ version: v1.24.0
args: "-f ./.goreleaser.yml release --clean"
env:
FULL_RELEASE: true
@@ -119,4 +119,4 @@ jobs:
TAG: ${{ github.event.workflow_run.head_branch }}
run: |
VERSION=${TAG#v}
- dotnet nuget push ./bin/client/DotNet/G-Research.Armada.Client.$VERSION.nupkg ./bin/client/DotNet/ArmadaProject.Io.Client.$VERSION.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
+ dotnet nuget push ./bin/client/DotNet/ArmadaProject.Io.Client.$VERSION.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
diff --git a/.gitignore b/.gitignore
index d3f2315c6b8..806150767e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -70,7 +70,6 @@ msbuild.log
msbuild.err
msbuild.wrn
packages
-client/DotNet.gRPC/Armada.Client.Grpc/generated
# python
# Pycache, dist, poetry versions
@@ -94,6 +93,7 @@ build/ssl/certs/ca-certificates.crt
developer/volumes/go/pkg/
.coverage
coverage.xml
+.venv
# Yarn
developer/yarn.lock
diff --git a/.goreleaser.yml b/.goreleaser.yml
index 3b32929e0ee..229b42622e2 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -19,7 +19,7 @@ env:
# To use a builder other than "default", set this variable.
# Necessary for, e.g., GitHub actions cache integration.
- DOCKER_BUILDX_BUILDER={{ if index .Env "DOCKER_BUILDX_BUILDER" }}{{ .Env.DOCKER_BUILDX_BUILDER }}{{ else }}default{{ end }}
- - GOVERSION={{ if index .Env "GOVERSION" }}{{ .Env.GOVERSION }}{{ else }}go1.20{{ end }}
+ - GOVERSION={{ if index .Env "GOVERSION" }}{{ .Env.GOVERSION }}{{ else }}go1.21{{ end }}
builds:
- env: [CGO_ENABLED=0]
@@ -49,15 +49,6 @@ builds:
- linux
goarch:
- amd64
- - env: [CGO_ENABLED=0]
- id: pulsartest
- binary: pulsartest
- main: ./cmd/pulsartest/main.go
- mod_timestamp: '{{ .CommitTimestamp }}'
- goos:
- - linux
- goarch:
- - amd64
- env: [CGO_ENABLED=0]
id: testsuite
binary: testsuite
diff --git a/.run/Armada (Pulsar Scheduler).run.xml b/.run/Armada.run.xml
similarity index 73%
rename from .run/Armada (Pulsar Scheduler).run.xml
rename to .run/Armada.run.xml
index 74f89fac343..40beed40d1a 100644
--- a/.run/Armada (Pulsar Scheduler).run.xml
+++ b/.run/Armada.run.xml
@@ -1,11 +1,11 @@
-
+
-
-
+
+
@@ -15,10 +15,10 @@
-
-
+
+
-
\ No newline at end of file
+
diff --git a/.run/Pulsar Executor.run.xml b/.run/Executor.run.xml
similarity index 86%
rename from .run/Pulsar Executor.run.xml
rename to .run/Executor.run.xml
index 8db3ac1d0f5..1bac201ed06 100644
--- a/.run/Pulsar Executor.run.xml
+++ b/.run/Executor.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/.run/Legacy Server.run.xml b/.run/Legacy Server.run.xml
deleted file mode 100644
index 9f9ab23577c..00000000000
--- a/.run/Legacy Server.run.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/Lookout Ingester V2.run.xml b/.run/Lookout Ingester V2.run.xml
index b3fb083fc3a..58e7bdbdfdd 100644
--- a/.run/Lookout Ingester V2.run.xml
+++ b/.run/Lookout Ingester V2.run.xml
@@ -4,7 +4,6 @@
-
@@ -15,4 +14,4 @@
-
\ No newline at end of file
+
diff --git a/.run/LookoutV2.run.xml b/.run/LookoutV2.run.xml
index 5a027f8431a..c01ec8f5b09 100644
--- a/.run/LookoutV2.run.xml
+++ b/.run/LookoutV2.run.xml
@@ -4,7 +4,6 @@
-
@@ -14,4 +13,4 @@
-
\ No newline at end of file
+
diff --git a/.run/Run Migrations.run.xml b/.run/Run Migrations.run.xml
new file mode 100644
index 00000000000..b8f0bbf4a45
--- /dev/null
+++ b/.run/Run Migrations.run.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/Scheduler.run.xml b/.run/Scheduler.run.xml
index cb03b1195c0..d9beb38c734 100644
--- a/.run/Scheduler.run.xml
+++ b/.run/Scheduler.run.xml
@@ -4,11 +4,11 @@
+
-
@@ -16,4 +16,4 @@
-
\ No newline at end of file
+
diff --git a/.run/Pulsar Server.run.xml b/.run/Server.run.xml
similarity index 83%
rename from .run/Pulsar Server.run.xml
rename to .run/Server.run.xml
index e6b56d783ba..43a19f219b0 100644
--- a/.run/Pulsar Server.run.xml
+++ b/.run/Server.run.xml
@@ -1,15 +1,15 @@
-
+
+
-
diff --git a/.run/Start Dependencies.run.xml b/.run/Start Dependencies.run.xml
new file mode 100644
index 00000000000..05d264d9ddf
--- /dev/null
+++ b/.run/Start Dependencies.run.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/lookoutv2PostgresMigration.run.xml b/.run/lookoutv2PostgresMigration.run.xml
index 7379481ca7b..be782ff2ecc 100644
--- a/.run/lookoutv2PostgresMigration.run.xml
+++ b/.run/lookoutv2PostgresMigration.run.xml
@@ -5,7 +5,6 @@
-
diff --git a/README.md b/README.md
index 2ccda4be29e..b2ab387df87 100644
--- a/README.md
+++ b/README.md
@@ -46,6 +46,7 @@ For documentation, see the following:
- [User guide](./docs/user.md)
- [Quickstart](./docs/quickstart/index.md)
- [Development guide](./docs/developer.md)
+- [Release notes/Version history](https://github.com/armadaproject/armada/releases)
- [API Documentation](./docs/developer/api.md)
We expect readers of the documentation to have a basic understanding of Docker and Kubernetes; see, e.g., the following links:
diff --git a/build/airflow-operator/Dockerfile b/build/airflow-operator/Dockerfile
index ff086bf72be..a3d774b30d6 100644
--- a/build/airflow-operator/Dockerfile
+++ b/build/airflow-operator/Dockerfile
@@ -1,6 +1,6 @@
-ARG PYTHON_VERSION=3.8.15
-
-FROM --platform=x86_64 python:${PYTHON_VERSION}-buster
+ARG PLATFORM=x86_64
+ARG BASE_IMAGE=python:3.8.18-bookworm
+FROM --platform=$PLATFORM ${BASE_IMAGE}
RUN mkdir /proto
diff --git a/build/python-client/Dockerfile b/build/python-client/Dockerfile
index f59e3c4566b..10aa957944b 100644
--- a/build/python-client/Dockerfile
+++ b/build/python-client/Dockerfile
@@ -1,6 +1,7 @@
-ARG PYTHON_VERSION=3.8.18
+ARG PLATFORM=x86_64
+ARG BASE_IMAGE=python:3.8.18-bookworm
-FROM --platform=x86_64 python:${PYTHON_VERSION}-bookworm
+FROM --platform=$PLATFORM ${BASE_IMAGE}
RUN mkdir /proto
diff --git a/client/DotNet/Armada.Client.Test/Armada.Client.Test.csproj b/client/DotNet/Armada.Client.Test/Armada.Client.Test.csproj
deleted file mode 100644
index 0c59ea66656..00000000000
--- a/client/DotNet/Armada.Client.Test/Armada.Client.Test.csproj
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- netcoreapp3.0
-
- false
-
- GResearch.Armada.Client.Test
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/client/DotNet/Armada.Client.Test/Tests.cs b/client/DotNet/Armada.Client.Test/Tests.cs
deleted file mode 100644
index 032246c5f2f..00000000000
--- a/client/DotNet/Armada.Client.Test/Tests.cs
+++ /dev/null
@@ -1,128 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Net.Http;
-using System.Linq;
-using System.Net.Http.Headers;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using NUnit.Framework;
-using GResearch.Armada.Client;
-using RichardSzalay.MockHttp;
-
-namespace GResearch.Armada.Client.Test
-{
- public class Tests
- {
- [Test]
- [Explicit("Intended for manual testing against armada server with proxy.")]
- public async Task TestWatchingEvents()
- {
- var client = new ArmadaClient("http://localhost:8080", new HttpClient());
-
- var queue = "test";
- var jobSet = $"set-{Guid.NewGuid()}";
-
- // produce some events
- await client.CreateQueueAsync(new ApiQueue {Name = queue, PriorityFactor = 200});
- var request = CreateJobRequest(jobSet);
- var response = await client.SubmitJobsAsync(request);
- var cancelResponse =
- await client.CancelJobsAsync(new ApiJobCancelRequest {Queue = "test", JobSetId = jobSet});
-
- using (var cts = new CancellationTokenSource())
- {
- var eventCount = 0;
- Task.Run(() => client.WatchEvents(queue, jobSet, null, cts.Token, m => eventCount++, e => throw e));
- await Task.Delay(TimeSpan.FromMinutes(2));
- cts.Cancel();
- Assert.That(eventCount, Is.EqualTo(4));
- }
- }
-
- [Test]
- public async Task TestSimpleJobSubmitFlow()
- {
- var queue = "test";
- var jobSet = $"set-{Guid.NewGuid()}";
-
- IArmadaClient client = new ArmadaClient("http://localhost:8080", new HttpClient());
- await client.CreateQueueAsync(new ApiQueue {Name = queue, PriorityFactor = 200});
-
- var request = CreateJobRequest(jobSet);
-
- var response = await client.SubmitJobsAsync(request);
- var cancelResponse =
- await client.CancelJobsAsync(new ApiJobCancelRequest {Queue = "test", JobSetId = jobSet});
- var events = await client.GetJobEventsStream(queue, jobSet, watch: false);
- var allEvents = events.ToList();
-
- Assert.That(allEvents, Is.Not.Empty);
- Assert.That(allEvents[0].Result.Message.Submitted, Is.Not.Null);
- }
-
- [Test]
- public async Task TestProcessingUnknownEvents()
- {
- var mockHttp = new MockHttpMessageHandler();
- mockHttp.When("http://localhost:8080/*")
- .Respond("application/json",
- @"{""result"":{""Id"":""1593611590122-0"",""message"":{""Queued"":{""JobId"":""01ec5ae6f9wvya6cr6stzwty7v"",""JobSetId"":""set-bae48cc8-9f70-465f-ae5c-c92713b5f24f"",""Queue"":""test"",""Created"":""2020-07-01T13:53:10.122263955Z""}}}}
- {""result"":{""Id"":""1593611590122-0"",""message"":{""UnknownEvent"":""test""}}}
- {""error"": ""test error""}
- {}
-
- {""a"":""b""}");
-
- IArmadaClient client = new ArmadaClient("http://localhost:8080", new HttpClient(mockHttp));
- var events = (await client.GetJobEventsStream("queue", "jobSet", watch: false)).ToList();
- Assert.That(events.Count(), Is.EqualTo(2));
- Assert.That(events[0].Result.Message.Event, Is.Not.Null);
- Assert.That(events[1].Error, Is.EqualTo("test error"));
- }
-
- private static ApiJobSubmitRequest CreateJobRequest(string jobSet)
- {
- var pod = new V1PodSpec
- {
- Containers = new[]
- {
- new V1Container
- {
- Name = "Container1",
- Image = "index.docker.io/library/ubuntu:latest",
- Args = new[] {"sleep", "10s"},
- SecurityContext = new V1SecurityContext {RunAsUser = 1000},
- Resources = new V1ResourceRequirements
- {
- Requests = new V1ResourceList
- {
- ["cpu"] = "120m",
- ["memory"] = "512Mi"
- },
- Limits = new V1ResourceList
- {
- ["cpu"] = "120m",
- ["memory"] = "512Mi"
- }
- }
- }
- }
- };
-
- return new ApiJobSubmitRequest
- {
- Queue = "test",
- JobSetId = jobSet,
- JobRequestItems = new[]
- {
- new ApiJobSubmitRequestItem
- {
- Priority = 1,
- PodSpec = pod
- }
- },
- };
- }
- }
-}
diff --git a/client/DotNet/Armada.Client.sln b/client/DotNet/Armada.Client.sln
index b08d1f87c78..22ab8ac90c6 100644
--- a/client/DotNet/Armada.Client.sln
+++ b/client/DotNet/Armada.Client.sln
@@ -1,9 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Armada.Client", "Armada.Client\Armada.Client.csproj", "{8016908D-697F-48B0-9AAA-048A64A06FA8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Armada.Client.Test", "Armada.Client.Test\Armada.Client.Test.csproj", "{FFF216CF-27D6-4E56-B472-30092FF6AE4D}"
-EndProject
Project("{C67ED064-D6AE-4CC6-8EED-B831AEC436C3}") = "ArmadaProject.Io.Client", "ArmadaProject.Io.Client\ArmadaProject.Io.Client.csproj", "{C67ED064-D6AE-4CC6-8EED-B831AEC436C3}"
EndProject
Project("{042CF01C-060C-4B27-A5B7-E7500636451A}") = "ArmadaProject.Io.Client.Test", "ArmadaProject.Io.Client.Test\ArmadaProject.Io.Client.Test.csproj", "{042CF01C-060C-4B27-A5B7-E7500636451A}"
@@ -14,14 +10,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {8016908D-697F-48B0-9AAA-048A64A06FA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8016908D-697F-48B0-9AAA-048A64A06FA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8016908D-697F-48B0-9AAA-048A64A06FA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8016908D-697F-48B0-9AAA-048A64A06FA8}.Release|Any CPU.Build.0 = Release|Any CPU
- {FFF216CF-27D6-4E56-B472-30092FF6AE4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FFF216CF-27D6-4E56-B472-30092FF6AE4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FFF216CF-27D6-4E56-B472-30092FF6AE4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FFF216CF-27D6-4E56-B472-30092FF6AE4D}.Release|Any CPU.Build.0 = Release|Any CPU
{C67ED064-D6AE-4CC6-8EED-B831AEC436C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C67ED064-D6AE-4CC6-8EED-B831AEC436C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C67ED064-D6AE-4CC6-8EED-B831AEC436C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/client/DotNet/Armada.Client/Armada.Client.csproj b/client/DotNet/Armada.Client/Armada.Client.csproj
deleted file mode 100644
index a6423b24cda..00000000000
--- a/client/DotNet/Armada.Client/Armada.Client.csproj
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
- netstandard2.0
- G-Research.Armada.Client
- 0.0.1
- G-Research
- G-Research
- Armada.Client is a .NET core library for communicating with Armada server implemented in C#
- Copyright G-Research 2019
- https://github.com/armadaproject/armada
- armada gresearch g-research .net c# dotnet
- Apache-2.0
- GResearch.Armada.Client
-
-
-
- all
- runtime; build; native; contentfiles; analyzers
-
-
-
-
-
-
-
-
-
diff --git a/client/DotNet/Armada.Client/Client.cs b/client/DotNet/Armada.Client/Client.cs
deleted file mode 100644
index d0690fd5fdd..00000000000
--- a/client/DotNet/Armada.Client/Client.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using Newtonsoft.Json;
-
-namespace GResearch.Armada.Client
-{
- public interface IEvent
- {
- string JobId { get; }
- string JobSetId { get; }
- string Queue { get; }
- System.DateTimeOffset? Created { get; }
- }
-
- public interface IArmadaClient
- {
- Task CancelJobsAsync(ApiJobCancelRequest body);
- Task SubmitJobsAsync(ApiJobSubmitRequest body);
- Task