[hermes] ananke: go:S1192 #216

Open
opened 2026-09-27 09:21:48 +00:00 by hermes-automation · 0 comments

SonarQube reports go:S1192 in internal/cluster/orchestrator_longhorn_reconcile.go. The build is green; this is a standing finding, not a failure.

What is wrong

The string literal "longhorn-system" is hard-coded three times (in queryLonghornNodes, queryLonghornManagerDaemonSet, and longhornManagerPodsByNode) as the -n namespace argument passed to kubectl, which SonarQube flags as literal duplication that should instead be a named constant.

Ariadne opened no pull request for it: no automated patch was possible for this finding.

Facts

  • gitea — Define a constant instead of duplicating this literal "longhorn-system" 3 times. (CRITICAL, 6min estimated) (internal/cluster/orchestrator_longhorn_reconcile.go:136)

Suggested fix (not applied)

Hermes could not open a pull request for this, so the change below was not written, validated, or pushed anywhere. It is a starting point for whoever picks this up, not a reviewed patch.

internal/cluster/orchestrator_longhorn_reconcile.go — Introduce a package-level constant for the Longhorn namespace and reference it from all three kubectl call sites instead of repeating the literal string. This removes the duplication the rule flags while leaving the actual kubectl invocations, arguments, and behavior unchanged.

const longhornSystemNamespace = "longhorn-system"

func (o *Orchestrator) queryLonghornNodes(ctx context.Context) (longhornNodeList, error) {
	out, err := o.kubectl(ctx, 30*time.Second, "-n", longhornSystemNamespace, "get", "nodes.longhorn.io", "-o", "json")
	...
}

func (o *Orchestrator) queryLonghornManagerDaemonSet(ctx context.Context) (daemonSetResource, error) {
	out, err := o.kubectl(ctx, 20*time.Second, "-n", longhornSystemNamespace, "get", "daemonset", "longhorn-manager", "-o", "json")
	...
}

func (o *Orchestrator) longhornManagerPodsByNode(ctx context.Context, selector map[string]string) (map[string]struct{}, error) {
	args := []string{"-n", longhornSystemNamespace, "get", "pods", "-o", "json"}
	...
}

Filed automatically by Ariadne from a Hermes Agent diagnosis (run run_e29ea016fbdd4dceb128d55078fd7140). Hermes has no write access to this repository; no files or infrastructure were changed.

SonarQube reports **go:S1192** in `internal/cluster/orchestrator_longhorn_reconcile.go`. The build is green; this is a standing finding, not a failure. ## What is wrong The string literal "longhorn-system" is hard-coded three times (in queryLonghornNodes, queryLonghornManagerDaemonSet, and longhornManagerPodsByNode) as the -n namespace argument passed to kubectl, which SonarQube flags as literal duplication that should instead be a named constant. Ariadne opened no pull request for it: no automated patch was possible for this finding. ## Facts - **gitea** — Define a constant instead of duplicating this literal "longhorn-system" 3 times. (CRITICAL, 6min estimated) (`internal/cluster/orchestrator_longhorn_reconcile.go:136`) ## Suggested fix (not applied) Hermes could not open a pull request for this, so the change below was not written, validated, or pushed anywhere. It is a starting point for whoever picks this up, not a reviewed patch. **`internal/cluster/orchestrator_longhorn_reconcile.go`** — Introduce a package-level constant for the Longhorn namespace and reference it from all three kubectl call sites instead of repeating the literal string. This removes the duplication the rule flags while leaving the actual kubectl invocations, arguments, and behavior unchanged. ``` const longhornSystemNamespace = "longhorn-system" func (o *Orchestrator) queryLonghornNodes(ctx context.Context) (longhornNodeList, error) { out, err := o.kubectl(ctx, 30*time.Second, "-n", longhornSystemNamespace, "get", "nodes.longhorn.io", "-o", "json") ... } func (o *Orchestrator) queryLonghornManagerDaemonSet(ctx context.Context) (daemonSetResource, error) { out, err := o.kubectl(ctx, 20*time.Second, "-n", longhornSystemNamespace, "get", "daemonset", "longhorn-manager", "-o", "json") ... } func (o *Orchestrator) longhornManagerPodsByNode(ctx context.Context, selector map[string]string) (map[string]struct{}, error) { args := []string{"-n", longhornSystemNamespace, "get", "pods", "-o", "json"} ... } ``` ## Links - SonarQube finding: https://quality.bstein.dev/project/issues?resolved=false&id=ananke&open=AZ-IckL-1fRfbdzqD-5R - Full evidence bundle and audit trail live in Ariadne at `/api/admin/audit/events`, event types `hermes_autotriage_incident` and `hermes_autotriage_diagnosis`. Filed automatically by Ariadne from a Hermes Agent diagnosis (run [run_e29ea016fbdd4dceb128d55078fd7140](https://triage.bstein.dev/chat?resume=run_e29ea016fbdd4dceb128d55078fd7140)). Hermes has no write access to this repository; no files or infrastructure were changed. <!-- hermes-triage job=ananke classification=go:S1192 incident=sonar/ananke/go:S1192/AZ-IckL-1fRfbdzqD-5R -->
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: titan/ananke#216
No description provided.