Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
7308ddd
refactor: modernize Airavata to Spring Boot with service layer archit…
yasithdev Feb 25, 2026
532988e
Remove 6 dead production classes that are no longer referenced
yasithdev Feb 25, 2026
292c8df
Rewrite RestEndpointRegistrationTest to match actual controllers
yasithdev Feb 25, 2026
2c822e7
fix: reduce IdGeneratorTest iterations from 100 to 10 to fix flakiness
yasithdev Feb 25, 2026
7c680a4
Add SaveExperimentOutputsTaskTest with 5 unit tests
yasithdev Feb 25, 2026
f8599a8
Add LocalComputeProviderTest with 5 unit tests
yasithdev Feb 25, 2026
12d4f5d
Add SftpStorageClientTest with 8 unit tests for stageIn and stageOut
yasithdev Feb 25, 2026
c63d323
fix: add GatewayConfigController to CRUD controllers list in test
yasithdev Feb 25, 2026
63f0484
fix: IdGenerator monotonicity bug and Testcontainers Rancher Desktop …
yasithdev Feb 25, 2026
b657a0a
refactor: consolidate Project domain into research/project package
yasithdev Feb 26, 2026
d998eaa
refactor: move TokenResponse to iam/dto package
yasithdev Feb 26, 2026
7182011
refactor: move MonitoringJobStatusController to rest-api module
yasithdev Feb 26, 2026
962d10e
refactor: rename ResourceConfiguration to ResourceConfig
yasithdev Feb 26, 2026
9daaa23
docs: add Temporal-first architecture and legacy cleanup design
yasithdev Feb 26, 2026
ee8d910
docs: add Temporal-first architecture implementation plan
yasithdev Feb 26, 2026
d4d42a5
refactor: remove Thread.sleep retry loops from SlurmComputeProvider
yasithdev Feb 26, 2026
733f308
refactor: remove Thread.sleep and manual retry loops from providers
yasithdev Feb 26, 2026
497ecd3
refactor: inline AwsProcessContext into AwsComputeProvider, delete de…
yasithdev Feb 26, 2026
4b7beec
feat: add RetryTier enum and wire into DAGTemplates metadata
yasithdev Feb 26, 2026
fe7984f
refactor: delete legacy GroupResourceProfile + GroupComputeResourcePr…
yasithdev Feb 26, 2026
f583dce
refactor: replace manual HTTP patterns with Spring utilities in Keycloak
yasithdev Feb 26, 2026
f72a21e
feat: restructure ProcessActivity — each DAG node is its own Temporal…
yasithdev Feb 26, 2026
87dbc17
refactor: delete ProcessDAGEngine — DAG walking moved to Temporal wor…
yasithdev Feb 26, 2026
dcd1250
feat: rewrite EmailMonitorWorkflow as Temporal workflow
yasithdev Feb 26, 2026
97a5131
refactor: migrate AgentManagementService from deleted legacy stubs to…
yasithdev Feb 26, 2026
fb5f052
refactor: remove deprecated accessors and migrate callers
yasithdev Feb 26, 2026
8ce2014
refactor: resolve AWS TODOs — integrate ResourceProfileAdapter for co…
yasithdev Feb 26, 2026
8609bea
chore: clean stale comments, fix swallowed exceptions, remove dead field
yasithdev Feb 26, 2026
782cfc6
chore: remove dead DBConstants, commented code, and magic number
yasithdev Feb 26, 2026
cb278e2
fix: close resource leaks and guard against NPE
yasithdev Feb 26, 2026
92ed993
chore: update stale 'registry' terminology and bean naming
yasithdev Feb 26, 2026
57538dc
fix: resolve all compilation warnings in production code
yasithdev Feb 26, 2026
32580ad
fix: replace deprecated RabbitMQContainer.withVhost()
yasithdev Feb 26, 2026
82c7ff7
chore: remove stale dependencies and fix compiler warnings
yasithdev Feb 26, 2026
65eeadb
Refactor REST API Controllers and Exception Handling
yasithdev Feb 27, 2026
e9057f7
Consolidate monorepo structure and restructure deployment files
yasithdev Feb 27, 2026
b6556b6
chore: untrack dev keystore files from git
yasithdev Feb 27, 2026
db8df4a
Update keystore generation script for multi-domain TLS and standalone…
yasithdev Feb 27, 2026
53ac578
Clean up tracked generated files, fix broken Maven module paths, and …
yasithdev Feb 27, 2026
8c6f1ab
feat(deployment): Add Kubernetes manifests for Airavata services
yasithdev Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
70 changes: 0 additions & 70 deletions .devcontainer/Dockerfile

This file was deleted.

