Repository: NetApp/harvest
Pull request #2171 (2023-06-30 07:36:03)

fix: volume template fix


Patch:
diff --git a/cmd/collectors/rest/plugins/certificate/certificate.go b/cmd/collectors/rest/plugins/certificate/certificate.go
index fd6b9acd..643c4092 100644
--- a/cmd/collectors/rest/plugins/certificate/certificate.go
+++ b/cmd/collectors/rest/plugins/certificate/certificate.go
@@ -139,6 +139,8 @@ func (my *Certificate) setCertificateIssuerType(instance *matrix.Instance) {
 				// Any verification exception means it is not signed with the give key. i.e. not self-signed
 				instance.SetLabel("certificateIssuerType", "ca_signed")
 			}
+		} else {
+			instance.SetLabel("certificateIssuerType", "ca_signed")
 		}
 	}
 }
diff --git a/cmd/collectors/rest/plugins/securityaccount/securityaccount.go b/cmd/collectors/rest/plugins/securityaccount/securityaccount.go
index 63882bbc..96c7f990 100644
--- a/cmd/collectors/rest/plugins/securityaccount/securityaccount.go
+++ b/cmd/collectors/rest/plugins/securityaccount/securityaccount.go
@@ -61,7 +61,6 @@ func (s *SecurityAccount) Run(dataMap map[string]*matrix.Matrix) ([]*matrix.Matr
 	)
 
 	data := dataMap[s.Object]
-
 	href := rest.BuildHref("", "applications", nil, "", "", "", "", s.query)
 
 	if result, err = collectors.InvokeRestCall(s.client, href, s.Logger); err != nil {
@@ -91,7 +90,7 @@ func (s *SecurityAccount) Run(dataMap map[string]*matrix.Matrix) ([]*matrix.Matr
 			}
 		}
 
-		securityAccountKey := username + svm
+		securityAccountKey := svm + username
 		if securityAccountInstance := data.GetInstance(securityAccountKey); securityAccountInstance != nil {
 			securityAccountInstance.SetExportable(false)
 
diff --git a/cmd/collectors/zapi/plugins/certificate/certificate.go b/cmd/collectors/zapi/plugins/certificate/certificate.go
index 1c819f98..f7e22bb1 100644
--- a/cmd/collectors/zapi/plugins/certificate/certificate.go
+++ b/cmd/collectors/zapi/plugins/certificate/certificate.go
@@ -146,6 +146,8 @@ func (my *Certificate) setCertificateIssuerType(instance *matrix.Instance, certi
 				// Any verification exception means it is not signed with the give key. i.e. not self-signed
 				instance.SetLabel("certificateIssuerType", "ca_signed")
 			}
+		} else {
+			instance.SetLabel("certificateIssuerType", "ca_signed")
 		}
 	}
 }
diff --git a/cmd/poller/poller.go b/cmd/poller/poller.go
index 079dc997..4355a9c1 100644
--- a/cmd/poller/poller.go
+++ b/cmd/poller/poller.go
@@ -30,9 +30,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	goversion "github.com/hashicorp/go-version"
 	_ "github.com/netapp/harvest/v2/cmd/collectors/ems"
-	"github.com/netapp/harvest/v2/cmd/collectors/rest"
 	_ "github.com/netapp/harvest/v2/cmd/collectors/restperf"
 	_ "github.com/netapp/harvest/v2/cmd/collectors/simple"
 	_ "github.com/netapp/harvest/v2/cmd/collectors/storagegrid"
