Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
7b36632
feat: add modal for creating new workflows and update sidebar links
ovvesley May 29, 2025
6049866
fix: update documentation links to point to the GitHub wiki
ovvesley Jul 12, 2025
400c57d
fix: update launch configuration and improve environment variable setup
ovvesley Jul 12, 2025
fa4cb76
feat: implement node and workflow execution repositories, add schedul…
ovvesley Jul 12, 2025
fb6652b
fix: correct table name in ScheduleModel to match database schema
ovvesley Jul 12, 2025
d964a77
feat: add ApiScheduleType struct for schedule entity representation
ovvesley Jul 12, 2025
757dc8c
feat: implement ListSchedulesApiService for retrieving all schedules
ovvesley Jul 12, 2025
997aa0c
feat: implement GetScheduleApiService for retrieving schedule details…
ovvesley Jul 12, 2025
8aef5de
feat: implement CreateScheduleApiService for creating new schedules
ovvesley Jul 12, 2025
b8fd73a
feat: add ScheduleEntity struct with associated methods for schedule …
ovvesley Jul 12, 2025
a2faef7
feat: implement ScheduleApiHandler with methods for schedule management
ovvesley Jul 12, 2025
81eec91
feat: enhance schedule management UI with editor modal and validation…
ovvesley Jul 12, 2025
95d2f6d
feat: add schedule API routes for listing and creating schedules
ovvesley Jul 12, 2025
64c6d2d
feat: implement ScheduleRepository with CRUD operations for schedules
ovvesley Jul 12, 2025
0165d36
feat: update ScheduleModel to include Name field and remove Namespace
ovvesley Jul 12, 2025
8206d77
feat: add ReadJson function to handle JSON decoding with error handling
ovvesley Jul 12, 2025
eac6776
feat: add ScheduleRepository to AppContainer and implement ReadJson i…
ovvesley Jul 12, 2025
3d5b72c
feat: update schedule repository initialization and enhance schedule …
ovvesley Jul 12, 2025
a423a07
feat: fix ListAllSchedules to correctly populate CreatedAt and Update…
ovvesley Jul 12, 2025
10de645
feat: enhance ValidateUserCode to compile user code as a plugin and i…
ovvesley Jul 12, 2025
cb200e0
feat: add optional fields PluginSoPath, CreatedAt, and UpdatedAt to S…
ovvesley Jul 12, 2025
c8ca97e
feat: update ListAllSchedules to include additional fields and implem…
ovvesley Jul 12, 2025
84613c7
feat: update CreateSchedule method to include soFile parameter and en…
ovvesley Jul 13, 2025
36bbcfa
feat: add missing comma in Launch AkoFlow Server configuration and en…
ovvesley Jul 13, 2025
c367dad
feat: update AkoScore function to accept a map input and return a flo…
ovvesley Jul 13, 2025
37a11df
feat: implement RunScheduleService with StartRunningSchedule method t…
ovvesley Aug 10, 2025
4a7c76f
feat: add NodeSelector field to Activity model for enhanced schedulin…
ovvesley Aug 10, 2025
3ff731e
feat: add ActivitySchedule model for managing scheduled activities in…
ovvesley Aug 10, 2025
b003f1d
feat: add memory and CPU utility methods to Node model for resource m…
ovvesley Aug 10, 2025
64e2a9f
feat: implement ActivityRepository methods for managing activity sche…
ovvesley Aug 10, 2025
7c9bcf8
feat: include node_selector in ActivityRepository Find method for enh…
ovvesley Aug 10, 2025
2083df4
feat: implement GetAllRunningActivities method for retrieving active …
ovvesley Aug 10, 2025
2bdd28d
feat: add UpdateNodeSelector method for updating node selector in act…
ovvesley Aug 10, 2025
90441e5
feat: add ActivitySchedule table and update ActivityRepository initia…
ovvesley Aug 10, 2025
c32c098
feat: implement GetNodesByRuntime method for retrieving nodes by runtime
ovvesley Aug 10, 2025
bb63242
fix: correct SQL query in GetScheduleByName to include missing fields
ovvesley Aug 10, 2025
3c2770b
feat: add workflow creation functionality and update related templates
ovvesley Aug 10, 2025
dc8f10d
feat: add memory and CPU requirement methods, and enhance NodeSelecto…
ovvesley Aug 10, 2025
866a5b8
feat: add optional Schedule field to WorkflowSpec for scheduling support
ovvesley Aug 10, 2025
961d308
refactor: remove unnecessary comment in ApplyDistributedJob method
ovvesley Aug 10, 2025
167cb97
feat: enhance node selector handling by incorporating activity schedu…
ovvesley Aug 10, 2025
f11c461
feat: add activity schedule handling to MakeK8sActivityService for im…
ovvesley Aug 10, 2025
7d5acb9
feat: update plugin input parameters for improved scheduling accuracy
ovvesley Aug 10, 2025
f73dbce
feat: implement NodeCurrentMetrics and NodeCurrentMetricsService for …
ovvesley Aug 10, 2025
b03f864
feat: implement OrchestrateScheduleService for managing activity sche…
ovvesley Aug 10, 2025
0eace63
feat: enhance OrchestrateWorflowService with scheduling capabilities …
ovvesley Aug 10, 2025
83f649e
feat: update Kubernetes installation commands for version 1.33 and im…
ovvesley Aug 23, 2025
5bbcf91
feat: enhance workflow and NFS service configurations with new activi…
ovvesley Aug 23, 2025
1ef7e76
feat: add activity scheduling check to prevent duplicate scheduling i…
ovvesley Aug 23, 2025
ca96d2d
feat: add metrics retrieval functionality for Kubernetes runtime and …
ovvesley Aug 23, 2025
f52c0cd
feat: enhance Kubernetes metrics and node management with CPU and mem…
ovvesley Aug 25, 2025
0c17c57
feat: enhance current metrics calculation by incorporating finished a…
ovvesley Aug 25, 2025
363a895
feat: add new workflow schedule with enhanced activity definitions an…
ovvesley Aug 25, 2025
bc8238c
feat: add new workflow schedule with updated activity configurations …
ovvesley Aug 25, 2025
168b824
Add new workflow schedules for synthetic activities
ovvesley Aug 26, 2025
d6b0753
feat: update command execution in setupCommandWorkdir to prevent fail…
ovvesley Aug 30, 2025
84033eb
Add workflow schedules for montage processing
ovvesley Aug 30, 2025
eb5aaa6
feat: make CPU and memory fields optional in K8sJobResourcesLimits
ovvesley Aug 30, 2025
d7a9d34
refactor: remove GetInstanceType method from Node struct
ovvesley Aug 30, 2025
72b3ca4
fix: update machine_type field to use node name instead of instance type
ovvesley Aug 30, 2025
413f20d
feat: add runtime selection to workflow creation modal
ovvesley Aug 30, 2025
ef6ff51
Merge branch 'main' of https://github.com/UFFeScience/akoflow into AK…
ovvesley Aug 30, 2025
b04092b
feat: add Debora Pina to contributors list and remove author details …
ovvesley Aug 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/gh-akf-new-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,13 @@ jobs:
Download the appropriate binary for your platform, make it executable, and add it to your PATH.

