Skip to content

[Helm] Adding support for plugins configuration#2437

Merged
robfrank merged 7 commits into
ArcadeData:mainfrom
carlos-rodrigues-8x8:feature/2436-add-plugin-configurations
Aug 27, 2025
Merged

[Helm] Adding support for plugins configuration#2437
robfrank merged 7 commits into
ArcadeData:mainfrom
carlos-rodrigues-8x8:feature/2436-add-plugin-configurations

Conversation

@carlos-rodrigues-8x8
Copy link
Copy Markdown
Contributor

@carlos-rodrigues-8x8 carlos-rodrigues-8x8 commented Aug 21, 2025

What does this PR do?

Added configuration for built-in plugins through well defined properties.
Added support for configuring custom plugins.

Motivation

Contribute for the community.

Related issues

#2436

Additional Notes

For testing propose:

  • Create values_test.yaml with content:
arcadedb:
  plugins:
    gremlin:
      enabled: true
    prometheus:
      enabled: true
  • Execute the command the following command inside k8s/helm directory:
helm template . --namespace foo -f values.yaml -f values_test.yml 
  • Validate the output:
    • service manifest:
apiVersion: v1
kind: Service
metadata:
  name: release-name-arcadedb
  labels:
    app: arcadedb
    helm.sh/chart: arcadedb-0.1.0
    app.kubernetes.io/name: arcadedb
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "25.2.1"
    app.kubernetes.io/managed-by: Helm
spec:
  clusterIP: None
  ports:
    - port: 2480
      targetPort: http
      protocol: TCP
      name: http
    - port: 2424
      targetPort: rpc
      protocol: TCP
      name: rpc

    - port: 8082
      targetPort: 8082
      protocol: TCP
      name: gremlin-port
  selector:
    app.kubernetes.io/name: arcadedb
    app.kubernetes.io/instance: release-name
---
  • statefulset manifest:
...
            - -Darcadedb.server.plugins=GremlinServer:com.arcadedb.server.gremlin.GremlinServerPlugin,Prometheus:com.arcadedb.metrics.prometheus.PrometheusMetricsPlugin
          livenessProbe:
            httpGet:
...

Checklist

  • I have run the build using mvn clean package command
  • My unit tests cover both failure and success scenarios

Added configuration for built-in configurations through well defined properties
Added support for configuring custom plugins
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @carlos-rodrigues-8x8, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This PR enhances the ArcadeDB Helm chart by introducing comprehensive support for configuring both built-in and custom plugins. It allows users to enable specific plugins and define their associated parameters, such as ports and class names, directly through the Helm values.yaml file, streamlining deployment and management of ArcadeDB instances with desired functionalities.

Highlights

  • Centralized Plugin Configuration: Introduced new Helm templates (_helpers.tpl) to manage the configuration and dynamic generation of parameters for ArcadeDB plugins.
  • Dynamic Service Port Exposure: The Helm service manifest (service.yaml) is now dynamically updated to expose ports for enabled plugins, ensuring network accessibility.
  • Automated JVM Parameter Generation: The StatefulSet manifest (statefulset.yaml) is updated to automatically inject the necessary JVM parameters (-Darcadedb.server.plugins) based on the enabled plugins, simplifying server startup configuration.
  • Extended values.yaml for Plugin Management: The values.yaml file now includes a dedicated arcadedb.plugins section with examples for configuring common built-in plugins (Gremlin, Postgres, Mongo, Redis, Prometheus) and a generic custom plugin, providing clear guidance for users.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds valuable support for configuring ArcadeDB plugins through Helm chart values. The implementation introduces new helper templates to manage plugin parameters and services, which is a great addition. However, I've identified a few issues that need addressing. There are a couple of bugs in the _arcadedb.plugin.ports helper related to port configuration for postgres and redis. More critically, the arcadedb.plugin.parameters template has flawed logic that will result in incorrect command-line arguments for the ArcadeDB server. I've also noticed some indentation issues in the commented-out examples in values.yaml that could confuse users. My review includes detailed suggestions to resolve these problems.

Comment thread k8s/helm/templates/_helpers.tpl Outdated
Comment thread k8s/helm/templates/_helpers.tpl
Comment thread k8s/helm/templates/_helpers.tpl Outdated
Comment thread k8s/helm/values.yaml Outdated
@robfrank robfrank added the enhancement New feature or request label Aug 24, 2025
@robfrank robfrank added this to the 25.8.1 milestone Aug 24, 2025
@robfrank
Copy link
Copy Markdown
Collaborator

@carlos-rodrigues-8x8 is it ready for review/merge?

@carlos-rodrigues-8x8
Copy link
Copy Markdown
Contributor Author

carlos-rodrigues-8x8 commented Aug 25, 2025

@carlos-rodrigues-8x8 is it ready for review/merge?

Hey @robfrank, can you confirm if gremlin plugin default port is 8082? Thanks!

@robfrank
Copy link
Copy Markdown
Collaborator

Gremlin port is 8182

@carlos-rodrigues-8x8
Copy link
Copy Markdown
Contributor Author

@robfrank you can go for it

Copy link
Copy Markdown
Collaborator