@@ -47,7 +45,6 @@ import (
 	"github.com/netapp/harvest/v2/cmd/poller/options"
 	"github.com/netapp/harvest/v2/cmd/poller/plugin"
 	"github.com/netapp/harvest/v2/cmd/poller/schedule"
-	rest2 "github.com/netapp/harvest/v2/cmd/tools/rest"
 	"github.com/netapp/harvest/v2/pkg/api/ontapi/zapi"
 	"github.com/netapp/harvest/v2/pkg/auth"
 	"github.com/netapp/harvest/v2/pkg/conf"
@@ -1131,88 +1128,33 @@ func (p *Poller) createClient() {
 }
 
 // upgradeCollector checks if the collector c should be upgraded to a REST collector.
-// If an upgrade is possible, a new collector will be returned, otherwise the original will be.
-//
-// ZAPI collectors should be upgraded to REST collectors when the ONTAP version is >= 9.12.1 unless
-// the HARVEST_NO_COLLECTOR_UPGRADE ENVVAR is set.
-// The check is performed by:
-//   - use the REST API to query the cluster version
-//   - compare the cluster version with the upgradeAfter version
-//
+// ZAPI collectors should be upgraded to REST collectors when the cluster no longer speaks Zapi
 // If any error happens during the REST query, the upgrade is aborted and the original collector c returned.
 func (p *Poller) upgradeCollector(c conf.Collector) conf.Collector {
-	// Only attempt to upgrade Zapi* collectors
-	if !strings.HasPrefix(c.Name, "Zapi") {
-		return c
-	}
+	// If REST is desired, use REST
+	// If ZAPI is desired, check that the cluster speaks ZAPI and if so, use ZAPI otherwise use REST
+	// EMS and StorageGRID are will be ignored
 
-	r, err := p.newRestClient()
-	if err != nil {
-		logger.Debug().Err(err).Str("collector", c.Name).Msg("Failed to upgrade to Rest. Use collector")
+	if !strings.HasPrefix(c.Name, "Zapi") {
 		return c
 	}
-	verWithDots := r.Client.Cluster().GetVersion()
 
-	return p.negotiateAPI(c, verWithDots, p.doZAPIsExist)
+	return p.negotiateAPI(c, p.doZAPIsExist)
 }
 
 // clusterVersion should be of the form 9.12.1
-func (p *Poller) negotiateAPI(c conf.Collector, clusterVersion string, checkZAPIs func() error) conf.Collector {
-	var (
-		ontapVersion *goversion.Version
-		noUpgrade    string
-		err          error
-	)
-	const (
-		upgradeVersion = "9.12.1"
-	)
-	ontapVersion, err = goversion.NewVersion(clusterVersion)
-	if err != nil {
-		logger.Error().Err(err).
-			Str("v", clusterVersion).
-			Str("collector", c.Name).
-			Msg("Failed to parse version")
-		return c
-	}
-
-	upgradeAfter, _ := goversion.NewVersion(upgradeVersion)
-	if ontapVersion.LessThan(upgradeAfter) {
-		logger.Debug().
-			Str("collector", c.Name).
-			Str("v", clusterVersion).
-			Str("upgradeVersion", upgradeVersion).
-			Msg("Do not upgrade collector")
-		return c
-	}
-
-	// For ONTAP versions 9.12.1+ use REST unless the HARVEST_NO_COLLECTOR_UPGRADE environment variable is set.
-	// When the environment variable is set, honor that request unless the cluster no longer speaks ZAPI.
-	noUpgrade = os.Getenv(NoUpgrade)
-	if noUpgrade == "" && !p.params.PreferZAPI {
-		logger.Info().Str("collector", c.Name).Str("v", clusterVersion).Msg("Use REST")
-		upgradeCollector := strings.ReplaceAll(c.Name, "Zapi", "Rest")
-		return conf.Collector{
-			Name:      upgradeCollector,
-			Templates: c.Templates,
-		}
-	}
-
-	err = checkZAPIs()
+func (p *Poller) negotiateAPI(c conf.Collector, checkZAPIs func() error) conf.Collector {
+	err := checkZAPIs()
 	// if there is an error talking to ONTAP, assume that is because ZAPIs no longer exist and use REST
 	if err != nil {
-		logger.Warn().Err(err).Str("collector", c.Name).Str("v", clusterVersion).Msg("ZAPI EOA. Use REST")
+		logger.Warn().Err(err).Str("collector", c.Name).Msg("ZAPI EOA. Use REST")
 		upgradeCollector := strings.ReplaceAll(c.Name, "Zapi", "Rest")
 		return conf.Collector{
 			Name:      upgradeCollector,
 			Templates: c.Templates,
 		}
 	}
-	logger.Info().
-		Str("collector", c.Name).
-		Str("v", clusterVersion).
-		Str(NoUpgrade, noUpgrade).
-		Bool("preferZAPI", p.params.PreferZAPI).
-		Msg("Use ZAPIs")
+
 	return c
 }
 
@@ -1237,19 +1179,6 @@ func (p *Poller) doZAPIsExist() error {
 	return nil
 }
 
-func (p *Poller) newRestClient() (*rest.Rest, error) {
-	params := node.NewS("")
-	// Set client_timeout to suppress logging a msg about the default client_timeout during Rest client creation
-	params.NewChildS("client_timeout", rest2.DefaultTimeout)
-	Union2(params, p.params)
-	delegate := collector.New("Rest", "", p.options, params, p.auth)
-	r := &rest.Rest{
-		AbstractCollector: delegate,
-	}
-	err := r.InitClient()
-	return r, err
-}
-
 func startPoller(_ *cobra.Command, _ []string) {
 	//cmd.DebugFlags()  // uncomment to print flags
 	poller := &Poller{}
diff --git a/conf/rest/9.12.0/volume.yaml b/conf/rest/9.12.0/volume.yaml
index ec09e03a..1c2ea5fc 100644
--- a/conf/rest/9.12.0/volume.yaml
+++ b/conf/rest/9.12.0/volume.yaml
@@ -103,7 +103,6 @@ plugins:
       value_to_num:
         - new_status state online online `0`
       replace:
-        - style style `flexgroup_constituent` `flexgroup`
         - svm_root root_volume `false` `No`
         - svm_root root_volume `true` `Yes`
       # To prevent visibility of transient volumes, uncomment the following lines
@@ -120,8 +119,6 @@ plugins:
 #        - volume `MDV_CRS_.+`
 #        # Exclude Metadata volumes, Audit volumes have a “MDV_aud_” prefix
 #        - volume `MDV_aud_.+`
-  - Aggregator:
-      - volume<style=flexgroup>volume node,svm,aggr,style
 
 export_options:
   instance_keys:
diff --git a/conf/zapi/cdot/9.8.0/volume.yaml b/conf/zapi/cdot/9.8.0/volume.yaml
index ea526fcc..a33add83 100644
--- a/conf/zapi/cdot/9.8.0/volume.yaml
+++ b/conf/zapi/cdot/9.8.0/volume.yaml
@@ -76,33 +76,30 @@ plugins:
         - snapshot_reserve_used SUBTRACT snapshot_reserve_size snapshot_reserve_available
         - overwrite_reserve_available SUBTRACT overwrite_reserve_total overwrite_reserve_used
   - LabelAgent:
-    exclude_equals:
-      - style `flexgroup_constituent`
-    # metric label zapi_value rest_value `default_value`
-    value_to_num:
-      - new_status state online online `0`
-# To prevent visibility of transient volumes, uncomment the following lines
-#    exclude_regex:
-#      # Exclude SnapProtect/CommVault Intellisnap, Clone volumes have a “_CVclone” suffix
-#      - volume `.+_CVclone`
-#      # Exclude SnapCenter, Clone volumes have a “DDMMYYhhmmss” suffix
-#      - volume `.+(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])\d\d[0-9]{6}`
-#      # Exclude manually created SnapCreator clones, Clone volumes have a “cl_” prefix and a “_YYYYMMDDhhmmss” suffix
-#      - volume `cl_.+_(19|20)\d\d(0[1-9]|1[012])( 0[1-9]|[12][0-9]|3[01])[0-9]{6}`
-#      # Exclude SnapDrive/SnapManager, Clone volumes have a “sdw_cl_” prefix
-#      - volume `sdw_cl_.+`
-#      # Exclude Metadata volumes, CRS volumes in SVM-DR or MetroCluster have a “MDV_CRS_” prefix
-#      - volume `MDV_CRS_.+`
-#      # Exclude Metadata volumes, Audit volumes have a “MDV_aud_” prefix
-#      - volume `MDV_aud_.+`
-    replace:
-      - style style `flexgroup_constituent` `flexgroup`
-      - node_root root_volume `false` `No`
-      - svm_root root_volume `false` `No`
-      - node_root root_volume `true` `Yes`
-      - svm_root root_volume `true` `Yes`
-  - Aggregator:
-      - volume<style=flexgroup>volume node,svm,aggr,style
+      exclude_equals:
+        - style `flexgroup_constituent`
+      # metric label zapi_value rest_value `default_value`
+      value_to_num:
+        - new_status state online online `0`
+    # To prevent visibility of transient volumes, uncomment the following lines
+    #    exclude_regex:
+    #      # Exclude SnapProtect/CommVault Intellisnap, Clone volumes have a “_CVclone” suffix
+    #      - volume `.+_CVclone`
+    #      # Exclude SnapCenter, Clone volumes have a “DDMMYYhhmmss” suffix
+    #      - volume `.+(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])\d\d[0-9]{6}`
+    #      # Exclude manually created SnapCreator clones, Clone volumes have a “cl_” prefix and a “_YYYYMMDDhhmmss” suffix
+    #      - volume `cl_.+_(19|20)\d\d(0[1-9]|1[012])( 0[1-9]|[12][0-9]|3[01])[0-9]{6}`
+    #      # Exclude SnapDrive/SnapManager, Clone volumes have a “sdw_cl_” prefix
+    #      - volume `sdw_cl_.+`
+    #      # Exclude Metadata volumes, CRS volumes in SVM-DR or MetroCluster have a “MDV_CRS_” prefix
+    #      - volume `MDV_CRS_.+`
+    #      # Exclude Metadata volumes, Audit volumes have a “MDV_aud_” prefix
+    #      - volume `MDV_aud_.+`
+      replace:
+        - node_root root_volume `false` `No`
+        - svm_root root_volume `false` `No`
+        - node_root root_volume `true` `Yes`
+        - svm_root root_volume `true` `Yes`
 
 export_options:
   instance_keys:
diff --git a/docs/architecture/rest-strategy.md b/docs/architecture/rest-strategy.md
index abc81939..3e2705e7 100644
--- a/docs/architecture/rest-strategy.md
+++ b/docs/architecture/rest-strategy.md
@@ -14,11 +14,15 @@ In most cases, no action is required on your part.
 
 ## Harvest API Transition
 
-By default, Harvest will use ZAPIs until ONTAP version `9.12.1`.
-Beginning with ONTAP `9.12.1` and after, Harvest will default to REST.
+Harvest tries to use the protocol you specify in your `harvest.yml` config file.
+
+When specifying the ZAPI collector, Harvest will use the ZAPI protocol unless the cluster no longer speaks Zapi,
+in which case, Harvest will switch to REST.
+
+If you specify the REST collector, Harvest will use the REST protocol.
 
 Harvest includes a full set of REST templates that export identical metrics as the included ZAPI templates.
-No changes to dashboards or downstream metric-consumers will be required. 
+No changes to dashboards or downstream metric-consumers should be required. 
 See [below](#ive-added-counters-to-existing-zapi-templates-will-those-counters-work-in-rest) if you have 
 added metrics to the Harvest out-of-the-box templates.
 
@@ -28,51 +32,39 @@ Read on if you want to know how you can use REST sooner, or you want to take adv
 
 ### How does Harvest decide whether to use REST or ZAPI APIs?
 
-Harvest asks the cluster for its ONTAP version:
-
-* If the version is earlier than `9.12.1`, Harvest will use the collector(s) defined in your `harvest.yml`.
-* If the version is `9.12.1` or later, Harvest will use REST, unless the [HARVEST_NO_COLLECTOR_UPGRADE](#im-using-ontap-version-912x-but-i-want-to-continue-using-zapis-how-do-i-do-that) environment variable is set or 
-  the [`prefer_zapi`](https://netapp.github.io/harvest/latest/configure-harvest-basic/#pollers) poller option is true.
-  When the environment variable or `prefer_zapi` option are set, Harvest will use ZAPIs unless the cluster no longer talks ZAPI. 
-
-```mermaid
-graph TD
-A(Harvest asks the cluster<br>for its ONTAP version) --> B(Version before<br>9.12.X?)
-A --> C(9.12.X)
-A --> D(9.13.X)
+Harvest attempts to use the collector defined in your `harvest.yml` config file.
+ 
+- If you specify the ZAPI collector, Harvest will use the ZAPI protocol as long as the cluster still speaks Zapi. 
+  If the cluster no longer understands Zapi, Harvest will switch to Rest.
 
-B --> AA{Does your harvest.yml<br>specify a REST collector?}
-AA -->|No| F(Use ZAPI) 
-AA -->|Yes|G(Use REST)
+- If you specify the REST collector, Harvest will use REST.
 
-C --> CC{Is HARVEST_NO_COLLECTOR_UPGRADE<br>environment variable set?<br><br>Or is the prefer_zapi poller option setset?}
-CC --> |No| G
-CC --> |Yes|CZ(Use ZAPI) 
+Earlier versions of Harvest included a `prefer_zapi` poller option and a `HARVEST_NO_COLLECTOR_UPGRADE` environment variable.
+Both of these options are ignored in Harvest versions `23.08` onwards.
 
-D --> X(Use REST)
-```
 ### Why would I switch to REST before `9.13.1`?
 
-- You have advanced use cases to validate before ONTAP removes ZAPIs in `9.13.1`
-- You want to take advantage of new ONTAP features that are only available via REST (e.g. cloud features, event remediation's, name services, cluster peers, etc.)
+- You have advanced use cases to validate before ONTAP removes ZAPIs
+- You want to take advantage of new ONTAP features that are only available via REST (e.g., cloud features, event remediation, name services, cluster peers, etc.)
 - You want to collect a metric that is not available via ZAPI
 - You want to collect a metric from the ONTAP CLI. The REST API includes a private CLI pass-through to access any ONTAP CLI command
 
 ### Can I start using REST before `9.13.1`?
 
-Yes. Several customers already are. Be aware of the following limitations:
-
-1. Harvest collects config counters via REST by enabling the `Rest` collector in your `harvest.yml`,
-   but ONTAP did not include performance counters via REST until [9.11.1](https://docs.netapp.com/us-en/ontap-automation/migrate/performance-counters.html#accessing-performance-counters-using-the-ontap-rest-api).
-   That means Harvest's `RestPerf` collector won't work until `9.11.1`.
-   ONTAP supports a subset of performance counters in `9.11.1`. The full set is available in `9.12.1`.
+Yes. Many customers do. Be aware of the following limitations:
 
+1. ONTAP includes a subset of performance counters via REST beginning in ONTAP [9.11.1](https://docs.netapp.com/us-en/ontap-automation/migrate/performance-counters.html#accessing-performance-counters-using-the-ontap-rest-api).
 2. There may be performance metrics missing from versions of ONTAP earlier than `9.11.1`.
 
+Where performance metrics are concerned, because of point #2,
+our recommendation is to wait until at least ONTAP `9.12.1` before switching to the `RestPerf` collector.
+You can continue using the `ZapiPerf` collector until you switch.
+
 ### A counter is missing from REST. What do I do?
 
-The Harvest team has ensured that all the out-of-the-box ZAPI templates have matching REST templates with the same metrics.
-Any additional counters you have added may be missing in REST. 
+The Harvest team has ensured
+that all the out-of-the-box ZAPI templates have matching REST templates with identical metrics as of Harvest `22.11` and ONTAP `9.12.1`.
+Any additional ZAPI Perf counters you have added may be missing from ONTAP REST Perf. 
 
 Join the [Harvest discord channel](https://github.com/NetApp/harvest/blob/main/SUPPORT.md#getting-help) and ask us about the counter.
 Sometimes we may know which release the missing counter is coming in, otherwise we can point you to the ONTAP
@@ -101,47 +93,36 @@ cluster-1:
   listed first in the list of `collectors`. When collecting a REST-only resource like, `nfs_client`, the Rest collector will be used
   since `nfs_client` objects are only available via REST.
 
-- When `cluster-1` is running ONTAP `9.12.1` (ONTAP still supports ZAPIs), the Rest collector will be used since
-  Harvest [automatically uses REST](#how-does-harvest-decide-whether-to-use-rest-or-zapi-apis) for clusters at `9.12.1`
-  or later.
+- When `cluster-1` is running ONTAP `9.18.1` (ONTAP no longer supports ZAPIs),
+  the Rest collector will be used since ONTAP can no longer speak the ZAPI protocol.
 
-- When `cluster-1` is running ONTAP `9.12.1` (ONTAP still supports ZAPIs) and the environment
-  variable `HARVEST_NO_COLLECTOR_UPGRADE` is set, the Zapi collector will be used because of the included environment
-  variable.
-
-- When `cluster-1` is running ONTAP `9.15.1` (ONTAP removed ZAPIs) and the environment
-  variable `HARVEST_NO_COLLECTOR_UPGRADE` is set, the Rest collector will be used since Harvest asks the cluster if it
-  speaks ZAPI and the cluster answers no.
-
-If you want the REST collector to be preferred over the ZAPI one, change the order in
+If you want the REST collector to be used in all cases, change the order in
 the `collectors` section so `Rest` comes before `Zapi`.
 
-If the resource does not exist for the first collector, the next collector will be tried. For example, when
-collecting `VolumeAnalytics` resources, the Zapi collector will not run because `VolumeAnalytics` objects are only
-available via REST.
+If the resource does not exist for the first collector, the next collector will be tried.
+Using the example above, when collecting `VolumeAnalytics` resources,
+the Zapi collector will not run for `VolumeAnalytics` objects since that resource is only available via REST.
+The Rest collector will run and collect the `VolumeAnalytics` objects.
 
 ### I've added counters to existing ZAPI templates. Will those counters work in REST?
 
 `ZAPI` config metrics often have a REST equivalent that can be found in ONTAP's [ONTAPI to REST mapping document](https://library.netapp.com/ecm/ecm_download_file/ECMLP2882104).
 
-ZAPI performance metrics may be missing in REST. If you have added new metrics or templates to the `ZAPIPerf` collector, those metrics likely aren't available via REST. 
-You can [check if the performance counter is available](https://docs.netapp.com/us-en/ontap-automation/migrate/performance-counters.html#discover-the-available-performance-counter-tables) 
-or [ask the Harvest team on Discord](#a-counter-is-missing-from-rest-what-do-i-do).
-
-### I'm using ONTAP version 9.12.X, but I want to continue using ZAPIs. How do I do that?
-
-You can tell Harvest to continue using the ZAPI protocol by picking one of these options:
-
-- Edit your `harvest.yml` config file and add the [`prefer_zapi: true`](https://netapp.github.io/harvest/latest/configure-harvest-basic/#pollers) option to the poller section. See [configure Harvest](https://netapp.github.io/harvest/latest/configure-harvest-basic/#pollers) for details.
-- Set the environment variable `HARVEST_NO_COLLECTOR_UPGRADE=1` and Harvest will not 
-upgrade your collector from ZAPI to REST.
+ZAPI performance metrics may be missing in REST.
+If you have added new metrics or templates to the `ZapiPerf` collector, those metrics likely aren't available via REST. 
+You can [check if the performance counter is available](https://docs.netapp.com/us-en/ontap-automation/migrate/performance-counters.html#discover-the-available-performance-counter-tables), [ask the Harvest team on Discord](#a-counter-is-missing-from-rest-what-do-i-do),
+or [ask ONTAP to add the counter](https://kb.netapp.com/Advice_and_Troubleshooting/Data_Storage_Software/ONTAP_OS/How_to_request_a_feature_for_ONTAP_REST_API) you need.
 
 ## Reference
 
 Table of ONTAP versions, dates and API notes.
 
-| ONTAP<br/>version | Release<br/>Date | ONTAP<br/>Notes                                                                                                                                                                         |
-|------------------:|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|          `9.11.1` | Q2 2022          | First version with [REST performance metrics](https://docs.netapp.com/us-en/ontap-automation/migrate/performance-counters.html#accessing-performance-counters-using-the-ontap-rest-api) |
-|          `9.12.1` | Q4 2022          | ZAPIs still supported - REST performance metrics have parity with Harvest collected ZAPI performance metrics                                                                            |
-|          `9.13.1` | Q2 2023          | ZAPIs removed. REST only release - REST config and performance parity with ZAPIs                                                                                                        |
+| ONTAP<br/>version | Release<br/>Date | ONTAP<br/>Notes                                                                                                                                                                                                     |
+|------------------:|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|          `9.11.1` | Q2 2022          | First version of ONTAP with [REST performance metrics](https://docs.netapp.com/us-en/ontap-automation/migrate/performance-counters.html#accessing-performance-counters-using-the-ontap-rest-api)                    |
+|          `9.12.1` | Q4 2022          | ZAPIs still supported - REST performance metrics have parity with Harvest `22.11` collected ZAPI performance metrics                                                                                                |
+|          `9.13.1` |                  | ZAPIs still supported                                                                                                                                                                                               |
+| `9.14.1`-`9.15.1` |                  | ZAPIs enabled if ONTAP upgrade detects they were being used earlier. New ONTAP installs default to REST only. ZAPIs may be enabled via CLI                                                                          |
+| `9.16.1`-`9.17.1` |                  | ZAPIs disabled. See [ONTAP communique](https://kb.netapp.com/onprem/ontap/dm/REST_API/FAQs_on_ZAPI_to_ONTAP_REST_API_transformation_for_CPC_(Customer_Product_Communiques)_notification) for details on re-enabling |
+|          `9.18.1` |                  | ZAPIs removed. No way to re-enable                                                                                                                                                                                  |
+
diff --git a/grafana/dashboards/cmode/compliance.json b/grafana/dashboards/cmode/compliance.json
index 32d8beab..f6d2221d 100644
--- a/grafana/dashboards/cmode/compliance.json
+++ b/grafana/dashboards/cmode/compliance.json
@@ -83,6 +83,24 @@
     }
   ],
   "panels": [
+    {
+      "datasource": "${DS_PROMETHEUS}",
+      "description": "",
+      "gridPos": {
+        "h": 2,
+        "w": 24,
+        "x": 0,
+        "y": 0
+      },
+      "id": 174,
+      "options": {
+        "content": "View ONTAP Security Hardening Guide https://www.netapp.com/media/10674-tr4569.pdf for more details.",
+        "mode": "markdown"
+      },
+      "pluginVersion": "8.1.8",
+      "title": "Important Information about Compliance dashboard",
+      "type": "text"
+    },
     {
       "collapsed": true,
       "datasource": "${DS_PROMETHEUS}",
@@ -90,7 +108,7 @@
         "h": 1,
         "w": 24,
         "x": 0,
-        "y": 0
+        "y": 2
       },
       "id": 152,
       "panels": [
@@ -177,7 +195,7 @@
             "h": 3,
             "w": 16,
             "x": 0,
-            "y": 1
+            "y": 3
           },
           "id": 161,
           "options": {
@@ -350,7 +368,7 @@
             "h": 3,
             "w": 4,
             "x": 16,
-            "y": 1
+            "y": 3
           },
           "id": 166,
           "links": [],
@@ -458,7 +476,7 @@
             "h": 3,
             "w": 4,
             "x": 20,
-            "y": 1
+            "y": 3
           },
           "id": 167,
           "links": [],
@@ -1343,7 +1361,7 @@
             "h": 8,
             "w": 24,
             "x": 0,
-            "y": 4
+            "y": 6
           },
           "id": 170,
           "options": {
@@ -1440,7 +1458,7 @@
             },
             {
               "exemplar": false,
-              "expr": "count by (datacenter, cluster) (security_account_localuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
+              "expr": "sum by (datacenter, cluster) (security_account_localuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
               "format": "table",
               "hide": false,
               "instant": true,
@@ -1450,7 +1468,7 @@
             },
             {
               "exemplar": false,
-              "expr": "count by (datacenter, cluster) (security_account_samluser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
+              "expr": "sum by (datacenter, cluster) (security_account_samluser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
               "format": "table",
               "hide": false,
               "instant": true,
@@ -1460,7 +1478,7 @@
             },
             {
               "exemplar": false,
-              "expr": "count by (datacenter, cluster) (security_account_activediruser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
+              "expr": "sum by (datacenter, cluster) (security_account_activediruser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
               "format": "table",
               "hide": false,
               "instant": true,
@@ -1470,7 +1488,7 @@
             },
             {
               "exemplar": false,
-              "expr": "count by (datacenter, cluster) (security_account_ldapuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
+              "expr": "sum by (datacenter, cluster) (security_account_ldapuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
               "format": "table",
               "hide": false,
               "instant": true,
@@ -1480,7 +1498,7 @@
             },
             {
               "exemplar": false,
-              "expr": "count by (datacenter, cluster) (security_account_certificateuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
+              "expr": "sum by (datacenter, cluster) (security_account_certificateuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"})",
               "format": "table",
               "hide": false,
               "instant": true,
@@ -1597,7 +1615,6 @@
                   "Value #C": "Default Admin User",
                   "Value #D": "MD5 in use",
                   "Value #E": "Insecure SSH Settings",
-                  "Value #F": "Login Banner",
                   "Value #G": "Network Time Protocol",
                   "Value #I": "Saml Users",
                   "Value #J": "Cluster Peering",
@@ -1644,7 +1661,7 @@
         "h": 1,
         "w": 24,
         "x": 0,
-        "y": 1
+        "y": 3
       },
       "id": 15,
       "panels": [
@@ -1702,7 +1719,7 @@
             "h": 3,
             "w": 16,
             "x": 0,
-            "y": 2
+            "y": 4
           },
           "id": 165,
           "options": {
@@ -1850,7 +1867,7 @@
             "h": 3,
             "w": 4,
             "x": 16,
-            "y": 2
+            "y": 4
           },
           "id": 168,
           "links": [],
@@ -1954,7 +1971,7 @@
             "h": 3,
             "w": 4,
             "x": 20,
-            "y": 2
+            "y": 4
           },
           "id": 164,
           "links": [],
@@ -2568,7 +2585,7 @@
             "h": 13,
             "w": 24,
             "x": 0,
-            "y": 5
+            "y": 7
           },
           "id": 172,
           "options": {
@@ -2733,10 +2750,8 @@
                 "renameByName": {
                   "Value #A": "Autosupport Https Transport",
                   "Value #B": "Compliant",
-                  "Value #C": "Login Banner",
                   "Value #D": "MD5 in use",
                   "Value #E": "",
-                  "Value #F": "Login Banner",
                   "Value #G": "LDAP Payload Signing",
                   "Value #I": "LDAP Encryption",
                   "activediruser": "Active Directory Users",
diff --git a/grafana/dashboards/cmode/security.json b/grafana/dashboards/cmode/security.json
index 41a28f2e..c524073f 100644
--- a/grafana/dashboards/cmode/security.json
+++ b/grafana/dashboards/cmode/security.json
@@ -92,109 +92,12 @@
         "x": 0,
         "y": 0
       },
-      "id": 153,
+      "id": 185,
       "panels": [],
-      "title": "Cluster Authentication And Certificates",
+      "title": "Highlights",
       "type": "row"
     },
     {
-      "datasource": "${DS_PROMETHEUS}",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "fixedColor": "blue",
-            "mode": "fixed"
-          },
-          "mappings": [],
-          "min": 0,
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "blue",
-                "value": null
-              }
-            ]
-          },
-          "unit": "short"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 6,
-        "w": 18,
-        "x": 0,
-        "y": 1
-      },
-      "id": 154,
-      "options": {
-        "displayMode": "gradient",
-        "orientation": "horizontal",
-        "reduceOptions": {
-          "calcs": [
-            "last"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "showUnfilled": true,
-        "text": {}
-      },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "count(count by (datacenter, cluster)(security_account_samluser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} \u003e 0)) or vector (0)",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "legendFormat": "Saml",
-          "refId": "A"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(count by (datacenter, cluster) (security_account_certificateuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} \u003e 0)) or vector (0)",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "legendFormat": "Certificate",
-          "refId": "B"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(count by (datacenter, cluster) (security_account_localuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} \u003e 0)) or vector (0)",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "legendFormat": "Local",
-          "refId": "C"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(count by (datacenter, cluster) (security_account_ldapuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} \u003e 0)) or vector (0)",
-          "hide": false,
-          "interval": "",
-          "legendFormat": "Ldap",
-          "refId": "D"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(count by (datacenter, cluster) (security_account_activediruser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} \u003e 0)) or vector (0)",
-          "hide": false,
-          "interval": "",
-          "legendFormat": "Active Directory",
-          "refId": "E"
-        }
-      ],
-      "title": "Authentication Methods",
-      "transformations": [],
-      "type": "bargauge"
-    },
-    {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
@@ -202,129 +105,32 @@
           "color": {
             "mode": "thresholds"
           },
+          "decimals": 0,
           "mappings": [],
-          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
-                "color": "dark-yellow",
+                "color": "green",
                 "value": null
               }
             ]
-          },
-          "unit": "short"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 6,
-        "w": 3,
-        "x": 18,
-        "y": 1
-      },
-      "id": 158,
-      "links": [],
-      "options": {
-        "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "auto",
-        "orientation": "vertical",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "text": {},
-        "textMode": "auto"
-      },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "security_certificate_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", certificateExpiryStatus=\"expiring\"}",
-          "format": "table",
-          "hide": true,
-          "instant": true,
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "",
-          "refId": "A"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(security_certificate_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", certificateExpiryStatus=\"expiring\"})",
-          "format": "time_series",
-          "hide": false,
-          "instant": true,
-          "interval": "",
-          "legendFormat": "",
-          "refId": "B"
-        }
-      ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Expiring in < 60 days",
-      "transformations": [
-        {
-          "id": "merge",
-          "options": {}
-        },
-        {
-          "id": "organize",
-          "options": {
-            "excludeByName": {
-              "Value #A": true
-            },
-            "indexByName": {},
-            "renameByName": {
-              "cluster": "Cluster",
-              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
-            }
           }
-        }
-      ],
-      "type": "stat"
-    },
-    {
-      "cacheTimeout": null,
-      "datasource": "${DS_PROMETHEUS}",
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "noValue": "0",
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "light-red",
-                "value": null
-              }
-            ]
-          },
-          "unit": "short"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 6,
-        "w": 3,
-        "x": 21,
+        "h": 3,
+        "w": 5,
+        "x": 0,
         "y": 1
       },
