Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
862b167
Fix typos in log messages and file paths within deploy scripts
almartino Jun 13, 2025
95df455
Add utilities for managing deployment info: sync, remove, and cleanup
almartino Jun 16, 2025
fb5a109
sync deploy info when executing deploy command
almartino Jun 16, 2025
2f52125
refactor undeploy task
almartino Jun 16, 2025
ad38a02
add undeploy functionality to deployment script
almartino Jun 16, 2025
7a3ce0d
add undeploy functionality for actions and packages to deployment script
almartino Jun 16, 2025
449ddaa
Merge remote-tracking branch 'upstream/main' into issue-117
d4rkstar Jul 12, 2025
6e75b07
fix: minor modifications
d4rkstar Jul 12, 2025
837673b
feat: ingressclass config
d4rkstar Sep 20, 2025
5e8cc83
Merge pull request #156 from d4rkstar/issue_173
francescotimperioss Sep 20, 2025
b122a19
fixes
d4rkstar Sep 20, 2025
4ef8123
support for tls for streamer
sciabarracom Sep 20, 2025
f0ca3ad
Merge pull request #157 from apache/support-tls-streamer
d4rkstar Sep 22, 2025
c12258d
feat: slim setup now defaults to seaweedfs
francescotimperioss Sep 24, 2025
27dafc5
feature: config tasks supports seaweedfs which is becoming standard f…
francescotimperioss Sep 24, 2025
adbb9b8
Merge branch 'main' into internal_registry
d4rkstar Sep 25, 2025
173de19
Merge pull request #158 from francescotimperi/seaweedfs-task
d4rkstar Sep 25, 2025
809f6ec
fix: ops admin should support seaweedfs
d4rkstar Sep 25, 2025
f013092
fix: various fixes
d4rkstar Sep 25, 2025
7459ffb
Merge pull request #159 from d4rkstar/main
francescotimperioss Sep 25, 2025
c1bdde5
Merge branch 'main' into internal_registry
d4rkstar Sep 25, 2025
ec1cc72
feat: integrate system-api with builder support
d4rkstar Sep 28, 2025
537cd74
chore: support for flags in nuvolaris add-user
d4rkstar Sep 28, 2025
20f1386
Merge pull request #160 from d4rkstar/internal_registry
francescotimperioss Sep 28, 2025
90cdb2b
Merge pull request #161 from d4rkstar/main
francescotimperioss Sep 29, 2025
1e8587e
chore: upgraded operator
d4rkstar Oct 1, 2025
5f77b55
fix: fixed systemapi tasks
d4rkstar Oct 2, 2025
9628732
Merge pull request #165 from d4rkstar/main
sciabarracom Oct 2, 2025
b2e632d
Add default value for registry password in Whisk CR template
mobs75 Oct 25, 2025
f2dffc6
Merge pull request #98 from almartino/issue-117
sciabarracom Oct 25, 2025
b041e8c
Merge pull request #166 from mobs75/fix/registry-password-default
d4rkstar Oct 25, 2025
ef7d7bc
fix: add default value for SeaweedFS password in whisk.yaml template
mobs75 Oct 26, 2025
5cff066
fix: allow args to be compliant with formatters
wtfzambo Oct 27, 2025
0d95e61
fix: adapt regex to include single letter args (e.g. -a)
wtfzambo Oct 27, 2025
a4ed07a
addedd port
sciabarracom Oct 2, 2025
c2d1e3b
single node miniops
sciabarracom Oct 31, 2025
3a44ea4
Merge pull request #169 from apache/single-node-miniops
d4rkstar Oct 31, 2025
d96ec2e
Merge pull request #167 from mobs75/fix/seaweedfs-password-default
d4rkstar Nov 1, 2025
bd6dc40
fix undeploy
sciabarracom Nov 2, 2025
9926704
fix: serving binary assets
d4rkstar Nov 2, 2025
8e26af5
fix race condition in ide deploy
wtfzambo Nov 2, 2025
8902ef5
fix: no async for buildZip in deploy
d4rkstar Nov 2, 2025
1b23659
Merge pull request #171 from d4rkstar/main
d4rkstar Nov 2, 2025
761a252
Merge pull request #168 from wtfzambo/main
d4rkstar Nov 2, 2025
62c607f
Merge pull request #170 from d4rkstar/issue_182
sciabarracom Nov 2, 2025
fc5d6e5
fixed systemapi bug
msciabarra Nov 6, 2025
9f1357b
add minipos parametric
msciabarra Nov 6, 2025
6e657d6
Merge pull request #172 from sciabarracom/custom-domain-miniops
d4rkstar Nov 6, 2025
d2d36e1
trim whitespaces
sciabarracom Nov 9, 2025
bb44e51
fix cond
msciabarra Nov 9, 2025
415e2c9
trim
sciabarracom Nov 9, 2025
6467dcb
Merge pull request #173 from apache/partial-deploy
d4rkstar Nov 9, 2025
50c5441
debug
sciabarracom Nov 25, 2025
ee5255d
off
sciabarracom Nov 25, 2025
6b36a70
bump kind to 0.30.0
sciabarracom Nov 29, 2025
ab17783
remote devcluster for now
sciabarracom Nov 29, 2025
6d76865
Merge pull request #176 from apache/update-kind-0.3.0
d4rkstar Nov 29, 2025
9154f6e
fix: bug fixing
d4rkstar Dec 6, 2025
ea305aa
Merge pull request #177 from d4rkstar/main
sciabarracom Dec 7, 2025
ad43278
devcluster disappeared
sciabarracom Dec 8, 2025
a3e9066
fix systemapi deploy
sciabarracom Dec 8, 2025
912eb83
Merge pull request #178 from apache/fix-systemapi-deploy
d4rkstar Dec 8, 2025
ab08b03
fix streamer deploy
Dec 9, 2025
c6a5d22
fix streamer deploy and cosmetic changes
Dec 9, 2025
5ac1024
Merge pull request #179 from nuvolaris/fix-stremer-deploy
d4rkstar Dec 9, 2025
58d146c
fix ops ide login
sciabarracom Nov 30, 2025
9faad83
silent
Dec 9, 2025
1eb5edb
Merge pull request #181 from nuvolaris/ops-ide-login
d4rkstar Dec 9, 2025
f7435ae
fix(kind): use registry.config_path instead of deprecated configs pro…
d4rkstar Dec 10, 2025
e909ebf
chore: update admin api
d4rkstar Dec 10, 2025
7a42bc0
Merge pull request #182 from d4rkstar/main
sciabarracom Dec 11, 2025
b67a190
work-in-progress
Dec 9, 2025
d40e727
offline images
Dec 10, 2025
b06a1ea
freezer and unfreezer
msciabarra Dec 11, 2025
699b251
intall with preloaded images
msciabarra Dec 12, 2025
f7fd3f3
use a differet folder
Dec 12, 2025
d528a69
fixes to images
msciabarra Dec 14, 2025
710cda4
Merge pull request #183 from nuvolaris/offline-images
d4rkstar Dec 14, 2025
9a18a5b
urgent fix
Dec 14, 2025
e3c4a77
extra config user dependent for deploy
Dec 14, 2025
59b0a1b
Merge pull request #184 from nuvolaris/extra-config
d4rkstar Dec 15, 2025
21f7fab
reworked ingress
Dec 16, 2025
5e03818
Merge pull request #185 from nuvolaris/operator-fixed-images
d4rkstar Dec 16, 2025
6dd0d81
commentin kubefwd
Dec 30, 2025
e4f4ee9
adding BASE to freeze
msciabarra Jan 4, 2026
61f7fc2
select platform
msciabarra Jan 8, 2026
5829808
added some checks
msciabarra Jan 8, 2026
06597a9
fixes to image load
msciabarra Jan 8, 2026
794c7ee
opsfile
msciabarra Jan 8, 2026
8c880dc
fxes
michele-sciabarra Jan 10, 2026
46d884c
fixed typo
msciabarra Jan 11, 2026
1029ec0
race conditions in nginx ingrees
msciabarra Jan 12, 2026
d2b2e02
Merge pull request #188 from nuvolaris/bestia
sciabarracom Jan 14, 2026
dbdd254
feat: configurator v2
dcremonini Feb 28, 2026
abed51b
docs: improve the documentation of the new configurator.
dcremonini Jun 8, 2026
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -23,6 +23,9 @@ _*
TODO.txt
**/.env
**/id_rsa*
.agent
.claude
CLAUDE.md
.task/
attic.txt
**/venv/
Expand Down
147 changes: 147 additions & 0 deletions AGENTS.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
# Apache OpenServerless Task Agent Guidelines

