feat: add ability to set global properties

Not all properties can be set globally, and the "appName" in the global case is currently defaulted to `--global`. This is okay because domain label names cannot start with hyphens, and all app names must be valid domain label names.
This commit is contained in:
Jose Diaz-Gonzalez
2021-01-04 00:50:14 -05:00
parent f5fa94cc9c
commit e1425a85e4
7 changed files with 20 additions and 6 deletions

View File

@@ -12,9 +12,14 @@ import (
)
// CommandPropertySet is a generic function that will set a property for a given plugin/app combination
func CommandPropertySet(pluginName, appName, property, value string, properties map[string]string) {
if err := VerifyAppName(appName); err != nil {
LogFail(err.Error())
func CommandPropertySet(pluginName, appName, property, value string, properties map[string]string, globalProperties map[string]bool) {
if appName != "--global" {
if err := VerifyAppName(appName); err != nil {
LogFail(err.Error())
}
}
if !globalProperties[property] {
LogFail("Property cannot be specified globally")
}
if property == "" {
LogFail("No property specified")

View File

@@ -11,6 +11,9 @@ var (
DefaultProperties = map[string]string{
"vector-sink": "",
}
// GlobalProperties is a map of all valid global logs properties
GlobalProperties = map[string]bool{}
)
const VectorImage = "timberio/vector:0.11.X-debian"

View File

@@ -75,7 +75,7 @@ func CommandSet(appName string, property string, value string) error {
}
}
common.CommandPropertySet("logs", appName, property, value, DefaultProperties)
common.CommandPropertySet("logs", appName, property, value, DefaultProperties, GlobalProperties)
if property == "vector-sink" {
common.LogVerboseQuiet(fmt.Sprintf("Writing updated vector config to %s", filepath.Join(common.MustGetEnv("DOKKU_LIB_ROOT"), "data", "logs", "vector.json")))
return writeVectorConfig()

View File

@@ -22,6 +22,9 @@ var (
"attach-post-deploy": "",
"tld": "",
}
// GlobalProperties is a map of all valid global network properties
GlobalProperties = map[string]bool{}
)
// BuildConfig builds network config files

View File

@@ -169,6 +169,6 @@ func CommandSet(appName string, property string, value string) error {
}
}
common.CommandPropertySet("network", appName, property, value, DefaultProperties)
common.CommandPropertySet("network", appName, property, value, DefaultProperties, GlobalProperties)
return nil
}

View File

@@ -16,6 +16,9 @@ var (
DefaultProperties = map[string]string{
"restart-policy": "on-failure:10",
}
// GlobalProperties is a map of all valid global ps properties
GlobalProperties = map[string]bool{}
)
// Rebuild rebuilds app from base image

View File

@@ -163,7 +163,7 @@ func CommandSet(appName string, property string, value string) error {
return dockeroptions.SetDockerOptionForPhases(appName, []string{"deploy"}, "restart", value)
}
common.CommandPropertySet("ps", appName, property, value, DefaultProperties)
common.CommandPropertySet("ps", appName, property, value, DefaultProperties, GlobalProperties)
return nil
}