fix: allow underscores in vector schemes

Also unify tests for global and non-global logs:set calls
This commit is contained in:
Jose Diaz-Gonzalez
2021-01-23 19:00:33 -05:00
parent aeb9241d3b
commit dfc98ecc0f
3 changed files with 100 additions and 6 deletions

View File

@@ -109,9 +109,14 @@ func stopVectorContainer() error {
}) })
} }
func valueToConfig(appName string, value string) (vectorSink, error) { func sinkValueToConfig(appName string, sinkValue string) (vectorSink, error) {
var data vectorSink var data vectorSink
u, err := url.Parse(value) if strings.Contains(sinkValue, "://") {
parts := strings.SplitN(sinkValue, "://", 2)
parts[0] = strings.ReplaceAll(parts[0], "_", "-")
sinkValue = strings.Join(parts, "://")
}
u, err := url.Parse(sinkValue)
if err != nil { if err != nil {
return data, err return data, err
} }
@@ -120,6 +125,8 @@ func valueToConfig(appName string, value string) (vectorSink, error) {
return data, errors.New("Invalid option sinks") return data, errors.New("Invalid option sinks")
} }
u.Scheme = strings.ReplaceAll(u.Scheme, "-", "_")
t := fmt.Sprintf("type=%s", u.Scheme) t := fmt.Sprintf("type=%s", u.Scheme)
i := fmt.Sprintf("inputs[]=docker-source:%s", appName) i := fmt.Sprintf("inputs[]=docker-source:%s", appName)
if appName == "--global" { if appName == "--global" {
@@ -163,7 +170,7 @@ func writeVectorConfig() error {
continue continue
} }
sink, err := valueToConfig(appName, value) sink, err := sinkValueToConfig(appName, value)
if err != nil { if err != nil {
return err return err
} }
@@ -178,7 +185,7 @@ func writeVectorConfig() error {
value := common.PropertyGet("logs", "--global", "vector-sink") value := common.PropertyGet("logs", "--global", "vector-sink")
if value != "" { if value != "" {
sink, err := valueToConfig("--global", value) sink, err := sinkValueToConfig("--global", value)
if err != nil { if err != nil {
return err return err
} }
@@ -201,7 +208,7 @@ func writeVectorConfig() error {
if len(data.Sinks) == 0 { if len(data.Sinks) == 0 {
// write logs to a blackhole // write logs to a blackhole
sink, err := valueToConfig("--null", "blackhole://?print_amount=1") sink, err := sinkValueToConfig("--null", "blackhole://?print_amount=1")
if err != nil { if err != nil {
return err return err
} }

View File

@@ -49,7 +49,7 @@ func validateVectorSink(appName string, value string) error {
return nil return nil
} }
_, err := valueToConfig(appName, value) _, err := sinkValueToConfig(appName, value)
if err != nil { if err != nil {
return err return err
} }

View File

@@ -145,6 +145,44 @@ teardown() {
assert_success assert_success
assert_output "console://?encoding[codec]=json" assert_output "console://?encoding[codec]=json"
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink datadog_logs://?api_key=abc123" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Setting vector-sink"
assert_output_contains "Writing updated vector config to /var/lib/dokku/data/logs/vector.json"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "datadog_logs://?api_key=abc123"
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting vector-sink"
assert_output_contains "Writing updated vector config to /var/lib/dokku/data/logs/vector.json"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting vector-sink"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
run /bin/bash -c "dokku logs:report $TEST_APP --logs-max-size 2>&1" run /bin/bash -c "dokku logs:report $TEST_APP --logs-max-size 2>&1"
echo "output: $output" echo "output: $output"
echo "status: $status" echo "status: $status"
@@ -186,6 +224,18 @@ teardown() {
echo "status: $status" echo "status: $status"
assert_success assert_success
assert_output "unlimited" assert_output "unlimited"
run /bin/bash -c "dokku logs:set "$TEST_APP" max-size" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting max-size"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-max-size 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
} }
@test "(logs) logs:set global" { @test "(logs) logs:set global" {
@@ -226,6 +276,19 @@ teardown() {
assert_success assert_success
assert_output "console://?encoding[codec]=json" assert_output "console://?encoding[codec]=json"
run /bin/bash -c "dokku logs:set --global vector-sink datadog_logs://?api_key=abc123" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Setting vector-sink"
assert_output_contains "Writing updated vector config to /var/lib/dokku/data/logs/vector.json"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "datadog_logs://?api_key=abc123"
run /bin/bash -c "dokku logs:set --global vector-sink" 2>&1 run /bin/bash -c "dokku logs:set --global vector-sink" 2>&1
echo "output: $output" echo "output: $output"
echo "status: $status" echo "status: $status"
@@ -239,6 +302,24 @@ teardown() {
assert_success assert_success
assert_output_not_exists assert_output_not_exists
run /bin/bash -c "dokku logs:set --global vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting vector-sink"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-max-size 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "10m"
run /bin/bash -c "dokku logs:set --global max-size" 2>&1 run /bin/bash -c "dokku logs:set --global max-size" 2>&1
echo "output: $output" echo "output: $output"
echo "status: $status" echo "status: $status"
@@ -280,6 +361,12 @@ teardown() {
echo "status: $status" echo "status: $status"
assert_success assert_success
assert_output_contains "Unsetting max-size" assert_output_contains "Unsetting max-size"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-max-size 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "10m"
} }
@test "(logs) logs:vector" { @test "(logs) logs:vector" {