This file provides instructions for agentic coding agents working in this repository.


## Setup commands

- Install Dependencies: `bun install`
- Start development server: ``
- Build the configurator utility: `cd util/config/configurator && bun run build`

## Testing instructions
- Run tests: `bun test`

- Run a single test: `bun test util/config/configurator/tests/index.test.ts`
- Run tests with verbose output `bun test --reporter=verbose`

## Running the application
- Run the configurator utility: `cd util/config/configurator && bun run start`
- Run the configurator utility with a specified configuration file: `bun run start -- <config-file>`
- Run the configurator utility with a specified configuration file overriding existing values: `bun run start -- <config-file> [--override]`


## Code style

- TypeScript strict mode

### Language & Version
- Primary language: TypeScript
- Runtime: Bun (Node.js compatible)
- Target ES version: ES2022+
- Module system: ES Modules (`"type": "module"` in package.json)

### File Organization
- TypeScript files: `.ts` extension
- Test files: `*.test.ts` located in `__tests__` or `tests` directories
- Configuration: TOML (`.toml`) or JSON (`.json`)
- Operations definitions: YAML (`.yml`)

### Imports
1. **Order**:
- Built-in Node.js/Bun modules (e.g., `import { $ } from "bun";`)
- Third-party libraries (e.g., `import { select } from "@clack/prompts";`)
- Local application files (relative paths)

