feat: add a command to clear all proxy configs

Closes #5002
This commit is contained in:
Jose Diaz-Gonzalez
2022-01-28 20:26:49 -05:00
parent 3b0bf4d8f2
commit 7136da1aa5
4 changed files with 86 additions and 0 deletions

View File

@@ -32,6 +32,11 @@ func BuildConfig(appName string) error {
return common.PlugnTrigger("proxy-build-config", []string{appName}...)
}
// ClearConfig clears the proxy config for the specified app
func ClearConfig(appName string) error {
return common.PlugnTrigger("proxy-clear-config", []string{appName}...)
}
// Disable disables proxy implementations for the specified app
func Disable(appName string) error {
if !IsAppProxyEnabled(appName) {

View File

@@ -25,6 +25,12 @@ func main() {
args.Parse(os.Args[2:])
appName := args.Arg(0)
err = proxy.CommandBuildConfig(appName, *allApps, *parallelCount)
case "clear-config":
args := flag.NewFlagSet("proxy:clear-config", flag.ExitOnError)
allApps := args.Bool("all", false, "--all: build-config for all apps")
args.Parse(os.Args[2:])
appName := args.Arg(0)
err = proxy.CommandClearConfig(appName, *allApps)
case "disable":
args := flag.NewFlagSet("proxy:disable", flag.ExitOnError)
allApps := args.Bool("all", false, "--all: disable proxy for all apps")

View File

@@ -21,6 +21,19 @@ func CommandBuildConfig(appName string, allApps bool, parallelCount int) error {
return BuildConfig(appName)
}
// CommandClearConfig clears config for a given app
func CommandClearConfig(appName string, allApps bool) error {
if allApps {
return ClearConfig("--all")
}
if err := common.VerifyAppName(appName); err != nil {
return err
}
return ClearConfig(appName)
}
// CommandDisable disables the proxy for app via command line
func CommandDisable(appName string, allApps bool, parallelCount int) error {
if allApps {

View File

@@ -28,6 +28,68 @@ teardown() {
assert_output "$help_output"
}
@test "(proxy) proxy:build-config/clear-config" {
run deploy_app
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "rm -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_failure
run /bin/bash -c "dokku proxy:build-config $TEST_APP"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku proxy:clear-config $TEST_APP"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_failure
run /bin/bash -c "dokku proxy:build-config $TEST_APP"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku proxy:clear-config --all"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $DOKKU_ROOT/$TEST_APP/nginx.conf"
echo "output: $output"
echo "status: $status"
assert_failure
}
@test "(proxy) proxy:enable/disable" {
deploy_app
assert_nonssl_domain "${TEST_APP}.dokku.me"