Skip to content

Commit 58e6f29

Browse files
committed
hmc support
Signed-off-by: Peng Hui Jiang <[email protected]>
1 parent 62b5d9b commit 58e6f29

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+15304
-51
lines changed

Diff for: go.mod

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/sustainable-computing-io/kepler
22

3-
go 1.20
3+
go 1.21
44

55
require (
66
github.com/NVIDIA/go-nvml v0.12.0-1
@@ -14,12 +14,13 @@ require (
1414
github.com/klauspost/cpuid/v2 v2.2.6
1515
github.com/onsi/ginkgo/v2 v2.13.2
1616
github.com/onsi/gomega v1.30.0
17-
github.com/opencontainers/runc v1.1.10
17+
github.com/opencontainers/runc v1.1.12
1818
github.com/opencontainers/runtime-spec v1.1.0
1919
github.com/prometheus/client_golang v1.17.0
2020
github.com/prometheus/common v0.44.0
2121
github.com/prometheus/prometheus v0.48.1
2222
github.com/sirupsen/logrus v1.9.0
23+
github.com/zhmcclient/golang-zhmcclient v0.2.1-0.20231123024149-4d04b40c0e93
2324
golang.org/x/sys v0.14.0
2425
gopkg.in/yaml.v3 v3.0.1
2526
k8s.io/api v0.28.2
@@ -70,6 +71,9 @@ require (
7071
github.com/prometheus/client_model v0.5.0 // indirect
7172
github.com/prometheus/procfs v0.11.1 // indirect
7273
github.com/spf13/pflag v1.0.5 // indirect
74+
go.uber.org/multierr v1.11.0 // indirect
75+
go.uber.org/zap v1.26.0 // indirect
76+
github.com/stretchr/testify v1.8.4 // indirect
7377
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
7478
golang.org/x/net v0.17.0 // indirect
7579
golang.org/x/oauth2 v0.13.0 // indirect

Diff for: go.sum

+28-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9
55
github.com/aquasecurity/libbpfgo v0.4.9-libbpf-1.2.0 h1:pk9L7I6wF1nTfO42+jjXhA8ozRjvtj2ZvHV/i/YC0dE=
66
github.com/aquasecurity/libbpfgo v0.4.9-libbpf-1.2.0/go.mod h1:UD3Mfr+JZ/ASK2VMucI/zAdEhb35LtvYXvAUdrdqE9s=
77
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
8+
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
89
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
910
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
1011
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
@@ -29,6 +30,9 @@ github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD
2930
github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE=
3031
github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
3132
github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss=
33+
github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og=
34+
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
35+
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
3236
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
3337
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
3438
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
@@ -86,6 +90,7 @@ github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwA
8690
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
8791
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
8892
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
93+
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
8994
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
9095
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
9196
github.com/jszwec/csvutil v1.8.0 h1:G7vS2LGdpZZDH1HmHeNbxOaJ/ZnJlpwGFvOkTkJzzNk=
@@ -96,6 +101,7 @@ github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/4
96101
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
97102
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
98103
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
104+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
99105
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
100106
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
101107
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -118,18 +124,24 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY
118124
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
119125
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
120126
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
127+
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
128+
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
129+
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
130+
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
131+
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
121132
github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs=
122133
github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM=
123134
github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
124135
github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
125-
github.com/opencontainers/runc v1.1.10 h1:EaL5WeO9lv9wmS6SASjszOeQdSctvpbu0DdBQBizE40=
126-
github.com/opencontainers/runc v1.1.10/go.mod h1:+/R6+KmDlh+hOO8NkjmgkG9Qzvypzk0yXxAPYYR65+M=
136+
github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
137+
github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
127138
github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
128139
github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
129140
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
130141
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
131142
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
132143
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
144+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
133145
github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
134146
github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
135147
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
@@ -141,7 +153,9 @@ github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/
141153
github.com/prometheus/prometheus v0.48.1 h1:CTszphSNTXkuCG6O0IfpKdHcJkvvnAAE1GbELKS+NFk=
142154
github.com/prometheus/prometheus v0.48.1/go.mod h1:SRw624aMAxTfryAcP8rOjg4S/sHHaetx2lyJJ2nM83g=
143155
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
156+
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
144157
github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 h1:RpforrEYXWkmGwJHIGnLZ3tTWStkjVVstwzNGqxX2Ds=
158+
github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
145159
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
146160
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
147161
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -156,8 +170,17 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
156170
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
157171
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
158172
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
173+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
159174
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
160175
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
176+
github.com/zhmcclient/golang-zhmcclient v0.2.1-0.20231123024149-4d04b40c0e93 h1:6aELYRWbQ+mJR4Mx+KFmDJwLhv4D+VsUe7ntu5cb4Xw=
177+
github.com/zhmcclient/golang-zhmcclient v0.2.1-0.20231123024149-4d04b40c0e93/go.mod h1:adYy8E34m1Z0SW4YVtYVj6mSLZkFXLTk0HAap9ViE+Y=
178+
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
179+
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
180+
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
181+
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
182+
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
183+
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
161184
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
162185
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
163186
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -166,6 +189,7 @@ golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQz
166189
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
167190
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
168191
golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
192+
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
169193
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
170194
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
171195
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -218,6 +242,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
218242
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
219243
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
220244
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
245+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
246+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
221247
gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg=
222248
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
223249
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=

Diff for: pkg/sensors/platform/source/hmc.go

+115-12
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
/*
2-
Copyright 2022.
3-
2+
Copyright 2023.
43
Licensed under the Apache License, Version 2.0 (the "License");
54
you may not use this file except in compliance with the License.
65
You may obtain a copy of the License at
7-
86
http://www.apache.org/licenses/LICENSE-2.0
9-
107
Unless required by applicable law or agreed to in writing, software
118
distributed under the License is distributed on an "AS IS" BASIS,
129
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,21 +13,127 @@ limitations under the License.
1613

1714
package source
1815

16+
import (
17+
"os"
18+
"strconv"
19+
20+
"k8s.io/klog/v2"
21+
"github.com/sustainable-computing-io/kepler/pkg/sensors/components/source"
22+
"github.com/zhmcclient/golang-zhmcclient/pkg/zhmcclient"
23+
)
24+
25+
var hmcManager *zhmcclient.ZhmcManager
26+
1927
type PowerHMC struct{}
2028

21-
func (a *PowerHMC) GetName() string {
22-
return "hmc"
29+
func (r *PowerHMC) GetName() string {
30+
return "hmc"
31+
}
32+
33+
func (r *PowerHMC) GetHMCManager() *zhmcclient.ZhmcManager {
34+
if hmcManager == nil {
35+
endpoint := os.Getenv("HMC_ENDPOINT")
36+
username := os.Getenv("HMC_USERNAME")
37+
password := os.Getenv("HMC_PASSWORD")
38+
cacert := os.Getenv("CA_CERT")
39+
skipCert := os.Getenv("SKIP_CERT")
40+
isSkipCert, _ := strconv.ParseBool(skipCert)
41+
42+
creds := &zhmcclient.Options{Username: username, Password: password, CaCert: cacert, SkipCert: isSkipCert, Trace: false}
43+
client, err := zhmcclient.NewClient(endpoint, creds, nil)
44+
if err != nil {
45+
klog.V(1).Infof("Error getting client connection %v", err.Message)
46+
}
47+
if client != nil {
48+
zhmcAPI := zhmcclient.NewManagerFromClient(client)
49+
hmcManager, _ := zhmcAPI.(*zhmcclient.ZhmcManager)
50+
return hmcManager
51+
}
52+
}
53+
return hmcManager
54+
}
55+
56+
func (r *PowerHMC) GetEnergyFromLpar() (uint64, error) {
57+
hmcManager := r.GetHMCManager()
58+
lparURI := "api/logical-partitions/" + os.Getenv("LPAR_ID")
59+
props := &zhmcclient.EnergyRequestPayload{
60+
Range: "last-day",
61+
Resolution: "fifteen-minutes",
62+
}
63+
energy, _, err := hmcManager.GetEnergyDetailsforLPAR(lparURI, props)
64+
if err != nil {
65+
klog.V(1).Infof("Error getting energy data: %v", err.Message)
66+
}
67+
klog.V(1).Infof("Get energy data successfully")
68+
return energy, err
69+
}
70+
71+
func (r *PowerHMC) GetLiveEnergyFromLpar() (uint64, error) {
72+
hmcManager := r.GetHMCManager()
73+
lparURI := "/api/logical-partitions/" + os.Getenv("LPAR_ID")
74+
energy, _, err := hmcManager.GetLiveEnergyDetailsforLPAR(lparURI)
75+
if err != nil {
76+
klog.V(1).Infof("Error getting energy data: %v", err.Message)
77+
} else {
78+
klog.V(1).Infof("Get energy data successfully with power: %v", energy)
79+
}
80+
return energy, err
81+
}
82+
83+
func (r *PowerHMC) IsSystemCollectionSupported() bool {
84+
return true
85+
}
86+
87+
func (r *PowerHMC) StopPower() {
88+
}
89+
90+
func (r *PowerHMC) GetEnergyFromDram() (uint64, error) {
91+
return 0, nil
92+
}
93+
94+
func (r *PowerHMC) GetEnergyFromCore() (uint64, error) {
95+
return 0, nil
96+
}
97+
98+
func (r *PowerHMC) GetEnergyFromUncore() (uint64, error) {
99+
return 0, nil
100+
}
101+
102+
func (r *PowerHMC) GetEnergyFromPackage() (uint64, error) {
103+
return 0, nil
104+
}
105+
106+
func (r *PowerHMC) GetNodeComponentsEnergy() map[int]source.NodeComponentsEnergy {
107+
pkgEnergy, _ := r.GetLiveEnergyFromLpar()
108+
pkgEnergy = pkgEnergy * 3
109+
coreEnergy := uint64(0)
110+
dramEnergy := uint64(0)
111+
uncoreEnergy := uint64(0)
112+
componentsEnergies := make(map[int]source.NodeComponentsEnergy)
113+
componentsEnergies[0] = source.NodeComponentsEnergy{
114+
Core: coreEnergy,
115+
DRAM: dramEnergy,
116+
Uncore: uncoreEnergy,
117+
Pkg: pkgEnergy,
118+
}
119+
return componentsEnergies
23120
}
24121

25-
func (a *PowerHMC) StopPower() {
122+
func (r *PowerHMC) GetPlatformEnergy() map[string]float64 {
123+
pkgEnergy, _ := r.GetLiveEnergyFromLpar()
124+
platformEnergies := make(map[string]float64)
125+
platformEnergies["hmc"] = float64(pkgEnergy) * 3
126+
return platformEnergies
26127
}
27128

28-
func (a *PowerHMC) IsSystemCollectionSupported() bool {
29-
return false
129+
func (r *PowerHMC) IsPlatformCollectionSupported() bool {
130+
return true
30131
}
31132

32133
// GetEnergyFromHost returns the accumulated energy consumption
33-
func (a *PowerHMC) GetAbsEnergyFromPlatform() (map[string]float64, error) {
34-
power := map[string]float64{}
35-
return power, nil
134+
func (r *PowerHMC) GetAbsEnergyFromPlatform() (map[string]float64, error) {
135+
pkgEnergy, _ := r.GetLiveEnergyFromLpar()
136+
platformEnergies := make(map[string]float64)
137+
platformEnergies["hmc"] = float64(pkgEnergy) * 3
138+
return platformEnergies, nil
36139
}

Diff for: vendor/github.com/opencontainers/runc/libcontainer/cgroups/file.go

+16-15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)