Skip to content

c|d|e*: Reference ScaledObject's/ScaledJob's name in the scalers log #3491

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions pkg/scalers/cassandra_scaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import (
"strconv"
"strings"

"github.com/go-logr/logr"
"github.com/gocql/gocql"
v2beta2 "k8s.io/api/autoscaling/v2beta2"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/metrics/pkg/apis/external_metrics"
logf "sigs.k8s.io/controller-runtime/pkg/log"

kedautil "github.com/kedacore/keda/v2/pkg/util"
)
Expand All @@ -20,6 +20,7 @@ type cassandraScaler struct {
metricType v2beta2.MetricTargetType
metadata *CassandraMetadata
session *gocql.Session
logger logr.Logger
}

// CassandraMetadata defines metadata used by KEDA to query a Cassandra table.
Expand All @@ -38,21 +39,21 @@ type CassandraMetadata struct {
scalerIndex int
}

var cassandraLog = logf.Log.WithName("cassandra_scaler")

// NewCassandraScaler creates a new Cassandra scaler.
func NewCassandraScaler(config *ScalerConfig) (Scaler, error) {
metricType, err := GetMetricTargetType(config)
if err != nil {
return nil, fmt.Errorf("error getting scaler metric type: %s", err)
}

meta, err := ParseCassandraMetadata(config)
logger := InitializeLogger(config, "cassandra_scaler")

meta, err := parseCassandraMetadata(config)
if err != nil {
return nil, fmt.Errorf("error parsing cassandra metadata: %s", err)
}

session, err := NewCassandraSession(meta)
session, err := newCassandraSession(meta, logger)
if err != nil {
return nil, fmt.Errorf("error establishing cassandra session: %s", err)
}
Expand All @@ -61,11 +62,12 @@ func NewCassandraScaler(config *ScalerConfig) (Scaler, error) {
metricType: metricType,
metadata: meta,
session: session,
logger: logger,
}, nil
}

