Skip to content

feat(#52): allow a Gremlin port other than 8182 when gremlin-server.yaml sets it - #60

Merged
robfrank merged 1 commit into
mainfrom
feat/52-allow-gremlin-port-other-than-8182
Oct 22, 2026
Merged

robfrank merged 1 commit into
mainfrom
feat/52-allow-gremlin-port-other-than-8182

Conversation

@robfrank

@robfrank robfrank commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Closes #52

Implements option 3 from the issue. A new value, arcadedb.plugins.gremlin.portManagedExternally: true, says that the operator's own gremlin-server.yaml on the config volume sets the Gremlin port:. With it set, the chart skips the #47 "must be 8182" check and exposes arcadedb.plugins.gremlin.port on the headless Service, the external Service and the NetworkPolicy. It still refuses a value outside 1-65535. The chart still passes no port to the server, because there is no setting for it (checked again on core main at ee04bd202a: GremlinServerPlugin.configure reads gremlin-server.yaml, then the gremlin.* context keys, and ContextConfiguration.fromJSON drops keys that are not GlobalConfiguration settings). Without the flag, or with false, behaviour is unchanged. This brings back the pre-#47 setup the issue describes, and this time the user has to ask for it explicitly.

Options 1 and 2 (the chart owning the port) are tracked in #58.

Test plan

  • helm unittest charts/arcadedb: 373 passed (9 new in tests/gremlin_port_external_test.yaml)
  • New tests fail on main (6 failed, 3 passed: the three that pass are guards for behaviour that does not change, namely flag false still refuses 9999, unset port still gives 8182, and native still refuses gremlin)
  • helm lint charts/arcadedb
  • helm template with port=70000 / port=-5 plus the flag: fails with ... which is not a TCP port (1-65535).
  • Optional manual check: on a kind cluster, edit gremlin-server.yaml on the config PVC to port: 8183, install with port: 8183, portManagedExternally: true, connect through the Service

Coverage

Invariant: with portManagedExternally: true, every rendered object that names the Gremlin port uses arcadedb.plugins.gremlin.port. Without it, any value other than 8182 still fails the render.

Every consumer goes through _arcadedb.plugin.ports. Found with grep -rn '_arcadedb.plugin.ports\|arcadedb.plugin.parameters' templates/:

templates/_helpers.tpl:213  arcadedb.plugin.parameters  (statefulset.yaml:141)
templates/_helpers.tpl:261  arcadedb.plugin.service     (service.yaml:55 headless, service.yaml:86 external)
templates/_helpers.tpl:276  arcadedb.plugin.networkPolicy (networkpolicy.yaml:22)
Entry point Covered by fix? Test
StatefulSet command (arcadedb.plugin.parameters) yes: renders, still no -Darcadedb.gremlin.port renders a port other than 8182 ...
Headless Service yes the headless Service exposes ...
External Service yes the external Service exposes ...
NetworkPolicy yes the NetworkPolicy opens ...
String port value yes a string port is accepted ...
Flag false / unset keeps #47 check yes portManagedExternally false ...; existing gremlin_port_test.yaml unchanged and passing
Out-of-range port yes refuses a port that is not a valid TCP port ...
Native flavor unchanged, still refused the native flavor still refuses ...
Containers' ports: argued: the StatefulSet declares no plugin containerPorts (grep containerPort templates/*.yaml shows only http/https/rpc) n/a

Known gaps

Adversarial pass

No independent subagent tool was available in this run, so the Phase 1.5 pass did not happen as designed. I re-checked it myself instead. That turned up the vacuous errorPattern (now exact messages, plus #59) and the error message that does not mention the new flag (see Known gaps).

Review cycles

Deferred items

None. No review feedback was received.

Final state

timeout: no bot reviewer is configured for this repository. A human review is needed.

🤖 Generated with Claude Code

…aml sets it

arcadedb.plugins.gremlin.portManagedExternally: true skips the #47 check
and exposes arcadedb.plugins.gremlin.port on the Services and the
NetworkPolicy, for operators who set port: in their own
gremlin-server.yaml. The value must be 1-65535. The chart still passes no
port to the server.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow a Gremlin port other than 8182 (follow-up to #47)

1 participant