Skip to content

feat(storage): netapp-monitoring plugin#1728

Open
RockSolidScripts wants to merge 8 commits into
cloudoperators:mainfrom
RockSolidScripts:feat/storage-netapp-monitoring-chart
Open

feat(storage): netapp-monitoring plugin#1728
RockSolidScripts wants to merge 8 commits into
cloudoperators:mainfrom
RockSolidScripts:feat/storage-netapp-monitoring-chart

Conversation

@RockSolidScripts

Copy link
Copy Markdown

Submit a pull request

Thank you for submitting a pull request!
To speed up the review process, please ensure that everything below
is true:

  1. This is not a duplicate of an existing Plugin.
  2. No existing features have been broken without good reason.
  3. The Documentation has been updated to reflect your changes.
  4. Tests have been added or updated to reflect your changes.
  5. All tests pass.

Replace any ":question:" below with information about your pull request.

Pull Request Details

Provide details about your pull request and what it adds, fixes, or changes

This plugin deploys a monitoring stack for NetApp storage systems using NetApp Harvest. Harvest collects performance, capacity, and health metrics from ONTAP systems and exposes them via a Prometheus exporter.

The chart includes a service discovery component (netappsd) that automatically discovers NetApp filers from Netbox and spawns Harvest instances to collect metrics.

Breaking Changes

Describe what features are broken by this pull request and why, if any.

None

Issues Fixed

Enter the issue numbers resolved by this pull request below, if any.

None

Other Relevant Information

Provide any other important details below.

None

Copilot AI review requested due to automatic review settings June 11, 2026 15:35
@RockSolidScripts RockSolidScripts requested a review from a team as a code owner June 11, 2026 15:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a new netapp-monitoring Helm chart/plugin that deploys NetApp Harvest along with a netappsd service discovery component to dynamically discover filers from Netbox and run per-app master/worker workloads.

Changes:

  • Introduces the Helm chart scaffolding (Chart/values/helpers) and Greenhouse PluginDefinition.
  • Adds Kubernetes manifests (Deployments/Services/SA+RBAC/Secrets/ConfigMap) for netappsd master/worker and Harvest pollers.
  • Documents usage and configuration in a new README.

Reviewed changes

Copilot reviewed 14 out of 16 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
netapp-monitoring/values.yaml Adds default values for Harvest + netappsd, apps map, and ownership metadata
netapp-monitoring/templates/harvest-netappsd-worker-service.yaml Adds per-app worker Service
netapp-monitoring/templates/harvest-netappsd-worker-deployment.yaml Adds per-app worker Deployment (Harvest poller + netappsd worker)
netapp-monitoring/templates/harvest-netappsd-serviceaccount.yaml Adds ServiceAccount + Role/RoleBinding for netappsd
netapp-monitoring/templates/harvest-netappsd-secret.yaml Adds Secret for netappsd runtime credentials/config
netapp-monitoring/templates/harvest-netappsd-master-service.yaml Adds per-app master Service
netapp-monitoring/templates/harvest-netappsd-master-deployment.yaml Adds per-app master Deployment
netapp-monitoring/templates/harvest-netappsd-configmap.yaml Adds ConfigMap with poller start script and Harvest template
netapp-monitoring/templates/harvest-basic-auth.yaml Adds Secret containing Harvest credentials YAML
netapp-monitoring/templates/_helpers.tpl Adds standard Helm helpers and credentials template helper
netapp-monitoring/README.md Adds documentation for architecture and configuration
netapp-monitoring/PluginDefinition.yaml Adds Greenhouse PluginDefinition and option schema
netapp-monitoring/Chart.yaml Adds chart metadata and dependency
netapp-monitoring/Chart.lock Locks owner-info dependency
netapp-monitoring/.helmignore Adds Helm ignore patterns

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread netapp-monitoring/PluginDefinition.yaml Outdated
Comment thread netapp-monitoring/plugindefinition.yaml
Comment thread netapp-monitoring/templates/harvest-netappsd-worker-deployment.yaml Outdated
Comment thread netapp-monitoring/templates/harvest-netappsd-worker-deployment.yaml Outdated
Comment thread netapp-monitoring/templates/harvest-netappsd-secret.yaml Outdated
Comment thread netapp-monitoring/templates/harvest-netappsd-worker-deployment.yaml
Comment thread netapp-monitoring/templates/harvest-netappsd-master-service.yaml
Comment thread netapp-monitoring/charts/values.yaml
Comment thread netapp-monitoring/Chart.yaml Outdated
@RockSolidScripts RockSolidScripts force-pushed the feat/storage-netapp-monitoring-chart branch 4 times, most recently from 936701d to 6d464e0 Compare June 11, 2026 15:53
@RockSolidScripts RockSolidScripts requested a review from Copilot June 11, 2026 15:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 16 changed files in this pull request and generated 8 comments.

Comment thread netapp-monitoring/templates/harvest-netappsd-worker-deployment.yaml Outdated
Comment thread netapp-monitoring/templates/harvest-netappsd-worker-deployment.yaml
Comment on lines +14 to +22
- apiGroups: [""]
resources: ["endpoints"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "update", "patch"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "update", "patch"]

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Master deployment is responsible for managing the worker pod replicas based on the service discovery.
Hence the permissions are granted at the least privileges only at the ns level.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you add the documentation piece please?

