From 87c2e62550f1c28c736a16c4ec9531a1c994a472 Mon Sep 17 00:00:00 2001 From: hardikl Date: Mon, 10 Jun 2024 16:57:10 +0530 Subject: [PATCH 1/2] feat: linking dashboards part-3 --- cmd/tools/grafana/dashboard_test.go | 11 +- .../dashboards/cmode-details/volumeBySVM.json | 79 ++- .../cmode-details/volumeDeepDive.json | 153 ++++- grafana/dashboards/cmode/mcc_cluster.json | 14 + grafana/dashboards/cmode/namespace.json | 218 +++++-- grafana/dashboards/cmode/network.json | 162 ++++- .../dashboards/cmode/nfsTroubleshooting.json | 149 ++++- grafana/dashboards/cmode/nfs_clients.json | 113 +++- grafana/dashboards/cmode/node.json | 46 +- grafana/dashboards/cmode/power.json | 276 ++++++++- grafana/dashboards/cmode/quotaReport.json | 106 +++- grafana/dashboards/cmode/s3ObjectStorage.json | 117 +++- grafana/dashboards/cmode/security.json | 173 +++++- grafana/dashboards/cmode/shelf.json | 60 +- grafana/dashboards/cmode/smb.json | 92 ++- grafana/dashboards/cmode/snapmirror.json | 249 +++++++- grafana/dashboards/cmode/workload.json | 560 +++++++++++++++++- .../dashboards/storagegrid/fabricpool.json | 100 ++++ grafana/dashboards/storagegrid/overview.json | 46 +- grafana/dashboards/storagegrid/tenant.json | 56 +- 20 files changed, 2598 insertions(+), 182 deletions(-) diff --git a/cmd/tools/grafana/dashboard_test.go b/cmd/tools/grafana/dashboard_test.go index bcb75feb5..fc8ba4cee 100644 --- a/cmd/tools/grafana/dashboard_test.go +++ b/cmd/tools/grafana/dashboard_test.go @@ -1625,7 +1625,7 @@ func checkVariablesAreFSxFriendly(t *testing.T, path string, data []byte) { } var linkPath = regexp.MustCompile(`/d/(.*?)/`) -var supportedLinkedObjects = []string{"cluster", "datacenter", "aggr", "svm", "volume", "node", "home_node"} +var supportedLinkedObjects = []string{"cluster", "datacenter", "aggr", "svm", "volume", "node", "qtree", "home_node"} func TestLinks(t *testing.T) { hasLinks := map[string][]string{} @@ -1705,14 +1705,7 @@ func checkLinks(t *testing.T, path string, data []byte, hasLinks map[string][]st func checkPanelLinks(t *testing.T, value gjson.Result, path string, hasLinks map[string][]string) { linkFound := false - // Testing only for these dashboards now, it will be covered for all later - supportedDashboards := []string{"cmode/aggregate.json", "cmode/cdot.json", - "cmode/cluster.json", "comde/compliance.json", "cmode/data_protection_snapshot.json", "cmode/datacenter.json", - "cmode/disk.json", "cmode/external_service_op.json", "cmode/fsa.json", "cmode/headroom.json", - "cmode/health.json", "cmode/lun.json", "cmode/metadata.json", "cmode/svm.json", "cmode/volume.json", - } - - if slices.Contains(supportedDashboards, path) && value.Get("type").String() == "table" { + if value.Get("type").String() == "table" { value.Get("fieldConfig.overrides").ForEach(func(_, anOverride gjson.Result) bool { if name := anOverride.Get("matcher.options").String(); slices.Contains(supportedLinkedObjects, name) { linkFound = false diff --git a/grafana/dashboards/cmode-details/volumeBySVM.json b/grafana/dashboards/cmode-details/volumeBySVM.json index c12cb1910..d1fd5d19a 100644 --- a/grafana/dashboards/cmode-details/volumeBySVM.json +++ b/grafana/dashboards/cmode-details/volumeBySVM.json @@ -125,9 +125,79 @@ { "matcher": { "id": "byName", - "options": "Volume" + "options": "cluster" }, "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, { "id": "links", "value": [ @@ -301,12 +371,7 @@ "Value #D": "Write Ops", "Value #E": "Write TPut", "Value #F": "Other Ops", - "Value #G": "Read TPut", - "cluster": "Cluster", - "datacenter": "Datacenter", - "node": "Node", - "svm": "SVM", - "volume": "Volume" + "Value #G": "Read TPut" } } }, diff --git a/grafana/dashboards/cmode-details/volumeDeepDive.json b/grafana/dashboards/cmode-details/volumeDeepDive.json index ec2661171..e2ab46c04 100644 --- a/grafana/dashboards/cmode-details/volumeDeepDive.json +++ b/grafana/dashboards/cmode-details/volumeDeepDive.json @@ -166,12 +166,70 @@ { "matcher": { "id": "byName", - "options": "Volume" + "options": "node" }, "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, { "id": "custom.width", "value": null + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] } @@ -308,10 +366,7 @@ "Value #E": "Write TPut", "Value #F": "Other Ops", "Value #G": "Read TPut", - "Value #H": "", - "node": "Node", - "svm": "SVM", - "volume": "Volume" + "Value #H": "" } } }, @@ -1406,6 +1461,94 @@ "value": "bytes" } ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, diff --git a/grafana/dashboards/cmode/mcc_cluster.json b/grafana/dashboards/cmode/mcc_cluster.json index c13660687..f5ba847ee 100644 --- a/grafana/dashboards/cmode/mcc_cluster.json +++ b/grafana/dashboards/cmode/mcc_cluster.json @@ -2181,9 +2181,23 @@ "options": "aggr" }, "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, { "id": "custom.width", "value": 264 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] } ] }, diff --git a/grafana/dashboards/cmode/namespace.json b/grafana/dashboards/cmode/namespace.json index 624fb0217..85bd12d42 100644 --- a/grafana/dashboards/cmode/namespace.json +++ b/grafana/dashboards/cmode/namespace.json @@ -732,6 +732,116 @@ "value": "percent" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -799,25 +909,30 @@ "id": "organize", "options": { "excludeByName": { + "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true, "Value #A": true, + "__name__": false, "__name__ 1": true, "__name__ 2": true, "__name__ 3": true, + "__name__ 4": true, "cluster 2": true, "cluster 3": true, "cluster 4": true, "datacenter 2": true, "datacenter 3": true, "datacenter 4": true, + "instance": true, "instance 1": true, "instance 2": true, "instance 3": true, "instance 4": true, "is_read_only": true, + "job": true, "job 1": true, "job 2": true, "job 3": true, @@ -834,67 +949,68 @@ "volume 4": true }, "indexByName": { - "Time 1": 1, - "Time 2": 20, - "Time 3": 29, - "Time 4": 38, - "Value #A": 19, - "Value #B": 14, - "Value #C": 15, - "Value #D": 16, - "__name__ 1": 2, - "__name__ 2": 21, - "__name__ 3": 30, - "cluster 1": 4, - "cluster 2": 22, - "cluster 3": 31, - "cluster 4": 39, - "datacenter 1": 3, - "datacenter 2": 23, - "datacenter 3": 32, - "datacenter 4": 40, - "instance 1": 5, - "instance 2": 24, - "instance 3": 33, - "instance 4": 41, - "is_read_only": 6, - "job 1": 7, - "job 2": 25, - "job 3": 34, - "job 4": 42, - "node": 8, - "nsid": 13, - "os_type": 18, - "path 1": 9, - "path 2": 26, - "path 3": 35, - "path 4": 43, - "state": 10, - "subsystem": 11, - "svm 1": 12, - "svm 2": 27, - "svm 3": 36, - "svm 4": 44, - "uuid": 0, - "volume 1": 17, - "volume 2": 28, - "volume 3": 37, - "volume 4": 45 + "Time": 43, + "Time 2": 16, + "Time 3": 25, + "Time 4": 35, + "Value #A": 14, + "Value #B": 9, + "Value #C": 10, + "Value #D": 11, + "__name__": 13, + "__name__ 2": 17, + "__name__ 3": 26, + "__name__ 4": 46, + "cluster": 1, + "cluster 2": 18, + "cluster 3": 27, + "cluster 4": 36, + "datacenter": 0, + "datacenter 2": 19, + "datacenter 3": 28, + "datacenter 4": 37, + "instance": 44, + "instance 2": 20, + "instance 3": 29, + "instance 4": 38, + "is_read_only": 30, + "job": 45, + "job 2": 21, + "job 3": 31, + "job 4": 39, + "node": 2, + "nsid": 8, + "os_type": 12, + "path": 3, + "path 2": 22, + "path 3": 32, + "path 4": 40, + "state": 4, + "subsystem": 5, + "svm": 6, + "svm 2": 23, + "svm 3": 33, + "svm 4": 41, + "uuid": 15, + "volume": 7, + "volume 2": 24, + "volume 3": 34, + "volume 4": 42 }, "renameByName": { "Value #B": "Used", "Value #C": "Size", "Value #D": "Available %", - "cluster 1": "Cluster", - "datacenter 1": "Datacenter", + "cluster": "Cluster", + "datacenter": "Datacenter", "node": "Node", "nsid": "Namespace ID", "os_type": "OS", - "path 1": "Namespace Path", + "path": "Namespace Path", "state": "Status", "subsystem": "NVMe Subsystem", - "svm 1": "Storage VM", - "volume 1": "Volume" + "svm": "Storage VM", + "volume": "Volume" } } } diff --git a/grafana/dashboards/cmode/network.json b/grafana/dashboards/cmode/network.json index 01252baf8..cf0a3bb98 100644 --- a/grafana/dashboards/cmode/network.json +++ b/grafana/dashboards/cmode/network.json @@ -743,9 +743,23 @@ "options": "node" }, "properties": [ + { + "id": "displayName", + "value": "Node" + }, { "id": "custom.width", "value": 184 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] } ] }, @@ -1533,6 +1547,28 @@ "value": "color-text" } ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] } ] }, @@ -1649,8 +1685,7 @@ "Value #E": "Tx Total Err", "Value #F": "Up to Downs", "cluster": "Cluster", - "nic": "Nic", - "node": "Node" + "nic": "Nic" } } } @@ -1830,9 +1865,23 @@ "options": "node" }, "properties": [ + { + "id": "displayName", + "value": "Node" + }, { "id": "custom.width", "value": 214 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] } ] } @@ -2032,6 +2081,28 @@ ] } ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] } ] }, @@ -2136,7 +2207,6 @@ "fabric_name": "Fabric Name", "fabric_port_address": "Fabric Port", "fabric_switch_port": "Fabric Switch Port", - "node": "Node", "physical_protocol": "Physical Protocol", "port": "Port Name", "speed_configured": "Speed Configured", @@ -3066,9 +3136,23 @@ "options": "node" }, "properties": [ + { + "id": "displayName", + "value": "Node" + }, { "id": "custom.width", "value": 214 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] } ] } @@ -3570,7 +3654,74 @@ ] } }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 9, @@ -3625,8 +3776,6 @@ "uuid": 13 }, "renameByName": { - "cluster": "Cluster", - "datacenter": "Datacenter", "destination": "Destination", "family": "Family", "gateway": "Gateway", @@ -3634,7 +3783,6 @@ "ipspace": "IPspace", "netmask_length": "Netmask", "scope": "Scope", - "svm": "SVM", "uuid": "" } } diff --git a/grafana/dashboards/cmode/nfsTroubleshooting.json b/grafana/dashboards/cmode/nfsTroubleshooting.json index b4c0b87d6..6c55065b0 100644 --- a/grafana/dashboards/cmode/nfsTroubleshooting.json +++ b/grafana/dashboards/cmode/nfsTroubleshooting.json @@ -424,6 +424,72 @@ "value": "ops" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] } ] }, @@ -534,10 +600,7 @@ "Value #A": "Current CPU Ops", "Value #B": "Optimal Point Ops", "Value #C": "Current CPU Util", - "Value #D": "Optimal Point Util", - "cluster": "Cluster", - "datacenter": "Datacenter", - "node": "Node" + "Value #D": "Optimal Point Util" } } }, @@ -842,9 +905,13 @@ { "matcher": { "id": "byName", - "options": "SVM" + "options": "svm" }, "properties": [ + { + "id": "displayName", + "value": "SVM" + }, { "id": "links", "value": [ @@ -1048,8 +1115,7 @@ "Value #D": "Write Ops", "Value #E": "Write TPut", "Value #F": "Other Ops", - "Value #G": "Read TPut", - "svm": "SVM" + "Value #G": "Read TPut" } } }, @@ -1374,6 +1440,72 @@ "value": "color-text" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] } ] }, @@ -1522,10 +1654,7 @@ "Value #F": "Rx Errors", "Value #G": "Tx Errors", "Value #H": "Up to Downs", - "cluster": "Cluster", - "datacenter": "Datacenter", "nic": "Nic", - "node": "Node", "speed": "Speed" } } diff --git a/grafana/dashboards/cmode/nfs_clients.json b/grafana/dashboards/cmode/nfs_clients.json index 0a849ed7a..1a049007d 100644 --- a/grafana/dashboards/cmode/nfs_clients.json +++ b/grafana/dashboards/cmode/nfs_clients.json @@ -332,6 +332,116 @@ "value": "s" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "Storage VM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -412,8 +522,7 @@ "client_ip": "Client IP Address", "cluster": "", "protocol": "NFS version", - "server_ip": "Data Network Interface", - "svm": "Storage VM" + "server_ip": "Data Network Interface" } } } diff --git a/grafana/dashboards/cmode/node.json b/grafana/dashboards/cmode/node.json index 20f13d19a..58794af75 100644 --- a/grafana/dashboards/cmode/node.json +++ b/grafana/dashboards/cmode/node.json @@ -1053,6 +1053,50 @@ "value": "string" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] } ] }, @@ -1186,9 +1230,7 @@ "Value #B": "Fan Status", "Value #C": "Power Status", "bmc_firmware_version": "BMC Firmware Version", - "cluster": "Cluster", "cpu_firmware_release": "CPU Firmware Version", - "datacenter": "Datacenter", "healthy": "Healthy", "location": "Location", "model": "Model", diff --git a/grafana/dashboards/cmode/power.json b/grafana/dashboards/cmode/power.json index 93ca42775..43d5cacfe 100644 --- a/grafana/dashboards/cmode/power.json +++ b/grafana/dashboards/cmode/power.json @@ -1624,9 +1624,89 @@ "options": "cluster" }, "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, { "id": "custom.width", "value": null + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] } ] } @@ -1758,7 +1838,74 @@ }, "unit": "locale" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 8, @@ -1831,9 +1978,6 @@ }, "renameByName": { "Value #A": "Value", - "cluster": "Cluster", - "datacenter": "Datacenter", - "node": "Node", "sensor": "Sensor Name", "threshold_state": "State", "type": "Type" @@ -2187,6 +2331,72 @@ "value": "celsius" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] } ] }, @@ -2433,12 +2643,60 @@ } ] }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, { "matcher": { "id": "byName", "options": "shelf" }, "properties": [ + { + "id": "displayName", + "value": "Shelf" + }, { "id": "custom.displayMode", "value": "json-view" @@ -2446,6 +2704,16 @@ { "id": "custom.width", "value": null + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-shelf/ontap-shelf?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Shelf=${__value.raw}" + } + ] } ] }, diff --git a/grafana/dashboards/cmode/quotaReport.json b/grafana/dashboards/cmode/quotaReport.json index 5d154a559..c27f0ebe9 100644 --- a/grafana/dashboards/cmode/quotaReport.json +++ b/grafana/dashboards/cmode/quotaReport.json @@ -415,6 +415,94 @@ "value": "locale" } ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "qtree" + }, + "properties": [ + { + "id": "displayName", + "value": "Qtree" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-qtree/ontap-qtree?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Qtree=${__value.raw}" + } + ] + } + ] } ] }, @@ -592,6 +680,7 @@ "datacenter 6": true, "datacenter 7": true, "datacenter 8": true, + "group 1": true, "group 2": true, "group 3": true, "group 4": true, @@ -603,6 +692,7 @@ "instance": true, "isUnlimited": true, "job": true, + "qtree 1": true, "qtree 2": true, "qtree 3": true, "qtree 4": true, @@ -610,6 +700,7 @@ "qtree 6": true, "qtree 7": true, "qtree 8": true, + "svm 1": true, "svm 2": true, "svm 3": true, "svm 4": true, @@ -620,6 +711,7 @@ "tree 3": true, "tree 8": true, "unit": true, + "user 1": true, "user 2": true, "user 3": true, "user 4": true, @@ -701,21 +793,9 @@ "Value #F": "% Space Used", "Value #G": "% Files Used", "Value #H": "Files Soft Limit", - "cluster": "Cluster", - "datacenter": "Datacenter", "group": "Group", - "group 1": "Group", - "isUnlimited 1": "hjvhh", - "qtree": "Qtree", - "qtree 1": "Qtree", - "svm": "SVM", - "svm 1": "SVM", - "svm 8": "", - "tree": "Qtree", "user": "User", - "user 1": "User", - "user_name": "User", - "user_name 1": "User" + "user_name": "User" } } } diff --git a/grafana/dashboards/cmode/s3ObjectStorage.json b/grafana/dashboards/cmode/s3ObjectStorage.json index e7b41fadf..a2aa87a4a 100644 --- a/grafana/dashboards/cmode/s3ObjectStorage.json +++ b/grafana/dashboards/cmode/s3ObjectStorage.json @@ -257,6 +257,72 @@ ] } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -404,15 +470,12 @@ "Value #F": "Object Count", "aggr": "Local Tiers", "bucket": "Bucket", - "cluster": "Cluster", "encryption_enabled": "Encrypted", "is_protected": "IsProtected", "protected_in_cloud": "IsProtectedInCloud", "protected_in_ontap": "IsProtectedInOntap", "qos_policy_group": "QoS Policy Group", - "svm": "SVM", - "url": "Url", - "volume": "Volume" + "url": "Url" } } } @@ -675,6 +738,50 @@ ] } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] } ] }, @@ -743,11 +850,9 @@ "renameByName": { "allowed_resource": "Allowed Resource", "bucket": "Bucket", - "cluster": "Cluster", "encryption_enabled": "", "permission": "Permission", "permission_type": "Type", - "svm": "SVM", "user": "User" } } diff --git a/grafana/dashboards/cmode/security.json b/grafana/dashboards/cmode/security.json index 4f9e38452..6071e1036 100644 --- a/grafana/dashboards/cmode/security.json +++ b/grafana/dashboards/cmode/security.json @@ -2040,6 +2040,116 @@ ] } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -2122,15 +2232,10 @@ "volume": 0 }, "renameByName": { - "aggr": "Aggregate", "antiRansomwareState": "Anti-ransomware Status", - "cluster": "Cluster", "isEncrypted": "", "isHardwareEncrypted": "", - "node": "Node", - "state": "State", - "svm": "SVM", - "volume": "Volume" + "state": "State" } } } @@ -2178,6 +2283,28 @@ } }, "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, { "matcher": { "id": "byName", @@ -3675,7 +3802,6 @@ "certificateExpiryStatus": "Cluster Certificate Validity", "certificateIssuerType": "Certificate Issuer Type", "certificateuser": "Certificate Users", - "cluster": "Cluster", "encryption_state": "Cluster Peering", "fips_enabled": "Global FIPS", "insecured": "Insecure SSH Settings", @@ -3747,6 +3873,38 @@ { "id": "custom.filterable", "value": true + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] } ] }, @@ -4527,7 +4685,6 @@ "samluser": "Saml Users", "smb_encryption_required": "SMB Encryption Enabled", "smb_signing_required": "SMB Signing Enabled", - "svm": "SVM", "telnet_enabled": "Telnet" } } diff --git a/grafana/dashboards/cmode/shelf.json b/grafana/dashboards/cmode/shelf.json index 1287ef333..7bbaff98e 100644 --- a/grafana/dashboards/cmode/shelf.json +++ b/grafana/dashboards/cmode/shelf.json @@ -809,18 +809,76 @@ } ] }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, { "matcher": { "id": "byName", "options": "shelf" }, "properties": [ + { + "id": "displayName", + "value": "Shelf" + }, + { + "id": "custom.width" + }, { "id": "custom.displayMode", "value": "json-view" }, { - "id": "custom.width" + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-shelf/ontap-shelf?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Shelf=${__value.raw}" + } + ] } ] }, diff --git a/grafana/dashboards/cmode/smb.json b/grafana/dashboards/cmode/smb.json index 4e2110043..1896cb9ae 100644 --- a/grafana/dashboards/cmode/smb.json +++ b/grafana/dashboards/cmode/smb.json @@ -412,6 +412,94 @@ ] } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] } ] }, @@ -486,17 +574,13 @@ "renameByName": { "authentication": "Authetication", "client_ip": "Client IP", - "cluster": "Cluster", "connection_id": "Connection ID", - "datacenter": "Datacenter", "large_mtu": "Large MTU", "mapped_unix_user": "Mapped Unix User", - "node": "Node", "protocol": "Protocol", "server_ip": "Server IP", "smb_encryption": "SMB Encryption", "smb_signing": "SMB Signing", - "svm": "SVM", "user": "User" } } diff --git a/grafana/dashboards/cmode/snapmirror.json b/grafana/dashboards/cmode/snapmirror.json index a39c2296a..c9fff9d52 100644 --- a/grafana/dashboards/cmode/snapmirror.json +++ b/grafana/dashboards/cmode/snapmirror.json @@ -759,6 +759,16 @@ { "id": "custom.width", "value": 200 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] }, @@ -771,6 +781,16 @@ { "id": "custom.width", "value": 200 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] }, @@ -3223,6 +3243,42 @@ "value": 130 } ] + }, + { + "matcher": { + "id": "byName", + "options": "Source Volume" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Destination Volume" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -3394,13 +3450,19 @@ "options": "Source Volume" }, "properties": [ - { - "id": "displayName", - "value": "Source Volume" - }, { "id": "custom.width", "value": 270 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] }, @@ -3410,13 +3472,19 @@ "options": "Destination Volume" }, "properties": [ - { - "id": "displayName", - "value": "Destination Volume" - }, { "id": "custom.width", "value": 300 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] }, @@ -3487,18 +3555,14 @@ "options": { "excludeByName": {}, "indexByName": { - "Value": 4, - "destination_volume": 2, - "destination_vserver": 3, - "source_volume": 0, - "source_vserver": 1 + "Value": 2, + "destination_volume": 1, + "source_volume": 0 }, "renameByName": { "Value": "Lag Duration (seconds)", "destination_volume": "Destination Volume", - "destination_vserver": "Destination SVM", "source_volume": "Source Volume", - "source_vserver": "Source SVM", "volume": "" } } @@ -3545,7 +3609,74 @@ ] } }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 13, @@ -3601,11 +3732,7 @@ "svm": 1, "volume": 0 }, - "renameByName": { - "cluster": "Cluster", - "svm": "SVM", - "volume": "Volume" - } + "renameByName": {} } } ], @@ -3883,6 +4010,16 @@ { "id": "custom.width", "value": 410 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] }, @@ -3953,6 +4090,16 @@ { "id": "custom.width", "value": 410 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] }, @@ -3995,6 +4142,16 @@ { "id": "custom.width", "value": 240 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] }, @@ -4007,6 +4164,16 @@ { "id": "custom.width", "value": 240 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] } @@ -4356,6 +4523,16 @@ { "id": "custom.width", "value": 220 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] }, @@ -4422,6 +4599,16 @@ { "id": "custom.width", "value": 210 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] } ] }, @@ -4488,6 +4675,16 @@ { "id": "custom.width", "value": 240 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] }, @@ -4500,6 +4697,16 @@ { "id": "custom.width", "value": 240 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] } diff --git a/grafana/dashboards/cmode/workload.json b/grafana/dashboards/cmode/workload.json index f9c4279d5..61f141c33 100644 --- a/grafana/dashboards/cmode/workload.json +++ b/grafana/dashboards/cmode/workload.json @@ -1274,6 +1274,138 @@ "value": "iops" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "lun" + }, + "properties": [ + { + "id": "displayName", + "value": "LUN" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-lun/ontap-lun?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${Volume:queryparam}&${__url_time_range}&var-LUN=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "workload" + }, + "properties": [ + { + "id": "displayName", + "value": "Workload" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-workload/ontap-workload?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Workload=${__value.raw}" + } + ] + } + ] } ] }, @@ -1379,15 +1511,9 @@ }, "renameByName": { "Value": "IOPs", - "cluster": "Cluster", - "datacenter": "Datacenter", "file": "File", - "lun": "Lun", "max_throughput_iops": "Max IOPS", - "policy_group": "Policy", - "svm": "SVM", - "volume": "Volume", - "workload": "Workload" + "policy_group": "Policy" } } } @@ -1474,6 +1600,138 @@ "value": "Bps" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "lun" + }, + "properties": [ + { + "id": "displayName", + "value": "LUN" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-lun/ontap-lun?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${Volume:queryparam}&${__url_time_range}&var-LUN=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "workload" + }, + "properties": [ + { + "id": "displayName", + "value": "Workload" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-workload/ontap-workload?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Workload=${__value.raw}" + } + ] + } + ] } ] }, @@ -1601,16 +1859,10 @@ }, "renameByName": { "Value": "Throughput", - "cluster": "Cluster", - "datacenter": "Datacenter", "file": "File", - "lun": "Lun", "max_throughput_iops": "Max IOPS", "max_throughput_mbps": "Max Throughput", - "policy_group": "Policy", - "svm": "SVM", - "volume": "Volume", - "workload": "Workload" + "policy_group": "Policy" } } } @@ -1896,6 +2148,138 @@ "value": "iops" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "lun" + }, + "properties": [ + { + "id": "displayName", + "value": "LUN" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-lun/ontap-lun?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${Volume:queryparam}&${__url_time_range}&var-LUN=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "workload" + }, + "properties": [ + { + "id": "displayName", + "value": "Workload" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-workload/ontap-workload?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Workload=${__value.raw}" + } + ] + } + ] } ] }, @@ -2029,14 +2413,8 @@ "Value #A": "Used %", "Value #B": "IOPs", "Value #C": "Max IOPs", - "cluster": "Cluster", - "datacenter": "Datacenter", "file": "File", - "lun": "Lun", - "policy_group": "Policy", - "svm": "SVM", - "volume": "Volume", - "workload": "Workload" + "policy_group": "Policy" } } } @@ -2123,6 +2501,138 @@ "value": "MBs" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "lun" + }, + "properties": [ + { + "id": "displayName", + "value": "LUN" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-lun/ontap-lun?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${Volume:queryparam}&${__url_time_range}&var-LUN=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "workload" + }, + "properties": [ + { + "id": "displayName", + "value": "Workload" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-workload/ontap-workload?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Workload=${__value.raw}" + } + ] + } + ] } ] }, @@ -2255,14 +2765,8 @@ "Value #A": "Used %", "Value #B": "Throughput", "Value #C": "Max Throughput", - "cluster": "Cluster", - "datacenter": "Datacenter", "file": "File", - "lun": "Lun", - "policy_group": "Policy", - "svm": "SVM", - "volume": "Volume", - "workload": "Workload" + "policy_group": "Policy" } } } diff --git a/grafana/dashboards/storagegrid/fabricpool.json b/grafana/dashboards/storagegrid/fabricpool.json index e83268f49..efa3cd3ce 100644 --- a/grafana/dashboards/storagegrid/fabricpool.json +++ b/grafana/dashboards/storagegrid/fabricpool.json @@ -711,9 +711,23 @@ "options": "datacenter" }, "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, { "id": "custom.width", "value": 81 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] } ] }, @@ -723,9 +737,23 @@ "options": "node" }, "properties": [ + { + "id": "displayName", + "value": "Node" + }, { "id": "custom.width", "value": 220 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] } ] }, @@ -735,9 +763,23 @@ "options": "cluster" }, "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, { "id": "custom.width", "value": 192 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] }, @@ -833,9 +875,23 @@ "options": "aggr" }, "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, { "id": "custom.width", "value": 198 + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] } ] } @@ -1537,6 +1593,50 @@ "value": "locale" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] } ] }, diff --git a/grafana/dashboards/storagegrid/overview.json b/grafana/dashboards/storagegrid/overview.json index e63228b5f..fc062f23a 100644 --- a/grafana/dashboards/storagegrid/overview.json +++ b/grafana/dashboards/storagegrid/overview.json @@ -139,6 +139,28 @@ "value": 1 } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] } ] }, @@ -226,7 +248,6 @@ "Value #A": "Used space", "Value #B": "Total space", "Value #C": "Usage %", - "cluster": "Cluster", "instance": "Node", "service": "Service", "site_name": "Site" @@ -293,6 +314,28 @@ "value": 1 } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] } ] }, @@ -380,7 +423,6 @@ "Value #A": "Used space", "Value #B": "Allowed space", "Value #C": "Usage %", - "cluster": "Cluster", "instance": "Node", "service": "Service", "site_name": "Site" diff --git a/grafana/dashboards/storagegrid/tenant.json b/grafana/dashboards/storagegrid/tenant.json index aca82ea38..8b432a082 100644 --- a/grafana/dashboards/storagegrid/tenant.json +++ b/grafana/dashboards/storagegrid/tenant.json @@ -158,6 +158,16 @@ { "id": "custom.width", "value": null + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] } ] }, @@ -357,6 +367,50 @@ "value": "locale" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] } ] }, @@ -436,8 +490,6 @@ "Value #A": "Space Used", "Value #B": "Objects", "bucket": "Bucket", - "cluster": "Cluster", - "datacenter": "Datacenter", "region": "Region", "tenant": "Tenant" } From 418361517cce3e4dd4d1fc04c53629d7818858ba Mon Sep 17 00:00:00 2001 From: hardikl Date: Mon, 10 Jun 2024 20:31:58 +0530 Subject: [PATCH 2/2] feat: handling few exceptions in linking --- cmd/tools/grafana/dashboard_test.go | 17 +- .../dashboards/cmode/changelogMonitor.json | 278 +++++++++++++- grafana/dashboards/cmode/flexcache.json | 186 ++++++++- grafana/dashboards/cmode/flexgroup.json | 359 ++++++++++++++++-- grafana/dashboards/cmode/mcc_cluster.json | 270 +++++++++++-- grafana/dashboards/cmode/power.json | 8 +- grafana/dashboards/cmode/s3ObjectStorage.json | 10 - grafana/dashboards/cmode/shelf.json | 28 +- .../dashboards/storagegrid/fabricpool.json | 45 +-- grafana/dashboards/storagegrid/overview.json | 20 - grafana/dashboards/storagegrid/tenant.json | 94 +++-- 11 files changed, 1128 insertions(+), 187 deletions(-) diff --git a/cmd/tools/grafana/dashboard_test.go b/cmd/tools/grafana/dashboard_test.go index fc8ba4cee..c7631db39 100644 --- a/cmd/tools/grafana/dashboard_test.go +++ b/cmd/tools/grafana/dashboard_test.go @@ -1625,7 +1625,17 @@ func checkVariablesAreFSxFriendly(t *testing.T, path string, data []byte) { } var linkPath = regexp.MustCompile(`/d/(.*?)/`) -var supportedLinkedObjects = []string{"cluster", "datacenter", "aggr", "svm", "volume", "node", "qtree", "home_node"} +var supportedLinkedObjects = []string{"cluster", "datacenter", "aggr", "svm", "volume", "node", "qtree", "home_node", "tenant"} +var exceptionPathPanelObject = []string{ + "cmode/s3ObjectStorage.json-Bucket Overview-volume", // bucket volumes starts with fg_oss_xx and volume dashboard don't support them + "storagegrid/fabricpool.json-Aggregates-cluster", // There is no datacenter var to be passed for linking to cluster dashboard + "storagegrid/fabricpool.json-Aggregates-aggr", // There is no datacenter var to be passed for linking to aggregate dashboard + "storagegrid/fabricpool.json-Buckets-cluster", // There is no storagegrid cluster dashboard available + "storagegrid/overview.json-Data space usage breakdown-cluster", // There is no storagegrid cluster dashboard available + "storagegrid/overview.json-Metadata allowed space usage breakdown-cluster", // There is no storagegrid cluster dashboard available + "storagegrid/tenant.json-Tenant Quota-cluster", // There is no storagegrid cluster dashboard available + "storagegrid/tenant.json-Buckets-cluster", // There is no storagegrid cluster dashboard available +} func TestLinks(t *testing.T) { hasLinks := map[string][]string{} @@ -1708,6 +1718,7 @@ func checkPanelLinks(t *testing.T, value gjson.Result, path string, hasLinks map if value.Get("type").String() == "table" { value.Get("fieldConfig.overrides").ForEach(func(_, anOverride gjson.Result) bool { if name := anOverride.Get("matcher.options").String(); slices.Contains(supportedLinkedObjects, name) { + title := value.Get("title").String() linkFound = false anOverride.Get("properties").ForEach(func(_, propValue gjson.Result) bool { propValue.Get("value").ForEach(func(_, value gjson.Result) bool { @@ -1720,8 +1731,8 @@ func checkPanelLinks(t *testing.T, value gjson.Result, path string, hasLinks map }) return true }) - if !linkFound { - t.Errorf(`dashboard=%s panel="%s" column=%s is missing the links`, path, value.Get("title").String(), name) + if !linkFound && !slices.Contains(exceptionPathPanelObject, path+"-"+title+"-"+name) { + t.Errorf(`dashboard=%s panel="%s" column=%s is missing the links`, path, title, name) } } return true diff --git a/grafana/dashboards/cmode/changelogMonitor.json b/grafana/dashboards/cmode/changelogMonitor.json index a25213df6..d8523d156 100644 --- a/grafana/dashboards/cmode/changelogMonitor.json +++ b/grafana/dashboards/cmode/changelogMonitor.json @@ -351,6 +351,72 @@ "value": "left" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] } ] }, @@ -434,10 +500,7 @@ "renameByName": { "Time": "Poller Time", "Value": "", - "cluster": "Cluster", - "datacenter": "Datacenter", "new_value": "New Value", - "node": "Node", "object": "Object", "old_value": "Old Value", "op": "OP", @@ -702,6 +765,94 @@ "value": "left" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] } ] }, @@ -789,14 +940,10 @@ "renameByName": { "Time": "Poller Time", "Value": "", - "cluster": "Cluster", - "datacenter": "Datacenter", "new_value": "New Value", - "node": "Node", "object": "Object", "old_value": "Old Value", "op": "OP", - "svm": "SVM", "track": "Track" } } @@ -1058,6 +1205,116 @@ "value": "left" } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -1148,17 +1405,12 @@ "renameByName": { "Time": "Poller Time", "Value": "", - "cluster": "Cluster", - "datacenter": "Datacenter", "new_value": "New Value", - "node": "Node", "object": "Object", "old_value": "Old Value", "op": "OP", "style": "Style", - "svm": "SVM", - "track": "Track", - "volume": "Volume" + "track": "Track" } } }, diff --git a/grafana/dashboards/cmode/flexcache.json b/grafana/dashboards/cmode/flexcache.json index e628fab57..0abd99cd9 100644 --- a/grafana/dashboards/cmode/flexcache.json +++ b/grafana/dashboards/cmode/flexcache.json @@ -448,6 +448,182 @@ "value": 2 } ] + }, + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "svm" + }, + "properties": [ + { + "id": "displayName", + "value": "SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Flexcache" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "origin_cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Origin Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "origin_svm" + }, + "properties": [ + { + "id": "displayName", + "value": "Origin SVM" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "origin_volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Origin Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] } ] }, @@ -509,15 +685,7 @@ "volume": 2 }, "renameByName": { - "Value": "Size", - "aggr": "Aggregate", - "cluster": "Cluster", - "datacenter": "Datacenter", - "origin_cluster": "Origin Cluster", - "origin_svm": "Origin SVM", - "origin_volume": "Origin Volume", - "svm": "SVM", - "volume": "Flexcache" + "Value": "Size" } } } diff --git a/grafana/dashboards/cmode/flexgroup.json b/grafana/dashboards/cmode/flexgroup.json index b764933f9..fbc898721 100644 --- a/grafana/dashboards/cmode/flexgroup.json +++ b/grafana/dashboards/cmode/flexgroup.json @@ -574,6 +574,72 @@ "value": "bytes" } ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Constituent Name" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -757,10 +823,7 @@ "Value #G": "Total Space Saved", "Value #H": "Logical Space Used", "Value #I": "Physical Space Used", - "aggr": "Aggr", - "junction_path": "Junction Path", - "node": "Node", - "volume": "Constituent Name" + "junction_path": "Junction Path" } } } @@ -836,6 +899,50 @@ "value": "color-background" } ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -880,9 +987,7 @@ "indexByName": {}, "renameByName": { "Value": "Avg", - "__name__": "", - "aggr": "Aggr", - "volume": "Volume" + "__name__": "" } } } @@ -926,6 +1031,50 @@ "value": "Bps" } ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -970,9 +1119,7 @@ "indexByName": {}, "renameByName": { "Value": "Avg", - "aggr": "Aggr", - "type": "{{aggr}} / {{volume}}", - "volume": "Volume" + "type": "{{aggr}} / {{volume}}" } } } @@ -1016,6 +1163,50 @@ "value": "iops" } ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -1060,9 +1251,7 @@ "indexByName": {}, "renameByName": { "Value": "Avg", - "aggr": "Aggr", - "type": "{{aggr}} / {{volume}}", - "volume": "Volume" + "type": "{{aggr}} / {{volume}}" } } } @@ -1137,6 +1326,50 @@ "value": "color-background" } ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -1181,11 +1414,9 @@ "indexByName": {}, "renameByName": { "Value": "Avg", - "aggr": "Aggr", "datacenter": "", "instance": "", - "type": "{{aggr}} / {{volume}}", - "volume": "Volume" + "type": "{{aggr}} / {{volume}}" } } } @@ -1229,6 +1460,50 @@ "value": "Bps" } ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -1273,10 +1548,8 @@ "indexByName": {}, "renameByName": { "Value": "Avg", - "aggr": "Aggr", "instance": "", - "type": "{{aggr}} / {{volume}}", - "volume": "Volume" + "type": "{{aggr}} / {{volume}}" } } } @@ -1320,6 +1593,50 @@ "value": "iops" } ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-flexgroup/ontap-flexgroup?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${Aggregate:queryparam}&${FlexGroup:queryparam}&${__url_time_range}&var-Constituent=${__value.raw}" + } + ] + } + ] } ] }, @@ -1364,10 +1681,8 @@ "indexByName": {}, "renameByName": { "Value": "Avg", - "aggr": "Aggr", "instance": "", - "type": "{{aggr}} / {{volume}}", - "volume": "Volume" + "type": "{{aggr}} / {{volume}}" } } } diff --git a/grafana/dashboards/cmode/mcc_cluster.json b/grafana/dashboards/cmode/mcc_cluster.json index f5ba847ee..56718d1a5 100644 --- a/grafana/dashboards/cmode/mcc_cluster.json +++ b/grafana/dashboards/cmode/mcc_cluster.json @@ -2175,32 +2175,6 @@ } ] }, - { - "matcher": { - "id": "byName", - "options": "aggr" - }, - "properties": [ - { - "id": "displayName", - "value": "Aggregate" - }, - { - "id": "custom.width", - "value": 264 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" - } - ] - } - ] - }, { "matcher": { "id": "byName", @@ -3501,7 +3475,30 @@ ] } }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 12, @@ -3563,7 +3560,6 @@ "result": 11 }, "renameByName": { - "cluster": "Cluster", "job": "", "name": "Checks", "result": "Result" @@ -3604,7 +3600,52 @@ ] } }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 12, @@ -3667,10 +3708,8 @@ "result": 11 }, "renameByName": { - "cluster": "Cluster", "job": "", "name": "Checks", - "node": "Node", "result": "Result" } } @@ -3709,7 +3748,74 @@ ] } }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 12, @@ -3773,11 +3879,8 @@ "result": 11 }, "renameByName": { - "aggregate": "Aggregate", - "cluster": "Cluster", "job": "", "name": "Checks", - "node": "Node", "result": "Result" } } @@ -3816,7 +3919,96 @@ ] } }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "node" + }, + "properties": [ + { + "id": "displayName", + "value": "Node" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-node/ontap-node?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Node=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "aggr" + }, + "properties": [ + { + "id": "displayName", + "value": "Aggregate" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "volume" + }, + "properties": [ + { + "id": "displayName", + "value": "Volume" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 12, @@ -3881,13 +4073,9 @@ "volume": 6 }, "renameByName": { - "aggregate": "Aggregate", - "cluster": "Cluster", "job": "", "name": "Checks", - "node": "Node", - "result": "Result", - "volume": "Volume" + "result": "Result" } } } diff --git a/grafana/dashboards/cmode/power.json b/grafana/dashboards/cmode/power.json index 43d5cacfe..8b19e67a8 100644 --- a/grafana/dashboards/cmode/power.json +++ b/grafana/dashboards/cmode/power.json @@ -2697,14 +2697,14 @@ "id": "displayName", "value": "Shelf" }, - { - "id": "custom.displayMode", - "value": "json-view" - }, { "id": "custom.width", "value": null }, + { + "id": "decimals", + "value": 1 + }, { "id": "links", "value": [ diff --git a/grafana/dashboards/cmode/s3ObjectStorage.json b/grafana/dashboards/cmode/s3ObjectStorage.json index a2aa87a4a..248f640f8 100644 --- a/grafana/dashboards/cmode/s3ObjectStorage.json +++ b/grafana/dashboards/cmode/s3ObjectStorage.json @@ -311,16 +311,6 @@ { "id": "displayName", "value": "Volume" - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] } ] } diff --git a/grafana/dashboards/cmode/shelf.json b/grafana/dashboards/cmode/shelf.json index 7bbaff98e..25eb996d1 100644 --- a/grafana/dashboards/cmode/shelf.json +++ b/grafana/dashboards/cmode/shelf.json @@ -867,8 +867,8 @@ "id": "custom.width" }, { - "id": "custom.displayMode", - "value": "json-view" + "id": "decimals", + "value": 1 }, { "id": "links", @@ -1262,7 +1262,7 @@ "pluginVersion": "8.1.8", "targets": [ { - "expr": "shelf_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "instant": true, "interval": "", @@ -1271,7 +1271,7 @@ }, { "exemplar": false, - "expr": "shelf_disk_count{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_disk_count{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1281,7 +1281,7 @@ }, { "exemplar": false, - "expr": "shelf_new_status{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_new_status{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1291,7 +1291,7 @@ }, { "exemplar": false, - "expr": "shelf_power{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_power{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1301,7 +1301,7 @@ }, { "exemplar": false, - "expr": "shelf_average_ambient_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_average_ambient_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1311,7 +1311,7 @@ }, { "exemplar": false, - "expr": "shelf_min_ambient_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_min_ambient_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1321,7 +1321,7 @@ }, { "exemplar": false, - "expr": "shelf_max_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_max_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1331,7 +1331,7 @@ }, { "exemplar": false, - "expr": "shelf_average_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_average_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1341,7 +1341,7 @@ }, { "exemplar": false, - "expr": "shelf_min_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_min_temperature{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1351,7 +1351,7 @@ }, { "exemplar": false, - "expr": "shelf_max_fan_speed{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_max_fan_speed{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1361,7 +1361,7 @@ }, { "exemplar": false, - "expr": "shelf_average_fan_speed{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_average_fan_speed{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, @@ -1371,7 +1371,7 @@ }, { "exemplar": false, - "expr": "shelf_min_fan_speed{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\"}", + "expr": "shelf_min_fan_speed{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",shelf=~\"$Shelf\"}", "format": "table", "hide": false, "instant": true, diff --git a/grafana/dashboards/storagegrid/fabricpool.json b/grafana/dashboards/storagegrid/fabricpool.json index efa3cd3ce..ae3cd8e97 100644 --- a/grafana/dashboards/storagegrid/fabricpool.json +++ b/grafana/dashboards/storagegrid/fabricpool.json @@ -770,16 +770,6 @@ { "id": "custom.width", "value": 192 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] } ] }, @@ -882,16 +872,6 @@ { "id": "custom.width", "value": 198 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-aggregate/ontap-aggregate?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Aggregate=${__value.raw}" - } - ] } ] } @@ -1603,6 +1583,18 @@ { "id": "displayName", "value": "Cluster" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" }, { "id": "links", @@ -1610,7 +1602,7 @@ { "targetBlank": true, "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" } ] } @@ -1619,12 +1611,12 @@ { "matcher": { "id": "byName", - "options": "datacenter" + "options": "tenant" }, "properties": [ { "id": "displayName", - "value": "Datacenter" + "value": "Tenant" }, { "id": "links", @@ -1632,7 +1624,7 @@ { "targetBlank": true, "title": "", - "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + "url": "/d/storagegrid-tenants/storagegrid-tenants?orgId=1&{Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Tenant=${__value.raw}" } ] } @@ -1716,10 +1708,7 @@ "Value #A": "Space Used", "Value #B": "Objects", "bucket": "Bucket", - "cluster": "Cluster", - "datacenter": "Datacenter", - "region": "Region", - "tenant": "Tenant" + "region": "Region" } } } diff --git a/grafana/dashboards/storagegrid/overview.json b/grafana/dashboards/storagegrid/overview.json index fc062f23a..8d13b18b4 100644 --- a/grafana/dashboards/storagegrid/overview.json +++ b/grafana/dashboards/storagegrid/overview.json @@ -149,16 +149,6 @@ { "id": "displayName", "value": "Cluster" - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] } ] } @@ -324,16 +314,6 @@ { "id": "displayName", "value": "Cluster" - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] } ] } diff --git a/grafana/dashboards/storagegrid/tenant.json b/grafana/dashboards/storagegrid/tenant.json index 8b432a082..9b6ddb456 100644 --- a/grafana/dashboards/storagegrid/tenant.json +++ b/grafana/dashboards/storagegrid/tenant.json @@ -152,12 +152,50 @@ { "matcher": { "id": "byName", - "options": "Cluster" + "options": "cluster" }, "properties": [ + { + "id": "displayName", + "value": "Cluster" + }, { "id": "custom.width", "value": null + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "tenant" + }, + "properties": [ + { + "id": "displayName", + "value": "Tenant" }, { "id": "links", @@ -165,7 +203,7 @@ { "targetBlank": true, "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + "url": "/d/storagegrid-tenants/storagegrid-tenants?orgId=1&{Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Tenant=${__value.raw}" } ] } @@ -267,8 +305,8 @@ "options": { "include": { "names": [ - "cluster 1", - "datacenter 1", + "cluster", + "datacenter", "tenant", "Value #B", "Value #C", @@ -282,6 +320,14 @@ "id": "organize", "options": { "excludeByName": { + "cluster 2": true, + "cluster 3": true, + "cluster 4": true, + "cluster 5": true, + "datacenter 2": true, + "datacenter 3": true, + "datacenter 4": true, + "datacenter 5": true, "tenant 2": true, "tenant 3": true, "tenant 4": true, @@ -292,24 +338,15 @@ "Value #C": 4, "Value #D": 5, "Value #E": 6, - "cluster 1": 1, - "datacenter 1": 0, - "tenant 1": 2, - "tenant 2": 7, - "tenant 3": 8, - "tenant 4": 9, - "tenant 5": 10 + "cluster": 1, + "datacenter": 0, + "tenant": 2 }, "renameByName": { "Value #B": "Logical Used", "Value #C": "Quota", "Value #D": "Used %", - "Value #E": "Objects", - "cluster": "Cluster", - "cluster 1": "Cluster", - "datacenter": "Datacenter", - "datacenter 1": "Datacenter", - "tenant 1": "Tenant" + "Value #E": "Objects" } } } @@ -377,6 +414,18 @@ { "id": "displayName", "value": "Cluster" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "datacenter" + }, + "properties": [ + { + "id": "displayName", + "value": "Datacenter" }, { "id": "links", @@ -384,7 +433,7 @@ { "targetBlank": true, "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" } ] } @@ -393,12 +442,12 @@ { "matcher": { "id": "byName", - "options": "datacenter" + "options": "tenant" }, "properties": [ { "id": "displayName", - "value": "Datacenter" + "value": "Tenant" }, { "id": "links", @@ -406,7 +455,7 @@ { "targetBlank": true, "title": "", - "url": "/d/cdot-datacenter/ontap-datacenter?orgId=1&${__url_time_range}&var-Datacenter=${__value.raw}" + "url": "/d/storagegrid-tenants/storagegrid-tenants?orgId=1&{Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-Tenant=${__value.raw}" } ] } @@ -490,8 +539,7 @@ "Value #A": "Space Used", "Value #B": "Objects", "bucket": "Bucket", - "region": "Region", - "tenant": "Tenant" + "region": "Region" } } }