-      "id": 159,
-      "links": [],
+      "id": 207,
       "options": {
         "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "graphMode": "area",
+        "justifyMode": "auto",
+        "orientation": "auto",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -335,170 +141,51 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "count(security_certificate_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", certificateExpiryStatus=\"expired\"})",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "",
-          "refId": "A"
-        }
-      ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Expired",
-      "type": "stat"
-    },
-    {
-      "collapsed": false,
-      "datasource": "${DS_PROMETHEUS}",
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 7
-      },
-      "id": 12,
-      "panels": [],
-      "title": "Volume Encryption",
-      "type": "row"
-    },
-    {
-      "datasource": "${DS_PROMETHEUS}",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "fixedColor": "green",
-            "mode": "fixed"
-          },
-          "custom": {
-            "align": "auto",
-            "displayMode": "gradient-gauge",
-            "filterable": true
-          },
-          "decimals": 0,
-          "mappings": [],
-          "max": 100,
-          "min": 0,
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              }
-            ]
-          }
-        },
-        "overrides": [
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "Encrypted"
-            },
-            "properties": [
-              {
-                "id": "unit",
-                "value": "percent"
-              },
-              {
-                "id": "max",
-                "value": 100
-              }
-            ]
-          }
-        ]
-      },
-      "gridPos": {
-        "h": 3,
-        "w": 24,
-        "x": 0,
-        "y": 8
-      },
-      "id": 178,
-      "options": {
-        "showHeader": true
-      },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"true\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
+          "expr": "(count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"true\"}) or vector (0))\n+\n(count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isHardwareEncrypted=\"true\"}) or vector (0) )",
           "instant": true,
           "interval": "",
