fix(inputs.opcua): Make sure to always create a request (#15178)

This commit is contained in:
Sven Rebhan 2024-04-22 09:25:32 -04:00 committed by GitHub
parent 2de80263d5
commit a3ec8e86f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 12 deletions

View File

@ -30,7 +30,7 @@ type ReadClient struct {
Workarounds ReadClientWorkarounds
// internal values
req *ua.ReadRequest
reqIDs []*ua.ReadValueID
ctx context.Context
}
@ -65,10 +65,10 @@ func (o *ReadClient) Connect() error {
return fmt.Errorf("initializing node IDs failed: %w", err)
}
readValueIDs := make([]*ua.ReadValueID, 0, len(o.NodeIDs))
o.reqIDs = make([]*ua.ReadValueID, 0, len(o.NodeIDs))
if o.Workarounds.UseUnregisteredReads {
for _, nid := range o.NodeIDs {
readValueIDs = append(readValueIDs, &ua.ReadValueID{NodeID: nid})
o.reqIDs = append(o.reqIDs, &ua.ReadValueID{NodeID: nid})
}
} else {
regResp, err := o.Client.RegisterNodes(o.ctx, &ua.RegisterNodesRequest{
@ -79,16 +79,10 @@ func (o *ReadClient) Connect() error {
}
for _, v := range regResp.RegisteredNodeIDs {
readValueIDs = append(readValueIDs, &ua.ReadValueID{NodeID: v})
o.reqIDs = append(o.reqIDs, &ua.ReadValueID{NodeID: v})
}
}
o.req = &ua.ReadRequest{
MaxAge: 2000,
TimestampsToReturn: ua.TimestampsToReturnBoth,
NodesToRead: readValueIDs,
}
if err := o.read(); err != nil {
return fmt.Errorf("get data failed: %w", err)
}
@ -136,7 +130,13 @@ func (o *ReadClient) CurrentValues() ([]telegraf.Metric, error) {
}
func (o *ReadClient) read() error {
resp, err := o.Client.Read(o.ctx, o.req)
req := &ua.ReadRequest{
MaxAge: 2000,
TimestampsToReturn: ua.TimestampsToReturnBoth,
NodesToRead: o.reqIDs,
}
resp, err := o.Client.Read(o.ctx, req)
if err != nil {
o.ReadError.Incr(1)
return fmt.Errorf("RegisterNodes Read failed: %w", err)