diff --git a/pkg/scalers/rabbitmq_scaler.go b/pkg/scalers/rabbitmq_scaler.go index 3adffc3db90..1785a0f3bf5 100644 --- a/pkg/scalers/rabbitmq_scaler.go +++ b/pkg/scalers/rabbitmq_scaler.go @@ -32,7 +32,7 @@ type rabbitMQMetadata struct { // NewRabbitMQScaler creates a new rabbitMQ scaler func NewRabbitMQScaler(resolvedEnv, metadata map[string]string) (Scaler, error) { - meta, err := parseRabbitMQMetadata(metadata) + meta, err := parseRabbitMQMetadata(resolvedEnv, metadata) if err != nil { return nil, fmt.Errorf("error parsing rabbitmq metadata: %s", err) } @@ -49,13 +49,19 @@ func NewRabbitMQScaler(resolvedEnv, metadata map[string]string) (Scaler, error) }, nil } -func parseRabbitMQMetadata(metadata map[string]string) (*rabbitMQMetadata, error) { +func parseRabbitMQMetadata(resolvedEnv, metadata map[string]string) (*rabbitMQMetadata, error) { meta := rabbitMQMetadata{} if val, ok := metadata["host"]; ok { - meta.host = val - } else { - return nil, fmt.Errorf("no host given") + hostSetting := val + + if val, ok := resolvedEnv[hostSetting]; ok { + meta.host = val + } + } + + if meta.host == "" { + return nil, fmt.Errorf("no host setting given") } if val, ok := metadata["queueName"]; ok { diff --git a/pkg/scalers/rabbitmq_scaler_test.go b/pkg/scalers/rabbitmq_scaler_test.go index 4a70ab133f1..7711d6e0b87 100644 --- a/pkg/scalers/rabbitmq_scaler_test.go +++ b/pkg/scalers/rabbitmq_scaler_test.go @@ -4,27 +4,35 @@ import ( "testing" ) +const ( + host = "myHostSecret" +) + type parseRabbitMQMetadataTestData struct { metadata map[string]string isError bool } +var sampleRabbitMqResolvedEnv = map[string]string{ + host: "none", +} + var testRabbitMQMetadata = []parseRabbitMQMetadataTestData{ // nothing passed {map[string]string{}, true}, // properly formed metadata - {map[string]string{"queueLength": "10", "queueName": "sample", "host": "amqp://rabbitmq"}, false}, + {map[string]string{"queueLength": "10", "queueName": "sample", "host": host}, false}, // malformed queueLength - {map[string]string{"queueLength": "AA", "queueName": "sample", "host": "amqp://rabbitmq"}, true}, + {map[string]string{"queueLength": "AA", "queueName": "sample", "host": host}, true}, // missing host {map[string]string{"queueLength": "AA", "queueName": "sample"}, true}, // missing queueName - {map[string]string{"queueLength": "10", "host": "amqp://rabbitmq"}, true}, + {map[string]string{"queueLength": "10", "host": host}, true}, } func TestRabbitMQParseMetadata(t *testing.T) { for _, testData := range testRabbitMQMetadata { - _, err := parseRabbitMQMetadata(testData.metadata) + _, err := parseRabbitMQMetadata(sampleRabbitMqResolvedEnv, testData.metadata) if err != nil && !testData.isError { t.Error("Expected success but got error", err) }