feat: cleanup IP and PORT files on app clone
This commit is contained in:
1
plugins/network/.gitignore
vendored
1
plugins/network/.gitignore
vendored
@@ -3,6 +3,7 @@
|
|||||||
/triggers/*
|
/triggers/*
|
||||||
/network-*
|
/network-*
|
||||||
/install
|
/install
|
||||||
|
/post-app-clone-setup
|
||||||
/post-create
|
/post-create
|
||||||
/post-delete
|
/post-delete
|
||||||
/report
|
/report
|
||||||
@@ -3,7 +3,7 @@ include ../../common.mk
|
|||||||
GO_ARGS ?= -a
|
GO_ARGS ?= -a
|
||||||
|
|
||||||
SUBCOMMANDS = subcommands/rebuild subcommands/rebuildall subcommands/report subcommands/set
|
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
|
build-in-docker: clean
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v $$PWD/../..:$(GO_REPO_ROOT) \
|
-v $$PWD/../..:$(GO_REPO_ROOT) \
|
||||||
|
|||||||
@@ -180,6 +180,29 @@ func HasNetworkConfig(appName string) bool {
|
|||||||
return common.FileExists(ipfile) && common.FileExists(portfile)
|
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
|
// ReportSingleApp is an internal function that displays the app report for one or more apps
|
||||||
func ReportSingleApp(appName, infoFlag string) {
|
func ReportSingleApp(appName, infoFlag string) {
|
||||||
if err := common.VerifyAppName(appName); err != nil {
|
if err := common.VerifyAppName(appName); err != nil {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user