214 changes: 214 additions & 0 deletions .devcontainer/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
# Airavata development: core services + devcontainer
# Credentials: .devcontainer/dev.env.defaults (single source of truth)
# Shared config: conf/ at repo root (init-db, keycloak)
#
# ./scripts/run or init.sh [--clean] [--run] then dev.sh serve
# Profiles: (none) = core | test = + slurm, sftp
#
# Local hostnames (add to /etc/hosts if desired):
# 127.0.0.1 airavata.localhost api.airavata.localhost auth.airavata.localhost db.airavata.localhost temporal.airavata.localhost
#
# Service ports on host:
# auth.airavata.localhost:18080 — Keycloak
# api.airavata.localhost:8090 — API Server (run via mvn spring-boot:run)
# db.airavata.localhost:13306 — MariaDB
# temporal.airavata.localhost:7233/8233 — Temporal gRPC/UI
# airavata.localhost:3000 — Portal (run via npm run dev)

networks:
airavata-network:
driver: bridge

volumes:
db_data:
slurm-data:
slurm-config:
slurm-logs:
sftp-data:
sftp-keys:

services:
# ===========================================
# CORE SERVICES (always started)
# ===========================================

keycloak:
image: keycloak/keycloak:26.5
container_name: keycloak
restart: always
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
volumes:
- ../conf/keycloak/keycloak.conf:/opt/keycloak/conf/keycloak.conf
command: ["start"]
networks:
- airavata-network
ports:
- "18080:18080"
healthcheck:
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/localhost/18080'"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s

keycloak-setup:
image: alpine:3.19
container_name: keycloak-setup
env_file:
- ./dev.env.defaults
depends_on:
keycloak:
condition: service_healthy
environment:
KEYCLOAK_URL: http://keycloak:18080
KEYCLOAK_INIT_WIPE: "true"
# INCLUDE_CILOGON: "true"
# CILOGON_CLIENT_ID: "cilogon:/client_id/..."
# CILOGON_CLIENT_SECRET: "..."
# INCLUDE_SIDECAR_AGENT: "true"
# INCLUDE_JUPYTERLAB: "true"
# JUPYTERLAB_CLIENT_SECRET: "..."
volumes:
- ../conf/keycloak/setup-keycloak.sh:/setup-keycloak.sh:ro
entrypoint: ["/bin/sh", "-c"]
command: ["apk add --no-cache bash curl jq >/dev/null 2>&1 && bash /setup-keycloak.sh"]
networks:
- airavata-network
restart: "no"

db:
image: mariadb:11.7
container_name: db
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: airavata
MYSQL_USER: airavata
MYSQL_PASSWORD: 123456
volumes:
- db_data:/var/lib/mysql
- ../conf/init-db:/docker-entrypoint-initdb.d:ro
command:
- mariadbd
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --sql-mode=NO_ENGINE_SUBSTITUTION
networks:
- airavata-network
ports:
- "13306:3306"
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "airavata", "-p123456"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s

temporal:
image: temporalio/admin-tools:latest
container_name: temporal
restart: always
entrypoint: ["temporal"]
command: ["server", "start-dev", "--ip", "0.0.0.0", "--db-filename", "/tmp/temporal.db"]
networks:
- airavata-network
ports:
- "7233:7233"
- "8233:8233"
healthcheck:
test: ["CMD", "temporal", "operator", "cluster", "health"]
interval: 10s
timeout: 5s
retries: 10
start_period: 15s

adminer:
image: adminer:latest
container_name: adminer
restart: always
depends_on:
db:
condition: service_healthy
environment:
ADMINER_DEFAULT_SERVER: db
networks:
- airavata-network
ports:
- "8081:8080"

devcontainer:
image: mcr.microsoft.com/devcontainers/base:ubuntu
container_name: airavata-devcontainer
depends_on:
db:
condition: service_healthy
keycloak:
condition: service_healthy
temporal:
condition: service_healthy
volumes:
- ..:/home/developer/workspace:cached
working_dir: /home/developer/workspace
network_mode: host
command: sleep infinity

# ===========================================
# TEST PROFILE SERVICES
# ===========================================
# Start with: docker compose --profile test up

slurm-test-cluster:
build:
context: ./test-infra/slurm
dockerfile: Dockerfile
image: airavata-test-slurm:latest
container_name: airavata-test-slurm
hostname: slurm-test-cluster
profiles:
- test
ports:
- "10022:22"
- "6817:6817"
- "6818:6818"
environment:
SLURM_CONF: /etc/slurm/slurm.conf
volumes:
- slurm-data:/var/lib/slurm
- slurm-config:/etc/slurm
- slurm-logs:/var/log/slurm
networks:
- airavata-network
healthcheck:
test: ["CMD", "sinfo", "--version"]
interval: 10s
timeout: 5s
retries: 5
command: /usr/sbin/slurmd -D

sftp-test-server:
build:
context: ./test-infra/sftp
dockerfile: Dockerfile
image: airavata-test-sftp:latest
container_name: airavata-test-sftp
hostname: sftp-test-server
profiles:
- test
ports:
- "10023:22"
environment:
SFTP_USER: testuser
SFTP_PASSWORD: testpass
SFTP_ROOT: /home/testuser/data
volumes:
- sftp-data:/home/testuser/data
- sftp-keys:/home/testuser/.ssh
networks:
- airavata-network
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "22"]
interval: 10s
timeout: 5s
retries: 5
3 changes: 0 additions & 3 deletions .devcontainer/database_scripts/init/00-accounts.sql

This file was deleted.

Loading
Loading