Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 3bd1fb9

Browse files
committed
#211 Can now export groups and specify a group for servers/tasks
1 parent 17ec400 commit 3bd1fb9

File tree

13 files changed

+113
-16
lines changed

13 files changed

+113
-16
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
group=com.marklogic
22
javadocsDir=../gh-pages-marklogic-java/javadocs
3-
version=3.1.0
3+
version=dev
44
mlJavaclientUtilVersion=77
55
mlJunitVersion=3.1.0
66

src/main/java/com/marklogic/appdeployer/ConfigDir.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,10 @@ public File getFlexrepConfigsDir() {
128128
return new File(getFlexrepDir(), "configs");
129129
}
130130

131+
public File getGroupsDir() {
132+
return new File(baseDir, "groups");
133+
}
134+
131135
public File getViewSchemasDir() {
132136
return new File(baseDir, "view-schemas");
133137
}

src/main/java/com/marklogic/appdeployer/command/groups/DeployGroupsCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public DeployGroupsCommand() {
1818

1919
@Override
2020
protected File[] getResourceDirs(CommandContext context) {
21-
return new File[] { new File(context.getAppConfig().getConfigDir().getBaseDir(), "groups") };
21+
return new File[] { context.getAppConfig().getConfigDir().getGroupsDir() };
2222
}
2323

2424
@Override

src/main/java/com/marklogic/appdeployer/export/ExportedResources.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ public ExportedResources(List<File> files, String... messages) {
2020
this.messages = new ArrayList<>();
2121
if (messages != null) {
2222
for (String s : messages) {
23-
this.messages.add(s);
23+
if (s != null) {
24+
this.messages.add(s);
25+
}
2426
}
2527
}
2628
}

src/main/java/com/marklogic/appdeployer/export/Exporter.java

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.marklogic.appdeployer.export.appservers.ServerExporter;
44
import com.marklogic.appdeployer.export.databases.DatabaseExporter;
5+
import com.marklogic.appdeployer.export.groups.GroupExporter;
56
import com.marklogic.appdeployer.export.impl.CompositeResourceExporter;
67
import com.marklogic.appdeployer.export.security.AmpExporter;
78
import com.marklogic.appdeployer.export.security.PrivilegeExporter;
@@ -22,14 +23,26 @@ public class Exporter extends LoggingObject {
2223

2324
private CompositeResourceExporter compositeExporter;
2425
private ManageClient manageClient;
26+
private String groupName;
2527

2628
public static Exporter client(ManageClient manageClient) {
2729
return new Exporter(manageClient);
2830
}
2931

3032
public Exporter(ManageClient manageClient) {
33+
this(manageClient, null);
34+
}
35+
36+
/**
37+
* If set, the groupName will be used when exporting servers and tasks.
38+
*
39+
* @param manageClient
40+
* @param groupName
41+
*/
42+
public Exporter(ManageClient manageClient, String groupName) {
3143
this.manageClient = manageClient;
3244
compositeExporter = new CompositeResourceExporter();
45+
this.groupName = groupName;
3346
}
3447

3548
public Exporter select(ResourceSelector selector) {
@@ -67,6 +80,10 @@ public Exporter databases(String... databaseNames) {
6780
return add(new DatabaseExporter(manageClient, databaseNames));
6881
}
6982

83+
public Exporter groups(String... groupNames) {
84+
return add(new GroupExporter(manageClient, groupNames));
85+
}
86+
7087
public Exporter privilegesExecute(String... privilegeNames) {
7188
return add(new PrivilegeExporter(manageClient, privilegeNames));
7289
}
@@ -82,15 +99,34 @@ public Exporter roles(String... roleNames) {
8299
}
83100

84101
public Exporter servers(String... serverNames) {
85-
return add(new ServerExporter(manageClient, serverNames));
102+
return add(buildServerExporter(serverNames));
103+
}
104+
105+
public Exporter serversNoDatabases(String... serverNames) {
106+
ServerExporter se = buildServerExporter(serverNames);
107+
se.setExportDatabases(false);
108+
return add(se);
109+
}
110+
111+
protected ServerExporter buildServerExporter(String... serverNames) {
112+
return groupName != null ? new ServerExporter(groupName, manageClient, serverNames) : new ServerExporter(manageClient, serverNames);
86113
}
87114

88115
public Exporter tasks(String... taskNames) {
89-
return add(new TaskExporter(manageClient, taskNames));
116+
TaskExporter te;
117+
if (groupName != null) {
118+
te = new TaskExporter(groupName, manageClient, taskNames);
119+
} else {
120+
te = new TaskExporter(manageClient, taskNames);
121+
}
122+
return add(te);
90123
}
91124

92125
public Exporter users(String... usernames) {
93126
return add(new UserExporter(manageClient, usernames));
94127
}
95128

129+
public void setGroupName(String groupName) {
130+
this.groupName = groupName;
131+
}
96132
}

src/main/java/com/marklogic/appdeployer/export/appservers/ServerExporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public ExportedResources exportResources(File baseDir) {
4747
}
4848

4949
protected ExportedResources exportDatabases(File baseDir, ExportedResources resources) {
50-
ServerManager mgr = new ServerManager(getManageClient());
50+
ServerManager mgr = groupName != null ? new ServerManager(getManageClient(), groupName) : new ServerManager(getManageClient());
5151
for (String serverName : getResourceNames()) {
5252
String json = mgr.getPropertiesAsJson(serverName);
5353
ObjectNode server = (ObjectNode) payloadParser.parseJson(json);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.marklogic.appdeployer.export.groups;
2+
3+
import com.marklogic.appdeployer.ConfigDir;
4+
import com.marklogic.appdeployer.export.impl.AbstractNamedResourceExporter;
5+
import com.marklogic.mgmt.ManageClient;
6+
import com.marklogic.mgmt.resource.ResourceManager;
7+
import com.marklogic.mgmt.resource.groups.GroupManager;
8+
9+
import java.io.File;
10+
11+
public class GroupExporter extends AbstractNamedResourceExporter {
12+
13+
public GroupExporter(ManageClient manageClient, String... resourceNames) {
14+
super(manageClient, resourceNames);
15+
}
16+
17+
@Override
18+
protected ResourceManager newResourceManager(ManageClient manageClient) {
19+
return new GroupManager(manageClient);
20+
}
21+
22+
@Override
23+
protected File getResourceDirectory(File baseDir) {
24+
return new ConfigDir(baseDir).getGroupsDir();
25+
}
26+
}

src/main/java/com/marklogic/mgmt/selector/AbstractNameMatchingResourceSelector.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.marklogic.mgmt.resource.ResourceManager;
55
import com.marklogic.mgmt.resource.appservers.ServerManager;
66
import com.marklogic.mgmt.resource.databases.DatabaseManager;
7+
import com.marklogic.mgmt.resource.groups.GroupManager;
78
import com.marklogic.mgmt.resource.security.AmpManager;
89
import com.marklogic.mgmt.resource.security.PrivilegeManager;
910
import com.marklogic.mgmt.resource.security.RoleManager;
@@ -30,6 +31,7 @@ public ResourceSelection selectResources(ManageClient manageClient) {
3031
select(selection, new DatabaseManager(manageClient), MapResourceSelection.DATABASES);
3132
select(selection, new RoleManager(manageClient), MapResourceSelection.ROLES);
3233
select(selection, new UserManager(manageClient), MapResourceSelection.USERS);
34+
select(selection, new GroupManager(manageClient), MapResourceSelection.GROUPS);
3335
selectPrivileges(selection, manageClient);
3436
selectTasks(selection, manageClient);
3537
selectAmps(selection, manageClient);

src/main/java/com/marklogic/mgmt/selector/MapResourceSelection.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public String[] getDatabaseNames() {
3939
return getSelectedResourceNames(DATABASES);
4040
}
4141

42+
@Override
43+
public String[] getGroupNames() {
44+
return getSelectedResourceNames(GROUPS);
45+
}
46+
4247
@Override
4348
public String[] getPrivilegeExecuteNames() {
4449
return getSelectedResourceNames(PRIVILEGES_EXECUTE);

src/main/java/com/marklogic/mgmt/selector/ResourceSelection.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package com.marklogic.mgmt.selector;
22

3-
import com.marklogic.mgmt.api.security.Amp;
4-
53
public interface ResourceSelection {
64

75
String AMPS = "amps";
86
String DATABASES = "databases";
7+
String GROUPS = "groups";
98
String PRIVILEGES_EXECUTE = "privilegesExecute";
109
String PRIVILEGES_URI = "privilegesUri";
1110
String ROLES = "roles";
@@ -15,6 +14,8 @@ public interface ResourceSelection {
1514

1615
String[] getDatabaseNames();
1716

17+
String[] getGroupNames();
18+
1819
String[] getPrivilegeExecuteNames();
1920

2021
String[] getPrivilegeUriNames();

src/test/java/com/marklogic/appdeployer/AbstractAppDeployerTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,7 @@ protected void deploySampleApp() {
6363
}
6464

6565
protected void undeploySampleApp() {
66-
try {
67-
appDeployer.undeploy(appConfig);
68-
} catch (Exception e) {
69-
logger.warn("Error while waiting for MarkLogic to restart: " + e.getMessage());
70-
}
66+
appDeployer.undeploy(appConfig);
7167
}
7268

7369
protected XccTemplate newModulesXccTemplate() {

src/test/java/com/marklogic/appdeployer/export/ExportServerTest.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.marklogic.appdeployer.export;
22

3+
import com.marklogic.appdeployer.ConfigDir;
34
import com.marklogic.appdeployer.command.appservers.DeployOtherServersCommand;
4-
import com.marklogic.appdeployer.command.databases.DeployContentDatabasesCommand;
55
import com.marklogic.appdeployer.command.databases.DeployOtherDatabasesCommand;
6+
import com.marklogic.appdeployer.command.groups.DeployGroupsCommand;
67
import com.marklogic.appdeployer.command.restapis.DeployRestApiServersCommand;
8+
import com.marklogic.mgmt.resource.appservers.ServerManager;
9+
import com.marklogic.mgmt.resource.groups.GroupManager;
710
import org.junit.After;
811
import org.junit.Test;
912

@@ -22,12 +25,34 @@ public void test() {
2225
initializeAppDeployer(new DeployRestApiServersCommand(true));
2326
deploySampleApp();
2427

25-
new Exporter(manageClient).servers("sample-app").export(exportDir);
28+
new Exporter(manageClient, "Default").servers("sample-app").export(exportDir);
2629

2730
undeploySampleApp();
2831

2932
appConfig.getConfigDir().setBaseDir(exportDir);
3033
initializeAppDeployer(new DeployOtherServersCommand(), new DeployOtherDatabasesCommand());
3134
deploySampleApp();
3235
}
36+
37+
@Test
38+
public void serverInOtherGroup() {
39+
appConfig.setConfigDir(new ConfigDir(new File("src/test/resources/sample-app/other-group")));
40+
initializeAppDeployer(new DeployGroupsCommand(), new DeployOtherServersCommand());
41+
42+
final String groupName = "sample-app-other-group";
43+
final String serverName = "sample-app-other-server";
44+
45+
deploySampleApp();
46+
new Exporter(manageClient, groupName).groups(groupName).serversNoDatabases(serverName).export(exportDir);
47+
undeploySampleApp();
48+
49+
assertFalse(new GroupManager(manageClient).exists(groupName));
50+
assertFalse(new ServerManager(manageClient).exists(serverName));
51+
52+
appConfig.getConfigDir().setBaseDir(exportDir);
53+
deploySampleApp();
54+
55+
assertTrue(new GroupManager(manageClient).exists(groupName));
56+
assertTrue(new ServerManager(manageClient).exists(serverName));
57+
}
3358
}

src/test/java/com/marklogic/appdeployer/export/ExportTasksTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void test() {
2525
PrefixResourceSelector selector = new PrefixResourceSelector("/path");
2626
selector.setIncludeTypesAsString(ResourceSelection.TASKS + "," + ResourceSelection.USERS);
2727

28-
ExportedResources resources = new Exporter(manageClient).select(selector).export(exportDir);
28+
ExportedResources resources = new Exporter(manageClient, "Default").select(selector).export(exportDir);
2929
assertEquals(1, resources.getFiles().size());
3030
assertEquals("query.xqy.json", resources.getFiles().get(0).getName());
3131

0 commit comments

Comments
 (0)