Skip to content

Commit

Permalink
address comments Again
Browse files Browse the repository at this point in the history
  • Loading branch information
randmonkey committed Feb 14, 2023
1 parent f8bc28f commit 2356d5a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
20 changes: 12 additions & 8 deletions internal/dataplane/kong_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,30 +413,32 @@ func (c *KongClient) Update(ctx context.Context) error {
formatVersion = "3.0"
}

configStatus := new(ConfigStatus)
*configStatus = ConfigStatusOK
defer func(status *ConfigStatus) {
c.configStatusNotifier.NotifyConfigStatus(*status)
}(configStatus)

// parse the Kubernetes objects from the storer into Kong configuration
kongstate, translationFailures := p.Build()
if failuresCount := len(translationFailures); failuresCount > 0 {
c.prometheusMetrics.RecordTranslationFailure()
c.recordResourceFailureEvents(translationFailures, KongConfigurationTranslationFailedEventReason)
c.logger.Debugf("%d translation failures have occurred when building data-plane configuration", failuresCount)
*configStatus = ConfigStatusTranslationErrorHappened
} else {
c.prometheusMetrics.RecordTranslationSuccess()
c.logger.Debug("successfully built data-plane configuration")
}

shas, err := c.sendOutToClients(ctx, kongstate, formatVersion, c.kongConfig)
if err != nil {
*configStatus = ConfigStatusApplyFailed
c.configStatusNotifier.NotifyConfigStatus(ConfigStatusApplyFailed)
return err
}

// succeeded to apply configuration to Kong gateway.
// notify the receiver of config status that translation error happened when there are translation errors,
// otherwise notify that config status is OK.
if len(translationFailures) > 0 {
c.configStatusNotifier.NotifyConfigStatus(ConfigStatusTranslationErrorHappened)
} else {
c.configStatusNotifier.NotifyConfigStatus(ConfigStatusOK)
}

// report on configured Kubernetes objects if enabled
if c.AreKubernetesObjectReportsEnabled() {
// if the configuration SHAs that have just been pushed are different than
Expand Down Expand Up @@ -535,6 +537,8 @@ func handleSendToClientResult(client sendconfig.KonnectAwareClient, logger logru
return newSHA, nil
}

// SetConfigStatusNotifier sets a notifier notifies configurations to subscribers
// Currently it is used for uploading the node status to konnect runtime group.
func (c *KongClient) SetConfigStatusNotifier(n ConfigStatusNotifier) {
c.lock.Lock()
defer c.lock.Unlock()
Expand Down
14 changes: 9 additions & 5 deletions internal/konnect/node_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package konnect
import (
"context"
"fmt"
"sync/atomic"
"time"

"github.com/go-logr/logr"
Expand All @@ -27,7 +28,7 @@ type NodeAgent struct {
konnectClient *NodeAPIClient
refreshPeriod time.Duration

configStatus dataplane.ConfigStatus
configStatus atomic.Uint32
configStatusSubscriber dataplane.ConfigStatusSubscriber
}

Expand All @@ -42,16 +43,17 @@ func NewNodeAgent(
if refreshPeriod < MinRefreshNodePeriod {
refreshPeriod = MinRefreshNodePeriod
}
return &NodeAgent{
a := &NodeAgent{
Hostname: hostname,
Version: version,
Logger: logger.
WithName("konnect-node").WithValues("runtime_group_id", client.RuntimeGroupID),
konnectClient: client,
refreshPeriod: refreshPeriod,
configStatus: dataplane.ConfigStatusOK,
configStatusSubscriber: configStatusSubscriber,
}
a.configStatus.Store(uint32(dataplane.ConfigStatusOK))
return a
}

func (a *NodeAgent) createNode() error {
Expand Down Expand Up @@ -112,7 +114,8 @@ func (a *NodeAgent) subscribeConfigStatus(ctx context.Context) {
err := ctx.Err()
a.Logger.Info("subscribe loop stopped", "message", err.Error())
return
case a.configStatus = <-a.configStatusSubscriber.SubscribeConfigStatus():
case configStatus := <-a.configStatusSubscriber.SubscribeConfigStatus():
a.configStatus.Store(uint32(configStatus))
}
}
}
Expand All @@ -125,7 +128,8 @@ func (a *NodeAgent) updateNode() error {
}

var ingressControllerStatus IngressControllerState
switch a.configStatus {
configStatus := int(a.configStatus.Load())
switch dataplane.ConfigStatus(configStatus) {
case dataplane.ConfigStatusOK:
ingressControllerStatus = IngressControllerStateOperational
case dataplane.ConfigStatusTranslationErrorHappened:
Expand Down

0 comments on commit 2356d5a

Please sign in to comment.