Merged development into tracefiles

This commit is contained in:
Mark Nellemann 2021-06-11 02:13:27 +02:00
commit cc74b2e662
15 changed files with 1087 additions and 827 deletions

View file

@ -7,5 +7,5 @@ trim_trailing_whitespace = true
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
[*.yml] [*.{yml,json}]
indent_size = 2 indent_size = 2

View file

@ -53,7 +53,7 @@ Install InfluxDB on an *LPAR* or other server, which is network accessible by th
### Grafana Configuration ### Grafana Configuration
- Configure Grafana to use InfluxDB as a new datasource - Configure Grafana to use InfluxDB as a new datasource
- set *Min time interval* to *30s* or *1m* depending on your HMCi *refresh* setting. - **NOTE:** set *Min time interval* to *30s* or *1m* depending on your HMCi *refresh* setting.
- Import example dashboards from the *doc/* folder into Grafana as a starting point and get creative making your own cool dashboards :) - Import example dashboards from the *doc/* folder into Grafana as a starting point and get creative making your own cool dashboards :)
## Notes ## Notes
@ -87,10 +87,9 @@ ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 90d
Below are screenshots of the provided Grafana dashboards (found in the **doc/** folder), which can be used as a starting point. Below are screenshots of the provided Grafana dashboards (found in the **doc/** folder), which can be used as a starting point.
- [hmci-resources.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-resources.png) - [hmci-systems.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-systems-dashboard.png)
- [hmci-energy.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-energy.png) - [hmci-vois.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-vios-dashboard.png)
- [hmci-vois.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-vios.png) - [hmci-lpars](https://bitbucket.org/mnellemann/hmci/downloads/hmci-lpars-dashboard.png)
- [hmci-lpars](https://bitbucket.org/mnellemann/hmci/downloads/hmci-lpars.png)
## Known problems ## Known problems

View file

@ -6,13 +6,14 @@ plugins {
// Code coverage of tests // Code coverage of tests
id 'jacoco' id 'jacoco'
id "com.github.johnrengelman.shadow" version "6.1.0" id "com.github.johnrengelman.shadow" version "7.0.0"
id "net.nemerosa.versioning" version "2.14.0" id "net.nemerosa.versioning" version "2.14.0"
id "nebula.ospackage" version "8.4.1" id "nebula.ospackage" version "8.5.6"
} }
repositories { repositories {
jcenter() mavenCentral()
mavenLocal()
} }
dependencies { dependencies {
@ -27,13 +28,13 @@ dependencies {
implementation 'org.slf4j:slf4j-api:1.7.30' implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'org.slf4j:slf4j-simple:1.7.30' implementation 'org.slf4j:slf4j-simple:1.7.30'
testImplementation 'org.spockframework:spock-core:2.0-M4-groovy-3.0' testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0'
testImplementation 'com.squareup.okhttp3:mockwebserver:4.9.1' testImplementation 'com.squareup.okhttp3:mockwebserver:4.9.1'
testImplementation "org.slf4j:slf4j-simple:1.7.30" testImplementation "org.slf4j:slf4j-simple:1.7.30"
} }
application { application {
mainClassName = 'biz.nellemann.hmci.Application' mainClass.set('biz.nellemann.hmci.Application')
} }
test { test {

View file

@ -1,16 +1,8 @@
{ {
"__inputs": [ "__inputs": [
{ {
"name": "DS_HMCI", "name": "DS_INFLUXDB-HMCI",
"label": "HMCi", "label": "InfluxDB-hmci",
"description": "",
"type": "datasource",
"pluginId": "influxdb",
"pluginName": "InfluxDB"
},
{
"name": "DS_INFLUXDB",
"label": "InfluxDB",
"description": "", "description": "",
"type": "datasource", "type": "datasource",
"pluginId": "influxdb", "pluginId": "influxdb",
@ -22,12 +14,12 @@
"type": "grafana", "type": "grafana",
"id": "grafana", "id": "grafana",
"name": "Grafana", "name": "Grafana",
"version": "7.4.2" "version": "8.0.0"
}, },
{ {
"type": "panel", "type": "panel",
"id": "graph", "id": "graph",
"name": "Graph", "name": "Graph (old)",
"version": "" "version": ""
}, },
{ {
@ -61,7 +53,7 @@
"gnetId": null, "gnetId": null,
"graphTooltip": 0, "graphTooltip": 0,
"id": null, "id": null,
"iteration": 1617197417499, "iteration": 1623356314349,
"links": [], "links": [],
"panels": [ "panels": [
{ {
@ -69,11 +61,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"links": [], "links": [],
"unit": "watt" "unit": "watt"
}, },
@ -105,7 +96,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"pointradius": 2, "pointradius": 2,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -208,10 +199,9 @@
} }
}, },
{ {
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"mappings": [], "mappings": [],
"thresholds": { "thresholds": {
"mode": "absolute", "mode": "absolute",
@ -256,7 +246,7 @@
"text": {}, "text": {},
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"targets": [ "targets": [
{ {
"alias": "$tag_servername", "alias": "$tag_servername",
@ -315,7 +305,7 @@
}, },
{ {
"collapsed": false, "collapsed": false,
"datasource": "${DS_INFLUXDB}", "datasource": "${DS_INFLUXDB-HMCI}",
"gridPos": { "gridPos": {
"h": 1, "h": 1,
"w": 24, "w": 24,
@ -329,14 +319,13 @@
"type": "row" "type": "row"
}, },
{ {
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "Inlet air temperature.", "description": "Inlet air temperature.",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"color": { "color": {
"mode": "thresholds" "mode": "thresholds"
}, },
"custom": {},
"links": [], "links": [],
"mappings": [], "mappings": [],
"thresholds": { "thresholds": {
@ -382,7 +371,7 @@
"text": {}, "text": {},
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"targets": [ "targets": [
{ {
"alias": "$tag_servername - $tag_name", "alias": "$tag_servername - $tag_name",
@ -444,16 +433,11 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"links": [], "links": [],
"thresholds": {
"mode": "absolute",
"steps": []
},
"unit": "celsius" "unit": "celsius"
}, },
"overrides": [] "overrides": []
@ -486,7 +470,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"pointradius": 2, "pointradius": 2,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -653,7 +637,7 @@
} }
], ],
"refresh": "1m", "refresh": "1m",
"schemaVersion": 27, "schemaVersion": 30,
"style": "dark", "style": "dark",
"tags": [ "tags": [
"POWER" "POWER"
@ -663,7 +647,7 @@
{ {
"allValue": null, "allValue": null,
"current": {}, "current": {},
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", "definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h",
"description": null, "description": null,
"error": null, "error": null,
@ -679,7 +663,6 @@
"skipUrlSync": false, "skipUrlSync": false,
"sort": 0, "sort": 0,
"tagValuesQuery": "", "tagValuesQuery": "",
"tags": [],
"tagsQuery": "", "tagsQuery": "",
"type": "query", "type": "query",
"useTags": false "useTags": false
@ -706,5 +689,5 @@
"timezone": "", "timezone": "",
"title": "IBM Power - HMCi - System Energy", "title": "IBM Power - HMCi - System Energy",
"uid": "oHcrgD1Mk", "uid": "oHcrgD1Mk",
"version": 20 "version": 2
} }

View file

@ -1,8 +1,8 @@
{ {
"__inputs": [ "__inputs": [
{ {
"name": "DS_HMCI", "name": "DS_INFLUXDB-HMCI",
"label": "HMCi", "label": "InfluxDB-hmci",
"description": "", "description": "",
"type": "datasource", "type": "datasource",
"pluginId": "influxdb", "pluginId": "influxdb",
@ -20,12 +20,12 @@
"type": "grafana", "type": "grafana",
"id": "grafana", "id": "grafana",
"name": "Grafana", "name": "Grafana",
"version": "7.4.2" "version": "8.0.0"
}, },
{ {
"type": "panel", "type": "panel",
"id": "graph", "id": "graph",
"name": "Graph", "name": "Graph (old)",
"version": "" "version": ""
}, },
{ {
@ -60,11 +60,11 @@
"gnetId": 1465, "gnetId": 1465,
"graphTooltip": 0, "graphTooltip": 0,
"id": null, "id": null,
"iteration": 1617197467456, "iteration": 1623369402365,
"links": [], "links": [],
"panels": [ "panels": [
{ {
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -92,7 +92,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "lparname" "options": "Name"
}, },
"properties": [ "properties": [
{ {
@ -104,18 +104,34 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "affinityScore" "options": "Affinity Score"
}, },
"properties": [ "properties": [
{ {
"id": "color", "id": "color",
"value": { "value": {
"mode": "thresholds" "mode": "continuous-RdYlGr"
} }
}, },
{ {
"id": "unit", "id": "unit",
"value": "percent" "value": "percent"
},
{
"id": "custom.displayMode",
"value": "basic"
}
]
},
{
"matcher": {
"id": "byName",
"options": "ID"
},
"properties": [
{
"id": "custom.width",
"value": 330
} }
] ]
} }
@ -132,7 +148,7 @@
"showHeader": true, "showHeader": true,
"sortBy": [] "sortBy": []
}, },
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"targets": [ "targets": [
{ {
"alias": "Read", "alias": "Read",
@ -199,17 +215,51 @@
], ],
"timeFrom": null, "timeFrom": null,
"timeShift": null, "timeShift": null,
"title": "", "transformations": [
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true
},
"indexByName": {
"Time": 0,
"affinityScore": 4,
"id": 1,
"viosname": 2,
"viosstate": 3
},
"renameByName": {
"affinityScore": "Affinity Score",
"id": "ID",
"viosname": "Name",
"viosstate": "State"
}
}
},
{
"id": "sortBy",
"options": {
"fields": {},
"sort": [
{
"field": "Name"
}
]
}
}
],
"type": "table" "type": "table"
}, },
{ {
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"links": [], "links": [],
"mappings": [], "mappings": [],
"max": 100,
"min": 0,
"thresholds": { "thresholds": {
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
@ -238,7 +288,7 @@
"options": { "options": {
"reduceOptions": { "reduceOptions": {
"calcs": [ "calcs": [
"mean" "lastNotNull"
], ],
"fields": "", "fields": "",
"values": false "values": false
@ -247,7 +297,7 @@
"showThresholdMarkers": true, "showThresholdMarkers": true,
"text": {} "text": {}
}, },
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"targets": [ "targets": [
{ {
"alias": "$tag_viosname", "alias": "$tag_viosname",
@ -288,7 +338,7 @@
}, },
{ {
"params": [], "params": [],
"type": "mean" "type": "last"
} }
] ]
], ],
@ -318,19 +368,18 @@
"content": "", "content": "",
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"editable": true, "editable": true,
"error": false, "error": false,
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"links": [] "links": []
}, },
"overrides": [] "overrides": []
}, },
"fill": 2, "fill": 1,
"fillGradient": 2, "fillGradient": 0,
"grid": {}, "grid": {},
"gridPos": { "gridPos": {
"h": 9, "h": 9,
@ -352,7 +401,7 @@
"values": false "values": false
}, },
"lines": true, "lines": true,
"linewidth": 2, "linewidth": 1,
"links": [], "links": [],
"mode": "", "mode": "",
"nullPointMode": "connected", "nullPointMode": "connected",
@ -360,7 +409,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -371,7 +420,7 @@
"style": {}, "style": {},
"targets": [ "targets": [
{ {
"alias": "$tag_viosname", "alias": "$tag_viosname - $col",
"dsType": "influxdb", "dsType": "influxdb",
"groupBy": [ "groupBy": [
{ {
@ -410,6 +459,12 @@
{ {
"params": [], "params": [],
"type": "mean" "type": "mean"
},
{
"params": [
"utilized"
],
"type": "alias"
} }
] ]
], ],
@ -478,13 +533,12 @@
"content": "", "content": "",
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"editable": true, "editable": true,
"error": false, "error": false,
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"links": [] "links": []
}, },
"overrides": [] "overrides": []
@ -493,23 +547,23 @@
"fillGradient": 1, "fillGradient": 1,
"grid": {}, "grid": {},
"gridPos": { "gridPos": {
"h": 9, "h": 18,
"w": 24, "w": 12,
"x": 0, "x": 0,
"y": 14 "y": 14
}, },
"hiddenSeries": false, "hiddenSeries": false,
"id": 18, "id": 18,
"legend": { "legend": {
"alignAsTable": true, "alignAsTable": false,
"avg": true, "avg": false,
"current": false, "current": false,
"max": true, "max": false,
"min": false, "min": false,
"rightSide": false, "rightSide": false,
"show": false, "show": true,
"total": false, "total": false,
"values": true "values": false
}, },
"lines": true, "lines": true,
"linewidth": 1, "linewidth": 1,
@ -520,7 +574,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -725,13 +779,12 @@
"content": "", "content": "",
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"description": "", "description": "",
"editable": true, "editable": true,
"error": false, "error": false,
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"custom": {},
"links": [] "links": []
}, },
"overrides": [] "overrides": []
@ -740,23 +793,23 @@
"fillGradient": 1, "fillGradient": 1,
"grid": {}, "grid": {},
"gridPos": { "gridPos": {
"h": 9, "h": 18,
"w": 24, "w": 12,
"x": 0, "x": 12,
"y": 23 "y": 14
}, },
"hiddenSeries": false, "hiddenSeries": false,
"id": 17, "id": 17,
"legend": { "legend": {
"alignAsTable": true, "alignAsTable": false,
"avg": true, "avg": false,
"current": false, "current": false,
"max": true, "max": false,
"min": true, "min": false,
"rightSide": false, "rightSide": false,
"show": false, "show": true,
"total": false, "total": false,
"values": true "values": false
}, },
"lines": true, "lines": true,
"linewidth": 1, "linewidth": 1,
@ -767,7 +820,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "7.4.2", "pluginVersion": "8.0.0",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -995,7 +1048,7 @@
} }
], ],
"refresh": "1m", "refresh": "1m",
"schemaVersion": 27, "schemaVersion": 30,
"style": "dark", "style": "dark",
"tags": [ "tags": [
"Power", "Power",
@ -1008,7 +1061,7 @@
"allFormat": "regex values", "allFormat": "regex values",
"allValue": null, "allValue": null,
"current": {}, "current": {},
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", "definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h",
"description": null, "description": null,
"error": null, "error": null,
@ -1026,7 +1079,6 @@
"skipUrlSync": false, "skipUrlSync": false,
"sort": 0, "sort": 0,
"tagValuesQuery": null, "tagValuesQuery": null,
"tags": [],
"tagsQuery": null, "tagsQuery": null,
"type": "query", "type": "query",
"useTags": false "useTags": false
@ -1035,7 +1087,7 @@
"allFormat": "regex values", "allFormat": "regex values",
"allValue": null, "allValue": null,
"current": {}, "current": {},
"datasource": "${DS_HMCI}", "datasource": "${DS_INFLUXDB-HMCI}",
"definition": "SHOW TAG VALUES FROM \"vios_details\" WITH KEY = \"viosname\" WHERE servername =~ /$ServerName/ AND time > now() - 24h", "definition": "SHOW TAG VALUES FROM \"vios_details\" WITH KEY = \"viosname\" WHERE servername =~ /$ServerName/ AND time > now() - 24h",
"description": null, "description": null,
"error": null, "error": null,
@ -1053,7 +1105,6 @@
"skipUrlSync": false, "skipUrlSync": false,
"sort": 0, "sort": 0,
"tagValuesQuery": null, "tagValuesQuery": null,
"tags": [],
"tagsQuery": null, "tagsQuery": null,
"type": "query", "type": "query",
"useTags": false "useTags": false
@ -1092,5 +1143,5 @@
"timezone": "browser", "timezone": "browser",
"title": "IBM Power - HMCi - Virtual I/O Servers", "title": "IBM Power - HMCi - Virtual I/O Servers",
"uid": "DDNEv5vGz", "uid": "DDNEv5vGz",
"version": 18 "version": 4
} }

View file

@ -5,10 +5,15 @@
To install as a systemd service, copy the **hmci.service** To install as a systemd service, copy the **hmci.service**
file into */etc/systemd/system/* and enable the service: file into */etc/systemd/system/* and enable the service:
```shell
cp /opt/hmci/doc/hmci.service /etc/systemd/system/
systemctl daemon-reload systemctl daemon-reload
systemctl enable hmci.service systemctl enable hmci.service
systemctl restart hmci.service systemctl restart hmci.service
```
To read log output from the service, use: To read log output from the service:
```shell
journalctl -f -u hmci.service journalctl -f -u hmci.service
```

Binary file not shown.

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

21
gradlew.bat vendored
View file

@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init if "%ERRORLEVEL%" == "0" goto execute
echo. echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -54,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init if exist "%JAVA_EXE%" goto execute
echo. echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@ -64,21 +64,6 @@ echo location of your Java installation.
goto fail goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute :execute
@rem Setup the command line @rem Setup the command line
@ -86,7 +71,7 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle @rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell

View file

@ -249,7 +249,7 @@ public class HmcRestClient {
// Do not try to parse empty response // Do not try to parse empty response
if(responseBody == null || responseBody.isEmpty() || responseBody.length() <= 1) { if(responseBody == null || responseBody.isEmpty() || responseBody.length() <= 1) {
responseErrors++; responseErrors++;
log.warn("getPcmDataForManagedSystem() - empty response"); log.warn("getPcmDataForManagedSystem() - empty response, skipping: " + system.name);
return null; return null;
} }
@ -287,7 +287,7 @@ public class HmcRestClient {
// Do not try to parse empty response // Do not try to parse empty response
if(responseBody == null || responseBody.isEmpty() || responseBody.length() <= 1) { if(responseBody == null || responseBody.isEmpty() || responseBody.length() <= 1) {
responseErrors++; responseErrors++;
log.warn("getPcmDataForLogicalPartition() - empty response"); log.warn("getPcmDataForLogicalPartition() - empty response, skipping: " + partition.name);
return null; return null;
} }

View file

@ -122,13 +122,13 @@ class InfluxClient {
void writeManagedSystem(ManagedSystem system) { void writeManagedSystem(ManagedSystem system) {
if(system.metrics == null) { if(system.metrics == null) {
log.trace("writeManagedSystem() - null metrics, skipping"); log.trace("writeManagedSystem() - null metrics, skipping: " + system.name);
return; return;
} }
Instant timestamp = system.getTimestamp(); Instant timestamp = system.getTimestamp();
if(timestamp == null) { if(timestamp == null) {
log.warn("writeManagedSystem() - no timestamp, skipping"); log.warn("writeManagedSystem() - no timestamp, skipping: " + system.name);
return; return;
} }
@ -253,13 +253,13 @@ class InfluxClient {
void writeLogicalPartition(LogicalPartition partition) { void writeLogicalPartition(LogicalPartition partition) {
if(partition.metrics == null) { if(partition.metrics == null) {
log.warn("writeLogicalPartition() - null metrics, skipping"); log.warn("writeLogicalPartition() - null metrics, skipping: " + partition.name);
return; return;
} }
Instant timestamp = partition.getTimestamp(); Instant timestamp = partition.getTimestamp();
if(timestamp == null) { if(timestamp == null) {
log.warn("writeLogicalPartition() - no timestamp, skipping"); log.warn("writeLogicalPartition() - no timestamp, skipping: " + partition.name);
return; return;
} }
@ -311,21 +311,21 @@ class InfluxClient {
*/ */
void writeSystemEnergy(SystemEnergy system) { void writeSystemEnergy(SystemEnergy systemEnergy) {
if(system.metrics == null) { if(systemEnergy.metrics == null) {
log.trace("writeSystemEnergy() - null metrics, skipping"); log.trace("writeSystemEnergy() - null metrics, skipping: " + systemEnergy.system.name);
return; return;
} }
Instant timestamp = system.getTimestamp(); Instant timestamp = systemEnergy.getTimestamp();
if(timestamp == null) { if(timestamp == null) {
log.warn("writeSystemEnergy() - no timestamp, skipping"); log.warn("writeSystemEnergy() - no timestamp, skipping: " + systemEnergy.system.name);
return; return;
} }
getSystemEnergyPower(system, timestamp).forEach(it -> batchPoints.point(it) ); getSystemEnergyPower(systemEnergy, timestamp).forEach(it -> batchPoints.point(it) );
getSystemEnergyTemperature(system, timestamp).forEach(it -> batchPoints.point(it) ); getSystemEnergyTemperature(systemEnergy, timestamp).forEach(it -> batchPoints.point(it) );
} }
private static List<Point> getSystemEnergyPower(SystemEnergy system, Instant timestamp) { private static List<Point> getSystemEnergyPower(SystemEnergy system, Instant timestamp) {

View file

@ -122,4 +122,21 @@ class LogicalPartitionTest extends Specification {
} }
void "test getVirtualGenericAdapterMetrics"() {
setup:
def testFile = new File(getClass().getResource('/pcm-data-logical-partition.json').toURI())
def testJson = testFile.getText('UTF-8')
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166", "Test Name","Test Type", "Test Model", "Test S/N")
LogicalPartition lpar = new LogicalPartition("2DE05DB6-8AD5-448F-8327-0F488D287E82", "9Flash01", "OS400", system)
when:
lpar.processMetrics(testJson)
List<Measurement> listOfMeasurements = lpar.getVirtualGenericAdapterMetrics()
then:
listOfMeasurements.size() == 1
listOfMeasurements.first().fields['readBytes'] == 0.0
}
} }