Skip to content

Commit 90dbb99

Browse files
committed
Add geoserver backup and geoserver restore commands
1 parent de08b62 commit 90dbb99

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

README.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ Commands
9494

9595
* geoserver reset
9696

97+
* geoserver backup --directory backup1 --includedata false --includegwc false --includelog true
98+
99+
* geoserver restore --directory backup1
100+
97101
* about
98102

99103
* version list

src/main/java/org/geoserver/shell/GeoserverCommands.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.springframework.shell.core.annotation.CliOption;
99
import org.springframework.stereotype.Component;
1010

11+
import java.io.File;
12+
1113
@Component
1214
public class GeoserverCommands implements CommandMarker {
1315

@@ -18,7 +20,7 @@ public void setGeoserver(Geoserver gs) {
1820
this.geoserver = gs;
1921
}
2022

21-
@CliAvailabilityIndicator({"geoserver reset", "geoserver reload"})
23+
@CliAvailabilityIndicator({"geoserver reset", "geoserver reload", "geoserver backup"})
2224
public boolean isCommandAvailable() {
2325
return geoserver.isSet();
2426
}
@@ -56,4 +58,25 @@ public boolean reload() {
5658
GeoServerRESTPublisher publisher = new GeoServerRESTPublisher(geoserver.getUrl(), geoserver.getUser(), geoserver.getPassword());
5759
return publisher.reload();
5860
}
61+
62+
@CliCommand(value = "geoserver backup", help = "Backup Geoserver's configuration.")
63+
public boolean backup(
64+
@CliOption(key = "directory", mandatory = true, help = "The backup ") String backupDir,
65+
@CliOption(key = "includedata", mandatory = false, unspecifiedDefaultValue = "false", help = "The include data flag") boolean includeData,
66+
@CliOption(key = "includegwc", mandatory = false, unspecifiedDefaultValue = "false", help = "The include GWC flag") boolean includeGwc,
67+
@CliOption(key = "includelog", mandatory = false, unspecifiedDefaultValue = "false", help = "The include log files flag") boolean includeLog
68+
) {
69+
GeoServerRESTPublisher publisher = new GeoServerRESTPublisher(geoserver.getUrl(), geoserver.getUser(), geoserver.getPassword());
70+
String result = publisher.backup(backupDir, includeData, includeGwc, includeLog);
71+
return result != null;
72+
}
73+
74+
@CliCommand(value = "geoserver restore", help = "Restore Geoserver's configuration from a backup directory.")
75+
public boolean restore(
76+
@CliOption(key = "directory", mandatory = true, help = "The backup ") String backupDir
77+
) {
78+
GeoServerRESTPublisher publisher = new GeoServerRESTPublisher(geoserver.getUrl(), geoserver.getUser(), geoserver.getPassword());
79+
String result = publisher.restore(backupDir);
80+
return result != null;
81+
}
5982
}

src/test/java/org/geoserver/shell/GeoserverCommandsTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,35 @@ public void reload() throws Exception {
7777
assertTrue(result);
7878
verifyHttp(server).once(method(Method.POST), uri(url));
7979
}
80+
81+
@Test
82+
public void backup() throws Exception {
83+
String url = "/geoserver/rest/bkprst/backup";
84+
whenHttp(server).match(post(url)).then(stringContent("true"), status(HttpStatus.OK_200));
85+
Geoserver geoserver = new Geoserver("http://00.0.0.0:8888/geoserver", "admin", "geoserver");
86+
GeoserverCommands commands = new GeoserverCommands();
87+
commands.setGeoserver(geoserver);
88+
boolean result = commands.backup("backupdir1", true, true, false);
89+
assertTrue(result);
90+
String expected = "<task><path>backupdir1</path><includedata>true</includedata><includegwc>true</includegwc><includelog>false</includelog></task>";
91+
String actual = server.getCalls().get(0).getPostBody();
92+
assertEquals(expected, actual);
93+
verifyHttp(server).once(method(Method.POST), uri(url));
94+
}
95+
96+
@Test
97+
public void restore() throws Exception {
98+
String url = "/geoserver/rest/bkprst/restore";
99+
whenHttp(server).match(post(url)).then(stringContent("true"), status(HttpStatus.OK_200));
100+
Geoserver geoserver = new Geoserver("http://00.0.0.0:8888/geoserver", "admin", "geoserver");
101+
GeoserverCommands commands = new GeoserverCommands();
102+
commands.setGeoserver(geoserver);
103+
boolean result = commands.restore("backupdir1");
104+
assertTrue(result);
105+
String expected = "<task><path>backupdir1</path></task>";
106+
String actual = server.getCalls().get(0).getPostBody();
107+
assertEquals(expected, actual);
108+
verifyHttp(server).once(method(Method.POST), uri(url));
109+
}
110+
80111
}

0 commit comments

Comments
 (0)