-          "legendFormat": "Software",
+          "legendFormat": "encrypted",
           "refId": "A"
         },
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isHardwareEncrypted=\"true\"}) or vector (0) ",
-          "format": "time_series",
+          "expr": "(count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\"}) or vector (1) )",
           "hide": false,
           "instant": true,
           "interval": "",
-          "legendFormat": "Hardware",
+          "legendFormat": "total",
           "refId": "B"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\"}) or vector (1) ",
-          "hide": false,
-          "instant": true,
-          "interval": "",
-          "legendFormat": "Total",
-          "refId": "C"
         }
       ],
+      "title": "Volume Encryption %",
       "transformations": [
         {
           "id": "calculateField",
           "options": {
-            "alias": "Both",
-            "binary": {
-              "left": "Software",
-              "operator": "+",
-              "reducer": "sum",
-              "right": "Hardware"
-            },
-            "mode": "binary",
-            "reduce": {
-              "reducer": "sum"
-            }
-          }
-        },
-        {
-          "id": "calculateField",
-          "options": {
-            "alias": "",
             "binary": {
-              "left": "Both",
+              "left": "encrypted",
               "operator": "/",
               "reducer": "sum",
-              "right": "Total"
+              "right": "total"
             },
             "mode": "binary",
             "reduce": {
-              "include": [
-                "Saml",
-                "Certificate"
-              ],
               "reducer": "sum"
-            }
+            },
+            "replaceFields": true
           }
         },
         {
           "id": "calculateField",
           "options": {
-            "alias": "Encrypted",
             "binary": {
-              "left": "Both / Total",
+              "left": "encrypted / total",
               "operator": "*",
               "reducer": "sum",
               "right": "100"
@@ -506,275 +193,47 @@
             "mode": "binary",
             "reduce": {
               "reducer": "sum"
-            }
-          }
-        },
-        {
-          "id": "organize",
-          "options": {
-            "excludeByName": {
-              "Both": true,
-              "Both / Total": true,
-              "Certificate": true,
-              "Compliant": false,
-              "Compliant / Total": false,
-              "CompliantCluster": true,
-              "CompliantCluster / TotalCluster": true,
-              "Hardware": true,
-              "Saml": true,
-              "Saml / Certificate": false,
-              "Software": true,
-              "Time": true,
-              "Total": true,
-              "TotalCluster": true,
-              "perc": true
             },
-            "indexByName": {},
-            "renameByName": {
-              "PercentCompliant": "",
-              "Saml / Certificate": "perc",
-              "Time": ""
-            }
+            "replaceFields": true
           }
         }
       ],
-      "type": "table"
-    },
-    {
-      "cacheTimeout": null,
-      "datasource": "${DS_PROMETHEUS}",
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "noValue": "0",
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "dark-green",
-                "value": null
-              }
-            ]
-          },
-          "unit": "short"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 0,
-        "y": 11
-      },
-      "id": 163,
-      "links": [],
-      "options": {
-        "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "text": {},
-        "textMode": "auto"
-      },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"true\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "",
-          "refId": "A"
-        }
-      ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Software Encrypted",
       "type": "stat"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "noValue": "0",
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "semi-dark-green",
-                "value": null
-              }
-            ]
-          },
-          "unit": "short"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 6,
-        "y": 11
-      },
-      "id": 170,
-      "links": [],
-      "options": {
-        "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "text": {},
-        "textMode": "auto"
-      },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isHardwareEncrypted=\"true\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "",
-          "refId": "A"
-        }
-      ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Hardware Encrypted",
-      "type": "stat"
-    },
-    {
-      "cacheTimeout": null,
-      "datasource": "${DS_PROMETHEUS}",
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "noValue": "0",
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "light-green",
-                "value": null
-              }
-            ]
-          },
-          "unit": "short"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 12,
-        "y": 11
-      },
-      "id": 169,
-      "links": [],
-      "options": {
-        "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "text": {},
-        "textMode": "auto"
-      },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"true\", isHardwareEncrypted=\"true\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
-          "instant": false,
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "",
-          "refId": "A"
-        }
-      ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Software and Hardware Encrypted",
-      "type": "stat"
-    },
-    {
-      "cacheTimeout": null,
-      "datasource": "${DS_PROMETHEUS}",
-      "description": "",
+      "description": "This panel requires a cluster with ONTAP 9.10+ and the Harvest REST collector",
       "fieldConfig": {
         "defaults": {
           "color": {
             "mode": "thresholds"
           },
+          "decimals": 0,
           "mappings": [],
-          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
-                "color": "dark-yellow",
+                "color": "green",
                 "value": null
               }
             ]
-          },
-          "unit": "none"
+          }
         },
         "overrides": []
       },
       "gridPos": {
         "h": 3,
-        "w": 6,
-        "x": 18,
-        "y": 11
+        "w": 5,
+        "x": 5,
+        "y": 1
       },
-      "id": 171,
-      "links": [],
+      "id": 208,
       "options": {
         "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "graphMode": "area",
+        "justifyMode": "auto",
+        "orientation": "auto",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -785,38 +244,64 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"false\", isHardwareEncrypted=\"false\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
+          "expr": "((count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=~\"enabled|dry_run\"}) or vector (0)) / (count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\"}) or vector (1))) * 100",
           "instant": true,
           "interval": "",
-          "intervalFactor": 1,
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Not Encrypted",
+      "title": "Volume Anti-ransomware Status %",
+      "transformations": [
+        {
+          "id": "calculateField",
+          "options": {
+            "binary": {
+              "left": "encrypted",
+              "operator": "/",
+              "reducer": "sum",
+              "right": "total"
+            },
+            "mode": "binary",
+            "reduce": {
+              "reducer": "sum"
+            },
+            "replaceFields": true
+          }
+        },
+        {
+          "id": "calculateField",
+          "options": {
+            "binary": {
+              "left": "encrypted / total",
+              "operator": "*",
+              "reducer": "sum",
+              "right": "100"
+            },
+            "mode": "binary",
+            "reduce": {
+              "reducer": "sum"
+            },
+            "replaceFields": true
+          }
+        }
+      ],
       "type": "stat"
     },
     {
       "datasource": "${DS_PROMETHEUS}",
+      "description": "",
       "fieldConfig": {
         "defaults": {
           "color": {
-            "fixedColor": "transparent",
-            "mode": "fixed"
-          },
-          "custom": {
-            "align": "left",
-            "displayMode": "auto",
-            "filterable": true
+            "mode": "thresholds"
           },
+          "decimals": 0,
           "mappings": [],
           "thresholds": {
             "mode": "absolute",
@@ -828,336 +313,216 @@
             ]
           }
         },
-        "overrides": [
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "Encryption Type"
-            },
-            "properties": [
-              {
-                "id": "custom.filterable",
-                "value": true
-              },
-              {
-                "id": "mappings",
-                "value": [
-                  {
-                    "options": {
-                      "falsefalse": {
-                        "index": 0,
-                        "text": "None"
-                      },
-                      "falsetrue": {
-                        "index": 1,
-                        "text": "Software"
-                      },
-                      "truefalse": {
-                        "index": 2,
-                        "text": "Hardware"
-                      },
-                      "truetrue": {
-                        "index": 3,
-                        "text": "Both"
-                      }
-                    },
-                    "type": "value"
-                  },
-                  {
-                    "options": {
-                      "match": "empty",
-                      "result": {
-                        "index": 4,
-                        "text": "None"
-                      }
-                    },
-                    "type": "special"
-                  }
-                ]
-              }
-            ]
-          },
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "State"
-            },
-            "properties": [
-              {
-                "id": "custom.filterable",
-                "value": true
-              }
-            ]
-          }
-        ]
+        "overrides": []
       },
       "gridPos": {
-        "h": 7,
-        "w": 24,
-        "x": 0,
-        "y": 14
+        "h": 3,
+        "w": 5,
+        "x": 10,
+        "y": 1
       },
