fix(inputs.opcua): Make sure to always create a request (#15178)
This commit is contained in:
parent
2de80263d5
commit
a3ec8e86f3
|
|
@ -30,8 +30,8 @@ type ReadClient struct {
|
||||||
Workarounds ReadClientWorkarounds
|
Workarounds ReadClientWorkarounds
|
||||||
|
|
||||||
// internal values
|
// internal values
|
||||||
req *ua.ReadRequest
|
reqIDs []*ua.ReadValueID
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rc *ReadClientConfig) CreateReadClient(log telegraf.Logger) (*ReadClient, error) {
|
func (rc *ReadClientConfig) CreateReadClient(log telegraf.Logger) (*ReadClient, error) {
|
||||||
|
|
@ -65,10 +65,10 @@ func (o *ReadClient) Connect() error {
|
||||||
return fmt.Errorf("initializing node IDs failed: %w", err)
|
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 {
|
if o.Workarounds.UseUnregisteredReads {
|
||||||
for _, nid := range o.NodeIDs {
|
for _, nid := range o.NodeIDs {
|
||||||
readValueIDs = append(readValueIDs, &ua.ReadValueID{NodeID: nid})
|
o.reqIDs = append(o.reqIDs, &ua.ReadValueID{NodeID: nid})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
regResp, err := o.Client.RegisterNodes(o.ctx, &ua.RegisterNodesRequest{
|
regResp, err := o.Client.RegisterNodes(o.ctx, &ua.RegisterNodesRequest{
|
||||||
|
|
@ -79,16 +79,10 @@ func (o *ReadClient) Connect() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range regResp.RegisteredNodeIDs {
|
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 {
|
if err := o.read(); err != nil {
|
||||||
return fmt.Errorf("get data failed: %w", err)
|
return fmt.Errorf("get data failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
@ -136,7 +130,13 @@ func (o *ReadClient) CurrentValues() ([]telegraf.Metric, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *ReadClient) read() 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 {
|
if err != nil {
|
||||||
o.ReadError.Incr(1)
|
o.ReadError.Incr(1)
|
||||||
return fmt.Errorf("RegisterNodes Read failed: %w", err)
|
return fmt.Errorf("RegisterNodes Read failed: %w", err)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue