Client Libraries
Overview
Armada provides official client libraries for multiple programming languages, making it easy to integrate Armada into your applications. These libraries wrap the Armada gRPC APIs and provide type-safe, idiomatic interfaces for your preferred language.
All client libraries support the core Armada features:
- Submitting, canceling, and reprioritizing jobs
- Watching for job events
- Managing queues
- Stream processing and real-time updates
Available Client Libraries
Python Client
Install from PyPI: pip install armada-client. Full-featured Python client with comprehensive documentation
.NET Client
C# client library for .NET Standard 2.0. Perfect for .NET applications and services
Java Client
Java client library for JVM-based applications and services
Scala Client
Scala client library for Scala applications and Spark integrations
Go Client
Go client package for building Go applications that interact with Armada
Python Client
The Python client is the most mature and feature-rich client library. It's available on PyPI and can be installed with:
pip install armada-clientRequirements
- Python 3.9+ - Required Python version
Features
- Full support for all Armada operations
- Event streaming and job watching
- Comprehensive documentation and examples
- Type hints for better IDE support
Quick Start
import grpc
from armada_client.client import ArmadaClient
from armada_client.k8s.io.api.core.v1 import generated_pb2 as core_v1
# Create client
channel = grpc.insecure_channel("localhost:50051")
client = ArmadaClient(channel)
# Submit a job
job = client.submit_jobs(
queue="my-queue",
job_set_id="my-job-set",
job_request_items=[job_request]
)
# Watch job events
for event in client.get_job_events_stream(queue="my-queue", job_set_id="my-job-set"):
print(event)Full Python Client Documentation Python Client Repository
.NET Client
The .NET client provides C# bindings for Armada. It supports .NET Standard 2.0 and can be built from source.
Package Information
- Package ID:
ArmadaProject.Io.Client - Target Framework: .NET Standard 2.0
Features
- Full gRPC API coverage
- Async/await support
- Strong typing with Protocol Buffers
Java Client
The Java client provides JVM-based applications with access to Armada functionality.
Requirements
- Java 11 - Required Java version (required by Jenkins K8s plugin)
- Maven 3.9.9 - Build tool
Features
- Full gRPC support
- Compatible with Java 11+
- Works with JVM languages (Java, Kotlin, etc.)
Building
Build from the root of the Armada repository:
mage BuildJavaScala Client
The Scala client is designed for Scala applications and is particularly useful for Spark integrations.
Features
- Native Scala API
- Spark integration support
- Type-safe operations
Building
Build from the root of the Armada repository:
# First, prepare proto files
mage BootstrapProto
# Then build Scala client
cd client/scala/armada-scala-client
mvn packageOr build in isolation from the repository root:
mage buildScalaGo Client
The Go client is part of the Armada codebase and is used internally by armadactl. It can be imported as a Go package.
Features
- Native Go implementation
- Used by armadactl CLI
- Full API coverage
Usage
Import the client package in your Go code:
import "github.com/armadaproject/armada/pkg/client"API Documentation
For comprehensive API documentation across all clients:
- Python API Documentation - Python client source code and examples
- Server API Documentation - REST and gRPC API reference
Choosing a Client
- Python: Best for data science, ML workflows, and scripting
- .NET: Best for C# applications and .NET services
- Java: Best for Java applications and enterprise services
- Scala: Best for Scala applications and Spark workloads
- Go: Best for Go applications and contributing to Armada tooling
Last updated on