-      "id": 155,
+      "id": 210,
       "options": {
-        "showHeader": true,
-        "sortBy": []
+        "colorMode": "value",
+        "graphMode": "area",
+        "justifyMode": "auto",
+        "orientation": "auto",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "text": {},
+        "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"}",
-          "format": "table",
+          "expr": "((count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\", anti_ransomware_state=~\"enabled|dry_run\"}) or vector (0))\n/\n(count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\"}) or vector (1))) * 100",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "Volume Encryption",
+      "title": "SVM Anti-ransomware Status %",
       "transformations": [
         {
-          "id": "filterFieldsByName",
-          "options": {
-            "include": {
-              "names": [
-                "cluster",
-                "isEncrypted",
-                "isHardwareEncrypted",
-                "svm",
-                "volume",
-                "state"
-              ]
-            }
-          }
-        },
-        {
-          "id": "organize",
+          "id": "calculateField",
           "options": {
-            "excludeByName": {
-              "isEncrypted": false,
-              "isHardwareEncrypted": false
+            "binary": {
+              "left": "encrypted",
+              "operator": "/",
+              "reducer": "sum",
+              "right": "total"
             },
-            "indexByName": {
-              "cluster": 2,
-              "isEncrypted": 3,
-              "isHardwareEncrypted": 4,
-              "svm": 1,
-              "volume": 0
+            "mode": "binary",
+            "reduce": {
+              "reducer": "sum"
             },
-            "renameByName": {
-              "cluster": "Cluster",
-              "isEncrypted": "",
-              "isHardwareEncrypted": "",
-              "state": "State",
-              "svm": "SVM",
-              "volume": "Volume"
-            }
+            "replaceFields": true
           }
         },
         {
           "id": "calculateField",
           "options": {
-            "alias": "Encryption Type",
             "binary": {
-              "left": "isHardwareEncrypted",
-              "operator": "+",
+              "left": "encrypted / total",
+              "operator": "*",
               "reducer": "sum",
-              "right": "isEncrypted"
+              "right": "100"
             },
             "mode": "binary",
             "reduce": {
-              "include": [
-                "isEncrypted",
-                "isHardwareEncrypted"
-              ],
               "reducer": "sum"
             },
-            "replaceFields": false
-          }
-        },
-        {
-          "id": "organize",
-          "options": {
-            "excludeByName": {
-              "isEncrypted": true,
-              "isHardwareEncrypted": true
-            },
-            "indexByName": {},
-            "renameByName": {}
+            "replaceFields": true
           }
         }
       ],
-      "type": "table"
+      "type": "stat"
     },
     {
-      "collapsed": false,
       "datasource": "${DS_PROMETHEUS}",
+      "description": "",
       "gridPos": {
         "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 21
+        "w": 9,
+        "x": 15,
+        "y": 1
       },
-      "id": 16,
-      "panels": [],
-      "title": "Storage VM and Volume Anti-ransomware Status",
-      "type": "row"
+      "id": 201,
+      "options": {
+        "content": "",
+        "mode": "markdown"
+      },
+      "pluginVersion": "8.3.4",
+      "title": "Cluster Authentication Methods",
+      "type": "text"
+    },
+    {
+      "datasource": "${DS_PROMETHEUS}",
+      "description": "",
+      "gridPos": {
+        "h": 1,
+        "w": 6,
+        "x": 15,
+        "y": 2
+      },
+      "id": 211,
+      "options": {
+        "content": "",
+        "mode": "markdown"
+      },
+      "pluginVersion": "8.3.4",
+      "title": "Authentication Methods",
+      "type": "text"
+    },
+    {
+      "datasource": "${DS_PROMETHEUS}",
+      "description": "",
+      "gridPos": {
+        "h": 1,
+        "w": 3,
+        "x": 21,
+        "y": 2
+      },
+      "id": 202,
+      "options": {
+        "content": "",
+        "mode": "markdown"
+      },
+      "pluginVersion": "8.3.4",
+      "title": "Certificates",
+      "type": "text"
     },
     {
       "datasource": "${DS_PROMETHEUS}",
+      "description": "",
       "fieldConfig": {
         "defaults": {
           "color": {
-            "fixedColor": "green",
-            "mode": "fixed"
-          },
-          "custom": {
-            "align": "auto",
-            "displayMode": "gradient-gauge",
-            "filterable": true
+            "mode": "thresholds"
           },
-          "decimals": 0,
           "mappings": [],
-          "max": 100,
-          "min": 0,
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
-                "color": "green",
+                "color": "blue",
                 "value": null
               }
             ]
-          }
+          },
+          "unit": "locale"
         },
-        "overrides": [
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "ENABLED"
-            },
-            "properties": [
-              {
-                "id": "unit",
-                "value": "percent"
-              },
-              {
-                "id": "custom.displayMode",
-                "value": "gradient-gauge"
-              },
-              {
-                "id": "max",
-                "value": 100
-              }
-            ]
-          }
-        ]
+        "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 18,
-        "x": 0,
-        "y": 22
+        "h": 5,
+        "w": 3,
+        "x": 15,
+        "y": 3
       },
-      "id": 179,
+      "id": 158,
+      "links": [],
       "options": {
-        "showHeader": true
+        "colorMode": "value",
+        "graphMode": "none",
+        "justifyMode": "auto",
+        "orientation": "vertical",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "text": {},
+        "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
           "exemplar": false,
-          "expr": "count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\", anti_ransomware_state=~\"enabled|dry_run\"}) or vector (0)",
-          "format": "time_series",
+          "expr": "count(count by (datacenter, cluster)(security_account_samluser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} > 0)) or vector (0)",
+          "format": "table",
           "hide": false,
           "instant": true,
           "interval": "",
-          "legendFormat": "Anti-ransomware Enabled",
+          "intervalFactor": 1,
+          "legendFormat": "",
           "refId": "A"
-        },
-        {
-          "exemplar": false,
-          "expr": "count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\"}) or vector (1)",
-          "format": "time_series",
-          "hide": false,
-          "instant": true,
-          "interval": "",
-          "legendFormat": "Anti-ransomware Supported",
-          "refId": "B"
         }
       ],
-      "title": "Storage VM Status",
+      "title": "SAML",
       "transformations": [
         {
-          "id": "calculateField",
-          "options": {
-            "alias": "",
-            "binary": {
-              "left": "Anti-ransomware Enabled",
-              "operator": "/",
-              "reducer": "sum",
-              "right": "Anti-ransomware Supported"
-            },
-            "mode": "binary",
-            "reduce": {
-              "include": [
-                "Saml",
-                "Certificate"
-              ],
-              "reducer": "sum"
-            }
-          }
-        },
-        {
-          "id": "calculateField",
-          "options": {
-            "alias": "ENABLED",
-            "binary": {
-              "left": "Anti-ransomware Enabled / Anti-ransomware Supported",
-              "operator": "*",
-              "reducer": "sum",
-              "right": "100"
-            },
-            "mode": "binary",
-            "reduce": {
-              "reducer": "sum"
-            }
-          }
+          "id": "merge",
+          "options": {}
         },
         {
           "id": "organize",
           "options": {
             "excludeByName": {
-              "Anti-ransomware Enabled": true,
-              "Anti-ransomware Enabled / Anti-ransomware Supported": true,
-              "Anti-ransomware Supported": true,
-              "Certificate": true,
-              "Compliant": false,
-              "Compliant / Total": false,
-              "CompliantCluster": true,
-              "CompliantCluster / TotalCluster": true,
-              "Saml": true,
-              "Saml / Certificate": false,
-              "Time": true,
-              "Total": true,
-              "TotalCluster": true,
-              "perc": true
+              "Value #A": true
             },
             "indexByName": {},
             "renameByName": {
-              "ENABLED": "",
-              "PercentCompliant": "",
-              "Saml / Certificate": "perc",
-              "Time": ""
+              "cluster": "Cluster",
+              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
             }
           }
         }
       ],
-      "type": "table"
+      "type": "stat"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
@@ -1171,28 +536,28 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "dark-green",
+                "color": "blue",
                 "value": null
               }
             ]
           },
-          "unit": "short"
+          "unit": "locale"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
+        "h": 5,
         "w": 3,
         "x": 18,
-        "y": 22
+        "y": 3
       },
-      "id": 173,
+      "id": 192,
       "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "justifyMode": "auto",
+        "orientation": "vertical",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -1203,12 +568,12 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
           "exemplar": false,
-          "expr": "count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\", anti_ransomware_state=~\"enabled|dry_run\"}) or vector (0)",
-          "format": "time_series",
+          "expr": "(count(count by (datacenter, cluster) (security_account_activediruser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} > 0)) + count(count by (datacenter, cluster) (security_account_ldapuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} > 0))) or vector (0)",
+          "format": "table",
           "hide": false,
           "instant": true,
           "interval": "",
@@ -1217,13 +582,29 @@
           "refId": "A"
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Enabled",
+      "title": "AD/LDAP",
+      "transformations": [
+        {
+          "id": "merge",
+          "options": {}
+        },
+        {
+          "id": "organize",
+          "options": {
+            "excludeByName": {
+              "Value #A": true
+            },
+            "indexByName": {},
+            "renameByName": {
+              "cluster": "Cluster",
+              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
+            }
+          }
+        }
+      ],
       "type": "stat"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
@@ -1242,23 +623,23 @@
               }
             ]
           },
-          "unit": "short"
+          "unit": "locale"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
+        "h": 5,
         "w": 3,
         "x": 21,
-        "y": 22
+        "y": 3
       },
-      "id": 182,
+      "id": 193,
       "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "justifyMode": "auto",
+        "orientation": "vertical",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -1269,199 +650,139 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\", anti_ransomware_state=~\"disabled\"}) or vector (0)",
+          "expr": "count(security_certificate_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", certificateExpiryStatus=\"expiring\"})",
           "format": "time_series",
           "hide": false,
-          "instant": false,
+          "instant": true,
           "interval": "",
-          "intervalFactor": 1,
           "legendFormat": "",
-          "refId": "A"
+          "refId": "B"
+        }
+      ],
+      "title": "Expiring in < 60 days",
+      "transformations": [
+        {
+          "id": "merge",
+          "options": {}
+        },
+        {
+          "id": "organize",
+          "options": {
+            "excludeByName": {
+              "Value #A": true
+            },
+            "indexByName": {},
+            "renameByName": {
+              "cluster": "Cluster",
+              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
+            }
+          }
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Disabled",
       "type": "stat"
     },
     {
       "datasource": "${DS_PROMETHEUS}",
+      "description": "",
       "fieldConfig": {
         "defaults": {
           "color": {
-            "fixedColor": "transparent",
-            "mode": "fixed"
+            "mode": "palette-classic"
           },
           "custom": {
-            "align": "left",
-            "displayMode": "auto",
-            "filterable": true
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            }
           },
+          "decimals": 0,
           "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              }
-            ]
-          }
+          "unit": "locale"
         },
-        "overrides": [
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "Anti-ransomware Status"
-            },
-            "properties": [
-              {
-                "id": "custom.filterable",
-                "value": true
-              },
-              {
-                "id": "mappings",
-                "value": [
-                  {
-                    "options": {
-                      "disabled": {
-                        "index": 2,
-                        "text": "Disabled"
-                      },
-                      "dry_run": {
-                        "index": 1,
-                        "text": "Enabled (Learning mode)"
-                      },
-                      "enabled": {
-                        "index": 0,
-                        "text": "Enabled (Active mode)"
-                      }
-                    },
-                    "type": "value"
-                  },
-                  {
-                    "options": {
-                      "match": "empty",
-                      "result": {
-                        "index": 3,
-                        "text": "Disabled"
-                      }
-                    },
-                    "type": "special"
-                  }
-                ]
-              }
-            ]
-          },
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "Volume Count"
-            },
-            "properties": [
-              {
-                "id": "mappings",
-                "value": [
-                  {
-                    "options": {
-                      "match": "null",
-                      "result": {
-                        "index": 0,
-                        "text": "0"
-                      }
-                    },
-                    "type": "special"
-                  }
-                ]
-              }
-            ]
-          }
-        ]
+        "overrides": []
       },
       "gridPos": {
-        "h": 7,
-        "w": 24,
+        "h": 13,
+        "w": 5,
         "x": 0,
-        "y": 25
+        "y": 4
       },
