Compare commits
2 Commits
eaf2cf211d
...
44bf293eab
Author | SHA1 | Date | |
---|---|---|---|
44bf293eab | |||
f87b35b306 |
@ -7,6 +7,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
@ -120,26 +121,40 @@ func (aw *AmbientWeather) handleProviderRequest(
|
|||||||
// Uses a weather update to allow awn to publish to wunderground and
|
// Uses a weather update to allow awn to publish to wunderground and
|
||||||
// visa versa.
|
// visa versa.
|
||||||
if station := update.StationConfig; station != nil {
|
if station := update.StationConfig; station != nil {
|
||||||
|
// Perform proxy updates in parallel if enabled
|
||||||
|
var proxyWg sync.WaitGroup
|
||||||
|
|
||||||
if station.ProxyToAWN {
|
if station.ProxyToAWN {
|
||||||
err := aw.awnProvider.ProxyReq(ctx, update)
|
proxyWg.Add(1)
|
||||||
if err != nil {
|
go func() {
|
||||||
zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather")
|
defer proxyWg.Done()
|
||||||
return
|
err := aw.awnProvider.ProxyReq(ctx, update)
|
||||||
}
|
if err != nil {
|
||||||
zerolog.Ctx(aw.appCtx).Debug().
|
zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather")
|
||||||
Str("station", station.Name).
|
return
|
||||||
Msg("proxied weather update to awn")
|
}
|
||||||
|
zerolog.Ctx(aw.appCtx).Debug().
|
||||||
|
Str("station", station.Name).
|
||||||
|
Msg("proxied weather update to awn")
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
if station.ProxyToWunderground {
|
if station.ProxyToWunderground {
|
||||||
err := aw.wuProvider.ProxyReq(ctx, update)
|
proxyWg.Add(1)
|
||||||
if err != nil {
|
go func() {
|
||||||
zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather")
|
defer proxyWg.Done()
|
||||||
return
|
err := aw.wuProvider.ProxyReq(ctx, update)
|
||||||
}
|
if err != nil {
|
||||||
zerolog.Ctx(aw.appCtx).Debug().
|
zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather")
|
||||||
Str("station", station.Name).
|
return
|
||||||
Msg("proxied weather update to wunderground")
|
}
|
||||||
|
zerolog.Ctx(aw.appCtx).Debug().
|
||||||
|
Str("station", station.Name).
|
||||||
|
Msg("proxied weather update to wunderground")
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proxyWg.Wait()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"go.opentelemetry.io/otel/codes"
|
"go.opentelemetry.io/otel/codes"
|
||||||
|
|
||||||
@ -43,12 +44,18 @@ func (awn *AWNProvider) ProxyReq(ctx context.Context, update *weather.WeatherUpd
|
|||||||
Get(awnURL)
|
Get(awnURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
span.RecordError(err)
|
span.RecordError(err)
|
||||||
|
span.SetAttributes(
|
||||||
|
attribute.String("query", resp.Request.QueryParam.Encode()),
|
||||||
|
attribute.String("body", string(resp.Body())),
|
||||||
|
)
|
||||||
span.SetStatus(codes.Error, err.Error())
|
span.SetStatus(codes.Error, err.Error())
|
||||||
|
log.Err(err).Any("query", resp.Request.PathParams).
|
||||||
|
Int("statusCode", resp.StatusCode()).
|
||||||
|
Msg("awn proxy failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
span.SetAttributes(
|
span.SetAttributes(
|
||||||
attribute.Int("statusCode", resp.StatusCode()),
|
attribute.Int("statusCode", resp.StatusCode()),
|
||||||
attribute.String("body", string(resp.Body())),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"go.opentelemetry.io/otel/codes"
|
"go.opentelemetry.io/otel/codes"
|
||||||
"k8s.io/utils/ptr"
|
"k8s.io/utils/ptr"
|
||||||
@ -40,13 +41,17 @@ func (wu *WUProvider) ProxyReq(ctx context.Context, update *weather.WeatherUpdat
|
|||||||
span.SetStatus(codes.Error, err.Error())
|
span.SetStatus(codes.Error, err.Error())
|
||||||
span.SetAttributes(
|
span.SetAttributes(
|
||||||
attribute.String("query", resp.Request.QueryParam.Encode()),
|
attribute.String("query", resp.Request.QueryParam.Encode()),
|
||||||
|
attribute.String("body", string(resp.Body())),
|
||||||
)
|
)
|
||||||
span.RecordError(err)
|
span.RecordError(err)
|
||||||
|
log.Err(err).
|
||||||
|
Int("statusCode", resp.StatusCode()).
|
||||||
|
Any("query", resp.Request.PathParams).
|
||||||
|
Msg("wunderground proxy failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
span.SetAttributes(
|
span.SetAttributes(
|
||||||
attribute.Int("statusCode", resp.StatusCode()),
|
attribute.Int("statusCode", resp.StatusCode()),
|
||||||
attribute.String("body", string(resp.Body())),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user