Use package hostlist to expand a host list

This commit is contained in:
Holger Obermaier 2022-12-01 09:48:34 +01:00
parent 6f1f33f3a5
commit 31a8e63d72
4 changed files with 28 additions and 22 deletions

View File

@ -7,23 +7,23 @@
}, },
"redfish_recv": { "redfish_recv": {
"type": "redfish", "type": "redfish",
"endpoint": "https://%h-bmc",
"client_config": [ "client_config": [
{ {
"hostname": "my-host-1", "host_list": "my-host-1-[1-2]",
"username": "username-1", "username": "username-1",
"password": "password-1", "password": "password-1"
"endpoint": "https://my-endpoint-1"
}, },
{ {
"hostname": "my-host-2", "host_list": "my-host-2-[1,2]",
"username": "username-2", "username": "username-2",
"password": "password-2", "password": "password-2"
"endpoint": "https://my-endpoint-2"
} }
] ]
}, },
"ipmi_recv": { "ipmi_recv": {
"type": "ipmi", "type": "ipmi",
"endpoint": "ipmi-sensors://%h-ipmi",
"exclude_metrics": [ "exclude_metrics": [
"fan_speed", "fan_speed",
"voltage" "voltage"
@ -32,13 +32,11 @@
{ {
"username": "username-1", "username": "username-1",
"password": "password-1", "password": "password-1",
"endpoint": "ipmi-sensors://%h-ipmi",
"host_list": "my-host-1-[1-2]" "host_list": "my-host-1-[1-2]"
}, },
{ {
"username": "username-2", "username": "username-2",
"password": "password-2", "password": "password-2",
"endpoint": "ipmi-sensors://%h-ipmi",
"host_list": "my-host-2-[1,2]" "host_list": "my-host-2-[1,2]"
} }
] ]

View File

@ -12,7 +12,7 @@ The IPMI Receiver uses `ipmi-sensors` from the [FreeIPMI](https://www.gnu.org/so
"fanout": 256, "fanout": 256,
"username": "<Username>", "username": "<Username>",
"password": "<Password>", "password": "<Password>",
"endpoint": "ipmi-sensors://%h-p", "endpoint": "ipmi-sensors://%h-bmc",
"exclude_metrics": [ "fan_speed", "voltage" ], "exclude_metrics": [ "fan_speed", "voltage" ],
"client_config": [ "client_config": [
{ {

View File

@ -12,6 +12,7 @@ import (
cclog "github.com/ClusterCockpit/cc-metric-collector/pkg/ccLogger" cclog "github.com/ClusterCockpit/cc-metric-collector/pkg/ccLogger"
lp "github.com/ClusterCockpit/cc-metric-collector/pkg/ccMetric" lp "github.com/ClusterCockpit/cc-metric-collector/pkg/ccMetric"
"github.com/ClusterCockpit/cc-metric-collector/pkg/hostlist"
// See: https://pkg.go.dev/github.com/stmcginnis/gofish // See: https://pkg.go.dev/github.com/stmcginnis/gofish
"github.com/stmcginnis/gofish" "github.com/stmcginnis/gofish"
@ -630,7 +631,7 @@ func NewRedfishReceiver(name string, config json.RawMessage) (Receiver, error) {
ExcludeMetrics []string `json:"exclude_metrics,omitempty"` ExcludeMetrics []string `json:"exclude_metrics,omitempty"`
ClientConfigs []struct { ClientConfigs []struct {
HostList []string `json:"host_list"` // List of hosts with the same client configuration HostList string `json:"host_list"` // List of hosts with the same client configuration
Username *string `json:"username"` // User name to authenticate with Username *string `json:"username"` // User name to authenticate with
Password *string `json:"password"` // Password to use for authentication Password *string `json:"password"` // Password to use for authentication
Endpoint *string `json:"endpoint"` // URL of the redfish service Endpoint *string `json:"endpoint"` // URL of the redfish service
@ -763,7 +764,14 @@ func NewRedfishReceiver(name string, config json.RawMessage) (Receiver, error) {
isExcluded[key] = true isExcluded[key] = true
} }
for _, host := range clientConfigJSON.HostList { hostList, err := hostlist.Expand(clientConfigJSON.HostList)
if err != nil {
err := fmt.Errorf("client config number %d failed to parse host list %s: %v",
i, clientConfigJSON.HostList, err)
cclog.ComponentError(r.name, err)
return nil, err
}
for _, host := range hostList {
// Endpoint of the redfish service // Endpoint of the redfish service
endpoint := strings.Replace(endpoint_pattern, "%h", host, -1) endpoint := strings.Replace(endpoint_pattern, "%h", host, -1)

View File

@ -8,22 +8,22 @@ The Redfish receiver uses the [Redfish (specification)](https://www.dmtf.org/sta
{ {
"<redfish receiver name>": { "<redfish receiver name>": {
"type": "redfish", "type": "redfish",
"username": "<user A>", "username": "<Username>",
"password": "<password A>", "password": "<Password>",
"endpoint": "https://%h-bmc", "endpoint": "https://%h-bmc",
"exclude_metrics": [ "min_consumed_watts" ], "exclude_metrics": [ "min_consumed_watts" ],
"client_config": [ "client_config": [
{ {
"host_list": [ "<host 1>", "<host 2>" ] "host_list": "n[1,2-4]"
}, },
{ {
"host_list": [ "<host 3>", "<host 4>" ] "host_list": "n5"
"disable_power_metrics": true "disable_power_metrics": true
}, },
{ {
"host_list": [ "<host 5>" ], "host_list": "n6" ],
"username": "<user B>", "username": "<Username 2>",
"password": "<password B>", "password": "<Password 2>",
"endpoint": "https://%h-BMC", "endpoint": "https://%h-BMC",
"disable_thermal_metrics": true "disable_thermal_metrics": true
} }