-      "id": 160,
+      "id": 204,
       "options": {
-        "showHeader": true,
-        "sortBy": []
+        "displayLabels": [
+          "value",
+          "percent"
+        ],
+        "legend": {
+          "displayMode": "table",
+          "placement": "bottom",
+          "values": [
+            "value"
+          ]
+        },
+        "pieType": "donut",
+        "reduceOptions": {
+          "calcs": [
+            "last"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "tooltip": {
+          "mode": "single"
+        }
       },
       "pluginVersion": "8.1.2",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "svm_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"}",
-          "format": "table",
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"true\"}) or vector (0)",
           "instant": true,
           "interval": "",
-          "legendFormat": "",
+          "legendFormat": "Software",
           "refId": "A"
         },
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count by (svm)(volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"})",
-          "format": "table",
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isHardwareEncrypted=\"true\"}) or vector (0)",
           "hide": false,
           "instant": true,
           "interval": "",
-          "legendFormat": "",
+          "legendFormat": "Hardware",
           "refId": "B"
-        }
-      ],
-      "title": "Storage VMs Anti-ransomware Status",
-      "transformations": [
-        {
-          "id": "filterFieldsByName",
-          "options": {
-            "include": {
-              "names": [
-                "anti_ransomware_state",
-                "cluster",
-                "svm",
-                "Value #B"
-              ]
-            }
-          }
         },
         {
-          "id": "merge",
-          "options": {}
+          "datasource": "${DS_PROMETHEUS}",
+          "exemplar": false,
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"true\", isHardwareEncrypted=\"true\"}) or vector (0)",
+          "hide": false,
+          "instant": true,
+          "interval": "",
+          "legendFormat": "Hardware and Software",
+          "refId": "D"
         },
         {
-          "id": "organize",
-          "options": {
-            "excludeByName": {
-              "isEncrypted": false,
-              "isHardwareEncrypted": false
-            },
-            "indexByName": {
-              "Value #B": 2,
-              "anti_ransomware_state": 3,
-              "cluster": 1,
-              "svm": 0
-            },
-            "renameByName": {
-              "Value #B": "Volume Count",
-              "antiRansomwareState": "Anti-ransomware Status",
-              "anti_ransomware_state": "Anti-ransomware Status",
-              "cluster": "Cluster",
-              "isEncrypted": "",
-              "isHardwareEncrypted": "",
-              "state": "State",
-              "svm": "SVM",
-              "volume": "Volume"
-            }
-          }
+          "datasource": "${DS_PROMETHEUS}",
+          "exemplar": false,
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", isEncrypted=\"false\", isHardwareEncrypted=\"false\"}) or vector (0)",
+          "hide": false,
+          "instant": true,
+          "interval": "",
+          "legendFormat": "Not Encrypted",
+          "refId": "E"
         }
       ],
-      "type": "table"
+      "title": "Volume Encryption",
+      "transformations": [],
+      "type": "piechart"
     },
     {
       "datasource": "${DS_PROMETHEUS}",
@@ -1469,221 +790,176 @@
       "fieldConfig": {
         "defaults": {
           "color": {
-            "fixedColor": "green",
-            "mode": "fixed"
+            "mode": "palette-classic"
           },
           "custom": {
-            "align": "auto",
-            "displayMode": "gradient-gauge",
-            "filterable": true,
-            "minWidth": 50
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            }
           },
           "decimals": 0,
           "mappings": [],
-          "max": 100,
-          "min": 0,
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              }
-            ]
-          }
+          "unit": "locale"
         },
-        "overrides": [
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "ENABLED"
-            },
-            "properties": [
-              {
-                "id": "unit",
-                "value": "percent"
-              },
-              {
-                "id": "custom.displayMode",
-                "value": "gradient-gauge"
-              },
-              {
-                "id": "max",
-                "value": 100
-              }
-            ]
-          }
-        ]
+        "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 24,
-        "x": 0,
-        "y": 32
+        "h": 13,
+        "w": 5,
+        "x": 5,
+        "y": 4
       },
-      "id": 180,
+      "id": 205,
       "options": {
-        "showHeader": true
+        "displayLabels": [
+          "value",
+          "percent"
+        ],
+        "legend": {
+          "displayMode": "table",
+          "placement": "bottom",
+          "values": [
+            "value"
+          ]
+        },
+        "pieType": "donut",
+        "reduceOptions": {
+          "calcs": [
+            "last"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "tooltip": {
+          "mode": "single"
+        }
       },
       "pluginVersion": "8.1.2",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=~\"enabled|dry_run\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=\"enabled\"}) or vector (0)",
           "instant": true,
           "interval": "",
-          "legendFormat": "antiRansomwareEnabled",
+          "legendFormat": "Enabled in active mode",
           "refId": "A"
         },
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\"}) or vector (1)",
-          "format": "time_series",
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=\"dry_run\"}) or vector (0)",
           "hide": false,
           "instant": true,
           "interval": "",
-          "legendFormat": "antiRansomwareSupported",
+          "legendFormat": "Enabled in learning mode",
           "refId": "B"
-        }
-      ],
-      "title": "Volume Status",
-      "transformations": [
-        {
-          "id": "calculateField",
-          "options": {
-            "alias": "",
-            "binary": {
-              "left": "antiRansomwareEnabled",
-              "operator": "/",
-              "reducer": "sum",
-              "right": "antiRansomwareSupported"
-            },
-            "mode": "binary",
-            "reduce": {
-              "include": [
-                "Saml",
-                "Certificate"
-              ],
-              "reducer": "sum"
-            }
-          }
         },
         {
-          "id": "calculateField",
-          "options": {
-            "alias": "ENABLED",
-            "binary": {
-              "left": "antiRansomwareEnabled / antiRansomwareSupported",
-              "operator": "*",
-              "reducer": "sum",
-              "right": "100"
-            },
-            "mode": "binary",
-            "reduce": {
-              "reducer": "sum"
-            }
-          }
+          "datasource": "${DS_PROMETHEUS}",
+          "exemplar": false,
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=~\".*paused.*\"}) or vector (0)",
+          "hide": false,
+          "instant": true,
+          "interval": "",
+          "legendFormat": "Paused",
+          "refId": "D"
         },
         {
-          "id": "organize",
-          "options": {
-            "excludeByName": {
-              "Certificate": true,
-              "Compliant": false,
-              "Compliant / Total": false,
-              "CompliantCluster": true,
-              "CompliantCluster / TotalCluster": true,
-              "Saml": true,
-              "Saml / Certificate": false,
-              "Time": true,
-              "Total": true,
-              "TotalCluster": true,
-              "antiRansomwareEnabled": true,
-              "antiRansomwareEnabled / antiRansomwareSupported": true,
-              "antiRansomwareSupported": true,
-              "perc": true
-            },
-            "indexByName": {},
-            "renameByName": {
-              "PercentCompliant": "",
-              "Saml / Certificate": "perc",
-              "Time": ""
-            }
-          }
+          "datasource": "${DS_PROMETHEUS}",
+          "exemplar": false,
+          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=~\"disabled\"}) or vector (0)",
+          "hide": false,
+          "instant": true,
+          "interval": "",
+          "legendFormat": "Disabled",
+          "refId": "E"
         }
       ],
-      "type": "table"
+      "title": "Volume Anti-ransomware Status",
+      "transformations": [],
+      "type": "piechart"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
         "defaults": {
           "color": {
-            "mode": "thresholds"
+            "mode": "palette-classic"
           },
-          "mappings": [],
-          "noValue": "0",
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "dark-green",
-                "value": null
-              }
-            ]
+          "custom": {
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            }
           },
-          "unit": "short"
+          "decimals": 0,
+          "mappings": [],
+          "unit": "locale"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 0,
-        "y": 35
+        "h": 13,
+        "w": 5,
+        "x": 10,
+        "y": 4
       },
-      "id": 172,
-      "links": [],
+      "id": 209,
       "options": {
-        "colorMode": "value",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "displayLabels": [
+          "value",
+          "percent"
+        ],
+        "legend": {
+          "displayMode": "table",
+          "placement": "bottom",
+          "values": [
+            "value"
+          ]
+        },
+        "pieType": "donut",
         "reduceOptions": {
           "calcs": [
-            "lastNotNull"
+            "last"
           ],
           "fields": "",
           "values": false
         },
-        "text": {},
-        "textMode": "auto"
+        "tooltip": {
+          "mode": "single"
+        }
       },
       "pluginVersion": "8.1.2",
       "targets": [
         {
+          "datasource": "${DS_PROMETHEUS}",
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=\"enabled\"}) or vector (0)",
-          "format": "time_series",
-          "hide": false,
+          "expr": "count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\", anti_ransomware_state=~\"enabled|dry_run\"}) or vector (0)",
           "instant": true,
           "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "",
+          "legendFormat": "Enabled",
           "refId": "A"
+        },
+        {
+          "datasource": "${DS_PROMETHEUS}",
+          "exemplar": false,
+          "expr": "count(svm_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", anti_ransomware_state!=\"\", anti_ransomware_state=~\"disabled\"}) or vector (0)",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "Disabled",
+          "refId": "B"
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Enabled in active mode",
-      "type": "stat"
+      "title": "SVM Anti-ransomware Status",
+      "transformations": [],
+      "type": "piechart"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
@@ -1697,28 +973,28 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "semi-dark-green",
+                "color": "blue",
                 "value": null
               }
             ]
           },
-          "unit": "short"
+          "unit": "locale"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 6,
-        "y": 35
+        "h": 5,
+        "w": 3,
+        "x": 15,
+        "y": 8
       },
-      "id": 181,
+      "id": 190,
       "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "justifyMode": "auto",
+        "orientation": "vertical",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -1729,12 +1005,12 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=\"dry_run\"}) or vector (0)",
-          "format": "time_series",
+          "expr": "count(count by (datacenter, cluster) (security_account_certificateuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} > 0)) or vector (0)",
+          "format": "table",
           "hide": false,
           "instant": true,
           "interval": "",
@@ -1743,13 +1019,29 @@
           "refId": "A"
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Enabled in learning mode",
+      "title": "Certificate",
+      "transformations": [
+        {
+          "id": "merge",
+          "options": {}
+        },
+        {
+          "id": "organize",
+          "options": {
+            "excludeByName": {
+              "Value #A": true
+            },
+            "indexByName": {},
+            "renameByName": {
+              "cluster": "Cluster",
+              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
+            }
+          }
+        }
+      ],
       "type": "stat"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
@@ -1763,28 +1055,28 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "light-green",
+                "color": "blue",
                 "value": null
               }
             ]
           },
-          "unit": "short"
+          "unit": "locale"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 12,
-        "y": 35
+        "h": 5,
+        "w": 3,
+        "x": 18,
+        "y": 8
       },
-      "id": 175,
+      "id": 194,
       "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "justifyMode": "auto",
+        "orientation": "vertical",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -1795,27 +1087,43 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=~\".*paused.*\"}) or vector (0)",
-          "format": "time_series",
+          "expr": "count(count by (datacenter, cluster) (security_account_localuser{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"} > 0)) or vector (0)",
+          "format": "table",
           "hide": false,
