From cfd8f237df6004660e82ed27357f71cb80ee04ad Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 27 Dec 2018 05:01:45 -0500 Subject: [PATCH] feat: cleanup IP and PORT files on app clone --- plugins/network/.gitignore | 3 ++- plugins/network/Makefile | 2 +- plugins/network/network.go | 23 +++++++++++++++++++ .../post-app-clone-setup.go | 19 +++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 plugins/network/src/triggers/post-app-clone-setup/post-app-clone-setup.go diff --git a/plugins/network/.gitignore b/plugins/network/.gitignore index 93636e7a5..7674a1147 100644 --- a/plugins/network/.gitignore +++ b/plugins/network/.gitignore @@ -3,6 +3,7 @@ /triggers/* /network-* /install +/post-app-clone-setup /post-create /post-delete -/report \ No newline at end of file +/report diff --git a/plugins/network/Makefile b/plugins/network/Makefile index dc1d9f7ce..671e88ae7 100644 --- a/plugins/network/Makefile +++ b/plugins/network/Makefile @@ -3,7 +3,7 @@ include ../../common.mk GO_ARGS ?= -a SUBCOMMANDS = subcommands/rebuild subcommands/rebuildall subcommands/report subcommands/set -TRIGGERS = 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-create triggers/post-delete triggers/report +TRIGGERS = 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-create triggers/post-delete triggers/report build-in-docker: clean docker run --rm \ -v $$PWD/../..:$(GO_REPO_ROOT) \ diff --git a/plugins/network/network.go b/plugins/network/network.go index cab14abcd..af44450d3 100644 --- a/plugins/network/network.go +++ b/plugins/network/network.go @@ -180,6 +180,29 @@ 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 { + dokkuRoot := common.MustGetEnv("DOKKU_ROOT") + appRoot := strings.Join([]string{dokkuRoot, appName}, "/") + success := true + + ipFiles, _ := filepath.Glob(appRoot + "/IP.*") + for _, file := range ipFiles { + if err := os.Remove(file); err != nil { + common.LogWarn(fmt.Sprintf("Unable to remove file %s", file)) + success = false + } + } + portFiles, _ := filepath.Glob(appRoot + "/PORT.*") + for _, file := range portFiles { + if err := os.Remove(file); err != nil { + common.LogWarn(fmt.Sprintf("Unable to remove file %s", file)) + success = false + } + } + return success +} + // ReportSingleApp is an internal function that displays the app report for one or more apps func ReportSingleApp(appName, infoFlag string) { if err := common.VerifyAppName(appName); err != nil { diff --git a/plugins/network/src/triggers/post-app-clone-setup/post-app-clone-setup.go b/plugins/network/src/triggers/post-app-clone-setup/post-app-clone-setup.go new file mode 100644 index 000000000..70adb14ce --- /dev/null +++ b/plugins/network/src/triggers/post-app-clone-setup/post-app-clone-setup.go @@ -0,0 +1,19 @@ +package main + +import ( + "flag" + "os" + + "github.com/dokku/dokku/plugins/network" +) + +// cleanup network files for a new app clone +func main() { + flag.Parse() + appName := flag.Arg(1) + + success := network.PostAppCloneSetup(appName) + if !success { + os.Exit(1) + } +}