2. **Syntax**:
- Use ES module syntax: `import { foo } from "bar";`
- Default imports: `import foo from "bar";`
- Avoid `require()` syntax

3. **Specific Rules**:
- Import types separately when needed: `import type { TypeName } from "./types";`
- Group related imports together
- No unused imports allowed

### Formatting
- **Indentation**: 2 spaces (not tabs)
- **Line length**: Maximum 100 characters (prefer 80-100)
- **Semicolons**: Required (use semicolons to terminate statements)
- **Quotes**:
- Single quotes (`'`) for strings
- Template literals (`` ` ``) for multi-line or interpolated strings
- Double quotes (`"`) only when required by JSON or external specifications
- **Commas**: Trailing commas in multi-line objects/arrays
- **Braces**:
- Opening brace on the same line as the statement
- Closing brace on its own line
- No braces for single-line conditionals when it improves readability

### Types
- **Type Annotations**:
- Always annotate function parameters
- Annotate return values for public functions
- Use type inference for local variables when obvious
- **Interfaces vs Types**:
- Use `interface` for object shapes that may be extended
- Use `type` for unions, primitives, complex mapped types
- **Strictness**: Enable strict TypeScript options (null checks, no implicit any, etc.)

### Naming Conventions
- **Files & Directories**: kebab-case (e.g., `configurator.ts`, `all-config-parameters.toml`)
- **Variables & Functions**: camelCase (e.g., `readPositionalFile`, `isInputConfigValid`)
- **Constants**: UPPER_SNAKE_CASE (e.g., `HelpMsg`, `AdditionalArgsMsg`)
- **Types & Interfaces**: PascalCase (e.g., `OpsConfig`, `PromptData`)
- **Classes**: PascalCase (though minimal class usage in this codebase)
- **Boolean Variables**: Prefix with `is`, `has`, `should`, `can` (e.g., `isValid`, `hasError`)

### Error Handling
- **Early Returns**: Handle error conditions first with early returns
- **Async Functions**: Use try/catch for async operations that can fail
- **Bun Specific**:
- Use `process.exit(1)` for error exits
- Use `process.exit(0)` for successful exits
- Check `success` property on result objects from utils
- **Messages**:
- Export constant error messages (as seen with `HelpMsg`, `NotValidJsonMsg`, etc.)
- Use descriptive, user-friendly error messages
- Log warnings with `console.warn()`, errors with `console.error()`

### Specific Patterns from Codebase
- **Configuration Validation**: Separate validation functions (e.g., `isInputConfigValid`)
- **File Operations**:
- Read → Parse → Validate pattern
- Return objects with `{ success: boolean, message?: string, ...data }` shape
- **CLI Argument Parsing**: Use `util.parseArgs` with strict mode and positionals
- **Interactive Prompts**: Use `@clack/prompts` with proper cancellation handling
- **Shell Commands**: Use Bun's `$` helper for shell commands with `.quiet()` to suppress output

### Testing
- **Framework**: Bun's built-in test framework (`bun:test`)
- **File Naming**: `*.test.ts`
- **Structure**:
- Use `describe()` for test suites
- Use `test()` for individual tests
- Use `expect()` for assertions
- **Mocking**: Minimal mocking; prefer testing actual behavior
- **Async Tests**: Return promises or use `async`/`await`

### Comments
- Use JSDoc-style comments for public APIs
- Use `//` for inline comments explaining why (not what)
- Keep comments up-to-date; delete outdated comments
- TODO comments should include GitHub issue references when possible
- When adding bash scripts in the documentation, always keep commands separate (one command per ```bash section)

### Security
- Never log secrets or credentials
- Use `password` prompt type for sensitive inputs
- Validate and sanitize all external inputs
- Follow the principle of least privilege

## Task Tracking

For any task that involves more than one non-trivial step (multi-file changes, investigations with uncertain outcomes, features spanning multiple components), maintain a TODO list using the `TaskCreate` / `TaskUpdate` / `TaskList` tools:

1. **Start**: call `TaskCreate` to create one task entry per step before writing any code.
2. **Progress**: call `TaskUpdate` (status `in_progress`) when starting a step, `completed` when it is done.
3. **Visibility**: after completing a task, call `TaskList` to confirm no steps are left open.

Keep task titles short and action-oriented ("Add `type` field to ConfigParameter", "Update parseParameter", etc.).
Do **not** create tasks for trivial single-file edits or quick answers.

## Additional Notes
- This repository uses Bun as its primary runtime/package manager
- Configuration is driven by TOML files and environment variables
- The `opsfile.yml` defines operational tasks but is not part of the main TypeScript codebase
- When modifying the configurator utility, remember to rebuild after changes
3 changes: 2 additions & 1 deletion admin/docopts.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,7 +27,7 @@ You can create namespaces and choose which services to enable.

```text
Usage:
admin adduser <username> <email> <password> [--all] [--redis] [--mongodb] [--minio] [--postgres] [--milvus] [--storagequota=<quota>|auto]
admin adduser <username> <email> <password> [--all] [--redis] [--mongodb] [--minio|--seaweedfs] [--postgres] [--milvus] [--storagequota=<quota>|auto]
admin deleteuser <username>
admin listuser [<username>]
admin compact [--ttl=<ttl>|10]
Expand All@@ -49,6 +49,7 @@ Usage:
--redis enable redis
--mongodb enable mongodb
--minio enable minio
--seaweedfs enable seaweedfs
--postgres enable postgres
--milvus enable milvus vector db
--storagequota=<quota>
Expand Down
7 changes: 4 additions & 3 deletions admin/opsfile.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -119,17 +119,18 @@ tasks:
fi
fi

if {{.__minio}} || {{.__all}}
if {{.__minio}} || {{.__seaweedfs}} || {{.__all}}
then
if $OPERATOR_COMPONENT_MINIO
if $OPERATOR_COMPONENT_MINIO || $OPERATOR_COMPONENT_SEAWEEDFS
then
MINIO_DATA_ENABLED=true
MINIO_STATIC_ENABLED=true
else
die "Error! Minio is not enabled in OpenServerless"
die "Error! Minio or Seaweedfs are not enabled in OpenServerless"
fi
fi


if test -n "{{.__storagequota}}"
then MINIO_STORAGE_QUOTA={{.__storagequota}}
fi
Expand Down
46 changes: 46 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 8 additions & 3 deletions config/docopts.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,13 +24,14 @@ Configure OpenServerless

```text
Usage:
config (enable|disable) [--all] [--redis] [--mongodb] [--minio] [--cron] [--static] [--postgres] [--prometheus] [--slack] [--mail] [--affinity] [--tolerations] [--quota] [--milvus] [--registry]
config (enable|disable) [--all] [--redis] [--mongodb] [--minio] [--cron] [--static] [--postgres] [--prometheus] [--slack] [--mail] [--affinity] [--tolerations] [--quota] [--milvus] [--registry] [--seaweedfs]
config apihost (<apihost>|auto) [--tls=<email>] [--protocol=<http/https>|auto]
config runtimes [<runtimesjson>]
config slack [--apiurl=<slackapiurl>] [--channel=<slackchannel>]
config mail [--mailuser=<mailuser>] [--mailpwd=<mailpwd>] [--mailfrom=<mailfrom>] [--mailto=<mailto>]
config volumes [--couchdb=<couchdb>] [--kafka=<kafka>] [--pgvol=<postgres>] [--storage=<storage>] [--alerting=<alerting>] [--zookeeper=<zookeeper>] [--redisvol=<redis>] [--mongodbvol=<mongodb>] [--etcdvol=<etcd>] [--mvvol=<milvus>] [--mvzookvol=<milvuszook>] [--pulsarjournalvol=<pulsarjournal>] [--pulsarledgelvol=<pulsarledge>]
config volumes [--couchdb=<couchdb>] [--kafka=<kafka>] [--pgvol=<postgres>] [--storage=<storage>] [--alerting=<alerting>] [--zookeeper=<zookeeper>] [--redisvol=<redis>] [--mongodbvol=<mongodb>] [--etcdvol=<etcd>] [--mvvol=<milvus>] [--mvzookvol=<milvuszook>] [--pulsarjournalvol=<pulsarjournal>] [--pulsarledgelvol=<pulsarledge>] [--seaweedfsvol=<seaweedfsvol>]
config controller [--javaopts=<javaopts>] [--loglevel=<loglevel>] [--replicas=<replicas>]
config ingress [--class=<auto|nginx|traefik|public>]
config invoker [--javaopts=<javaopts>] [--poolmemory=<poolmemory>] [--timeoutsrun=<timeoutsrun>] [--timeoutslogs=<timeoutslogs>] [--loglevel=<loglevel>] [--replicas=<replicas>]
config limits [--time=<time>] [--memory=<memory>] [--sequencelength=<sequencelength>] [--perminute=<perminute>] [--concurrent=<concurrent>] [--triggerperminute=<triggerperminute>] [--activation_max_payload=<activation_max_payload>] [--blackbox_fraction=<blackbox_fraction>]
config storage [--class=<storage_class>] [--provisioner=<storage_provisioner>]
Expand All@@ -45,7 +46,8 @@ Usage:
config azcloud [--project=<project>] [--region=<region>] [--vm=<vm>] [--disk=<disk>] [--key=<key>] [--image=<image>]
config aks [--project=<project>] [--name=<name>] [--region=<region>] [--count=<count>] [--vm=<vm>] [--disk=<disk>] [--key=<key>]
config externalregistry [--regurl=<regurl>] [--reguser=<reguser>] [--regpassword=<regpassword>]
config registry [--disk=<disk>] [--ingress]
config registry [--disk=<disk>] [--ingress]
config seaweedfs [--s3] [--console]
config (status|export|reset)
config use [<n>] [--delete] [--rename=<rename>]
config minimal
Expand All@@ -63,6 +65,7 @@ Usage:
config mail configure Alert Manager over a gmail account
config volumes configure the volume size distinguished in 3 categories (openwhisk couchdb & kafka, database, minio storage, alerting, milvus)
config controller configure Openwhisk enterprise controller java options
config ingress configure OpenServerless ingress class
config invoker configure Openwhisk enterprise invoker options
config limits configure Openwhisk actions limits
config storage allows to customize storage persistence class and provider
Expand DownExpand Up@@ -120,4 +123,6 @@ Usage:
--quota select quota checker module
--milvus select MILVUS vector database
--registry activate the support for a private image registry for custom actions (by default it will install one)
--class specify the ingress class. It can be auto, traefik, nginx. On microk8s it should be public.
--seaweedfs activate the support of SEAWEEDFS as S3 api and buckets provider
```
Loading