-          "instant": false,
+          "instant": true,
           "interval": "",
           "intervalFactor": 1,
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Paused",
+      "title": "Local",
+      "transformations": [
+        {
+          "id": "merge",
+          "options": {}
+        },
+        {
+          "id": "organize",
+          "options": {
+            "excludeByName": {
+              "Value #A": true
+            },
+            "indexByName": {},
+            "renameByName": {
+              "cluster": "Cluster",
+              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
+            }
+          }
+        }
+      ],
       "type": "stat"
     },
     {
-      "cacheTimeout": null,
       "datasource": "${DS_PROMETHEUS}",
       "description": "",
       "fieldConfig": {
@@ -1829,28 +1137,28 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "dark-yellow",
+                "color": "dark-red",
                 "value": null
               }
             ]
           },
-          "unit": "short"
+          "unit": "locale"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 6,
-        "x": 18,
-        "y": 35
+        "h": 5,
+        "w": 3,
+        "x": 21,
+        "y": 8
       },
-      "id": 176,
+      "id": 191,
       "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "horizontal",
+        "justifyMode": "auto",
+        "orientation": "vertical",
         "reduceOptions": {
           "calcs": [
             "lastNotNull"
@@ -1861,186 +1169,590 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.1.2",
+      "pluginVersion": "8.3.4",
       "targets": [
         {
           "exemplar": false,
-          "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\", svm=~\"$SVM\", antiRansomwareState !=\"\" , antiRansomwareState=~\"disabled\"}) or vector (0)",
-          "format": "time_series",
+          "expr": "count(security_certificate_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", certificateExpiryStatus=\"expired\"})",
+          "format": "table",
           "hide": false,
-          "instant": false,
+          "instant": true,
           "interval": "",
           "intervalFactor": 1,
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "timeFrom": null,
-      "timeShift": null,
-      "title": "Disabled",
+      "title": "Expired",
+      "transformations": [
+        {
+          "id": "merge",
+          "options": {}
+        },
+        {
+          "id": "organize",
+          "options": {
+            "excludeByName": {
+              "Value #A": true
+            },
+            "indexByName": {},
+            "renameByName": {
+              "cluster": "Cluster",
+              "security_certificate_labels{certificateExpiryStatus=\"expiring\", certificateIssuerType=\"self_signed\", cluster=\"F8080-32-25\", datacenter=\"DC-02\", instance=\"localhost:12984\", job=\"prometheus14\", name=\"F8080-32-25_1673D3449EB39B95\", scope=\"cluster\", serial_number=\"1673D3449EB39B95\", type=\"server\", uuid=\"d7bb8e95-9840-11eb-814a-00a0986abd71\"}": ""
+            }
+          }
+        }
+      ],
       "type": "stat"
     },
     {
+      "collapsed": true,
       "datasource": "${DS_PROMETHEUS}",
-      "description": "This panel requires a cluster with ONTAP 9.10+ and the Harvest REST collector",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "fixedColor": "transparent",
-            "mode": "fixed"
-          },
-          "custom": {
-            "align": "left",
-            "displayMode": "auto",
-            "filterable": true
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
+      "gridPos": {
+        "h": 1,
+        "w": 24,
+        "x": 0,
+        "y": 17
+      },
+      "id": 12,
+      "panels": [
+        {
+          "datasource": "${DS_PROMETHEUS}",
+          "fieldConfig": {
+            "defaults": {
+              "color": {
+                "fixedColor": "transparent",
+                "mode": "fixed"
+              },
+              "custom": {
+                "align": "left",
+                "displayMode": "auto",
+                "filterable": true
+              },
+              "mappings": [],
+              "thresholds": {
+                "mode": "absolute",
+                "steps": [
+                  {
+                    "color": "green",
+                    "value": null
+                  }
+                ]
+              }
+            },
+            "overrides": [
               {
-                "color": "green",
-                "value": null
+                "matcher": {
+                  "id": "byName",
+                  "options": "Encryption Type"
+                },
+                "properties": [
+                  {
+                    "id": "custom.filterable",
+                    "value": true
+                  },
+                  {
+                    "id": "mappings",
+                    "value": [
+                      {
+                        "options": {
+                          "falsefalse": {
+                            "index": 0,
+                            "text": "None"
+                          },
+                          "falsetrue": {
+                            "index": 1,
+                            "text": "Software"
+                          },
+                          "truefalse": {
+                            "index": 2,
+                            "text": "Hardware"
+                          },
+                          "truetrue": {
+                            "index": 3,
+                            "text": "Both"
+                          }
+                        },
+                        "type": "value"
+                      },
+                      {
+                        "options": {
+                          "match": "empty",
+                          "result": {
+                            "index": 4,
+                            "text": "None"
+                          }
+                        },
+                        "type": "special"
+                      }
+                    ]
+                  }
+                ]
               }
             ]
-          }
-        },
-        "overrides": [
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "Anti-ransomware Status"
+          },
+          "gridPos": {
+            "h": 7,
+            "w": 24,
+            "x": 0,
+            "y": 10
+          },
+          "id": 155,
+          "options": {
+            "showHeader": true,
+            "sortBy": []
+          },
+          "pluginVersion": "8.1.8",
+          "targets": [
+            {
+              "exemplar": false,
+              "expr": "volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"}",
+              "format": "table",
+              "instant": true,
+              "interval": "",
+              "legendFormat": "",
+              "refId": "A"
+            }
+          ],
+          "title": "Volume Encryption",
+          "transformations": [
+            {
+              "id": "filterFieldsByName",
+              "options": {
+                "include": {
+                  "names": [
+                    "aggr",
+                    "isEncrypted",
+                    "isHardwareEncrypted",
+                    "node",
+                    "state",
+                    "svm",
+                    "volume"
+                  ]
+                }
+              }
             },
-            "properties": [
-              {
-                "id": "custom.filterable",
-                "value": true
+            {
+              "id": "calculateField",
+              "options": {
+                "alias": "Encryption Type",
+                "binary": {
+                  "left": "isHardwareEncrypted",
+                  "operator": "+",
+                  "reducer": "sum",
+                  "right": "isEncrypted"
+                },
+                "mode": "binary",
+                "reduce": {
+                  "include": [
+                    "isEncrypted",
+                    "isHardwareEncrypted"
+                  ],
+                  "reducer": "sum"
+                },
+                "replaceFields": false
+              }
+            },
+            {
+              "id": "organize",
+              "options": {
+                "excludeByName": {
+                  "isEncrypted": true,
+                  "isHardwareEncrypted": true
+                },
+                "indexByName": {
+                  "Encryption Type": 4,
+                  "aggr": 2,
+                  "isEncrypted": 6,
+                  "isHardwareEncrypted": 7,
+                  "node": 3,
+                  "state": 5,
+                  "svm": 1,
+                  "volume": 0
+                },
+                "renameByName": {
+                  "aggr": "Aggregate",
+                  "cluster": "Cluster",
+                  "isEncrypted": "",
+                  "isHardwareEncrypted": "",
+                  "node": "Node",
+                  "state": "State",
+                  "svm": "SVM",
+                  "volume": "Volume"
+                }
+              }
+            }
+          ],
+          "type": "table"
+        }
+      ],
+      "title": "Volume Encryption",
+      "type": "row"
+    },
+    {
+      "collapsed": true,
+      "datasource": "${DS_PROMETHEUS}",
+      "gridPos": {
+        "h": 1,
+        "w": 24,
+        "x": 0,
+        "y": 18
+      },
+      "id": 16,
+      "panels": [
+        {
+          "datasource": "${DS_PROMETHEUS}",
+          "fieldConfig": {
+            "defaults": {
+              "color": {
+                "fixedColor": "transparent",
+                "mode": "fixed"
+              },
+              "custom": {
+                "align": "left",
+                "displayMode": "auto",
+                "filterable": true
               },
+              "mappings": [],
+              "thresholds": {
+                "mode": "absolute",
+                "steps": [
+                  {
+                    "color": "green",
+                    "value": null
+                  }
+                ]
+              }
+            },
+            "overrides": [
               {
-                "id": "mappings",
-                "value": [
+                "matcher": {
+                  "id": "byName",
+                  "options": "Anti-ransomware Status"
+                },
+                "properties": [
                   {
-                    "options": {
-                      "disable_in_progress": {
-                        "index": 3,
-                        "text": "Disabling"
-                      },
-                      "disabled": {
-                        "index": 2,
-                        "text": "Disabled"
-                      },
-                      "dry_run": {
-                        "index": 1,
-                        "text": "Enabled (Learning mode)"
-                      },
-                      "dry_run_paused": {
-                        "index": 5,
-                        "text": "Paused (Learning mode)"
-                      },
-                      "enable_paused": {
-                        "index": 4,
-                        "text": "Paused (Active mode)"
+                    "id": "custom.filterable",
+                    "value": true
+                  },
+                  {
+                    "id": "mappings",
+                    "value": [
+                      {
+                        "options": {
+                          "disabled": {
+                            "index": 2,
+                            "text": "Disabled"
+                          },
+                          "dry_run": {
+                            "index": 1,
+                            "text": "Enabled (Learning mode)"
+                          },
+                          "enabled": {
+                            "index": 0,
+                            "text": "Enabled (Active mode)"
+                          }
+                        },
+                        "type": "value"
                       },
-                      "enabled": {
-                        "index": 0,
-                        "text": "Enabled (Active mode)"
+                      {
+                        "options": {
+                          "match": "empty",
+                          "result": {
+                            "index": 3,
+                            "text": "Disabled"
+                          }
+                        },
+                        "type": "special"
                       }
-                    },
-                    "type": "value"
-                  },
+                    ]
+                  }
+                ]
+              },
+              {
+                "matcher": {
+                  "id": "byName",
+                  "options": "Volume Count"
+                },
+                "properties": [
                   {
-                    "options": {
-                      "match": "empty",
-                      "result": {
-                        "index": 6,
-                        "text": "Disabled"
+                    "id": "mappings",
+                    "value": [
+                      {
+                        "options": {
+                          "match": "null",
+                          "result": {
+                            "index": 0,
+                            "text": "0"
+                          }
+                        },
+                        "type": "special"
                       }
-                    },
-                    "type": "special"
+                    ]
                   }
                 ]
               }
             ]
           },
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "SVM"
+          "gridPos": {
+            "h": 7,
+            "w": 24,
+            "x": 0,
+            "y": 11
+          },
+          "id": 160,
+          "options": {
+            "showHeader": true,
+            "sortBy": []
+          },
+          "pluginVersion": "8.1.8",
+          "targets": [
+            {
+              "exemplar": false,
+              "expr": "svm_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"}",
+              "format": "table",
+              "instant": true,
+              "interval": "",
+              "legendFormat": "",
+              "refId": "A"
             },
-            "properties": [
-              {
-                "id": "custom.width",
-                "value": null
+            {
+              "exemplar": false,
+              "expr": "count by (svm)(volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"})",
+              "format": "table",
+              "hide": false,
+              "instant": true,
+              "interval": "",
+              "legendFormat": "",
+              "refId": "B"
+            }
+          ],
+          "title": "Storage VMs Anti-ransomware Status",
+          "transformations": [
+            {
+              "id": "filterFieldsByName",
+              "options": {
+                "include": {
+                  "names": [
+                    "anti_ransomware_state",
+                    "cluster",
+                    "state",
+                    "svm",
+                    "Value #B",
+                    "type"
+                  ]
+                }
               }
-            ]
-          }
-        ]
-      },
+            },
+            {
+              "id": "merge",
+              "options": {}
+            },
+            {
+              "id": "organize",
+              "options": {
+                "excludeByName": {
+                  "isEncrypted": false,
+                  "isHardwareEncrypted": false
+                },
+                "indexByName": {
+                  "Value #B": 3,
+                  "anti_ransomware_state": 2,
+                  "cluster": 1,
+                  "state": 5,
+                  "svm": 0,
+                  "type": 4
+                },
+                "renameByName": {
+                  "Value #B": "Volume Count",
+                  "antiRansomwareState": "Anti-ransomware Status",
+                  "anti_ransomware_state": "Anti-ransomware Status",
+                  "cluster": "Cluster",
+                  "isEncrypted": "",
+                  "isHardwareEncrypted": "",
+                  "state": "State",
+                  "svm": "SVM",
+                  "type": "Type",
+                  "volume": "Volume"
+                }
+              }
+            }
+          ],
+          "type": "table"
+        }
+      ],
+      "title": "Storage VM Anti-ransomware Status",
+      "type": "row"
+    },
+    {
+      "collapsed": true,
+      "datasource": null,
       "gridPos": {
-        "h": 7,
+        "h": 1,
         "w": 24,
         "x": 0,
-        "y": 38
-      },
-      "id": 183,
-      "options": {
-        "showHeader": true,
-        "sortBy": []
+        "y": 19
       },
-      "pluginVersion": "8.1.2",
-      "targets": [
-        {
-          "exemplar": false,
-          "expr": "volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"}",
-          "format": "table",
-          "instant": true,
-          "interval": "",
-          "legendFormat": "",
-          "refId": "A"
-        }
-      ],
-      "title": "Volume Anti-ransomware Status",
-      "transformations": [
+      "id": 196,
+      "panels": [
         {
-          "id": "filterFieldsByName",
+          "datasource": "${DS_PROMETHEUS}",
+          "description": "This panel requires a cluster with ONTAP 9.10+ and the Harvest REST collector",
+          "fieldConfig": {
+            "defaults": {
+              "color": {
+                "fixedColor": "transparent",
+                "mode": "fixed"
+              },
+              "custom": {
+                "align": "left",
+                "displayMode": "auto",
+                "filterable": true
+              },
+              "mappings": [],
+              "thresholds": {
+                "mode": "absolute",
+                "steps": [
+                  {
+                    "color": "green",
+                    "value": null
+                  }
+                ]
+              }
+            },
+            "overrides": [
+              {
+                "matcher": {
+                  "id": "byName",
+                  "options": "Anti-ransomware Status"
+                },
+                "properties": [
+                  {
+                    "id": "custom.filterable",
+                    "value": true
+                  },
+                  {
+                    "id": "mappings",
+                    "value": [
+                      {
+                        "options": {
+                          "disable_in_progress": {
+                            "index": 3,
+                            "text": "Disabling"
+                          },
+                          "disabled": {
+                            "index": 2,
+                            "text": "Disabled"
+                          },
+                          "dry_run": {
+                            "index": 1,
+                            "text": "Enabled (Learning mode)"
+                          },
+                          "dry_run_paused": {
+                            "index": 5,
+                            "text": "Paused (Learning mode)"
+                          },
+                          "enable_paused": {
+                            "index": 4,
+                            "text": "Paused (Active mode)"
+                          },
+                          "enabled": {
+                            "index": 0,
+                            "text": "Enabled (Active mode)"
+                          }
+                        },
+                        "type": "value"
+                      },
+                      {
+                        "options": {
+                          "match": "empty",
+                          "result": {
+                            "index": 6,
+                            "text": "Disabled"
+                          }
+                        },
+                        "type": "special"
+                      }
+                    ]
+                  }
+                ]
+              }
+            ]
+          },
+          "gridPos": {
+            "h": 7,
+            "w": 24,
+            "x": 0,
+            "y": 21
+          },
+          "id": 183,
           "options": {
-            "include": {
-              "names": [
-                "cluster",
-                "svm",
-                "volume",
-                "antiRansomwareState"
-              ]
+            "showHeader": true,
+            "sortBy": []
+          },
+          "pluginVersion": "8.1.8",
+          "targets": [
+            {
+              "exemplar": false,
+              "expr": "volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\", svm=~\"$SVM\"}",
+              "format": "table",
+              "instant": true,
+              "interval": "",
+              "legendFormat": "",
+              "refId": "A"
             }
-          }
-        },
-        {
-          "id": "organize",
-          "options": {
-            "excludeByName": {
-              "isEncrypted": false,
-              "isHardwareEncrypted": false
-            },
-            "indexByName": {
-              "cluster": 2,
-              "isEncrypted": 3,
-              "isHardwareEncrypted": 4,
-              "svm": 1,
-              "volume": 0
+          ],
+          "title": "Volume Anti-ransomware Status",
+          "transformations": [
+            {
+              "id": "filterFieldsByName",
+              "options": {
+                "include": {
+                  "names": [
+                    "aggr",
+                    "antiRansomwareState",
+                    "node",
+                    "state",
+                    "svm",
+                    "volume"
+                  ]
+                }
+              }
             },
-            "renameByName": {
-              "antiRansomwareState": "Anti-ransomware Status",
-              "cluster": "Cluster",
-              "isEncrypted": "",
-              "isHardwareEncrypted": "",
-              "state": "State",
-              "svm": "SVM",
-              "volume": "Volume"
+            {
+              "id": "organize",
+              "options": {
+                "excludeByName": {
+                  "isEncrypted": false,
+                  "isHardwareEncrypted": false
+                },
+                "indexByName": {
+                  "aggr": 2,
+                  "antiRansomwareState": 4,
+                  "node": 3,
+                  "state": 5,
+                  "svm": 1,
+                  "volume": 0
+                },
+                "renameByName": {
+                  "aggr": "Aggregate",
+                  "antiRansomwareState": "Anti-ransomware Status",
+                  "cluster": "Cluster",
+                  "isEncrypted": "",
+                  "isHardwareEncrypted": "",
+                  "node": "Node",
+                  "state": "State",
+                  "svm": "SVM",
+                  "volume": "Volume"
+                }
+              }
             }
-          }
+          ],
+          "type": "table"
         }
       ],
-      "type": "table"
+      "title": "Volume Anti-ransomware Status",
+      "type": "row"
     }
   ],
   "refresh": "",
@@ -2076,7 +1788,17 @@
       },
       {
         "allValue": null,
-        "current": {},
+        "current": {
+          "selected": false,
+          "text": [
+            "rest",
+            "zapi"
+          ],
+          "value": [
+            "rest",
+            "zapi"
+          ]
+        },
         "datasource": "${DS_PROMETHEUS}",
         "definition": "label_values(svm_labels{system_type!=\"7mode\"},datacenter)",
         "description": null,
@@ -2102,7 +1824,15 @@
       },
       {
         "allValue": null,
-        "current": {},
+        "current": {
+          "selected": false,
+          "text": [
+            "All"
+          ],
+          "value": [
+            "$__all"
+          ]
+        },
         "datasource": "${DS_PROMETHEUS}",
         "definition": "label_values(svm_labels{system_type!=\"7mode\",datacenter=~\"$Datacenter\"},cluster)",
         "description": null,
@@ -2128,7 +1858,15 @@
       },
       {
         "allValue": null,
-        "current": {},
+        "current": {
+          "selected": false,
+          "text": [
+            "All"
+          ],
+          "value": [
+            "$__all"
+          ]
+        },
         "datasource": "${DS_PROMETHEUS}",
         "definition": "label_values(svm_labels{system_type!=\"7mode\",datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"},svm)",
         "description": null,