### Download Client
For more information, visit [AkôFlow Client documentation](https://akoflow.com/docs/).
For more information, visit [AkôFlow Client documentation](https://github.com/UFFeScience/akoflow/wiki/).

### Download Server
For more information, visit [AkôFlow Server documentation](https://akoflow.com/docs/).
For more information, visit [AkôFlow Server documentation](https://github.com/UFFeScience/akoflow/wiki/).

## Documentation
For more information, visit [AkôFlow documentation](https://akoflow.com/docs/).
For more information, visit [AkôFlow documentation](https://github.com/UFFeScience/akoflow/wiki/).
draft: false
prerelease: false
files: |
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ releases/bin/*
*.db
*.sif
.env
resources/
resources/
keys/
5 changes: 1 addition & 4 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@
"request": "launch",
"mode": "debug",
"program": "cmd/server/main.go",
"env": {
"K8S_API_SERVER_HOST": "localhost",
"K8S_API_SERVER_TOKEN": "dummy",
}
"buildFlags": ["-gcflags=all=-N -l"]
},
{
"name": "Launch AkoFlow Client Run",
Expand Down
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,17 @@ Although initially focused on Kubernetes-based workloads, AkôFlow has evolved t


## Maintainers
* [D.Sc. Daniel de Oliveira — Research Advisor](http://profs.ic.uff.br/~danielcmo/)
* [Wesley Ferreira - @ovvesley — Maintainer](https://github.com/ovvesley)
* Raphael Garcia — Maintainer
## Contributors
* [D.Sc. Daniel de Oliveira — Research Advisor](http://profs.ic.uff.br/~danielcmo/)
* [Wesley Ferreira - @ovvesley — Maintainer - IC/UFF](https://github.com/ovvesley)
* Liliane Kunstmann - COPPE/UFRJ
* Debora Pina - COPPE/UFRJ
* Raphael Garcia — IC/UFF
* [Yuri Frota — IC/UFF](http://www.ic.uff.br/~yuri/)
* [Marcos Bedo — IC/UFF](https://www.professores.uff.br/marcosbedo/)
* [Aline Paes — IC/UFF](http://www.ic.uff.br/~alinepaes/)
* [Luan Teylo — INRIA/Université de Bordeaux](https://team.inria.fr/)



Expand Down
78 changes: 46 additions & 32 deletions pkg/client/resource/multiple-runtimes/wf-01.yaml
Original file line number Diff line number Diff line change
@@ -1,103 +1,117 @@
name: wf-hello-world-gcp
spec:
namespace: "akoflow"
runtime: "k8s"
schedule: "schedule1"
storagePolicy:
storageClassName: "standard"
storageSize: "32Mi"
type: distributed
mountPath: "/data"
activities:
- name: "a"
memoryLimit: 500Mi
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s1"
image: "alpine:3.18"
run: |
echo "Hello World" >> /data/a/output.txt
echo "Hello World" >> output.txt
sleep 5
echo "Hello World Again" >> /data/a/output.txt
echo "Hello World Again" >> output.txt
sleep 5
echo "Hello World One More Time" >> /data/a/output.txt
echo "Hello World One More Time" >> output.txt

- name: "b"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s2"
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Good Afternoon" >> /data/b/output.txt
echo "Good Afternoon" >> output.txt
sleep 5
echo "Good Afternoon Again" >> /data/b/output.txt
echo "Good Afternoon Again" >> output.txt
sleep 5
echo "Good Afternoon One More Time" >> /data/b/output.txt
echo "Good Afternoon One More Time" >> output.txt

- name: "c"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s1"
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Goodbye" >> /data/c/output.txt
echo "Goodbye" >> output.txt
sleep 5
echo "Goodbye Again" >> /data/c/output.txt
echo "Goodbye Again" >> output.txt
sleep 5
echo "Goodbye One More Time" >> /data/c/output.txt
echo "Goodbye One More Time" >> output.txt

- name: "d"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s1"
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Goodbye" >> /data/d/output.txt
echo "Goodbye" >> output.txt
sleep 5
echo "Goodbye Again" >> output.txt
sleep 5
echo "Goodbye Again" >> /data/d/output.txt
echo "Goodbye One More Time" >> output.txt

- name: "e"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Goodbye" >> output.txt
sleep 5
echo "Goodbye One More Time" >> /data/d/output.txt
echo "Goodbye Again" >> output.txt
sleep 5
echo "Goodbye One More Time" >> output.txt
dependsOn:
- "a"
- "b"
- "c"
- "d"

- name: "e"
- name: "f"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s2"
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Goodbye" >> /data/e/output.txt
echo "Goodbye" >> output.txt
sleep 5
echo "Goodbye Again" >> /data/e/output.txt
echo "Goodbye Again" >> output.txt
sleep 5
echo "Goodbye One More Time" >> /data/e/output.txt
echo "Goodbye One More Time" >> output.txt
dependsOn:
- "c"
- name: "f"
- name: "g"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s2"
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Goodbye" >> /data/f/output.txt
echo "Goodbye" >> output.txt
sleep 5
echo "Goodbye Again" >> /data/f/output.txt
echo "Goodbye Again" >> output.txt
sleep 5
echo "Goodbye One More Time" >> /data/f/output.txt
echo "Goodbye One More Time" >> output.txt
dependsOn:
- "d"
- "e"

- name: "g"
- name: "h"
memoryLimit: 500Mi
cpuLimit: 0.5
runtime: "k8s1"
runtime: "k8s"
image: "alpine:3.18"
run: |
echo "Goodbye" >> /data/g/output.txt
echo "Goodbye" >> output.txt
sleep 5
echo "Goodbye Again" >> /data/g/output.txt
echo "Goodbye Again" >> output.txt
sleep 5
echo "Goodbye One More Time" >> /data/g/output.txt
echo "Goodbye One More Time" >> output.txt
sleep 300

dependsOn:
Expand Down
98 changes: 98 additions & 0 deletions pkg/client/resource/schedules/wf-01-a00.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: wf-schedule-a
spec:
namespace: "akoflow"
runtime: "k8s"
schedule: "schedule3"
storagePolicy:
storageClassName: "local-path"
storageSize: "32Mi"
type: distributed
mountPath: "/export"
activities:
- name: "activity1"
memoryLimit: 1543Mi # 1343 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 18763

- name: "activity2"
memoryLimit: 1040Mi # 840 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 14836

- name: "activity3"
memoryLimit: 1245Mi # 1045 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 16547

- name: "activity4"
memoryLimit: 1202Mi # 1002 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 16207
dependsOn:
- "activity1"
- "activity2"

- name: "activity5"
memoryLimit: 1623Mi # 1423 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 19311
dependsOn:
- "activity2"
- "activity3"

- name: "activity6"
memoryLimit: 1574Mi # 1374 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 18975
dependsOn:
- "activity4"
- "activity5"

- name: "activity7"
memoryLimit: 1750Mi # 1550 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 20158
dependsOn:
- "activity6"

- name: "activity8"
memoryLimit: 1090Mi # 890 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 15278
dependsOn:
- "activity6"

- name: "activity9"
memoryLimit: 1365Mi # 1165 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 17474
dependsOn:
- "activity7"
- "activity8"

- name: "activity10"
memoryLimit: 1044Mi # 844 + 200
cpuLimit: 1.0
image: "ovvesley/synthetic:alpha1x86"
run: |
/home/app/bin/synthetic 14871
dependsOn:
- "activity9"
Loading