# HG changeset patch # User Sascha L. Teichmann # Date 1538314577 -7200 # Node ID da526b58c9c4fc015f49559eae4ce287082a031d # Parent ad9272460ef3e3163659f9e4ce5262c033a2bd13 Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again. diff -r ad9272460ef3 -r da526b58c9c4 pkg/config/config.go --- a/pkg/config/config.go Sun Sep 30 14:24:37 2018 +0200 +++ b/pkg/config/config.go Sun Sep 30 15:36:17 2018 +0200 @@ -45,6 +45,7 @@ func GeoServerURL() string { return viper.GetString("geoserver-url") } func GeoServerUser() string { return viper.GetString("geoserver-user") } func GeoServerPassword() string { return viper.GetString("geoserver-password") } +func GeoServerClean() bool { return viper.GetBool("geoserver-clean") } var ( proxyKeyOnce sync.Once @@ -116,6 +117,10 @@ fl.StringSlice(name, value, usage) vbind(name) } + bl := func(name string, value bool, usage string) { + fl.Bool(name, value, usage) + vbind(name) + } strP("db-host", "H", "localhost", "host of the database") uiP("db-port", "P", 5432, "port of the database") @@ -143,6 +148,7 @@ str("geoserver-url", "http://localhost:8080/geoserver", "URL to GeoServer") str("geoserver-user", "admin", "GeoServer user") str("geoserver-password", "geoserver", "GeoServer password") + bl("geoserver-clean", false, "Clean GeoServer setup") str("proxy-key", "", `signing key for proxy URLs. Defaults to random key.`) str("proxy-prefix", "", `URL prefix of proxy. Defaults to "http://${web-host}:${web-port}"`) diff -r ad9272460ef3 -r da526b58c9c4 pkg/geoserver/boot.go --- a/pkg/geoserver/boot.go Sun Sep 30 14:24:37 2018 +0200 +++ b/pkg/geoserver/boot.go Sun Sep 30 15:36:17 2018 +0200 @@ -287,6 +287,27 @@ return nil } +func deleteWorkspace() error { + log.Println("info: delete workspace " + workspaceName) + var ( + url = config.GeoServerURL() + user = config.GeoServerUser() + password = config.GeoServerPassword() + auth = basicAuth(user, password) + ) + + req, err := http.NewRequest( + http.MethodDelete, + url+"/rest/workspaces/"+workspaceName+"?recurse=true", + nil) + if err != nil { + return err + } + auth(req) + _, err = http.DefaultClient.Do(req) + return err +} + func prepareGeoServer() error { if config.DBUser() == "" { @@ -299,6 +320,13 @@ return nil } + // Should we delete our workspace first? + if config.GeoServerClean() { + if err := deleteWorkspace(); err != nil { + return err + } + } + if err := ensureWorkspace(); err != nil { return err }