diff --git a/docs/configuration/environment-variables.md b/docs/configuration/environment-variables.md index cfe98ae22..a597ce464 100644 --- a/docs/configuration/environment-variables.md +++ b/docs/configuration/environment-variables.md @@ -122,8 +122,8 @@ The following environment variables have been migrated to plugin properties. Exi | `DOKKU_DISABLE_PROXY` | `dokku proxy:disable ` / `dokku proxy:enable ` | | `DOKKU_DOCKERFILE_START_CMD` | `dokku ps:set dockerfile-start-cmd ` | | `DOKKU_PARALLEL_ARGUMENTS` | Removed. No longer supported. | -| `DOKKU_PROXY_PORT` | `dokku ports:set proxy-port ` | -| `DOKKU_PROXY_SSL_PORT` | `dokku ports:set proxy-ssl-port ` | +| `DOKKU_PROXY_PORT` | `dokku proxy:set proxy-port ` | +| `DOKKU_PROXY_SSL_PORT` | `dokku proxy:set proxy-ssl-port ` | | `DOKKU_SKIP_ALL_CHECKS` | `dokku checks:disable ` | | `DOKKU_SKIP_CLEANUP` | `dokku builder:set skip-cleanup ` | | `DOKKU_SKIP_DEFAULT_CHECKS` | `dokku checks:skip ` | diff --git a/plugins/apps/src/subcommands/subcommands.go b/plugins/apps/src/subcommands/subcommands.go index a61e46d45..802d0e1ed 100644 --- a/plugins/apps/src/subcommands/subcommands.go +++ b/plugins/apps/src/subcommands/subcommands.go @@ -74,10 +74,16 @@ func main() { } case "set": args := flag.NewFlagSet("apps:set", flag.ExitOnError) + global := args.Bool("global", false, "--global: set a global property") args.Parse(os.Args[2:]) appName := args.Arg(0) property := args.Arg(1) value := args.Arg(2) + if *global { + appName = "--global" + property = args.Arg(0) + value = args.Arg(1) + } err = apps.CommandSet(appName, property, value) case "unlock": args := flag.NewFlagSet("apps:unlock", flag.ExitOnError) diff --git a/plugins/nginx-vhosts/install b/plugins/nginx-vhosts/install index 636325e6d..94bb56442 100755 --- a/plugins/nginx-vhosts/install +++ b/plugins/nginx-vhosts/install @@ -7,8 +7,8 @@ source "$PLUGIN_AVAILABLE_PATH/config/functions" source "$PLUGIN_AVAILABLE_PATH/nginx-vhosts/internal-functions" fn-nginx-vhosts-migrate-env-vars() { - "$PLUGIN_CORE_AVAILABLE_PATH/common/prop" migrate-config-to-property ports proxy-port DOKKU_NGINX_PORT - "$PLUGIN_CORE_AVAILABLE_PATH/common/prop" migrate-config-to-property ports proxy-ssl-port DOKKU_NGINX_SSL_PORT + "$PLUGIN_CORE_AVAILABLE_PATH/common/prop" migrate-config-to-property proxy proxy-port DOKKU_NGINX_PORT + "$PLUGIN_CORE_AVAILABLE_PATH/common/prop" migrate-config-to-property proxy proxy-ssl-port DOKKU_NGINX_SSL_PORT } fn-nginx-vhosts-migrate-nginx-conf-sigil() { diff --git a/plugins/nginx-vhosts/pre-disable-vhost b/plugins/nginx-vhosts/pre-disable-vhost index 027dedcd6..977524416 100755 --- a/plugins/nginx-vhosts/pre-disable-vhost +++ b/plugins/nginx-vhosts/pre-disable-vhost @@ -18,10 +18,10 @@ trigger-nginx-vhosts-pre-disable-vhost() { local PROXY_SSL_PORT=$(plugn trigger ports-get-property "$APP" "proxy-ssl-port") if [[ "$PROXY_PORT" == "80" ]]; then - fn-plugin-property-delete "ports" "$APP" "proxy-port" + fn-plugin-property-delete "proxy" "$APP" "proxy-port" fi if [[ "$PROXY_SSL_PORT" == "443" ]]; then - fn-plugin-property-delete "ports" "$APP" "proxy-ssl-port" + fn-plugin-property-delete "proxy" "$APP" "proxy-ssl-port" fi # clear ports if there is a mapping starting with http:80 or https:443 diff --git a/plugins/nginx-vhosts/pre-enable-vhost b/plugins/nginx-vhosts/pre-enable-vhost index 11615f4be..224887462 100755 --- a/plugins/nginx-vhosts/pre-enable-vhost +++ b/plugins/nginx-vhosts/pre-enable-vhost @@ -18,10 +18,10 @@ trigger-nginx-vhosts-pre-enable-vhost() { local PROXY_SSL_PORT=$(plugn trigger ports-get-property "$APP" "proxy-ssl-port") if [[ "$PROXY_PORT" == "80" ]]; then - fn-plugin-property-delete "ports" "$APP" "proxy-port" + fn-plugin-property-delete "proxy" "$APP" "proxy-port" fi if [[ "$PROXY_SSL_PORT" == "443" ]]; then - fn-plugin-property-delete "ports" "$APP" "proxy-ssl-port" + fn-plugin-property-delete "proxy" "$APP" "proxy-ssl-port" fi # clear ports if there is a mapping starting with http:80 or https:443 diff --git a/plugins/ports/functions.go b/plugins/ports/functions.go index 9698b2518..afeaf7120 100644 --- a/plugins/ports/functions.go +++ b/plugins/ports/functions.go @@ -161,7 +161,7 @@ func getDetectedPortMaps(appName string) []PortMap { // getGlobalProxyPort gets the global proxy port func getGlobalProxyPort() int { port := 0 - value := common.PropertyGet("ports", "--global", "proxy-port") + value := common.PropertyGet("proxy", "--global", "proxy-port") if intVar, err := strconv.Atoi(value); err == nil { port = intVar } @@ -172,7 +172,7 @@ func getGlobalProxyPort() int { // getGlobalProxySSLPort gets the global proxy ssl port func getGlobalProxySSLPort() int { port := 0 - value := common.PropertyGet("ports", "--global", "proxy-ssl-port") + value := common.PropertyGet("proxy", "--global", "proxy-ssl-port") if intVar, err := strconv.Atoi(value); err == nil { port = intVar } @@ -194,7 +194,7 @@ func getPortMaps(appName string) []PortMap { // getProxyPort gets the proxy port for an app func getProxyPort(appName string) int { port := 0 - value := common.PropertyGet("ports", appName, "proxy-port") + value := common.PropertyGet("proxy", appName, "proxy-port") if intVar, err := strconv.Atoi(value); err == nil { port = intVar } @@ -205,7 +205,7 @@ func getProxyPort(appName string) int { // getProxySSLPort gets the proxy ssl port for an app func getProxySSLPort(appName string) int { port := 0 - value := common.PropertyGet("ports", appName, "proxy-ssl-port") + value := common.PropertyGet("proxy", appName, "proxy-ssl-port") if intVar, err := strconv.Atoi(value); err == nil { port = intVar } @@ -432,12 +432,12 @@ func setPortMaps(appName string, portMaps []PortMap) error { // setProxyPort sets the proxy port for an app func setProxyPort(appName string, port int) error { - return common.PropertyWrite("ports", appName, "proxy-port", fmt.Sprint(port)) + return common.PropertyWrite("proxy", appName, "proxy-port", fmt.Sprint(port)) } // setProxySSLPort sets the proxy ssl port for an app func setProxySSLPort(appName string, port int) error { - return common.PropertyWrite("ports", appName, "proxy-ssl-port", fmt.Sprint(port)) + return common.PropertyWrite("proxy", appName, "proxy-ssl-port", fmt.Sprint(port)) } // transformPortMap normalizes a port map string for migration to list properties diff --git a/plugins/ports/proxy.go b/plugins/ports/proxy.go index b17550010..c8855b6e4 100644 --- a/plugins/ports/proxy.go +++ b/plugins/ports/proxy.go @@ -4,19 +4,6 @@ import ( "fmt" ) -var ( - // DefaultProperties is a map of all valid ports properties with corresponding default property values - DefaultProperties = map[string]string{ - "proxy-port": "", - "proxy-ssl-port": "", - } - - // GlobalProperties is a map of all valid global ports properties - GlobalProperties = map[string]bool{ - "proxy-port": true, - "proxy-ssl-port": true, - } -) // PortMap is a struct that contains a scheme:host-port:container-port mapping type PortMap struct { diff --git a/plugins/ports/triggers.go b/plugins/ports/triggers.go index 192e8cc64..8d6ce6cd7 100644 --- a/plugins/ports/triggers.go +++ b/plugins/ports/triggers.go @@ -21,16 +21,6 @@ func TriggerInstall() error { ListProperty: true, Transform: transformPortMap, }, - { - ConfigVar: "DOKKU_PROXY_PORT", - GlobalConfigVar: "DOKKU_PROXY_PORT", - Property: "proxy-port", - }, - { - ConfigVar: "DOKKU_PROXY_SSL_PORT", - GlobalConfigVar: "DOKKU_PROXY_SSL_PORT", - Property: "proxy-ssl-port", - }, }); err != nil { return err } @@ -166,7 +156,7 @@ func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error { // TriggerPostCertsRemove unsets port properties after SSL cert is removed func TriggerPostCertsRemove(appName string) error { - if err := common.PropertyDelete("ports", appName, "proxy-ssl-port"); err != nil { + if err := common.PropertyDelete("proxy", appName, "proxy-ssl-port"); err != nil { return err } @@ -175,15 +165,15 @@ func TriggerPostCertsRemove(appName string) error { // TriggerPostCertsUpdate sets port properties after SSL cert is added func TriggerPostCertsUpdate(appName string) error { - port := common.PropertyGet("ports", appName, "proxy-port") - sslPort := common.PropertyGet("ports", appName, "proxy-ssl-port") + port := common.PropertyGet("proxy", appName, "proxy-port") + sslPort := common.PropertyGet("proxy", appName, "proxy-ssl-port") portMaps := getPortMaps(appName) if port == "80" { - common.PropertyDelete("ports", appName, "proxy-port") + common.PropertyDelete("proxy", appName, "proxy-port") } if sslPort == "443" { - common.PropertyDelete("ports", appName, "proxy-ssl-port") + common.PropertyDelete("proxy", appName, "proxy-ssl-port") } var http80Ports []PortMap diff --git a/plugins/proxy/proxy.go b/plugins/proxy/proxy.go index 9f64815f7..aec2c924d 100644 --- a/plugins/proxy/proxy.go +++ b/plugins/proxy/proxy.go @@ -11,13 +11,17 @@ const RunInSerial = 0 var ( // DefaultProperties is a map of all valid proxy properties with corresponding default property values DefaultProperties = map[string]string{ - "disabled": "false", - "type": "", + "disabled": "false", + "proxy-port": "", + "proxy-ssl-port": "", + "type": "", } // GlobalProperties is a map of all valid global proxy properties GlobalProperties = map[string]bool{ - "type": true, + "proxy-port": true, + "proxy-ssl-port": true, + "type": true, } ) diff --git a/plugins/proxy/src/subcommands/subcommands.go b/plugins/proxy/src/subcommands/subcommands.go index ca06d2660..11498b8b0 100644 --- a/plugins/proxy/src/subcommands/subcommands.go +++ b/plugins/proxy/src/subcommands/subcommands.go @@ -59,12 +59,14 @@ func main() { global := args.Bool("global", false, "--global: set a global property") args.Parse(os.Args[2:]) appName := args.Arg(0) - proxyType := args.Arg(1) + property := args.Arg(1) + value := args.Arg(2) if *global { appName = "--global" - proxyType = args.Arg(0) + property = args.Arg(0) + value = args.Arg(1) } - err = proxy.CommandSet(appName, proxyType) + err = proxy.CommandSet(appName, property, value) default: err = fmt.Errorf("Invalid plugin subcommand call: %s", subcommand) } diff --git a/plugins/proxy/subcommands.go b/plugins/proxy/subcommands.go index b431a1284..e603665c1 100644 --- a/plugins/proxy/subcommands.go +++ b/plugins/proxy/subcommands.go @@ -2,7 +2,6 @@ package proxy import ( "errors" - "strings" "github.com/dokku/dokku/plugins/common" ) @@ -82,22 +81,7 @@ func CommandReport(appName string, format string, infoFlag string) error { } // CommandSet sets a proxy for an app -func CommandSet(appName string, proxyType string) error { - if appName != "--global" { - if err := common.VerifyAppName(appName); err != nil { - return err - } - } - - if len(proxyType) < 2 { - return errors.New("Please specify a proxy type") - } - - if strings.Contains(proxyType, ":") { - common.LogWarn("Detected potential port mapping instead of proxy type") - return errors.New("Consider using ports:set command or specifying a valid proxy") - } - - common.CommandPropertySet("proxy", appName, "type", proxyType, DefaultProperties, GlobalProperties) +func CommandSet(appName string, property string, value string) error { + common.CommandPropertySet("proxy", appName, property, value, DefaultProperties, GlobalProperties) return nil } diff --git a/plugins/proxy/triggers.go b/plugins/proxy/triggers.go index 5a3eaeea8..935e63d77 100644 --- a/plugins/proxy/triggers.go +++ b/plugins/proxy/triggers.go @@ -28,6 +28,16 @@ func TriggerInstall() error { return value }, }, + { + ConfigVar: "DOKKU_PROXY_PORT", + GlobalConfigVar: "DOKKU_PROXY_PORT", + Property: "proxy-port", + }, + { + ConfigVar: "DOKKU_PROXY_SSL_PORT", + GlobalConfigVar: "DOKKU_PROXY_SSL_PORT", + Property: "proxy-ssl-port", + }, }); err != nil { return err } diff --git a/plugins/scheduler-docker-local/bin/scheduler-deploy-process-container b/plugins/scheduler-docker-local/bin/scheduler-deploy-process-container index 8028b9eaf..b9ec8a3c9 100755 --- a/plugins/scheduler-docker-local/bin/scheduler-deploy-process-container +++ b/plugins/scheduler-docker-local/bin/scheduler-deploy-process-container @@ -2,6 +2,7 @@ set -eo pipefail [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions" main() { diff --git a/plugins/scheduler-docker-local/check-deploy b/plugins/scheduler-docker-local/check-deploy index 6dd794aff..8772aefd6 100755 --- a/plugins/scheduler-docker-local/check-deploy +++ b/plugins/scheduler-docker-local/check-deploy @@ -36,6 +36,7 @@ set -eo pipefail [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" source "$PLUGIN_AVAILABLE_PATH/checks/functions" source "$PLUGIN_AVAILABLE_PATH/config/functions" source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions" diff --git a/plugins/scheduler-docker-local/scheduler-deploy b/plugins/scheduler-docker-local/scheduler-deploy index 8daaa0532..7981c5a7f 100755 --- a/plugins/scheduler-docker-local/scheduler-deploy +++ b/plugins/scheduler-docker-local/scheduler-deploy @@ -2,6 +2,7 @@ set -eo pipefail [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" source "$PLUGIN_AVAILABLE_PATH/checks/functions" source "$PLUGIN_AVAILABLE_PATH/config/functions" source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions" diff --git a/plugins/scheduler-docker-local/scheduler-enter b/plugins/scheduler-docker-local/scheduler-enter index 61a3fa202..03d794a9a 100755 --- a/plugins/scheduler-docker-local/scheduler-enter +++ b/plugins/scheduler-docker-local/scheduler-enter @@ -1,5 +1,6 @@ #!/usr/bin/env bash source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" source "$PLUGIN_AVAILABLE_PATH/config/functions" set -eo pipefail [[ $DOKKU_TRACE ]] && set -x diff --git a/plugins/scheduler-docker-local/scheduler-run b/plugins/scheduler-docker-local/scheduler-run index 27d4236e9..658beff00 100755 --- a/plugins/scheduler-docker-local/scheduler-run +++ b/plugins/scheduler-docker-local/scheduler-run @@ -2,6 +2,7 @@ set -eo pipefail [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" source "$PLUGIN_AVAILABLE_PATH/config/functions" source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions" diff --git a/tests/unit/apps_2.bats b/tests/unit/apps_2.bats index 0926fe33c..5c481bde5 100644 --- a/tests/unit/apps_2.bats +++ b/tests/unit/apps_2.bats @@ -116,7 +116,7 @@ teardown() { echo "output: $output" echo "status: $status" assert_success - run /bin/bash -c "$PLUGIN_CORE_AVAILABLE_PATH/common/prop set ports $TEST_APP proxy-ssl-port 443" + run /bin/bash -c "dokku proxy:set $TEST_APP proxy-ssl-port 443" echo "output: $output" echo "status: $status" assert_success diff --git a/tests/unit/nginx-vhosts_5.bats b/tests/unit/nginx-vhosts_5.bats index 9f8963950..9af7c2ea0 100644 --- a/tests/unit/nginx-vhosts_5.bats +++ b/tests/unit/nginx-vhosts_5.bats @@ -62,7 +62,7 @@ teardown() { @test "(nginx-vhosts) proxy:build-config (global proxy-port)" { local GLOBAL_PORT=30999 - run /bin/bash -c "$PLUGIN_CORE_AVAILABLE_PATH/common/prop set ports --global proxy-port ${GLOBAL_PORT}" + run /bin/bash -c "dokku proxy:set --global proxy-port ${GLOBAL_PORT}" echo "output: $output" echo "status: $status" assert_success @@ -74,7 +74,7 @@ teardown() { check_urls "http://${TEST_APP}.${DOKKU_DOMAIN}:${GLOBAL_PORT}" assert_http_success "http://${TEST_APP}.${DOKKU_DOMAIN}:${GLOBAL_PORT}" - run /bin/bash -c "$PLUGIN_CORE_AVAILABLE_PATH/common/prop del ports --global proxy-port" + run /bin/bash -c "dokku proxy:set --global proxy-port" echo "output: $output" echo "status: $status" assert_success