@robfrank robfrank left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@robfrank robfrank merged commit 41158d0 into ArcadeData:main Aug 27, 2025
10 of 12 checks passed
robfrank pushed a commit that referenced this pull request Sep 10, 2025
mergify Bot added a commit that referenced this pull request Mar 13, 2026
…[skip ci]

Bumps [https://github.com/pycqa/isort](https://github.com/pycqa/isort) from 7.0.0 to 8.0.1.
Release notes

*Sourced from [https://github.com/pycqa/isort's releases](https://github.com/pycqa/isort/releases).*

> 8.0.0
> -----
>
> Changes
> -------
>
> * Update CHANGELOG for version 8.0.0 ([#2460](https://redirect.github.com/pycqa/isort/issues/2460)) [`@​DanielNoord`](https://github.com/DanielNoord)
> * Fix edge case of `__future__` import. ([#2458](https://redirect.github.com/pycqa/isort/issues/2458)) [`@​skv0zsneg`](https://github.com/skv0zsneg)
> * Fix the Plone profile to be compatible with black ([#2457](https://redirect.github.com/pycqa/isort/issues/2457)) [`@​ale-rt`](https://github.com/ale-rt)
> * typo fix ([#2450](https://redirect.github.com/pycqa/isort/issues/2450)) [`@​jsta`](https://github.com/jsta)
> * Remove the `setuptools` plugin ([#2427](https://redirect.github.com/pycqa/isort/issues/2427)) [`@​DanielNoord`](https://github.com/DanielNoord)
> * Turn some warnings into errors in test suite ([#2449](https://redirect.github.com/pycqa/isort/issues/2449)) [`@​DanielNoord`](https://github.com/DanielNoord)
> * chore: replace black with ruff in clean.sh ([#2448](https://redirect.github.com/pycqa/isort/issues/2448)) [`@​joao-faria-dev`](https://github.com/joao-faria-dev)
> * feat!: remove old finders flag and legacy finder logic ([#2446](https://redirect.github.com/pycqa/isort/issues/2446)) [`@​joao-faria-dev`](https://github.com/joao-faria-dev)
> * Fix whitespace insensitive check triggering on tabs ([#2437](https://redirect.github.com/pycqa/isort/issues/2437)) [`@​robsdedude`](https://github.com/robsdedude)
> * Fix line separator detection not considering form feed as white space ([#2436](https://redirect.github.com/pycqa/isort/issues/2436)) [`@​robsdedude`](https://github.com/robsdedude)
> * Fix [#1964](https://redirect.github.com/pycqa/isort/issues/1964): `lines_before_import` sometimes ignored ([#1965](https://redirect.github.com/pycqa/isort/issues/1965)) [`@​robsdedude`](https://github.com/robsdedude)
> * Remove reference to 3.9 in README ([#2434](https://redirect.github.com/pycqa/isort/issues/2434)) [`@​DanielNoord`](https://github.com/DanielNoord)
>
> 🚀 Features
> -----------------
>
> * Ensure `multiprocessing.Pool` is always closed and joined ([#2442](https://redirect.github.com/pycqa/isort/issues/2442)) [`@​DanielNoord`](https://github.com/DanielNoord)
>
> :construction\_worker: Continuous Integration
> ---------------------------------------------
>
> * Simplify CI by putting similar steps into a single action file ([#2444](https://redirect.github.com/pycqa/isort/issues/2444)) [`@​DanielNoord`](https://github.com/DanielNoord)
>
> 📦 Dependencies
> ----------------------
>
> * Bump actions/checkout from 5 to 6 in the github-actions group ([#2451](https://redirect.github.com/pycqa/isort/issues/2451)) @[dependabot[bot]](https://github.com/apps/dependabot)
> * Bump astral-sh/setup-uv from 6 to 7 in the github-actions group ([#2441](https://redirect.github.com/pycqa/isort/issues/2441)) @[dependabot[bot]](https://github.com/apps/dependabot)


Changelog

*Sourced from [https://github.com/pycqa/isort's changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md).*

> Changelog
> =========
>
> NOTE: isort follows the [semver](https://semver.org/) versioning standard.
> Find out more about isort's release policy [here](https://pycqa.github.io/isort/docs/major_releases/release_policy).
>
> Releases
> --------
>
> ### Unreleased
>
> ### 8.0.0 February 19 2026
>
> * Removed `--old-finders` and `--magic-placement` flags and `old_finders` configuration option. The legacy finder logic that relied on environment introspection has been removed ([#2445](https://redirect.github.com/pycqa/isort/issues/2445)) [`@​joao-faria-dev`](https://github.com/joao-faria-dev)
> * Update the `plone` profile to not clash with `black` ([#2456](https://redirect.github.com/pycqa/isort/issues/2456)) [`@​ale-rt`](https://github.com/ale-rt)
>
> ### 6.1.0 October 1 2025
>
> * Add python 3.14 classifier and badge ([#2409](https://redirect.github.com/pycqa/isort/issues/2409)) [`@​staticdev`](https://github.com/staticdev)
> * Drop use of non-standard pkg\_resources API ([#2405](https://redirect.github.com/pycqa/isort/issues/2405)) [`@​dvarrazzo`](https://github.com/dvarrazzo)
>
> ### 6.0.1 Febuary 26 2025
>
> * Add OSError handling in find\_imports\_in\_file ([#2331](https://redirect.github.com/pycqa/isort/issues/2331)) [`@​kobarity`](https://github.com/kobarity)
>
> ### 6.0.0 January 27 2025
>
> * Remove support for Python 3.8 ([#2327](https://redirect.github.com/pycqa/isort/issues/2327)) [`@​DanielNoord`](https://github.com/DanielNoord)
> * Python 3.13 support ([#2306](https://redirect.github.com/pycqa/isort/issues/2306)) [`@​mayty`](https://github.com/mayty)
> * Speed up exists\_case\_sensitive calls ([#2264](https://redirect.github.com/pycqa/isort/issues/2264)) [`@​correctmost`](https://github.com/correctmost)
> * Ensure that split\_on\_trailing\_comma works with as imports ([#2340](https://redirect.github.com/pycqa/isort/issues/2340)) [`@​DanielNoord`](https://github.com/DanielNoord)
> * Black profile: enable magic comma ([#2236](https://redirect.github.com/pycqa/isort/issues/2236)) [`@​MrMino`](https://github.com/MrMino)
> * Update line\_length and single\_line\_exclusions in google profile ([#2149](https://redirect.github.com/pycqa/isort/issues/2149)) [`@​jagapiou`](https://github.com/jagapiou)
> * Allow --diff to be used with --jobs ([#2302](https://redirect.github.com/pycqa/isort/issues/2302)) [`@​mnakama`](https://github.com/mnakama)
> * Fix wemake profile to have correct character limit ([#2241](https://redirect.github.com/pycqa/isort/issues/2241)) [`@​sobolevn`](https://github.com/sobolevn)
> * Fix sort\_reexports code mangling ([#2283](https://redirect.github.com/pycqa/isort/issues/2283)) [`@​Helveg`](https://github.com/Helveg)
> * Fix correct group by package tokenization ([#2136](https://redirect.github.com/pycqa/isort/issues/2136)) [`@​glasnt`](https://github.com/glasnt)
>
> ### 5.13.2 December 13 2023
>
> * Apply the bracket fix from issue [#471](https://redirect.github.com/pycqa/isort/issues/471) only for use\_parentheses=True ([#2184](https://redirect.github.com/pycqa/isort/issues/2184)) [`@​bp72`](https://github.com/bp72)
> * Confine pre-commit to stages ([#2213](https://redirect.github.com/pycqa/isort/issues/2213)) [`@​davidculley`](https://github.com/davidculley)
> * Fixed colors extras ([#2212](https://redirect.github.com/pycqa/isort/issues/2212)) [`@​staticdev`](https://github.com/staticdev)
>
> ### 5.13.1 December 11 2023
>
> * Fixed integration tests ([#2208](https://redirect.github.com/pycqa/isort/issues/2208)) [`@​bp72`](https://github.com/bp72)
> * Fixed normalizing imports from more than one level of parent modules (issue/2152) ([#2191](https://redirect.github.com/pycqa/isort/issues/2191)) [`@​bp72`](https://github.com/bp72)
> * Remove optional dependencies without extras ([#2207](https://redirect.github.com/pycqa/isort/issues/2207)) [`@​staticdev`](https://github.com/staticdev)
>
> ### 5.13.0 December 9 2023

... (truncated)


Commits

* [`a333737`](PyCQA/isort@a333737) Merge pull request [#2463](https://redirect.github.com/pycqa/isort/issues/2463) from FinlayTheBerry/issue/2461
* [`878ba7e`](PyCQA/isort@878ba7e) Added compression to stdlibs for Python 3.14 in isort/stdlibs/py314.py
* [`b5f06a7`](PyCQA/isort@b5f06a7) Merge pull request [#2459](https://redirect.github.com/pycqa/isort/issues/2459) from Fridayai700/fix-unindented-comment-corruption
* [`3459bde`](PyCQA/isort@3459bde) Merge pull request [#2460](https://redirect.github.com/pycqa/isort/issues/2460) from PyCQA/DanielNoord-patch-1
* [`6e70bb6`](PyCQA/isort@6e70bb6) Update CHANGELOG for version 8.0.0
* [`fd2514b`](PyCQA/isort@fd2514b) Fix unindented comments being corrupted in indented blocks
* [`b0f2dab`](PyCQA/isort@b0f2dab) Merge pull request [#2458](https://redirect.github.com/pycqa/isort/issues/2458) from skv0zsneg/issue/1882
* [`313797b`](PyCQA/isort@313797b) Fix lint.
* [`7d3a6f5`](PyCQA/isort@7d3a6f5) Add ignore for cyclomatic complexity check.
* [`6b9f895`](PyCQA/isort@6b9f895) Remove debug prints.
* Additional commits viewable in [compare view](PyCQA/isort@7.0.0...8.0.1)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=https://github.com/pycqa/isort&package-manager=pre\_commit&previous-version=7.0.0&new-version=8.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants