From 4056d5615f03bcc1ef29870d5941852eec9db973 Mon Sep 17 00:00:00 2001 From: Dmitry Nikolaev Date: Mon, 6 Jul 2026 15:05:34 +0200 Subject: [PATCH 1/4] Remove enzyme Signed-off-by: Dmitry Nikolaev --- grafana/rmf-app/package.json | 2 - .../src/components/Config/Config.test.tsx | 161 ------- grafana/rmf-app/yarn.lock | 423 +----------------- 3 files changed, 17 insertions(+), 569 deletions(-) delete mode 100644 grafana/rmf-app/src/components/Config/Config.test.tsx diff --git a/grafana/rmf-app/package.json b/grafana/rmf-app/package.json index 28f2b286..358d3f90 100644 --- a/grafana/rmf-app/package.json +++ b/grafana/rmf-app/package.json @@ -36,14 +36,12 @@ "@stylistic/eslint-plugin-ts": "^4.4.1", "@swc/core": "^1.15.43", "@swc/jest": "^0.2.39", - "@types/enzyme": "^3.10.19", "@types/jest": "^30.0.0", "@types/react": "^18.3.31", "@typescript-eslint/eslint-plugin": "^8.62.1", "@typescript-eslint/parser": "^8.62.1", "copy-webpack-plugin": "^14.0.0", "css-loader": "^7.1.4", - "enzyme": "^3.11.0", "eslint": "^9.39.4", "eslint-config-prettier": "^10.1.8", "eslint-plugin-jsdoc": "^62.9.0", diff --git a/grafana/rmf-app/src/components/Config/Config.test.tsx b/grafana/rmf-app/src/components/Config/Config.test.tsx deleted file mode 100644 index 4b871b51..00000000 --- a/grafana/rmf-app/src/components/Config/Config.test.tsx +++ /dev/null @@ -1,161 +0,0 @@ -/** - * (C) Copyright IBM Corp. 2023. - * (C) Copyright Rocket Software, Inc. 2023. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { shallow } from 'enzyme'; -import React from 'react'; -import { setLocationSrv } from '@grafana/runtime'; -import { APP_BASE_URL } from '../../constants'; -import { Config } from './Config'; - -/* - Plugin - */ -const getPlugin = (overridePlugin: any = { meta: {} }) => ({ - ...overridePlugin, - meta: { - enabled: true, - ...overridePlugin.meta, - }, -}); - -/* - Config - */ -describe('Config', () => { - beforeAll(() => { - jest.spyOn(Config, 'getLocation').mockImplementation((): any => ({ - assign: jest.fn(), - reload: jest.fn(), - })); - }); - - /* - Initialization - */ - describe('Initialization', () => { - it('If plugin is not enabled and meta is not set, state should have isEnabled = false', () => { - const plugin = getPlugin({}); - const wrapper = shallow(); - expect(wrapper.state().isEnabled).toBeTruthy(); - }); - - it('If plugin is not enabled, state should have isEnabled = false', () => { - const plugin = getPlugin({ meta: { enabled: false } }); - const wrapper = shallow(); - expect(wrapper.state().isEnabled).toBeFalsy(); - }); - - it('If plugin is enabled, state should have isEnabled = true', () => { - const plugin = getPlugin({ meta: { enabled: true } }); - const wrapper = shallow(); - expect(wrapper.state().isEnabled).toBeTruthy(); - }); - }); - - /* - Rendering - */ - describe('rendering', () => { - it('If plugin is not configured, should show enable button', () => { - const plugin = getPlugin({ meta: { enabled: false } }); - const wrapper = shallow(); - const enableButton = wrapper.findWhere((node) => node.name() === 'Button' && node.text() === 'Enable'); - expect(enableButton.exists()).toBeTruthy(); - }); - - it('If plugin is configured, should show disable buttons', () => { - const plugin = getPlugin({ meta: { enabled: true } }); - const wrapper = shallow(); - const disableButton = wrapper.findWhere((node) => node.name() === 'Button' && node.text() === 'Disable'); - expect(disableButton.exists()).toBeTruthy(); - }); - - it('Enable button should call onEnable method', () => { - const plugin = getPlugin({ meta: { enabled: false } }); - const wrapper = shallow(); - const testedMethod = jest.spyOn(wrapper.instance(), 'onEnable').mockImplementation(() => null); - wrapper.instance().forceUpdate(); - const enableButton = wrapper.findWhere((node) => node.name() === 'Button' && node.text() === 'Enable'); - enableButton.simulate('click'); - expect(testedMethod).toHaveBeenCalled(); - }); - - it('Disable button should call onDisable method', () => { - const plugin = getPlugin({ meta: { enabled: true } }); - const wrapper = shallow(); - const testedMethod = jest.spyOn(wrapper.instance(), 'onDisable').mockImplementation(() => null); - wrapper.instance().forceUpdate(); - const disableButton = wrapper.findWhere((node) => node.name() === 'Button' && node.text() === 'Disable'); - disableButton.simulate('click'); - expect(testedMethod).toHaveBeenCalled(); - }); - }); - - /* - Methods - */ - describe('Methods', () => { - it('onDisable should call updatePluginSettings method', () => { - const plugin = getPlugin({ meta: { enabled: true } }); - const wrapper = shallow(); - const testedMethod = jest - .spyOn(wrapper.instance(), 'updatePluginSettings') - .mockImplementation(() => Promise.resolve(null as any)); - wrapper.instance().onDisable(); - expect(testedMethod).toHaveBeenCalledWith({ enabled: false, jsonData: {}, pinned: false }); - }); - - it('onEnable should call updatePluginSettings method', () => { - const plugin = getPlugin({ meta: { enabled: true } }); - const wrapper = shallow(); - const testedMethod = jest - .spyOn(wrapper.instance(), 'updatePluginSettings') - .mockImplementation(() => Promise.resolve(null as any)); - wrapper.instance().onEnable(); - expect(testedMethod).toHaveBeenCalledWith({ enabled: true, jsonData: {}, pinned: true }); - }); - - it('updatePluginSettings should make post request', () => { - const plugin = getPlugin({ meta: { enabled: true, id: 'app' } }); - const wrapper = shallow(); - const postRequestMock = jest.fn(); - wrapper.instance()['backendSrv'] = { - post: postRequestMock, - } as any; - const settings = { enabled: true, jsonData: {}, pinned: true }; - wrapper.instance().updatePluginSettings(settings); - expect(postRequestMock).toHaveBeenCalledWith(`api/plugins/${plugin.meta.id}/settings`, settings); - }); - - it('goHome should redirect on home page', () => { - const updateLocationMock = jest.fn(); - setLocationSrv({ - update: updateLocationMock, - }); - const plugin = getPlugin({ meta: { enabled: true } }); - const wrapper = shallow(); - wrapper.instance().goHome(); - expect(updateLocationMock).toHaveBeenCalledWith({ - path: APP_BASE_URL, - partial: false, - }); - }); - }); - - afterAll(() => { - jest.resetAllMocks(); - }); -}); diff --git a/grafana/rmf-app/yarn.lock b/grafana/rmf-app/yarn.lock index 09985b9d..a52d700d 100644 --- a/grafana/rmf-app/yarn.lock +++ b/grafana/rmf-app/yarn.lock @@ -2910,15 +2910,6 @@ __metadata: languageName: node linkType: hard -"@types/cheerio@npm:<1": - version: 0.22.35 - resolution: "@types/cheerio@npm:0.22.35" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/648552e6b981185220b356634374aacdee31815ee55c9a6776bcbf7f8c217e54a3a3951d9929b403ca637190ba748f884e6126c730238c5704bf4488a47dedae - languageName: node - linkType: hard - "@types/d3-color@npm:*": version: 3.1.3 resolution: "@types/d3-color@npm:3.1.3" @@ -2935,16 +2926,6 @@ __metadata: languageName: node linkType: hard -"@types/enzyme@npm:^3.10.19": - version: 3.10.19 - resolution: "@types/enzyme@npm:3.10.19" - dependencies: - "@types/cheerio": "npm:<1" - "@types/react": "npm:^16" - checksum: 10c0/4bf7e30ffec4e154d24f9555dc2c7fab8463628e7aaf030005d06adb472e282a9a25ff6924a646bec47a5db241d82c54b4f81a20452b09e3ab6ca2960a730a12 - languageName: node - linkType: hard - "@types/eslint@npm:^9.6.1": version: 9.6.1 resolution: "@types/eslint@npm:9.6.1" @@ -3095,17 +3076,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^16": - version: 16.14.69 - resolution: "@types/react@npm:16.14.69" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:^0.16" - csstype: "npm:^3.2.2" - checksum: 10c0/4e2b0c37a1d13750377e26d36f2b3d4e541a88b6f2f9666f7f1b57de558a54cf25baafdb18427c29b58be3b1a5fc8f7f71d17b9085986d483448d7a4ad12eea0 - languageName: node - linkType: hard - "@types/react@npm:^18.3.31": version: 18.3.31 resolution: "@types/react@npm:18.3.31" @@ -3116,13 +3086,6 @@ __metadata: languageName: node linkType: hard -"@types/scheduler@npm:^0.16": - version: 0.16.8 - resolution: "@types/scheduler@npm:0.16.8" - checksum: 10c0/f86de504945b8fc41b1f391f847444d542e2e4067cf7e5d9bfeb5d2d2393d3203b1161bc0ef3b1e104d828dabfb60baf06e8d2c27e27ff7e8258e6e618d8c4ec - languageName: node - linkType: hard - "@types/sizzle@npm:*": version: 2.3.10 resolution: "@types/sizzle@npm:2.3.10" @@ -4039,20 +4002,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.filter@npm:^1.0.4": - version: 1.0.4 - resolution: "array.prototype.filter@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-array-method-boxes-properly: "npm:^1.0.0" - es-object-atoms: "npm:^1.0.0" - is-string: "npm:^1.0.7" - checksum: 10c0/8ea9067fc9ba6c0d6670ad93e62efff52a0f7931f69eba3a945477305565fd9c6f11153265f2253c74ba87e27bc0dc1487a731c301d2be9d508bdd9082925ecf - languageName: node - linkType: hard - "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" @@ -4067,7 +4016,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.3, array.prototype.flat@npm:^1.3.1": +"array.prototype.flat@npm:^1.3.1": version: 1.3.3 resolution: "array.prototype.flat@npm:1.3.3" dependencies: @@ -4278,13 +4227,6 @@ __metadata: languageName: node linkType: hard -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.14 resolution: "brace-expansion@npm:1.1.14" @@ -4444,39 +4386,6 @@ __metadata: languageName: node linkType: hard -"cheerio-select@npm:^2.1.0": - version: 2.1.0 - resolution: "cheerio-select@npm:2.1.0" - dependencies: - boolbase: "npm:^1.0.0" - css-select: "npm:^5.1.0" - css-what: "npm:^6.1.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 - languageName: node - linkType: hard - -"cheerio@npm:^1.0.0-rc.3": - version: 1.2.0 - resolution: "cheerio@npm:1.2.0" - dependencies: - cheerio-select: "npm:^2.1.0" - dom-serializer: "npm:^2.0.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.2.2" - encoding-sniffer: "npm:^0.2.1" - htmlparser2: "npm:^10.1.0" - parse5: "npm:^7.3.0" - parse5-htmlparser2-tree-adapter: "npm:^7.1.0" - parse5-parser-stream: "npm:^7.1.2" - undici: "npm:^7.19.0" - whatwg-mimetype: "npm:^4.0.0" - checksum: 10c0/91a566aabfa9962f28056045bb7d92d79c0f8f3abb1fb86a852a9d1760556adddeb01a36b6f08fa7c133282375d387ae450a181a659e76c6a64016c30cc3f611 - languageName: node - linkType: hard - "chokidar@npm:^4.0.1": version: 4.0.3 resolution: "chokidar@npm:4.0.3" @@ -4609,7 +4518,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.20.3": +"commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 @@ -4779,19 +4688,6 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^5.1.0": - version: 5.2.2 - resolution: "css-select@npm:5.2.2" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^6.1.0" - domhandler: "npm:^5.0.2" - domutils: "npm:^3.0.1" - nth-check: "npm:^2.0.1" - checksum: 10c0/d79fffa97106007f2802589f3ed17b8c903f1c961c0fc28aa8a051eee0cbad394d8446223862efd4c1b40445a6034f626bb639cf2035b0bfc468544177593c99 - languageName: node - linkType: hard - "css-tree@npm:^1.1.2": version: 1.1.3 resolution: "css-tree@npm:1.1.3" @@ -4802,13 +4698,6 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^6.1.0": - version: 6.2.2 - resolution: "css-what@npm:6.2.2" - checksum: 10c0/91e24c26fb977b4ccef30d7007d2668c1c10ac0154cc3f42f7304410e9594fb772aea4f30c832d2993b132ca8d99338050866476210316345ec2e7d47b248a56 - languageName: node - linkType: hard - "cssesc@npm:^3.0.0": version: 3.0.0 resolution: "cssesc@npm:3.0.0" @@ -5017,13 +4906,6 @@ __metadata: languageName: node linkType: hard -"discontinuous-range@npm:1.0.0": - version: 1.0.0 - resolution: "discontinuous-range@npm:1.0.0" - checksum: 10c0/487b105f83c1cc528e25e65d3c4b73958ec79769b7bd0e264414702a23a7e2b282c72982b4bef4af29fcab53f47816c3f0a5c40d85a99a490f4bc35b83dc00f8 - languageName: node - linkType: hard - "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -5054,33 +4936,6 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:^2.0.0": - version: 2.0.0 - resolution: "dom-serializer@npm:2.0.0" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.2" - entities: "npm:^4.2.0" - checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 - languageName: node - linkType: hard - -"domelementtype@npm:^2.3.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 - languageName: node - linkType: hard - -"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": - version: 5.0.3 - resolution: "domhandler@npm:5.0.3" - dependencies: - domelementtype: "npm:^2.3.0" - checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a - languageName: node - linkType: hard - "dompurify@npm:3.4.0": version: 3.4.0 resolution: "dompurify@npm:3.4.0" @@ -5093,17 +4948,6 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^3.0.1, domutils@npm:^3.2.2": - version: 3.2.2 - resolution: "domutils@npm:3.2.2" - dependencies: - dom-serializer: "npm:^2.0.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - checksum: 10c0/47938f473b987ea71cd59e59626eb8666d3aa8feba5266e45527f3b636c7883cca7e582d901531961f742c519d7514636b7973353b648762b2e3bedbf235fada - languageName: node - linkType: hard - "downshift@npm:^9.0.6": version: 9.3.2 resolution: "downshift@npm:9.3.2" @@ -5172,16 +5016,6 @@ __metadata: languageName: node linkType: hard -"encoding-sniffer@npm:^0.2.1": - version: 0.2.1 - resolution: "encoding-sniffer@npm:0.2.1" - dependencies: - iconv-lite: "npm:^0.6.3" - whatwg-encoding: "npm:^3.1.1" - checksum: 10c0/d6b591880788f3baf8dd1744636dd189d24a1ec93e6f9817267c60ac3458a5191ca70ab1a186fb67731beff1c3489c6527dfdc4718158ed8460ab2f400dd5e7d - languageName: node - linkType: hard - "enhanced-resolve@npm:^5.22.2": version: 5.24.1 resolution: "enhanced-resolve@npm:5.24.1" @@ -5192,13 +5026,6 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 - languageName: node - linkType: hard - "entities@npm:^6.0.0": version: 6.0.1 resolution: "entities@npm:6.0.1" @@ -5206,13 +5033,6 @@ __metadata: languageName: node linkType: hard -"entities@npm:^7.0.1": - version: 7.0.1 - resolution: "entities@npm:7.0.1" - checksum: 10c0/b4fb9937bb47ecb00aaaceb9db9cdd1cc0b0fb649c0e843d05cf5dbbd2e9d2df8f98721d8b1b286445689c72af7b54a7242fc2d63ef7c9739037a8c73363e7ca - languageName: node - linkType: hard - "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -5229,46 +5049,6 @@ __metadata: languageName: node linkType: hard -"enzyme-shallow-equal@npm:^1.0.1": - version: 1.0.7 - resolution: "enzyme-shallow-equal@npm:1.0.7" - dependencies: - hasown: "npm:^2.0.0" - object-is: "npm:^1.1.5" - checksum: 10c0/50bd80c62da4086a20f4c56c2333ab104f162f0d20db3a335406b5b6aa2b92a61eda67bed2248b52aecfc7992abfb368cf40fe5e35a66913b914668665b418c1 - languageName: node - linkType: hard - -"enzyme@npm:^3.11.0": - version: 3.11.0 - resolution: "enzyme@npm:3.11.0" - dependencies: - array.prototype.flat: "npm:^1.2.3" - cheerio: "npm:^1.0.0-rc.3" - enzyme-shallow-equal: "npm:^1.0.1" - function.prototype.name: "npm:^1.1.2" - has: "npm:^1.0.3" - html-element-map: "npm:^1.2.0" - is-boolean-object: "npm:^1.0.1" - is-callable: "npm:^1.1.5" - is-number-object: "npm:^1.0.4" - is-regex: "npm:^1.0.5" - is-string: "npm:^1.0.5" - is-subset: "npm:^0.1.1" - lodash.escape: "npm:^4.0.1" - lodash.isequal: "npm:^4.5.0" - object-inspect: "npm:^1.7.0" - object-is: "npm:^1.0.2" - object.assign: "npm:^4.1.0" - object.entries: "npm:^1.1.1" - object.values: "npm:^1.1.1" - raf: "npm:^3.4.1" - rst-selector-parser: "npm:^2.2.3" - string.prototype.trim: "npm:^1.2.1" - checksum: 10c0/14081671ed77924026036ed4edb1168cdac826aadd1ab2c77a5b7fdda625589dc5a4062cd0c65ec88add3ea3f7c0ebcbf3178bcf84b43335a175d8c71a016809 - languageName: node - linkType: hard - "error-ex@npm:^1.3.1": version: 1.3.4 resolution: "error-ex@npm:1.3.4" @@ -5358,13 +5138,6 @@ __metadata: languageName: node linkType: hard -"es-array-method-boxes-properly@npm:^1.0.0": - version: 1.0.0 - resolution: "es-array-method-boxes-properly@npm:1.0.0" - checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d - languageName: node - linkType: hard - "es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" @@ -6060,7 +5833,7 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.2, function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": version: 1.1.8 resolution: "function.prototype.name@npm:1.1.8" dependencies: @@ -6317,14 +6090,7 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.3": - version: 1.0.4 - resolution: "has@npm:1.0.4" - checksum: 10c0/82c1220573dc1f0a014a5d6189ae52a1f820f99dfdc00323c3a725b5002dcb7f04e44f460fea7af068474b2dd7c88cbe1846925c84017be9e31e1708936d305b - languageName: node - linkType: hard - -"hasown@npm:^2.0.0, hasown@npm:^2.0.2, hasown@npm:^2.0.3": +"hasown@npm:^2.0.2, hasown@npm:^2.0.3": version: 2.0.3 resolution: "hasown@npm:2.0.3" dependencies: @@ -6388,16 +6154,6 @@ __metadata: languageName: node linkType: hard -"html-element-map@npm:^1.2.0": - version: 1.4.0 - resolution: "html-element-map@npm:1.4.0" - dependencies: - array.prototype.filter: "npm:^1.0.4" - es-errors: "npm:^1.3.0" - checksum: 10c0/e61aec887047cd3515f3acd06a44540b033e046811569c536818bbd72e7b915323b654a6b3c3d491297c4512823e7190f9b08e1ef628056cb2e7fcd2485f8892 - languageName: node - linkType: hard - "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 resolution: "html-encoding-sniffer@npm:4.0.0" @@ -6430,18 +6186,6 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^10.1.0": - version: 10.1.0 - resolution: "htmlparser2@npm:10.1.0" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.2.2" - entities: "npm:^7.0.1" - checksum: 10c0/36394e29b80cfcc5e78e0fa4d3aa21fdaac3e6778d23e5c933e625c290987cd9a724a2eb0753ab60ed0c69dfaba0ab115f0ee50fb112fd8f0c4d522e7e0089a2 - languageName: node - linkType: hard - "http-parser-js@npm:>=0.5.1": version: 0.5.10 resolution: "http-parser-js@npm:0.5.10" @@ -6536,7 +6280,6 @@ __metadata: "@stylistic/eslint-plugin-ts": "npm:^4.4.1" "@swc/core": "npm:^1.15.43" "@swc/jest": "npm:^0.2.39" - "@types/enzyme": "npm:^3.10.19" "@types/jest": "npm:^30.0.0" "@types/react": "npm:^18.3.31" "@typescript-eslint/eslint-plugin": "npm:^8.62.1" @@ -6544,7 +6287,6 @@ __metadata: antlr4: "npm:^4.13.2" copy-webpack-plugin: "npm:^14.0.0" css-loader: "npm:^7.1.4" - enzyme: "npm:^3.11.0" eslint: "npm:^9.39.4" eslint-config-prettier: "npm:^10.1.8" eslint-plugin-jsdoc: "npm:^62.9.0" @@ -6570,7 +6312,7 @@ __metadata: languageName: unknown linkType: soft -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -6755,7 +6497,7 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.0.1, is-boolean-object@npm:^1.2.1": +"is-boolean-object@npm:^1.2.1": version: 1.2.2 resolution: "is-boolean-object@npm:1.2.2" dependencies: @@ -6765,7 +6507,7 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.5, is-callable@npm:^1.2.7": +"is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f @@ -6896,7 +6638,7 @@ __metadata: languageName: node linkType: hard -"is-number-object@npm:^1.0.4, is-number-object@npm:^1.1.1": +"is-number-object@npm:^1.1.1": version: 1.1.1 resolution: "is-number-object@npm:1.1.1" dependencies: @@ -6929,7 +6671,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.5, is-regex@npm:^1.2.1": +"is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" dependencies: @@ -6964,7 +6706,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7, is-string@npm:^1.1.1": +"is-string@npm:^1.1.1": version: 1.1.1 resolution: "is-string@npm:1.1.1" dependencies: @@ -6974,13 +6716,6 @@ __metadata: languageName: node linkType: hard -"is-subset@npm:^0.1.1": - version: 0.1.1 - resolution: "is-subset@npm:0.1.1" - checksum: 10c0/d8125598ab9077a76684e18726fb915f5cea7a7358ed0c6ff723f4484d71a0a9981ee5aae06c44de99cfdef0fefce37438c6257ab129e53c82045ea0c2acdebf - languageName: node - linkType: hard - "is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": version: 1.1.1 resolution: "is-symbol@npm:1.1.1" @@ -7941,27 +7676,6 @@ __metadata: languageName: node linkType: hard -"lodash.escape@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.escape@npm:4.0.1" - checksum: 10c0/90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b - languageName: node - linkType: hard - -"lodash.flattendeep@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.flattendeep@npm:4.4.0" - checksum: 10c0/83cb80754b921fb4ed2c222b91a82b2524f3bdc60c3ae91e00688bd4bf1bcc28b8a2cc250e11fdc1b6da3a2de09e57008e13f15a209cafdd4f9163d047f97544 - languageName: node - linkType: hard - -"lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f - languageName: node - linkType: hard - "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" @@ -8256,13 +7970,6 @@ __metadata: languageName: node linkType: hard -"moo@npm:^0.5.0": - version: 0.5.3 - resolution: "moo@npm:0.5.3" - checksum: 10c0/5c5e00d7c57a69ce1cc2f21a90655ff10556481cc10fa70528c01e91f00deff8a65fa8da6dc7b27d136d66085055aab238fd1b19a75070263e0028e8f07c8213 - languageName: node - linkType: hard - "ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -8314,23 +8021,6 @@ __metadata: languageName: node linkType: hard -"nearley@npm:^2.7.10": - version: 2.20.1 - resolution: "nearley@npm:2.20.1" - dependencies: - commander: "npm:^2.19.0" - moo: "npm:^0.5.0" - railroad-diagrams: "npm:^1.0.0" - randexp: "npm:0.4.6" - bin: - nearley-railroad: bin/nearley-railroad.js - nearley-test: bin/nearley-test.js - nearley-unparse: bin/nearley-unparse.js - nearleyc: bin/nearleyc.js - checksum: 10c0/d25e1fd40b19c53a0ada6a688670f4a39063fd9553ab62885e81a82927d51572ce47193b946afa3d85efa608ba2c68f433c421f69b854bfb7f599eacb5fae37e - languageName: node - linkType: hard - "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -8418,15 +8108,6 @@ __metadata: languageName: node linkType: hard -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: "npm:^1.0.0" - checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 - languageName: node - linkType: hard - "nwsapi@npm:^2.2.16": version: 2.2.23 resolution: "nwsapi@npm:2.2.23" @@ -8448,23 +8129,13 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4, object-inspect@npm:^1.7.0": +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 languageName: node linkType: hard -"object-is@npm:^1.0.2, object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 - languageName: node - linkType: hard - "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -8472,7 +8143,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": version: 4.1.7 resolution: "object.assign@npm:4.1.7" dependencies: @@ -8486,7 +8157,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.1, object.entries@npm:^1.1.9": +"object.entries@npm:^1.1.9": version: 1.1.9 resolution: "object.entries@npm:1.1.9" dependencies: @@ -8510,7 +8181,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.1, object.values@npm:^1.1.6, object.values@npm:^1.2.1": +"object.values@npm:^1.1.6, object.values@npm:^1.2.1": version: 1.2.1 resolution: "object.values@npm:1.2.1" dependencies: @@ -8686,26 +8357,7 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^7.1.0": - version: 7.1.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" - dependencies: - domhandler: "npm:^5.0.3" - parse5: "npm:^7.0.0" - checksum: 10c0/e5a4e0b834c84c9e244b5749f8d007f4baaeafac7a1da2c54be3421ffd9ef8fdec4f198bf55cda22e88e6ba95e9943f6ed5aa3ae5900b39972ebf5dc8c3f4722 - languageName: node - linkType: hard - -"parse5-parser-stream@npm:^7.1.2": - version: 7.1.2 - resolution: "parse5-parser-stream@npm:7.1.2" - dependencies: - parse5: "npm:^7.0.0" - checksum: 10c0/e236c61000d38ecad369e725a48506b051cebad8abb00e6d4e8bff7aa85c183820fcb45db1559cc90955bdbbdbd665ea94c41259594e74566fff411478dc7fcb - languageName: node - linkType: hard - -"parse5@npm:^7.0.0, parse5@npm:^7.2.1, parse5@npm:^7.3.0": +"parse5@npm:^7.0.0, parse5@npm:^7.2.1": version: 7.3.0 resolution: "parse5@npm:7.3.0" dependencies: @@ -9025,7 +8677,7 @@ __metadata: languageName: node linkType: hard -"raf@npm:^3.1.0, raf@npm:^3.4.1": +"raf@npm:^3.1.0": version: 3.4.1 resolution: "raf@npm:3.4.1" dependencies: @@ -9034,23 +8686,6 @@ __metadata: languageName: node linkType: hard -"railroad-diagrams@npm:^1.0.0": - version: 1.0.0 - resolution: "railroad-diagrams@npm:1.0.0" - checksum: 10c0/81bf8f86870a69fb9ed243102db9ad6416d09c4cb83964490d44717690e07dd982f671503236a1f8af28f4cb79d5d7a87613930f10ac08defa845ceb6764e364 - languageName: node - linkType: hard - -"randexp@npm:0.4.6": - version: 0.4.6 - resolution: "randexp@npm:0.4.6" - dependencies: - discontinuous-range: "npm:1.0.0" - ret: "npm:~0.1.10" - checksum: 10c0/14ee14b6d7f5ce69609b51cc914fb7a7c82ad337820a141c5f762c5ad1fe868f5191ea6e82359aee019b625ee1359486628fa833909d12c3b5dd9571908c3345 - languageName: node - linkType: hard - "raw-body@npm:~1.1.0": version: 1.1.7 resolution: "raw-body@npm:1.1.7" @@ -9651,13 +9286,6 @@ __metadata: languageName: node linkType: hard -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: 10c0/01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f - languageName: node - linkType: hard - "rrweb-cssom@npm:^0.8.0": version: 0.8.0 resolution: "rrweb-cssom@npm:0.8.0" @@ -9665,16 +9293,6 @@ __metadata: languageName: node linkType: hard -"rst-selector-parser@npm:^2.2.3": - version: 2.2.3 - resolution: "rst-selector-parser@npm:2.2.3" - dependencies: - lodash.flattendeep: "npm:^4.4.0" - nearley: "npm:^2.7.10" - checksum: 10c0/b631aca2cb451fbde8d78dbc9a9479f20f1f40565cd8eb63773cb6e2a395ed87b392291986b84c2c7da68b70084e3469fbe958261300a10dff41c87fa3bc58aa - languageName: node - linkType: hard - "rtl-css-js@npm:^1.16.1": version: 1.16.1 resolution: "rtl-css-js@npm:1.16.1" @@ -10284,7 +9902,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.1, string.prototype.trim@npm:^1.2.10": +"string.prototype.trim@npm:^1.2.10": version: 1.2.10 resolution: "string.prototype.trim@npm:1.2.10" dependencies: @@ -10921,13 +10539,6 @@ __metadata: languageName: node linkType: hard -"undici@npm:^7.19.0": - version: 7.25.0 - resolution: "undici@npm:7.25.0" - checksum: 10c0/02a0b45dc14eb91bc488948750232450fe52f27a6b08086d6ac6736bb47908d600fe3a96d346f12eab24729c782e5c2f693bc8e8eca6696d4e4c09b1ed4cb4ec - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" From ce4f209b970f9e1aa167275cd40f8d2088a743fa Mon Sep 17 00:00:00 2001 From: Dmitry Nikolaev Date: Mon, 6 Jul 2026 15:27:41 +0200 Subject: [PATCH 2/4] Eliminate high severity findings reported by ocv-scanner Signed-off-by: Dmitry Nikolaev --- grafana/rmf-app/.config/eslint.config.mjs | 2 +- grafana/rmf-app/package.json | 9 ++- grafana/rmf-app/yarn.lock | 81 ++++++++++++----------- 3 files changed, 50 insertions(+), 42 deletions(-) diff --git a/grafana/rmf-app/.config/eslint.config.mjs b/grafana/rmf-app/.config/eslint.config.mjs index bafeaf58..a4d0009f 100644 --- a/grafana/rmf-app/.config/eslint.config.mjs +++ b/grafana/rmf-app/.config/eslint.config.mjs @@ -6,7 +6,7 @@ */ import { defineConfig } from 'eslint/config'; -import grafanaConfig from '@grafana/eslint-config/flat.js'; +import grafanaConfig from '@grafana/eslint-config'; export default defineConfig([ ...grafanaConfig, diff --git a/grafana/rmf-app/package.json b/grafana/rmf-app/package.json index 358d3f90..de3c3cf5 100644 --- a/grafana/rmf-app/package.json +++ b/grafana/rmf-app/package.json @@ -29,11 +29,11 @@ }, "devDependencies": { "@grafana/data": "13.1.0", - "@grafana/eslint-config": "^9.0.0", + "@grafana/eslint-config": "^10.0.0", "@grafana/runtime": "13.1.0", "@grafana/tsconfig": "^2.2.0", "@grafana/ui": "13.1.0", - "@stylistic/eslint-plugin-ts": "^4.4.1", + "@stylistic/eslint-plugin": "^5.10.0", "@swc/core": "^1.15.43", "@swc/jest": "^0.2.39", "@types/jest": "^30.0.0", @@ -68,6 +68,11 @@ "dependencies": { "antlr4": "^4.13.2" }, + "resolutions": { + "js-cookie": "^3.0.7", + "undici": "^6.27.0", + "ws": "^8.21.0" + }, "engines": { "node": ">=24" }, diff --git a/grafana/rmf-app/yarn.lock b/grafana/rmf-app/yarn.lock index a52d700d..87f00b20 100644 --- a/grafana/rmf-app/yarn.lock +++ b/grafana/rmf-app/yarn.lock @@ -1098,20 +1098,20 @@ __metadata: languageName: node linkType: hard -"@grafana/eslint-config@npm:^9.0.0": - version: 9.0.0 - resolution: "@grafana/eslint-config@npm:9.0.0" +"@grafana/eslint-config@npm:^10.0.0": + version: 10.0.0 + resolution: "@grafana/eslint-config@npm:10.0.0" peerDependencies: - "@stylistic/eslint-plugin-ts": ">=2.9.0" - "@typescript-eslint/eslint-plugin": ">=6.18.0" - "@typescript-eslint/parser": ">=6.18.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">=8.8.0" - eslint-plugin-jsdoc: ">=46.8.0" - eslint-plugin-react: ">=7.33.0" - eslint-plugin-react-hooks: ">=7.0.0" - typescript: ">=5.2.0" - checksum: 10c0/a603561418ff4fae279efb91ffeffee721ae35dfbe33078d8bfa18311a69cfe8249e3d4020141c948cea986ee43b366aced8803a92df48f6abf54e4d71ce9ca9 + "@stylistic/eslint-plugin": ">=5.0.0" + "@typescript-eslint/eslint-plugin": ">=8.9.0" + "@typescript-eslint/parser": ">=8.9.0" + eslint: ">=8.57.0" + eslint-config-prettier: ">=9.1.0" + eslint-plugin-jsdoc: ">=50.4.0" + eslint-plugin-react: ">=7.37.0" + eslint-plugin-react-hooks: ">=7.1.0" + typescript: ">=5.5.0" + checksum: 10c0/1e06ea9adbc2192649152fb3128e221bd634775e085347b8604428fea05f3423297132d15a39646b2cd7e55ad2cdfb4f436859b3c0065f531fa6917a6bd06d94 languageName: node linkType: hard @@ -2626,16 +2626,19 @@ __metadata: languageName: node linkType: hard -"@stylistic/eslint-plugin-ts@npm:^4.4.1": - version: 4.4.1 - resolution: "@stylistic/eslint-plugin-ts@npm:4.4.1" +"@stylistic/eslint-plugin@npm:^5.10.0": + version: 5.10.0 + resolution: "@stylistic/eslint-plugin@npm:5.10.0" dependencies: - "@typescript-eslint/utils": "npm:^8.32.1" - eslint-visitor-keys: "npm:^4.2.0" - espree: "npm:^10.3.0" + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/types": "npm:^8.56.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + estraverse: "npm:^5.3.0" + picomatch: "npm:^4.0.3" peerDependencies: - eslint: ">=9.0.0" - checksum: 10c0/9b2d88364dc39441666a3963783fdbf2420689e6af88d58556472ee6fd8a6f115f8f42713f0be64db58b03df8c5ebbde2547872cee9372215ec32123f81d33a9 + eslint: ^9.0.0 || ^10.0.0 + checksum: 10c0/2cc6e592d5b2ab691290cc39ed377c0f6226667b367ffc6a0bf3a4bf6dd36b011d17c83f377600a48946f6bb037390b35a8b3c273b3c40d161c00b44512a129e languageName: node linkType: hard @@ -3274,7 +3277,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.62.1, @typescript-eslint/types@npm:^8.62.1": +"@typescript-eslint/types@npm:8.62.1, @typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.62.1": version: 8.62.1 resolution: "@typescript-eslint/types@npm:8.62.1" checksum: 10c0/dfa1c9ef016c867a57d3fbef89f7968f3135d8d4621de1a8d2818258f79ed61f26fb6a3381ef27dde0a880817bfd5883f642f03a027dc127d771007022d1d880 @@ -3334,7 +3337,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.32.1, @typescript-eslint/utils@npm:^8.33.1": +"@typescript-eslint/utils@npm:^8.33.1": version: 8.59.2 resolution: "@typescript-eslint/utils@npm:8.59.2" dependencies: @@ -5350,7 +5353,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.0, eslint-visitor-keys@npm:^4.2.1": +"eslint-visitor-keys@npm:^4.2.1": version: 4.2.1 resolution: "eslint-visitor-keys@npm:4.2.1" checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 @@ -5428,7 +5431,7 @@ __metadata: languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.3.0, espree@npm:^10.4.0": +"espree@npm:^10.0.1, espree@npm:^10.4.0": version: 10.4.0 resolution: "espree@npm:10.4.0" dependencies: @@ -6273,11 +6276,11 @@ __metadata: resolution: "ibm-rmf@workspace:." dependencies: "@grafana/data": "npm:13.1.0" - "@grafana/eslint-config": "npm:^9.0.0" + "@grafana/eslint-config": "npm:^10.0.0" "@grafana/runtime": "npm:13.1.0" "@grafana/tsconfig": "npm:^2.2.0" "@grafana/ui": "npm:13.1.0" - "@stylistic/eslint-plugin-ts": "npm:^4.4.1" + "@stylistic/eslint-plugin": "npm:^5.10.0" "@swc/core": "npm:^1.15.43" "@swc/jest": "npm:^0.2.39" "@types/jest": "npm:^30.0.0" @@ -7435,10 +7438,10 @@ __metadata: languageName: node linkType: hard -"js-cookie@npm:^2.2.1": - version: 2.2.1 - resolution: "js-cookie@npm:2.2.1" - checksum: 10c0/ee67fc0f8495d0800b851910b5eb5bf49d3033adff6493d55b5c097ca6da46f7fe666b10e2ecb13cfcaf5b88d71c205ce00a7e646de791689bfd053bbb36a376 +"js-cookie@npm:^3.0.7": + version: 3.0.8 + resolution: "js-cookie@npm:3.0.8" + checksum: 10c0/421912a4a55535bda32b3059835864e1182c3af5b4516df00a060edc1fa5a53d38bb8d5a91d5d305e396206f4fd11e829f17850aa5aa8164118c04d8ebf1ff5d languageName: node linkType: hard @@ -10532,10 +10535,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:^6.25.0": - version: 6.25.0 - resolution: "undici@npm:6.25.0" - checksum: 10c0/2597cc6689bdb02c210c557b1f85febbfda65becae6e6fc1061508e2f33734d25207f81cd8af56ada9956329eb3a7bd7431e87dcfeceba20ee87059b57dcf985 +"undici@npm:^6.27.0": + version: 6.27.0 + resolution: "undici@npm:6.27.0" + checksum: 10c0/f88c3dae3957dbf9d93cb481440aced317bd3c4941b5914fea5efba516d51138988cdb5c76006f0bb1337e41d56c3443351055d492e73af2428521c37ba2a76f languageName: node linkType: hard @@ -11077,9 +11080,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.0": - version: 8.20.0 - resolution: "ws@npm:8.20.0" +"ws@npm:^8.21.0": + version: 8.21.0 + resolution: "ws@npm:8.21.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -11088,7 +11091,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/956ac5f11738c914089b65878b9223692ace77337ba55379ae68e1ecbeae9b47a0c6eb9403688f609999a58c80d83d99865fe0029b229d308b08c1ef93d4ea14 + checksum: 10c0/ef4a243476283fc49bc7550966c4af4aa0eef56273837211e700de3b664e08604a760cdddcb5ba43c049140e74ccfec5b0ee0bb439e08c2adf9138902fdde5f9 languageName: node linkType: hard From d1ac9b466926e3a19ce79cbd90fa4ed62c097c00 Mon Sep 17 00:00:00 2001 From: Ramanath Shanbhag Date: Fri, 17 Jul 2026 16:48:14 +0530 Subject: [PATCH 3/4] v201 doc updates and output generation Signed-off-by: Ramanath Shanbhag --- .../grafana/rmf-app/access_grafana_zosmf.html | 24 +- docs/grafana/rmf-app/alerts.html | 12 +- docs/grafana/rmf-app/apply_visualize.html | 30 +- docs/grafana/rmf-app/context-help-map.xml | 16 +- docs/grafana/rmf-app/create_datasources.html | 20 +- docs/grafana/rmf-app/dashboards_overview.html | 185 +++++++++++ .../grafana/rmf-app/define_grafana_zosmf.html | 40 ++- docs/grafana/rmf-app/error_reports.html | 8 +- .../grafana/rmf-app/grafana_config_parms.html | 130 ++++---- docs/grafana/rmf-app/grafana_via_zosmf.html | 10 +- docs/grafana/rmf-app/historical_data.html | 8 +- docs/grafana/rmf-app/images/app_section.png | Bin 8429 -> 0 bytes .../grafana/rmf-app/importing_dashboards.html | 93 ++++-- docs/grafana/rmf-app/index.html | 6 +- docs/grafana/rmf-app/indexTerms.html | 4 +- .../rmf-app/install_grafana_plugin.html | 201 ++--------- .../install_grafana_plugin_legacy.html | 311 ++++++++++++++++++ docs/grafana/rmf-app/install_plugin_cli.html | 201 +++++++++++ .../rmf-app/install_plugin_docker.html | 271 +++++++++++++++ docs/grafana/rmf-app/install_plugin_ui.html | 209 ++++++++++++ .../rmf-app/install_sample_dashboards.html | 236 +++++++++++++ .../rmf-app/integrating_dds_omegamon.html | 19 +- .../app/context-help/context-help-map.js | 2 +- .../json/dashboards_overview-d526e164.js | 1 + ...3e208.js => grafana_via_zosmf-d526e318.js} | 2 +- .../json/install_grafana_plugin-d526e60.js | 1 + .../app/nav-links/json/nav-links.js | 2 +- ...f-d423e227.js => prereq_zosmf-d526e337.js} | 2 +- .../app/search/index/htmlFileInfoList.js | 2 +- .../app/search/index/index-1.js | 2 +- .../app/search/index/index-2.js | 2 +- .../app/search/index/index-3.js | 2 +- .../app/search/index/keywords.js | 43 ++- .../app/search/index/link-to-parent.js | 2 +- docs/grafana/rmf-app/pdf/rmf_grafana.pdf | Bin 1157099 -> 1235832 bytes docs/grafana/rmf-app/pdf_guide.html | 8 +- docs/grafana/rmf-app/prereq_plugin.html | 180 ++++++++++ docs/grafana/rmf-app/prereq_zosmf.html | 8 +- .../rmf-app/prometheus_sample_dashboards.html | 213 ------------ .../grafana/rmf-app/prometheus_sample_db.html | 211 ++++++++++++ docs/grafana/rmf-app/query_lang.html | 23 +- docs/grafana/rmf-app/rn.html | 63 ++-- docs/grafana/rmf-app/search.html | 18 +- docs/grafana/rmf-app/sitemap.xml | 80 +++-- docs/grafana/rmf-app/ts_issues.html | 8 +- docs/grafana/rmf-app/update_plugin.html | 144 ++++---- docs/grafana/rmf-app/variables.html | 12 +- docs/grafana/rmf-app/visual_grafana.html | 12 +- grafana/rmf-app/CHANGELOG.md | 6 +- .../rmf-app/doc/src/access_grafana_zosmf.dita | 31 +- grafana/rmf-app/doc/src/apply_visualize.dita | 7 +- grafana/rmf-app/doc/src/conref.dita | 68 +++- .../rmf-app/doc/src/create_datasources.dita | 4 +- .../rmf-app/doc/src/dashboards_overview.dita | 34 ++ .../rmf-app/doc/src/define_grafana_zosmf.dita | 32 +- .../rmf-app/doc/src/grafana_config_parms.dita | 50 ++- .../rmf-app/doc/src/importing_dashboards.dita | 79 +++-- .../doc/src/install_grafana_plugin.dita | 251 +++----------- .../src/install_grafana_plugin_legacy.dita | 186 +++++++++++ .../rmf-app/doc/src/install_plugin_cli.dita | 52 +++ .../doc/src/install_plugin_docker.dita | 139 ++++++++ .../rmf-app/doc/src/install_plugin_ui.dita | 62 ++++ .../doc/src/install_sample_dashboards.dita | 87 +++++ .../doc/src/integrating_dds_omegamon.dita | 4 +- grafana/rmf-app/doc/src/pdf/rmf_grafana.pdf | Bin 1157099 -> 1235832 bytes grafana/rmf-app/doc/src/prereq_plugin.dita | 25 ++ .../doc/src/prometheus_sample_dashboards.dita | 66 ---- .../rmf-app/doc/src/prometheus_sample_db.dita | 64 ++++ grafana/rmf-app/doc/src/rmf_grafana.ditamap | 17 +- grafana/rmf-app/doc/src/rn.dita | 33 +- .../doc/src/templates/pdf-template/pdf.opt | 17 - grafana/rmf-app/doc/src/update_plugin.dita | 140 +++++--- grafana/rmf-app/doc/src/visual_grafana.dita | 4 +- 73 files changed, 3354 insertions(+), 1181 deletions(-) create mode 100644 docs/grafana/rmf-app/dashboards_overview.html delete mode 100644 docs/grafana/rmf-app/images/app_section.png create mode 100644 docs/grafana/rmf-app/install_grafana_plugin_legacy.html create mode 100644 docs/grafana/rmf-app/install_plugin_cli.html create mode 100644 docs/grafana/rmf-app/install_plugin_docker.html create mode 100644 docs/grafana/rmf-app/install_plugin_ui.html create mode 100644 docs/grafana/rmf-app/install_sample_dashboards.html create mode 100644 docs/grafana/rmf-app/oxygen-webhelp/app/nav-links/json/dashboards_overview-d526e164.js rename docs/grafana/rmf-app/oxygen-webhelp/app/nav-links/json/{grafana_via_zosmf-d423e208.js => grafana_via_zosmf-d526e318.js} (81%) create mode 100644 docs/grafana/rmf-app/oxygen-webhelp/app/nav-links/json/install_grafana_plugin-d526e60.js rename docs/grafana/rmf-app/oxygen-webhelp/app/nav-links/json/{prereq_zosmf-d423e227.js => prereq_zosmf-d526e337.js} (73%) create mode 100644 docs/grafana/rmf-app/prereq_plugin.html delete mode 100644 docs/grafana/rmf-app/prometheus_sample_dashboards.html create mode 100644 docs/grafana/rmf-app/prometheus_sample_db.html create mode 100644 grafana/rmf-app/doc/src/dashboards_overview.dita create mode 100644 grafana/rmf-app/doc/src/install_grafana_plugin_legacy.dita create mode 100644 grafana/rmf-app/doc/src/install_plugin_cli.dita create mode 100644 grafana/rmf-app/doc/src/install_plugin_docker.dita create mode 100644 grafana/rmf-app/doc/src/install_plugin_ui.dita create mode 100644 grafana/rmf-app/doc/src/install_sample_dashboards.dita create mode 100644 grafana/rmf-app/doc/src/prereq_plugin.dita delete mode 100644 grafana/rmf-app/doc/src/prometheus_sample_dashboards.dita create mode 100644 grafana/rmf-app/doc/src/prometheus_sample_db.dita diff --git a/docs/grafana/rmf-app/access_grafana_zosmf.html b/docs/grafana/rmf-app/access_grafana_zosmf.html index d9e6dcc3..c8ca9101 100644 --- a/docs/grafana/rmf-app/access_grafana_zosmf.html +++ b/docs/grafana/rmf-app/access_grafana_zosmf.html @@ -1,13 +1,13 @@ - Accessing the Grafana dashboard + Accessing the Grafana dashboard - + - + @@ -110,7 +110,7 @@ @@ -145,11 +145,17 @@

Accessing the Gra Click OK.

Results

You have accessed Grafana from z/OSMF.
-

What to do next

You can perform the following tasks:
    -
  • View the dashboards by navigating to Apps > IBM RMF > Dashboards.
  • -
  • Add a RMF data source to fetch data from Distributed Data Servers (DDS). See Creating RMF data - sources.
  • -
+

What to do next

+
    +
  • +

    View the dashboards by navigating to Apps > IBM RMF > Dashboards.

    +
  • +
  • +

    Add a RMF data source to fetch data from Distributed Data Servers (DDS). See Creating RMF data + sources.

    +
  • +
+
diff --git a/docs/grafana/rmf-app/alerts.html b/docs/grafana/rmf-app/alerts.html index 41d16e09..c1938bcf 100644 --- a/docs/grafana/rmf-app/alerts.html +++ b/docs/grafana/rmf-app/alerts.html @@ -1,13 +1,13 @@ - - Introduction to Alerts + + Introduction to Alerts - + - + @@ -85,7 +85,7 @@ @@ -109,7 +109,7 @@ diff --git a/docs/grafana/rmf-app/apply_visualize.html b/docs/grafana/rmf-app/apply_visualize.html index 75e08bca..b786e818 100644 --- a/docs/grafana/rmf-app/apply_visualize.html +++ b/docs/grafana/rmf-app/apply_visualize.html @@ -1,13 +1,13 @@ - - Applying visualization to RMF data + + Applying visualization to RMF data - + - + @@ -85,7 +85,7 @@ @@ -109,7 +109,7 @@ @@ -129,11 +129,17 @@

Applying visualiz

By adding panels to dashboards, you can effectively present your RMF data in a visual format. Each panel must require at least one query to display a significant visualization.

-

Before you begin

You must have completed the following tasks: +

Procedure

  1. Identify the dashboard for which you want to add visualization.
  2. @@ -154,8 +160,8 @@

    Applying visualiz Click + Add visualization to add visualization to your data.
    -
    Note: The navigation of the user interface can differ based on the - Grafana version that is currently installed.
    +
    Note: The navigation of the Grafana user interface can differ + based on the Grafana version that is currently installed.
    The Edit panel is displayed.

  3. diff --git a/docs/grafana/rmf-app/context-help-map.xml b/docs/grafana/rmf-app/context-help-map.xml index 7f5b4521..4f923bcc 100644 --- a/docs/grafana/rmf-app/context-help-map.xml +++ b/docs/grafana/rmf-app/context-help-map.xml @@ -2,16 +2,24 @@ + + + + + - + + + + + - - diff --git a/docs/grafana/rmf-app/create_datasources.html b/docs/grafana/rmf-app/create_datasources.html index ba7b51ed..29d16c06 100644 --- a/docs/grafana/rmf-app/create_datasources.html +++ b/docs/grafana/rmf-app/create_datasources.html @@ -1,13 +1,13 @@ - - Creating RMF data sources + + Creating RMF data sources - + - + @@ -85,8 +85,8 @@ + +
@@ -109,7 +109,7 @@ @@ -130,14 +130,14 @@

Creating RMF data adding an RMF data source.

Before you begin

Procedure

  1. Go to Apps > IBM RMF > Add RMF Data Source. -
    Alternatively, you can click Administration > Data sources > + Add new data source, then search for the IBM RMF to choose a data source type.
    Note: The navigation of the user interface can differ based on the - Grafana version that is currently installed.
    +
    Alternatively, you can click Administration > Data sources > + Add new data source, then search for the IBM RMF to choose a data source type.
    Note: The navigation of the Grafana user interface can differ + based on the Grafana version that is currently installed.
  2. Enter a name for the data source in the Name field. diff --git a/docs/grafana/rmf-app/dashboards_overview.html b/docs/grafana/rmf-app/dashboards_overview.html new file mode 100644 index 00000000..947c0814 --- /dev/null +++ b/docs/grafana/rmf-app/dashboards_overview.html @@ -0,0 +1,185 @@ + + + Dashboards + + + + + + + + + + + + + + Jump to main content + + + + + + + + + + + + +
    +
    + + +
    + + + + +
    +
    + + + + +
    + + + +
    +

    Dashboards

    + + +

    The IBM RMF for z/OS Grafana plugin provides pre-built sample + dashboards that you can install, as well as the ability to import dashboards from other + sources and integrate with IBM Z OMEGAMON dashboards.

    +

    After you install the plugin, you can deploy sample dashboards to visualize RMF for z/OS metrics. The plugin offers the following + dashboard categories:

    +
      +
    • +

      DDS Sample Dashboards - A comprehensive set of dashboards + for visualizing RMF Monitor III metrics collected through the Distributed Data Server. These dashboards are installed into + a dedicated folder named IBM RMF (DDS).

      +
    • +
    • Prometheus Sample Dashboards - Dashboards designed to work + with Prometheus-compatible platforms that scrape metrics from the RMF DDS + /metrics/m3 endpoint. These are installed into a folder named + IBM RMF (Prometheus).
    • +
    • Imported Dashboards from RMF Performance Monitoring - + Dashboards exported from RMF Performance Monitoring can be imported into the plugin. + These are placed in a folder named IBM RMF (PM).
    • +
    +

    You can also integrate DDS dashboards with IBM Z OMEGAMON Web UI dashboards for enhanced visibility across both tools.

    +
    +
    + + + + + + +
    + +
    +
    + + + +
    +
    + +
    + +
    + +
    + + + + + + + \ No newline at end of file diff --git a/docs/grafana/rmf-app/define_grafana_zosmf.html b/docs/grafana/rmf-app/define_grafana_zosmf.html index c1692132..14173170 100644 --- a/docs/grafana/rmf-app/define_grafana_zosmf.html +++ b/docs/grafana/rmf-app/define_grafana_zosmf.html @@ -1,13 +1,13 @@ - Defining the Grafana server + Defining the Grafana server - + - + @@ -110,7 +110,7 @@ @@ -129,10 +129,16 @@

    Defining the Graf

    You must define the Grafana server as a target system in z/OSMF to access Grafana from the Resource Monitoring page of z/OSMF.

    -

    Before you begin

    You must have completed the following tasks:
    +

    Before you begin

    + +

    Procedure

    1. Enter the URL of z/OSMF in a web browser.
    2. @@ -193,12 +199,18 @@

      Defining the Graf

    Results

    You have defined the Grafana server as the target system.
    -

    What to do next

    You can perform the following tasks:
      -
    • Modify or Remove the Grafana server by clicking the - Action drop-down menu from the System - Status page.
    • -
    • Access Grafana dashboards. See Accessing the Grafana dashboard.
    • -
    +

    What to do next

    +
      +
    • +

      Modify or Remove the Grafana server by clicking the + Action drop-down menu from the System + Status page.

      +
    • +
    • +

      Access Grafana dashboards. See Accessing the Grafana dashboard.

      +
    • +
    +
    diff --git a/docs/grafana/rmf-app/error_reports.html b/docs/grafana/rmf-app/error_reports.html index 18a251a6..800f087f 100644 --- a/docs/grafana/rmf-app/error_reports.html +++ b/docs/grafana/rmf-app/error_reports.html @@ -1,13 +1,13 @@ - Error reporting in the plugin + Error reporting in the plugin - + - + @@ -109,7 +109,7 @@ diff --git a/docs/grafana/rmf-app/grafana_config_parms.html b/docs/grafana/rmf-app/grafana_config_parms.html index 30b74362..dec17202 100644 --- a/docs/grafana/rmf-app/grafana_config_parms.html +++ b/docs/grafana/rmf-app/grafana_config_parms.html @@ -1,13 +1,13 @@ - Grafana configuration parameters + Grafana configuration parameters - + - + @@ -107,7 +107,7 @@ @@ -126,118 +126,130 @@

    Grafana configura

    You can find the information about parameters you can use during the configuration of JWT authentication on Grafana.

    -

    The following table lists the minimum parameters that you must configure to enable JWT +

    The following tables lists the minimum parameters that you must configure to enable JWT authentication on Grafana:

    -
    +
    - - - - + + + - - - + - + - - + - + - - + - + - - + - + - - + - + - - + - + - - + - + - - + - + - - + - + +
    Table 1. [auth.jwt] Parameters
    SectionParametersDescriptionValues to be configured for z/OSMFParametersDescriptionValues to be configured for z/OSMF
    [auth.jwt]enabledUse this parameter to allow JWT to authenticate on the Grafana + enabledUse this parameter to allow JWT to authenticate on the Grafana server.

    The default value is set to true.

    truetrue
    enable_login_tokenUpon successful authentication proxy header validation, this + enable_login_tokenUpon successful authentication proxy header validation, this parameter provides the user with a login token.

    The default value is set to false.

    truetrue
    header_nameUse this parameter to specify the header's name that holds a + header_nameUse this parameter to specify the header's name that holds a token.

    The default value is set to X-JWT-Assertion.

    X-Forwarded-Access-TokenX-Forwarded-Access-Token
    username_claimUse this parameter to identify the user. + username_claimUse this parameter to identify the user.

    The sub claim is mandatory and needs to be present in a JWT, and it should mention the subject of the JWT.

    The default value is also set to sub.

    subsub
    jwk_set_fileUse this parameter to verify the token with a JSON Web Key Set loaded + jwk_set_fileUse this parameter to verify the token with a JSON Web Key Set loaded from a JSON file./PATH/TO/jwks.json/PATH/TO/jwks.json
    cache_ttlUse this parameter to establish the duration for caching data + cache_ttlUse this parameter to establish the duration for caching data retrieved from the HTTP endpoint.

    This parameter enables the user to store the data for a specified period, allowing for faster access and retrieval of information.

    The default value is set to 60m (minutes).

    60m60m
    expect_claimsUse this parameter to verify the validity of other claims that + expect_claimsUse this parameter to verify the validity of other claims that contain JSON-encoded information.

    When it comes to validation, only the exp, nbf, and iat claims are automatically checked by default.

    You must validate if you are using other claims such as iss, sub, aud, and jti.

    {"iss": "zOSMF"}{"iss": "zOSMF"}
    auto_sign_upUse this parameter to automatically create user profiles in Grafana + auto_sign_upUse this parameter to automatically create user profiles in Grafana using the TSO ID of z/OSMF for users who do not have user profiles in the Grafana server.

    The default value is set to false.

    truetrue
    url_loginUse this parameter to enable JWT authentication in the URL. + url_loginUse this parameter to enable JWT authentication in the URL.

    The default value is set to false.

    truetrue
    +
    + + + + + + - - - + - + - - + - + - - + - + +
    Table 2. [server] Parameters
    ParametersDescriptionValues to be configured for z/OSMF
    [server]protocolUse this parameter to configure z/OSMF to work over + protocolUse this parameter to configure z/OSMF to work over HTTPS.

    When you configure z/OSMF to work over HTTPS, it is recommended to configure Grafana to also work over HTTPS. This ensures the secure data transfer between the user's web browser and the Grafana server.

    The default value is set to http.

    httpshttps
    cert_fileUse this parameter to specify the path to the certificate file when + cert_fileUse this parameter to specify the path to the certificate file when the protocol parameter is set to https or h2./PATH/TO/certificate.crt/PATH/TO/certificate.crt
    cert_keyUse this parameter to specify the path to the certificate key file + cert_keyUse this parameter to specify the path to the certificate key file when the protocol parameter is set to https or h2./PATH/TO/privateKey.key/PATH/TO/privateKey.key
    +
    + + + + + + - - - + - + - - + - + - - + - +

    The default value is set to false.

    +
    Table 3. [Security] Parameters
    ParametersDescriptionValues to be configured for z/OSMF
    [Security]cookie_secureUse this parameter if you hosted the Grafana instance over + cookie_secureUse this parameter if you hosted the Grafana instance over HTTPS.

    The default value is set to false.

    truetrue
    cookie_samesiteUse this parameter to prevent the browser from sharing cookies with + cookie_samesiteUse this parameter to prevent the browser from sharing cookies with other websites.

    The default value is set to lax.

    disableddisabled
    allow_embeddingUse this parameter to enable web browsers to display Grafana within + allow_embeddingUse this parameter to enable web browsers to display Grafana within z/OSMF HTML <frame>, <iframe>, <embed>, or <object> element. -

    The default value is set to false.

    truetrue

    For more information about customizing the Grafana instance by modifying the parameters diff --git a/docs/grafana/rmf-app/grafana_via_zosmf.html b/docs/grafana/rmf-app/grafana_via_zosmf.html index 2acb1244..b05a51a4 100644 --- a/docs/grafana/rmf-app/grafana_via_zosmf.html +++ b/docs/grafana/rmf-app/grafana_via_zosmf.html @@ -1,13 +1,13 @@ - Grafana through IBM z/OS Management Facility + Grafana through IBM z/OS Management Facility - + - + @@ -109,7 +109,7 @@

    @@ -143,7 +143,7 @@

    Grafana through < Install the RMF for z/OS plugin on Grafana. - Installing the RMF for z/OS plugin on Grafana + Installing the RMF for z/OS Grafana plugin v2.0.1 or later Define Grafana servers as target systems. diff --git a/docs/grafana/rmf-app/historical_data.html b/docs/grafana/rmf-app/historical_data.html index a4b6ae03..badb1bc7 100644 --- a/docs/grafana/rmf-app/historical_data.html +++ b/docs/grafana/rmf-app/historical_data.html @@ -1,13 +1,13 @@ - Historical data collection + Historical data collection - + - + @@ -109,7 +109,7 @@ diff --git a/docs/grafana/rmf-app/images/app_section.png b/docs/grafana/rmf-app/images/app_section.png deleted file mode 100644 index b32f6f88cb7f22a7a78b0fe6a3aca7b00c1ccac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8429 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 - - Importing Dashboards created in RMF Performance Monitoring + + Importing dashboards created in RMF Performance Monitoring - + - + @@ -77,7 +77,7 @@

    @@ -109,7 +110,7 @@ @@ -124,39 +125,77 @@
    -

    Importing Dashboards created in RMF Performance Monitoring

    +

    Importing dashboards created in RMF Performance Monitoring

    -

    This task describes how to import dashboards and the associated data sources created - in RMF Performance Monitoring in the RMF application.

    +

    You can import dashboards exported from RMF Performance Monitoring + (.po files) into the IBM RMF for z/OS Grafana plugin. The import process automatically + creates the associated data sources and converts the dashboards to Grafana format.

    Before you begin

    -
    You must have completed the following task:
    +

    About this task

    +

    When you import a .po file, the plugin performs the following + actions:

    +
      +
    • Parses the data source definitions from the file and creates the corresponding + IBM RMF data sources in Grafana if they do not already exist.
    • +
    • Converts the Performance Monitoring dashboard panels into Grafana bar chart + panels with appropriate queries and transformations.
    • +
    • Installs the converted dashboard into the IBM RMF + (PM) folder.
    • +
    +

    Procedure

    1. - Go to Apps > IBM RMF and navigate to the Import Dashboards from RMF Performance - Monitoring section. + Go to Apps > IBM RMF and navigate to the Import Dashboards from RMF + Performance Monitoring section.
    2. Verify the Destination folder path displayed under the section heading. +
      +

      The imported dashboards are placed in the IBM RMF + (PM) folder.

      +
    3. - Click Go to PM Dashboards to review existing RMF - Performance Monitoring dashboard files before importing. -
    4. - In the Upload File area, drag and drop - .po dashboard file or click the upload zone to browse - for the file manually. + Drag and drop a .po dashboard file onto the drop zone, or + click the drop zone to browse for the file manually. +
      +

      Only files with the .po extension are accepted. You can + import one file at a time.

      +
      +
      The plugin automatically creates any required data sources and imports + the dashboard into the destination folder. A success notification confirms the + import with the dashboard name.
      +
    5. Optional: + Click Go to PM Dashboards to navigate to the + destination folder and review the imported dashboards. +
      +

      This button is available only after at least one dashboard has been + imported.

      +
      +
    6. Optional: + To remove all imported dashboards, click + Delete.
      -
      Note: The Data sources defined in RMF Performance - Monitoring dashboards are imported without credentials. After import, update - each data source with valid credentials if the DDS requires authentication - where required.
      +

      This removes the IBM RMF (PM) folder and all + dashboards within it. The data sources created during import are not + removed.

    Results

    -

    The dashboards exported from the RMF Performance Monitoring are successfully imported - into the RMF application.

    +

    The dashboard exported from RMF Performance Monitoring is successfully imported into + the IBM RMF for z/OS Grafana plugin and is available in the + IBM RMF (PM) folder.

    +
    Important: Data sources defined in RMF Performance + Monitoring dashboards are imported without credentials. After import, update each + data source with valid credentials if the corresponding DDS requires + authentication.
    diff --git a/docs/grafana/rmf-app/index.html b/docs/grafana/rmf-app/index.html index 02693402..c91225c0 100644 --- a/docs/grafana/rmf-app/index.html +++ b/docs/grafana/rmf-app/index.html @@ -8,9 +8,9 @@ - + - + @@ -92,7 +92,7 @@
    -
    Overview
    Grafana is a platform for monitoring and visualizing data. It enables users to create, explore, and share dashboards that are interactive and customizable. The IBM® RMF for z/OS Grafana plugin provides effortless analysis and visualization of Resource Measurement Facility for z/OS (RMF for z/OS) Monitor III metrics and reports within the Grafana platform. Thereby, you can monitor and analyze the health and performance of applications.
    Release notes
    This article covers the new features, system requirements, and known issues of the IBM® RMF for z/OS Grafana plugin.
    Installing the plugin
    You must install the IBM® RMF for z/OS Grafana plugin to analyze and visualize RMF Monitor III metrics and reports.
    Upgrading the plugin
    You must ensure that the IBM RMF for z/OS Grafana plugin is up to date to leverage its enhanced functionalities. You can do so by either installing or upgrading to the latest version of the plugin.
    Prometheus Sample Dashboards
    The RMF Distributed Data Server exposes Monitor III data to third-party tools using the OpenMetrics exposition format.
    Creating RMF data sources
    To access RMF Monitor III metrics in Grafana, you need to connect to the Distributed Data Server (DDS) by adding an RMF data source.
    Applying visualization to RMF data
    By adding panels to dashboards, you can effectively present your RMF data in a visual format. Each panel must require at least one query to display a significant visualization.
    IBM RMF query languages
    In Grafana, queries are essential for fetching and transforming data from RMF data sources.
    RMF Variable Query syntax
    Variables are a powerful tool to create more interactive and dynamic dashboards. They offer a way to replace hard-coded values in metric queries and panel titles with placeholders for values.
    Integrating DDS Dashboards with OMEGAMON
    To enhance visibility and provide deeper insights, the DDS dashboards can be integrated with IBM Z OMEGAMON Web UI dashboards.
    Importing dashboards
    This task describes how to import dashboards and the associated data sources created in RMF Performance Monitoring in the RMF application.
    Alerts
    Grafana Alerting feature provides a reliable solution to detect and respond to system issues in real time.
    Historical data
    In Grafana, you can view historical data using absolute and relative time ranges.
    Error types
    Whenever you encounter issues while using the IBM RMF for z/OS Grafana plugin, you can view detailed error messages that contain sufficient information to help you identify and troubleshoot the problem.
    Troubleshooting issues
    This section guides how to analyze and address typical issues that may arise when using the IBM® RMF for z/OS Grafana plugin.
    Grafana through z/OSMF
    When you use IBM® z/OS Management Facility to monitor the performance of the z/OS sysplexes in your environment, you can also access Grafana dashboards from z/OSMF.
    Prerequisites
    Before you can start working with Grafana dashboards through z/OSMF, there are some prerequisites that you need to complete.
    Defining the Grafana server
    You must define the Grafana server as a target system in z/OSMF to access Grafana from the Resource Monitoring page of z/OSMF.
    Accessing the Grafana dashboard
    You can access the Grafana dashboard from the Resource Monitoring page of z/OSMF to investigate the RMF Monitor III metrics and reports.
    PDF Guide
    You can find the link to view or download IBM RMF for z/OS Grafana plugin user guide as a PDF file.
    +
    Overview
    Grafana is a platform for monitoring and visualizing data. It enables users to create, explore, and share dashboards that are interactive and customizable. The IBM® RMF for z/OS Grafana plugin provides effortless analysis and visualization of Resource Measurement Facility for z/OS (RMF for z/OS) Monitor III metrics and reports within the Grafana platform. Thereby, you can monitor and analyze the health and performance of applications.
    Release notes
    This article covers the new features and enhancements in the IBM RMF for z/OS Grafana plugin.
    Prerequisites
    Before you install the RMF for z/OS Grafana plugin, ensure that the following software requirements are met.
    Installation
    You must install the RMF for z/OS Grafana plugin to analyze and visualize RMF Monitor III metrics and reports.
    Installing the plugin by using Grafana UI
    This is the easiest and recommended method to install the RMF for z/OS Grafana plugin. You can install the plugin directly from the Grafana plugin catalog by using the Grafana web interface without requiring command-line access.
    Installing the plugin by using Grafana CLI
    You can install the RMF for z/OS Grafana plugin by using the Grafana command-line interface. Use this method if you need to install a specific version or automate the installation.
    Installing the plugin by using Docker
    You can install the RMF for z/OS Grafana plugin along with Grafana within a Docker container. Use this method if you are running Grafana in a containerized environment.
    Installing the plugin v2.0.0 or earlier
    If you are installing a version of the RMF for z/OS Grafana plugin earlier than 2.0.1, you must configure Grafana to allow loading unsigned plugins.
    Upgrading the plugin
    You must ensure that the RMF for z/OS Grafana plugin is up to date to leverage its enhanced functionalities. You can do so by either installing or upgrading to the latest version of the RMF for z/OS Grafana plugin.
    Creating RMF data sources
    To access RMF Monitor III metrics in Grafana, you need to connect to the Distributed Data Server (DDS) by adding an RMF data source.
    Dashboards
    The IBM RMF for z/OS Grafana plugin provides pre-built sample dashboards that you can install, as well as the ability to import dashboards from other sources and integrate with IBM Z OMEGAMON dashboards.
    Installing sample dashboards
    After you install and enable the IBM RMF for z/OS Grafana plugin, you can install the DDS sample dashboards and Prometheus sample dashboards to visualize RMF metrics.
    Prometheus sample dashboards
    The RMF Distributed Data Server exposes Monitor III data to third-party tools using the OpenMetrics exposition format.
    Integrating DDS dashboards with OMEGAMON Web UI
    To enhance visibility and provide deeper insights, the DDS dashboards can be integrated with IBM Z OMEGAMON Web UI dashboards.
    Importing Performance Monitoring dashboards
    You can import dashboards exported from RMF Performance Monitoring (.po files) into the IBM RMF for z/OS Grafana plugin. The import process automatically creates the associated data sources and converts the dashboards to Grafana format.
    Applying visualization to RMF data
    By adding panels to dashboards, you can effectively present your RMF data in a visual format. Each panel must require at least one query to display a significant visualization.
    IBM RMF query languages
    In Grafana, queries are essential for fetching and transforming data from RMF data sources.
    RMF Variable Query syntax
    Variables are a powerful tool to create more interactive and dynamic dashboards. They offer a way to replace hard-coded values in metric queries and panel titles with placeholders for values.
    Alerts
    Grafana Alerting feature provides a reliable solution to detect and respond to system issues in real time.
    Historical data
    In Grafana, you can view historical data using absolute and relative time ranges.
    Error types
    Whenever you encounter issues while using the IBM RMF for z/OS Grafana plugin, you can view detailed error messages that contain sufficient information to help you identify and troubleshoot the problem.
    Troubleshooting issues
    This section guides how to analyze and address typical issues that may arise when using the IBM® RMF for z/OS Grafana plugin.
    Grafana through z/OSMF
    When you use IBM® z/OS Management Facility to monitor the performance of the z/OS sysplexes in your environment, you can also access Grafana dashboards from z/OSMF.
    Prerequisites
    Before you can start working with Grafana dashboards through z/OSMF, there are some prerequisites that you need to complete.
    Defining the Grafana server
    You must define the Grafana server as a target system in z/OSMF to access Grafana from the Resource Monitoring page of z/OSMF.
    Accessing the Grafana dashboard
    You can access the Grafana dashboard from the Resource Monitoring page of z/OSMF to investigate the RMF Monitor III metrics and reports.
    PDF Guide
    You can find the link to view or download IBM RMF for z/OS Grafana plugin user guide as a PDF file.
    diff --git a/docs/grafana/rmf-app/indexTerms.html b/docs/grafana/rmf-app/indexTerms.html index 43c161eb..be33a5ca 100644 --- a/docs/grafana/rmf-app/indexTerms.html +++ b/docs/grafana/rmf-app/indexTerms.html @@ -9,9 +9,9 @@ - + - + diff --git a/docs/grafana/rmf-app/install_grafana_plugin.html b/docs/grafana/rmf-app/install_grafana_plugin.html index abe35ba1..003f7237 100644 --- a/docs/grafana/rmf-app/install_grafana_plugin.html +++ b/docs/grafana/rmf-app/install_grafana_plugin.html @@ -1,13 +1,13 @@ - - Installing the RMF for z/OS plugin on Grafana + + Installing the RMF for z/OS Grafana plugin v2.0.1 or later - + - + @@ -77,7 +77,7 @@