From 63f4ec3867d292c024b63ff87985dd455b838578 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 17 Feb 2020 19:08:39 -0500 Subject: [PATCH] feat: call clone/destroy prop commands as necessary --- plugins/buildpacks/.gitignore | 3 +- plugins/buildpacks/Makefile | 2 +- plugins/buildpacks/src/triggers/triggers.go | 8 +++++ plugins/buildpacks/triggers.go | 23 ++++++++++++++ plugins/git/post-app-clone-setup | 3 ++ plugins/git/post-app-rename-setup | 4 +++ plugins/network/Makefile | 2 +- plugins/network/network.go | 4 +-- plugins/network/src/triggers/triggers.go | 9 ++++-- plugins/network/triggers.go | 31 +++++++++++++++++-- plugins/nginx-vhosts/post-app-clone-setup | 2 ++ plugins/nginx-vhosts/post-app-rename-setup | 3 ++ plugins/resource/.gitignore | 2 +- plugins/resource/Makefile | 2 +- plugins/resource/src/triggers/triggers.go | 8 +++++ plugins/resource/triggers.go | 23 ++++++++++++++ .../post-app-clone-setup | 2 ++ .../post-app-rename-setup | 16 ++++++++++ 18 files changed, 134 insertions(+), 13 deletions(-) create mode 100755 plugins/scheduler-docker-local/post-app-rename-setup diff --git a/plugins/buildpacks/.gitignore b/plugins/buildpacks/.gitignore index 053d0cfd9..291036bd4 100644 --- a/plugins/buildpacks/.gitignore +++ b/plugins/buildpacks/.gitignore @@ -3,6 +3,5 @@ /triggers/* /triggers /install -/post-delete -/post-extract +/post-* /report diff --git a/plugins/buildpacks/Makefile b/plugins/buildpacks/Makefile index 74a13c23e..700601cc5 100644 --- a/plugins/buildpacks/Makefile +++ b/plugins/buildpacks/Makefile @@ -1,5 +1,5 @@ SUBCOMMANDS = subcommands/add subcommands/clear subcommands/list subcommands/remove subcommands/report subcommands/set -TRIGGERS = triggers/install triggers/post-delete triggers/post-extract triggers/report +TRIGGERS = triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/post-extract triggers/report BUILD = commands subcommands triggers PLUGIN_NAME = buildpacks diff --git a/plugins/buildpacks/src/triggers/triggers.go b/plugins/buildpacks/src/triggers/triggers.go index 83e01740b..98899a858 100644 --- a/plugins/buildpacks/src/triggers/triggers.go +++ b/plugins/buildpacks/src/triggers/triggers.go @@ -19,6 +19,14 @@ func main() { switch trigger { case "install": buildpacks.TriggerInstall() + case "post-app-clone-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + buildpacks.TriggerPostAppCloneSetup(oldAppName, newAppName) + case "post-app-rename-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + buildpacks.TriggerPostAppRenameSetup(oldAppName, newAppName) case "post-delete": appName := flag.Arg(0) buildpacks.TriggerPostDelete(appName) diff --git a/plugins/buildpacks/triggers.go b/plugins/buildpacks/triggers.go index d06e387e4..26481c634 100644 --- a/plugins/buildpacks/triggers.go +++ b/plugins/buildpacks/triggers.go @@ -16,6 +16,29 @@ func TriggerInstall() { } } +// TriggerPostAppCloneSetup creates new buildpacks files +func TriggerPostAppCloneSetup(oldAppName string, newAppName string) error { + err := common.PropertyClone("buildpacks", oldAppName, newAppName) + if err != nil { + return err + } + + return nil +} + +// TriggerPostAppRenameSetup renames buildpacks files +func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error { + if err := common.PropertyClone("buildpacks", oldAppName, newAppName); err != nil { + return err + } + + if err := common.PropertyDestroy("buildpacks", oldAppName); err != nil { + return err + } + + return nil +} + // TriggerPostDelete destroys the buildpacks property for a given app container func TriggerPostDelete(appName string) { err := common.PropertyDestroy("buildpacks", appName) diff --git a/plugins/git/post-app-clone-setup b/plugins/git/post-app-clone-setup index 68db5a879..b0d6a21c0 100755 --- a/plugins/git/post-app-clone-setup +++ b/plugins/git/post-app-clone-setup @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -eo pipefail [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" trigger-git-post-app-clone-setup() { declare desc="modifies git-hook" @@ -10,6 +11,8 @@ trigger-git-post-app-clone-setup() { if [[ -f "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive" ]]; then sed -i -e "s/git-hook $OLD_APP/git-hook $NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive" fi + + fn-plugin-property-clone "git" "$OLD_APP" "$NEW_APP" } trigger-git-post-app-clone-setup "$@" diff --git a/plugins/git/post-app-rename-setup b/plugins/git/post-app-rename-setup index 544da745b..960d10461 100755 --- a/plugins/git/post-app-rename-setup +++ b/plugins/git/post-app-rename-setup @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -eo pipefail [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" trigger-git-post-app-rename-setup() { declare desc="modifies git-hook" @@ -10,6 +11,9 @@ trigger-git-post-app-rename-setup() { if [[ -f "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive" ]]; then sed -i -e "s/git-hook $OLD_APP/git-hook $NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive" fi + + fn-plugin-property-clone "git" "$OLD_APP" "$NEW_APP" + fn-plugin-property-destroy "git" "$OLD_APP" } trigger-git-post-app-rename-setup "$@" diff --git a/plugins/network/Makefile b/plugins/network/Makefile index fe23e2813..32a94414d 100644 --- a/plugins/network/Makefile +++ b/plugins/network/Makefile @@ -1,5 +1,5 @@ SUBCOMMANDS = subcommands/create subcommands/destroy subcommands/exists subcommands/info subcommands/list subcommands/rebuild subcommands/rebuildall subcommands/report subcommands/set -TRIGGERS = triggers/core-post-deploy triggers/install triggers/network-build-config triggers/network-compute-ports triggers/network-config-exists triggers/network-get-ipaddr triggers/network-get-listeners triggers/network-get-port triggers/network-get-property triggers/network-write-ipaddr triggers/network-write-port triggers/post-app-clone-setup triggers/post-container-create triggers/post-create triggers/post-delete triggers/report +TRIGGERS = triggers/core-post-deploy triggers/install triggers/network-build-config triggers/network-compute-ports triggers/network-config-exists triggers/network-get-ipaddr triggers/network-get-listeners triggers/network-get-port triggers/network-get-property triggers/network-write-ipaddr triggers/network-write-port triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-container-create triggers/post-create triggers/post-delete triggers/report BUILD = commands subcommands triggers PLUGIN_NAME = network diff --git a/plugins/network/network.go b/plugins/network/network.go index 149fc3ff8..4516b36ed 100644 --- a/plugins/network/network.go +++ b/plugins/network/network.go @@ -188,8 +188,8 @@ func HasNetworkConfig(appName string) bool { return common.FileExists(ipfile) && common.FileExists(portfile) } -// PostAppCloneSetup removes old IP and PORT files for a newly cloned app -func PostAppCloneSetup(appName string) bool { +// ClearNetworkConfig removes old IP and PORT files for a newly cloned app +func ClearNetworkConfig(appName string) bool { dokkuRoot := common.MustGetEnv("DOKKU_ROOT") appRoot := strings.Join([]string{dokkuRoot, appName}, "/") success := true diff --git a/plugins/network/src/triggers/triggers.go b/plugins/network/src/triggers/triggers.go index 24bdd96d0..76a5c2e19 100644 --- a/plugins/network/src/triggers/triggers.go +++ b/plugins/network/src/triggers/triggers.go @@ -61,8 +61,13 @@ func main() { port := flag.Arg(3) network.TriggerNetworkWritePort(appName, processType, containerIndex, port) case "post-app-clone-setup": - appName := flag.Arg(1) - network.TriggerPostAppCloneSetup(appName) + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + network.TriggerPostAppCloneSetup(oldAppName, newAppName) + case "post-app-rename-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + network.TriggerPostAppRenameSetup(oldAppName, newAppName) case "post-container-create": containerType := flag.Arg(0) containerID := flag.Arg(1) diff --git a/plugins/network/triggers.go b/plugins/network/triggers.go index 8fa11724a..30b49d8b1 100644 --- a/plugins/network/triggers.go +++ b/plugins/network/triggers.go @@ -153,12 +153,37 @@ func TriggerNetworkWritePort(appName string, processType string, containerIndex } } -// TriggerPostAppCloneSetup cleans up network files for a new app clone -func TriggerPostAppCloneSetup(appName string) { - success := PostAppCloneSetup(appName) +// TriggerPostAppCloneSetup creates new network files +func TriggerPostAppCloneSetup(oldAppName string, newAppName string) error { + success := ClearNetworkConfig(newAppName) if !success { os.Exit(1) } + + err := common.PropertyClone("network", oldAppName, newAppName) + if err != nil { + return err + } + + return nil +} + +// TriggerPostAppRenameSetup renames network files +func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error { + success := ClearNetworkConfig(newAppName) + if !success { + os.Exit(1) + } + + if err := common.PropertyClone("network", oldAppName, newAppName); err != nil { + return err + } + + if err := common.PropertyDestroy("network", oldAppName); err != nil { + return err + } + + return nil } // TriggerPostContainerCreate associates the container with a specified network diff --git a/plugins/nginx-vhosts/post-app-clone-setup b/plugins/nginx-vhosts/post-app-clone-setup index c35608d1f..181bb2a0a 100755 --- a/plugins/nginx-vhosts/post-app-clone-setup +++ b/plugins/nginx-vhosts/post-app-clone-setup @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -eo pipefail [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" trigger-nginx-vhosts-post-app-clone-setup() { declare desc="removes nginx files when setting up a clone" @@ -8,6 +9,7 @@ trigger-nginx-vhosts-post-app-clone-setup() { declare OLD_APP="$1" NEW_APP="$2" local APP_DIR="$DOKKU_ROOT/$NEW_APP" + fn-plugin-property-clone "nginx" "$OLD_APP" "$NEW_APP" rm -rf "$APP_DIR/nginx.conf" } diff --git a/plugins/nginx-vhosts/post-app-rename-setup b/plugins/nginx-vhosts/post-app-rename-setup index 05ab658f1..598b4fbd7 100755 --- a/plugins/nginx-vhosts/post-app-rename-setup +++ b/plugins/nginx-vhosts/post-app-rename-setup @@ -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/nginx-vhosts/internal-functions" source "$PLUGIN_AVAILABLE_PATH/proxy/functions" @@ -10,6 +11,8 @@ trigger-nginx-vhosts-post-app-rename-setup() { declare trigger="post-app-rename-setup" declare OLD_APP="$1" NEW_APP="$2" + fn-plugin-property-clone "nginx" "$OLD_APP" "$NEW_APP" + fn-plugin-property-destroy "nginx" "$OLD_APP" plugn trigger proxy-clear-config "$NEW_APP" } diff --git a/plugins/resource/.gitignore b/plugins/resource/.gitignore index a34683d35..1e1f0ddd2 100644 --- a/plugins/resource/.gitignore +++ b/plugins/resource/.gitignore @@ -3,7 +3,7 @@ /triggers/* /triggers /install -/post-delete +/post-* /report /docker-args-process-deploy /docker-args-process-run diff --git a/plugins/resource/Makefile b/plugins/resource/Makefile index ea16485f9..9357f9cc2 100644 --- a/plugins/resource/Makefile +++ b/plugins/resource/Makefile @@ -1,5 +1,5 @@ SUBCOMMANDS = subcommands/limit subcommands/limit-clear subcommands/report subcommands/reserve subcommands/reserve-clear -TRIGGERS = triggers/docker-args-process-deploy triggers/install triggers/post-delete triggers/report triggers/resource-get-property +TRIGGERS = triggers/docker-args-process-deploy triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/report triggers/resource-get-property BUILD = commands subcommands triggers PLUGIN_NAME = resource diff --git a/plugins/resource/src/triggers/triggers.go b/plugins/resource/src/triggers/triggers.go index 2bdf6d362..82d7bf5a8 100644 --- a/plugins/resource/src/triggers/triggers.go +++ b/plugins/resource/src/triggers/triggers.go @@ -24,6 +24,14 @@ func main() { err = resource.TriggerDockerArgsProcessDeploy(appName, processType) case "install": err = resource.TriggerInstall() + case "post-app-clone-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + err := resource.TriggerPostAppCloneSetup(oldAppName, newAppName) + case "post-app-rename-setup": + oldAppName := flag.Arg(0) + newAppName := flag.Arg(1) + err := resource.TriggerPostAppRenameSetup(oldAppName, newAppName) case "post-delete": appName := flag.Arg(0) err = resource.TriggerPostDelete(appName) diff --git a/plugins/resource/triggers.go b/plugins/resource/triggers.go index 4b9469a79..cf2dddb06 100644 --- a/plugins/resource/triggers.go +++ b/plugins/resource/triggers.go @@ -92,6 +92,29 @@ func TriggerInstall() error { return nil } +// TriggerPostAppCloneSetup creates new resource files +func TriggerPostAppCloneSetup(oldAppName string, newAppName string) error { + err := common.PropertyClone("resource", oldAppName, newAppName) + if err != nil { + return err + } + + return nil +} + +// TriggerPostAppRenameSetup renames resource files +func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error { + if err := common.PropertyClone("resource", oldAppName, newAppName); err != nil { + return err + } + + if err := common.PropertyDestroy("resource", oldAppName); err != nil { + return err + } + + return nil +} + // TriggerPostDelete destroys the resource property for a given app container func TriggerPostDelete(appName string) error { return common.PropertyDestroy("resource", appName) diff --git a/plugins/scheduler-docker-local/post-app-clone-setup b/plugins/scheduler-docker-local/post-app-clone-setup index f829496a5..1b3aa0e15 100755 --- a/plugins/scheduler-docker-local/post-app-clone-setup +++ b/plugins/scheduler-docker-local/post-app-clone-setup @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -eo pipefail [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" trigger-scheduler-docker-local-post-app-clone-setup() { declare desc="removes docker-local files when setting up a clone" @@ -8,6 +9,7 @@ trigger-scheduler-docker-local-post-app-clone-setup() { declare OLD_APP="$1" NEW_APP="$2" local APP_DIR="$DOKKU_ROOT/$NEW_APP" + fn-plugin-property-clone "scheduler-docker-local" "$OLD_APP" "$NEW_APP" find "$APP_DIR" -type f -name 'CONTAINER.*' -exec rm {} \; } diff --git a/plugins/scheduler-docker-local/post-app-rename-setup b/plugins/scheduler-docker-local/post-app-rename-setup new file mode 100755 index 000000000..c810bc8db --- /dev/null +++ b/plugins/scheduler-docker-local/post-app-rename-setup @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions" + +trigger-scheduler-docker-local-post-app-rename-setup() { + declare desc="updates settings when renaming an app" + declare trigger="post-app-rename-setup" + declare OLD_APP="$1" NEW_APP="$2" + local APP_DIR="$DOKKU_ROOT/$NEW_APP" + + fn-plugin-property-clone "scheduler-docker-local" "$OLD_APP" "$NEW_APP" + fn-plugin-property-destroy "scheduler-docker-local" "$OLD_APP" +} + +trigger-scheduler-docker-local-post-app-rename-setup "$@"