@@ -2171,5 +1909,5 @@
   "timezone": "",
   "title": "ONTAP: Security",
   "uid": "",
-  "version": 2
+  "version": 3
 }


Test patch:
diff --git a/cmd/poller/poller_test.go b/cmd/poller/poller_test.go
index e16632ca..d4a620af 100644
--- a/cmd/poller/poller_test.go
+++ b/cmd/poller/poller_test.go
@@ -144,10 +144,10 @@ func TestCollectorUpgrade(t *testing.T) {
 	tests := []test{
 		{name: "9.11 use ZAPI", clusterVersion: "9.11.1", askFor: "Zapi", wantCollector: "Zapi"},
 		{name: "9.11 use REST", clusterVersion: "9.11.1", askFor: "Rest", wantCollector: "Rest"},
-		{name: "9.12 upgrade", clusterVersion: "9.12.1", askFor: "Zapi", wantCollector: "Rest"},
+		{name: "9.12 upgrade", clusterVersion: "9.12.1", askFor: "Zapi", wantCollector: "Zapi"},
 		{name: "9.12 w/ envar", clusterVersion: "9.12.1", askFor: "Zapi", wantCollector: "Zapi", setEnvVar: true},
 		{name: "9.12 REST", clusterVersion: "9.12.3", askFor: "Rest", wantCollector: "Rest", setEnvVar: true},
-		{name: "9.13 RestPerf", clusterVersion: "9.13.1", askFor: "ZapiPerf", wantCollector: "RestPerf"},
+		{name: "9.13 RestPerf", clusterVersion: "9.13.1", askFor: "ZapiPerf", wantCollector: "ZapiPerf"},
 		{name: "9.13 REST w/ envar", clusterVersion: "9.13.1", askFor: "Rest", wantCollector: "Rest", setEnvVar: true},
 		{name: "9.13 REST w/ envar", clusterVersion: "9.13.1", askFor: "Zapi", wantCollector: "Zapi", setEnvVar: true},
 		{name: "9.13 REST w/ envar", clusterVersion: "9.13.1", askFor: "Rest", wantCollector: "Rest", setEnvVar: true,
@@ -168,7 +168,7 @@ func TestCollectorUpgrade(t *testing.T) {
 			if tt.check == nil {
 				tt.check = zapisExist
 			}
-			newCollector := poller.negotiateAPI(collector, tt.clusterVersion, tt.check)
+			newCollector := poller.negotiateAPI(collector, tt.check)
 			if newCollector.Name != tt.wantCollector {
 				t.Errorf("got = [%s] want [%s]", newCollector.Name, tt.wantCollector)
 			}
diff --git a/cmd/tools/grafana/dashboard_test.go b/cmd/tools/grafana/dashboard_test.go
index 64b8cdd0..7c2390c3 100644
--- a/cmd/tools/grafana/dashboard_test.go
+++ b/cmd/tools/grafana/dashboard_test.go
@@ -754,7 +754,6 @@ func checkTopKRange(t *testing.T, path string, data []byte) {
 func TestOnlyHighlightsExpanded(t *testing.T) {
 	exceptions := map[string]int{
 		"cmode/shelf.json":            2,
-		"cmode/security.json":         3,
 		"cmode/fsa.json":              2,
 		"cmode/workload.json":         2,
 		"cmode/smb.json":              2,