diff pkg/geoserver/boot.go @ 874:da526b58c9c4 geo-style

Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 30 Sep 2018 15:36:17 +0200
parents aa8f30c1ed27
children 371c756f0370
line wrap: on
line diff
--- 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
 	}