// ParseCassandraMetadata parses the metadata and returns a CassandraMetadata or an error if the ScalerConfig is invalid.
func ParseCassandraMetadata(config *ScalerConfig) (*CassandraMetadata, error) {
// parseCassandraMetadata parses the metadata and returns a CassandraMetadata or an error if the ScalerConfig is invalid.
func parseCassandraMetadata(config *ScalerConfig) (*CassandraMetadata, error) {
meta := CassandraMetadata{}

if val, ok := config.TriggerMetadata["query"]; ok {
Expand Down Expand Up @@ -159,8 +161,8 @@ func ParseCassandraMetadata(config *ScalerConfig) (*CassandraMetadata, error) {
return &meta, nil
}

// NewCassandraSession returns a new Cassandra session for the provided CassandraMetadata.
func NewCassandraSession(meta *CassandraMetadata) (*gocql.Session, error) {
// newCassandraSession returns a new Cassandra session for the provided CassandraMetadata.
func newCassandraSession(meta *CassandraMetadata, logger logr.Logger) (*gocql.Session, error) {
cluster := gocql.NewCluster(meta.clusterIPAddress)
cluster.ProtoVersion = meta.protocolVersion
cluster.Consistency = meta.consistency
Expand All @@ -171,7 +173,7 @@ func NewCassandraSession(meta *CassandraMetadata) (*gocql.Session, error) {

session, err := cluster.CreateSession()
if err != nil {
cassandraLog.Error(err, "found error creating session")
logger.Error(err, "found error creating session")
return nil, err
}

Expand Down Expand Up @@ -220,7 +222,7 @@ func (s *cassandraScaler) GetQueryResult(ctx context.Context) (int64, error) {
var value int64
if err := s.session.Query(s.metadata.query).WithContext(ctx).Scan(&value); err != nil {
if err != gocql.ErrNotFound {
cassandraLog.Error(err, "query failed")
s.logger.Error(err, "query failed")
return 0, err
}
}
Expand Down
7 changes: 4 additions & 3 deletions pkg/scalers/cassandra_scaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"testing"

"github.com/go-logr/logr"
"github.com/gocql/gocql"
)

Expand Down Expand Up @@ -50,7 +51,7 @@ var cassandraMetricIdentifiers = []cassandraMetricIdentifier{
func TestCassandraParseMetadata(t *testing.T) {
testCaseNum := 1
for _, testData := range testCassandraMetadata {
_, err := ParseCassandraMetadata(&ScalerConfig{TriggerMetadata: testData.metadata, AuthParams: testData.authParams})
_, err := parseCassandraMetadata(&ScalerConfig{TriggerMetadata: testData.metadata, AuthParams: testData.authParams})
if err != nil && !testData.isError {
t.Errorf("Expected success but got error for unit test # %v", testCaseNum)
}
Expand All @@ -63,13 +64,13 @@ func TestCassandraParseMetadata(t *testing.T) {

func TestCassandraGetMetricSpecForScaling(t *testing.T) {
for _, testData := range cassandraMetricIdentifiers {
meta, err := ParseCassandraMetadata(&ScalerConfig{TriggerMetadata: testData.metadataTestData.metadata, ScalerIndex: testData.scalerIndex, AuthParams: testData.metadataTestData.authParams})
meta, err := parseCassandraMetadata(&ScalerConfig{TriggerMetadata: testData.metadataTestData.metadata, ScalerIndex: testData.scalerIndex, AuthParams: testData.metadataTestData.authParams})
if err != nil {
t.Fatal("Could not parse metadata:", err)
}
cluster := gocql.NewCluster(meta.clusterIPAddress)
session, _ := cluster.CreateSession()
mockCassandraScaler := cassandraScaler{"", meta, session}
mockCassandraScaler := cassandraScaler{"", meta, session, logr.Discard()}

metricSpec := mockCassandraScaler.GetMetricSpecForScaling(context.Background())
metricName := metricSpec[0].External.Metric.Name
Expand Down
12 changes: 6 additions & 6 deletions pkg/scalers/cpu_memory_scaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import (
"fmt"
"strconv"

"github.com/go-logr/logr"
"k8s.io/api/autoscaling/v2beta2"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/metrics/pkg/apis/external_metrics"
logf "sigs.k8s.io/controller-runtime/pkg/log"
)

type cpuMemoryScaler struct {
Expand All @@ -24,11 +24,11 @@ type cpuMemoryMetadata struct {
AverageUtilization *int32
}

var cpuMemoryLog = logf.Log.WithName("cpu_memory_scaler")

// NewCPUMemoryScaler creates a new cpuMemoryScaler
func NewCPUMemoryScaler(resourceName v1.ResourceName, config *ScalerConfig) (Scaler, error) {
meta, parseErr := parseResourceMetadata(config)
logger := InitializeLogger(config, "cpu_memory_scaler")

meta, parseErr := parseResourceMetadata(config, logger)
if parseErr != nil {
return nil, fmt.Errorf("error parsing %s metadata: %s", resourceName, parseErr)
}
Expand All @@ -39,7 +39,7 @@ func NewCPUMemoryScaler(resourceName v1.ResourceName, config *ScalerConfig) (Sca
}, nil
}

func parseResourceMetadata(config *ScalerConfig) (*cpuMemoryMetadata, error) {
func parseResourceMetadata(config *ScalerConfig, logger logr.Logger) (*cpuMemoryMetadata, error) {
meta := &cpuMemoryMetadata{}
var value string
var ok bool
Expand All @@ -48,7 +48,7 @@ func parseResourceMetadata(config *ScalerConfig) (*cpuMemoryMetadata, error) {
case ok && value != "" && config.MetricType != "":
return nil, fmt.Errorf("only one of trigger.metadata.type or trigger.metricType should be defined")
case ok && value != "":
cpuMemoryLog.V(0).Info("trigger.metadata.type is deprecated in favor of trigger.metricType")
logger.V(0).Info("trigger.metadata.type is deprecated in favor of trigger.metricType")
meta.Type = v2beta2.MetricTargetType(value)
case config.MetricType != "":
meta.Type = config.MetricType
Expand Down
3 changes: 2 additions & 1 deletion pkg/scalers/cpu_memory_scaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"testing"

"github.com/go-logr/logr"
"github.com/stretchr/testify/assert"
"k8s.io/api/autoscaling/v2beta2"
v1 "k8s.io/api/core/v1"
Expand Down Expand Up @@ -40,7 +41,7 @@ func TestCPUMemoryParseMetadata(t *testing.T) {
TriggerMetadata: testData.metadata,
MetricType: testData.metricType,
}
_, err := parseResourceMetadata(config)
_, err := parseResourceMetadata(config, logr.Discard())
if err != nil && !testData.isError {
t.Error("Expected success but got error", err)
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/scalers/cron_scaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
"strings"
"time"

"github.com/go-logr/logr"
"github.com/robfig/cron/v3"
"k8s.io/api/autoscaling/v2beta2"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/metrics/pkg/apis/external_metrics"
logf "sigs.k8s.io/controller-runtime/pkg/log"

kedautil "github.com/kedacore/keda/v2/pkg/util"
)
Expand All @@ -24,6 +24,7 @@ const (
type cronScaler struct {
metricType v2beta2.MetricTargetType
metadata *cronMetadata
logger logr.Logger
}

type cronMetadata struct {
Expand All @@ -34,8 +35,6 @@ type cronMetadata struct {
scalerIndex int
}

var cronLog = logf.Log.WithName("cron_scaler")

// NewCronScaler creates a new cronScaler
func NewCronScaler(config *ScalerConfig) (Scaler, error) {
metricType, err := GetMetricTargetType(config)
Expand All @@ -51,6 +50,7 @@ func NewCronScaler(config *ScalerConfig) (Scaler, error) {
return &cronScaler{
metricType: metricType,
metadata: meta,
logger: InitializeLogger(config, "cron_scaler"),
}, nil
}

Expand Down Expand Up @@ -174,7 +174,7 @@ func (s *cronScaler) GetMetrics(ctx context.Context, metricName string, metricSe
var currentReplicas = int64(defaultDesiredReplicas)
isActive, err := s.IsActive(ctx)
if err != nil {
cronLog.Error(err, "error")
s.logger.Error(err, "error")
return []external_metrics.ExternalMetricValue{}, err
}
if isActive {
Expand Down
3 changes: 2 additions & 1 deletion pkg/scalers/cron_scaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"testing"
"time"

"github.com/go-logr/logr"
"github.com/stretchr/testify/assert"
)

Expand Down Expand Up @@ -118,7 +119,7 @@ func TestCronGetMetricSpecForScaling(t *testing.T) {
if err != nil {
t.Fatal("Could not parse metadata:", err)
}
mockCronScaler := cronScaler{"", meta}
mockCronScaler := cronScaler{"", meta, logr.Discard()}

metricSpec := mockCronScaler.GetMetricSpecForScaling(context.Background())
metricName := metricSpec[0].External.Metric.Name
Expand Down
18 changes: 10 additions & 8 deletions pkg/scalers/datadog_scaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,18 @@ import (
"time"

datadog "github.com/DataDog/datadog-api-client-go/api/v1/datadog"
"github.com/go-logr/logr"
"k8s.io/api/autoscaling/v2beta2"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/metrics/pkg/apis/external_metrics"
logf "sigs.k8s.io/controller-runtime/pkg/log"

kedautil "github.com/kedacore/keda/v2/pkg/util"
)

type datadogScaler struct {
metadata *datadogMetadata
apiClient *datadog.APIClient
logger logr.Logger
}

type datadogMetadata struct {
Expand All @@ -36,8 +37,6 @@ type datadogMetadata struct {
fillValue float64
}

var datadogLog = logf.Log.WithName("datadog_scaler")

var filter *regexp.Regexp

func init() {
Expand All @@ -46,7 +45,9 @@ func init() {

// NewDatadogScaler creates a new Datadog scaler
func NewDatadogScaler(ctx context.Context, config *ScalerConfig) (Scaler, error) {
meta, err := parseDatadogMetadata(config)
logger := InitializeLogger(config, "datadog_scaler")

meta, err := parseDatadogMetadata(config, logger)
if err != nil {
return nil, fmt.Errorf("error parsing Datadog metadata: %s", err)
}
Expand All @@ -58,6 +59,7 @@ func NewDatadogScaler(ctx context.Context, config *ScalerConfig) (Scaler, error)
return &datadogScaler{
metadata: meta,
apiClient: apiClient,
logger: logger,
}, nil
}

Expand All @@ -71,7 +73,7 @@ func parseDatadogQuery(q string) (bool, error) {
return true, nil
}

func parseDatadogMetadata(config *ScalerConfig) (*datadogMetadata, error) {
func parseDatadogMetadata(config *ScalerConfig, logger logr.Logger) (*datadogMetadata, error) {
meta := datadogMetadata{}

if val, ok := config.TriggerMetadata["age"]; ok {
Expand All @@ -82,7 +84,7 @@ func parseDatadogMetadata(config *ScalerConfig) (*datadogMetadata, error) {
meta.age = age

if age < 60 {
datadogLog.Info("selecting a window smaller than 60 seconds can cause Datadog not finding a metric value for the query")
logger.Info("selecting a window smaller than 60 seconds can cause Datadog not finding a metric value for the query")
}
} else {
meta.age = 90 // Default window 90 seconds
Expand Down Expand Up @@ -128,7 +130,7 @@ func parseDatadogMetadata(config *ScalerConfig) (*datadogMetadata, error) {
}

if val, ok := config.TriggerMetadata["type"]; ok {
datadogLog.V(0).Info("trigger.metadata.type is deprecated in favor of trigger.metricType")
logger.V(0).Info("trigger.metadata.type is deprecated in favor of trigger.metricType")
if config.MetricType != "" {
return nil, fmt.Errorf("only one of trigger.metadata.type or trigger.metricType should be defined")
}
Expand Down Expand Up @@ -313,7 +315,7 @@ func (s *datadogScaler) GetMetricSpecForScaling(context.Context) []v2beta2.Metri
func (s *datadogScaler) GetMetrics(ctx context.Context, metricName string, metricSelector labels.Selector) ([]external_metrics.ExternalMetricValue, error) {
num, err := s.getQueryResult(ctx)
if err != nil {
datadogLog.Error(err, "error getting metrics from Datadog")
s.logger.Error(err, "error getting metrics from Datadog")
return []external_metrics.ExternalMetricValue{}, fmt.Errorf("error getting metrics from Datadog: %s", err)
}

Expand Down
5 changes: 3 additions & 2 deletions pkg/scalers/datadog_scaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"testing"

"github.com/go-logr/logr"
v2beta2 "k8s.io/api/autoscaling/v2beta2"
)

Expand Down Expand Up @@ -96,7 +97,7 @@ var testDatadogMetadata = []datadogAuthMetadataTestData{

func TestDatadogScalerAuthParams(t *testing.T) {
for _, testData := range testDatadogMetadata {
_, err := parseDatadogMetadata(&ScalerConfig{TriggerMetadata: testData.metadata, AuthParams: testData.authParams, MetricType: testData.metricType})
_, err := parseDatadogMetadata(&ScalerConfig{TriggerMetadata: testData.metadata, AuthParams: testData.authParams, MetricType: testData.metricType}, logr.Discard())

if err != nil && !testData.isError {
t.Error("Expected success but got error", err)
Expand All @@ -114,7 +115,7 @@ var datadogMetricIdentifiers = []datadogMetricIdentifier{

func TestDatadogGetMetricSpecForScaling(t *testing.T) {
for _, testData := range datadogMetricIdentifiers {
meta, err := parseDatadogMetadata(&ScalerConfig{TriggerMetadata: testData.metadataTestData.metadata, AuthParams: testData.metadataTestData.authParams, ScalerIndex: testData.scalerIndex, MetricType: testData.metadataTestData.metricType})
meta, err := parseDatadogMetadata(&ScalerConfig{TriggerMetadata: testData.metadataTestData.metadata, AuthParams: testData.metadataTestData.authParams, ScalerIndex: testData.scalerIndex, MetricType: testData.metadataTestData.metricType}, logr.Discard())
if err != nil {
t.Fatal("Could not parse metadata:", err)
}
Expand Down
Loading