Comment thread netapp-monitoring/charts/values.yaml
Comment thread netapp-monitoring/templates/harvest-netappsd-master-deployment.yaml
Comment thread netapp-monitoring/templates/harvest-netappsd-secret.yaml Outdated

@viennaa viennaa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for adding the plugin. Address the following issues please.

  1. Move chart to netapp-monitoring/charts/, rename PluginDefinition.yaml → plugindefinition.yaml.
  2. Add matrix entries to .github/workflows/helm-release.yaml and .github/workflows/ci-pr-build.yaml; add path to root kustomization.yaml.
  3. Declare netappsd.lob and netappsd.credentials_secret in PluginDefinition.yaml, or remove their required guards. Chart currently cannot install with shipped defaults.
  4. Reconcile required: true options vs. empty-string defaults in values.yaml so empty values fail loudly instead of silently producing empty secrets.
  5. Add SPDX headers to all new YAML files.
  6. Add an else { fail ... } branch to netapp-monitoring.credentials-entry.

@RockSolidScripts RockSolidScripts force-pushed the feat/storage-netapp-monitoring-chart branch from ce406eb to b4c8c3f Compare June 16, 2026 18:57
@RockSolidScripts RockSolidScripts requested review from a team as code owners June 16, 2026 18:57
timojohlo and others added 4 commits June 16, 2026 12:59
Signed-off-by: I504010 <timo.johner@sap.com>
Signed-off-by: Ganesh Kugulakrishnan <ganesh.kugulakrishnan@sap.com>
Signed-off-by: Ganesh Kugulakrishnan <ganesh.kugulakrishnan@sap.com>
Signed-off-by: Ganesh Kugulakrishnan <ganesh.kugulakrishnan@sap.com>
Signed-off-by: Ganesh Kugulakrishnan <ganesh.kugulakrishnan@sap.com>
@RockSolidScripts RockSolidScripts force-pushed the feat/storage-netapp-monitoring-chart branch from aab6c6c to 7bc9b19 Compare June 16, 2026 19:01
Signed-off-by: Ganesh Kugulakrishnan <97788209+RockSolidScripts@users.noreply.github.com>
@RockSolidScripts

Copy link
Copy Markdown
Author

Thanks for adding the plugin. Address the following issues please.

  1. Move chart to netapp-monitoring/charts/, rename PluginDefinition.yaml → plugindefinition.yaml.
  2. Add matrix entries to .github/workflows/helm-release.yaml and .github/workflows/ci-pr-build.yaml; add path to root kustomization.yaml.
  3. Declare netappsd.lob and netappsd.credentials_secret in PluginDefinition.yaml, or remove their required guards. Chart currently cannot install with shipped defaults.
  4. Reconcile required: true options vs. empty-string defaults in values.yaml so empty values fail loudly instead of silently producing empty secrets.
  5. Add SPDX headers to all new YAML files.
  6. Add an else { fail ... } branch to netapp-monitoring.credentials-entry.

These are addressed.

@RockSolidScripts RockSolidScripts requested a review from viennaa June 16, 2026 19:04

@viennaa viennaa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for addressing the findings. Couple more remarks from my side.

Comment on lines +14 to +22
- apiGroups: [""]
resources: ["endpoints"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "update", "patch"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "update", "patch"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you add the documentation piece please?

mountPath: /app/shared
- name: harvest-sd-config
mountPath: /app/scripts/start-poller.sh
subPath: start-poller.sh

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is this just a startup script? since this is mounted with subPath it will only be copied at pod start. If changes occur to this configmap they need a rollout restart

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Yes, just at the start. If there is any change. The startup script is a static script that won't change anywhere in the future as it just supposed to wait until the worker container able to fetch a filer from the master queue and render the harvest config file.

however, I added checksum-based rollout triggers so pod restarts happen automatically when config/secret templates change at any rare situations.


Configure the required options:

| Parameter | Description | Required |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

option table lists only 10 options; plugindefinition.yaml exposes 14. Add netappsd.lob, netappsd.credentials_file, netappsd.credentials_secret, apps.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

fixed.

Comment thread netapp-monitoring/README.md Outdated
- name: netappsd.image.repository
value: keppel.eu-de-1.cloud.sap/ccloud/netappsd
- name: netappsd.image.tag
value: latest

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this should be a version, even in the README example

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

fixed.

command: ["/netappsd", "master"]
args:
- --region
- {{ .Values.netappsd.region }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

guard this too pls

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

fixed

Comment on lines +16 to +18
selector:
matchLabels:
name: {{ include "netapp-monitoring.fullname" . }}-{{ $appName }}-master

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't they use this helper?

netapp-monitoring.selectorLabels

applies to all.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

These are the same for every app (cinder, manila, apod, cinder-manila). Using it as the Deployment selector would cause all master/worker Deployments to select across each other's pods, breaking the isolation.

The current name: -{{ $appName }}-master label is intentionally specific — it uniquely identifies pods per-app. That needs to stay as-is for correct pod selection, since you have multiple Deployments created from the same range loop.

Signed-off-by: Ganesh Kugulakrishnan <ganesh.kugulakrishnan@sap.com>
Signed-off-by: Ganesh Kugulakrishnan <ganesh.kugulakrishnan@sap.com>
@RockSolidScripts RockSolidScripts requested a review from viennaa June 17, 2026 15:25
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.

4 participants