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

Commit 27eb090

Browse files
committed
#238 Can now export CPF resources
Reworked AbstractCpfResourceManager Also removed OBE message from RoleExporter
1 parent 5c8fd44 commit 27eb090

21 files changed

+362
-138
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,18 @@ public File getCpfDir() {
128128
return new File(baseDir, "cpf");
129129
}
130130

131+
public File getDomainsDir() {
132+
return new File(getCpfDir(), "domains");
133+
}
134+
135+
public File getPipelinesDir() {
136+
return new File(getCpfDir(), "pipelines");
137+
}
138+
139+
public File getCpfConfigsDir() {
140+
return new File(getCpfDir(), "cpf-configs");
141+
}
142+
131143
public File getClustersDir() {
132144
return new File(baseDir, "clusters");
133145
}

src/main/java/com/marklogic/appdeployer/command/cpf/AbstractCpfResourceCommand.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@
1010

1111
public abstract class AbstractCpfResourceCommand extends AbstractCommand {
1212

13-
protected abstract String getCpfDirectoryName();
13+
protected abstract File getCpfResourceDir(ConfigDir configDir);
1414

15-
protected abstract AbstractCpfResourceManager getResourceManager(CommandContext context);
15+
protected abstract AbstractCpfResourceManager getResourceManager(CommandContext context, String databaseIdOrName);
1616

1717
@Override
1818
public void execute(CommandContext context) {
1919
AppConfig config = context.getAppConfig();
2020
for (ConfigDir configDir : config.getConfigDirs()) {
21-
File dir = new File(configDir.getCpfDir(), getCpfDirectoryName());
21+
File dir = getCpfResourceDir(configDir);
2222
if (dir.exists()) {
23-
AbstractCpfResourceManager mgr = getResourceManager(context);
23+
AbstractCpfResourceManager mgr = getResourceManager(context, config.getTriggersDatabaseName());
2424
for (File f : listFilesInDirectory(dir)) {
2525
String payload = copyFileToString(f, context);
26-
mgr.save(config.getTriggersDatabaseName(), payload);
26+
mgr.save(payload);
2727
}
2828
} else {
2929
logResourceDirectoryNotFound(dir);
Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
package com.marklogic.appdeployer.command.cpf;
22

3+
import com.marklogic.appdeployer.ConfigDir;
34
import com.marklogic.appdeployer.command.CommandContext;
45
import com.marklogic.appdeployer.command.SortOrderConstants;
56
import com.marklogic.mgmt.resource.cpf.AbstractCpfResourceManager;
67
import com.marklogic.mgmt.resource.cpf.CpfConfigManager;
78

9+
import java.io.File;
10+
811
public class DeployCpfConfigsCommand extends AbstractCpfResourceCommand {
912

10-
public DeployCpfConfigsCommand() {
11-
setExecuteSortOrder(SortOrderConstants.DEPLOY_CPF_CONFIGS);
12-
}
13+
public DeployCpfConfigsCommand() {
14+
setExecuteSortOrder(SortOrderConstants.DEPLOY_CPF_CONFIGS);
15+
}
1316

14-
@Override
15-
protected String getCpfDirectoryName() {
16-
return "cpf-configs";
17-
}
17+
@Override
18+
protected File getCpfResourceDir(ConfigDir configDir) {
19+
return configDir.getCpfConfigsDir();
20+
}
1821

19-
@Override
20-
protected AbstractCpfResourceManager getResourceManager(CommandContext context) {
21-
return new CpfConfigManager(context.getManageClient());
22-
}
22+
@Override
23+
protected AbstractCpfResourceManager getResourceManager(CommandContext context, String databaseIdOrName) {
24+
return new CpfConfigManager(context.getManageClient(), databaseIdOrName);
25+
}
2326

2427
}

src/main/java/com/marklogic/appdeployer/command/cpf/DeployDefaultPipelinesCommand.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77

88
public class DeployDefaultPipelinesCommand extends AbstractCommand {
99

10-
public DeployDefaultPipelinesCommand() {
11-
setExecuteSortOrder(SortOrderConstants.DEPLOY_DEFAULT_PIPELINES);
12-
}
10+
public DeployDefaultPipelinesCommand() {
11+
setExecuteSortOrder(SortOrderConstants.DEPLOY_DEFAULT_PIPELINES);
12+
}
1313

14-
@Override
15-
public void execute(CommandContext context) {
16-
new PipelineManager(context.getManageClient()).loadDefaultPipelines(context.getAppConfig()
17-
.getTriggersDatabaseName());
18-
}
14+
@Override
15+
public void execute(CommandContext context) {
16+
new PipelineManager(context.getManageClient(), context.getAppConfig().getTriggersDatabaseName())
17+
.loadDefaultPipelines();
18+
}
1919

2020
}
Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
package com.marklogic.appdeployer.command.cpf;
22

3+
import com.marklogic.appdeployer.ConfigDir;
34
import com.marklogic.appdeployer.command.CommandContext;
45
import com.marklogic.appdeployer.command.SortOrderConstants;
56
import com.marklogic.mgmt.resource.cpf.AbstractCpfResourceManager;
67
import com.marklogic.mgmt.resource.cpf.DomainManager;
78

9+
import java.io.File;
10+
811
public class DeployDomainsCommand extends AbstractCpfResourceCommand {
912

10-
public DeployDomainsCommand() {
11-
setExecuteSortOrder(SortOrderConstants.DEPLOY_DOMAINS);
12-
}
13+
public DeployDomainsCommand() {
14+
setExecuteSortOrder(SortOrderConstants.DEPLOY_DOMAINS);
15+
}
1316

14-
@Override
15-
protected String getCpfDirectoryName() {
16-
return "domains";
17-
}
17+
@Override
18+
protected File getCpfResourceDir(ConfigDir configDir) {
19+
return configDir.getDomainsDir();
20+
}
1821

19-
@Override
20-
protected AbstractCpfResourceManager getResourceManager(CommandContext context) {
21-
return new DomainManager(context.getManageClient());
22-
}
22+
@Override
23+
protected AbstractCpfResourceManager getResourceManager(CommandContext context, String databaseIdOrName) {
24+
return new DomainManager(context.getManageClient(), databaseIdOrName);
25+
}
2326

2427
}
Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
package com.marklogic.appdeployer.command.cpf;
22

3+
import com.marklogic.appdeployer.ConfigDir;
34
import com.marklogic.appdeployer.command.CommandContext;
45
import com.marklogic.appdeployer.command.SortOrderConstants;
56
import com.marklogic.mgmt.resource.cpf.AbstractCpfResourceManager;
67
import com.marklogic.mgmt.resource.cpf.PipelineManager;
78

9+
import java.io.File;
10+
811
public class DeployPipelinesCommand extends AbstractCpfResourceCommand {
912

10-
public DeployPipelinesCommand() {
11-
setExecuteSortOrder(SortOrderConstants.DEPLOY_PIPELINES);
12-
}
13+
public DeployPipelinesCommand() {
14+
setExecuteSortOrder(SortOrderConstants.DEPLOY_PIPELINES);
15+
}
1316

14-
@Override
15-
protected String getCpfDirectoryName() {
16-
return "pipelines";
17-
}
17+
@Override
18+
protected File getCpfResourceDir(ConfigDir configDir) {
19+
return configDir.getPipelinesDir();
20+
}
1821

19-
@Override
20-
protected AbstractCpfResourceManager getResourceManager(CommandContext context) {
21-
return new PipelineManager(context.getManageClient());
22-
}
22+
@Override
23+
protected AbstractCpfResourceManager getResourceManager(CommandContext context, String databaseIdOrName) {
24+
return new PipelineManager(context.getManageClient(), databaseIdOrName);
25+
}
2326
}

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

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

33
import com.marklogic.appdeployer.export.appservers.ServerExporter;
4+
import com.marklogic.appdeployer.export.cpf.CpfConfigExporter;
5+
import com.marklogic.appdeployer.export.cpf.DomainExporter;
6+
import com.marklogic.appdeployer.export.cpf.PipelineExporter;
47
import com.marklogic.appdeployer.export.databases.DatabaseExporter;
58
import com.marklogic.appdeployer.export.groups.GroupExporter;
69
import com.marklogic.appdeployer.export.impl.CompositeResourceExporter;
@@ -24,6 +27,7 @@ public class Exporter extends LoggingObject {
2427
private CompositeResourceExporter compositeExporter;
2528
private ManageClient manageClient;
2629
private String groupName;
30+
private String triggersDatabase;
2731

2832
public static Exporter client(ManageClient manageClient) {
2933
return new Exporter(manageClient);
@@ -48,7 +52,10 @@ public Exporter(ManageClient manageClient, String groupName) {
4852
public Exporter select(ResourceSelector selector) {
4953
ResourceSelection selection = selector.selectResources(manageClient);
5054
amps(selection.getAmpUriRefs());
55+
cpfConfigs(triggersDatabase, selection.getCpfConfigNames());
5156
databases(selection.getDatabaseNames());
57+
domains(triggersDatabase, selection.getDomainNames());
58+
pipelines(triggersDatabase, selection.getPipelineNames());
5259
privilegesExecute(selection.getPrivilegeExecuteNames());
5360
privilegesUri(selection.getPrivilegeUriNames());
5461
roles(selection.getRoleNames());
@@ -73,60 +80,97 @@ public Exporter add(ResourceExporter resourceExporter) {
7380
}
7481

7582
public Exporter amps(String... ampUriRefs) {
76-
return add(new AmpExporter(manageClient, ampUriRefs));
83+
return (ampUriRefs != null && ampUriRefs.length > 0) ? add(new AmpExporter(manageClient, ampUriRefs)) : this;
84+
}
85+
86+
/**
87+
* A CPF config is identified by its domain name.
88+
*
89+
* @param databaseIdOrName
90+
* @param domainNames
91+
* @return
92+
*/
93+
public Exporter cpfConfigs(String databaseIdOrName, String... domainNames) {
94+
return (domainNames != null && domainNames.length > 0) ? add(new CpfConfigExporter(manageClient, databaseIdOrName, domainNames)) : null;
7795
}
7896

7997
public Exporter databases(String... databaseNames) {
80-
return add(new DatabaseExporter(manageClient, databaseNames));
98+
return (databaseNames != null && databaseNames.length > 0) ? add(new DatabaseExporter(manageClient, databaseNames)) : null;
99+
}
100+
101+
public Exporter domains(String databaseIdOrName, String... domainNames) {
102+
return (domainNames != null && domainNames.length > 0) ? add(new DomainExporter(manageClient, databaseIdOrName, domainNames)) : null;
81103
}
82104

83105
public Exporter groups(String... groupNames) {
84-
return add(new GroupExporter(manageClient, groupNames));
106+
return (groupNames != null && groupNames.length > 0) ? add(new GroupExporter(manageClient, groupNames)) : null;
107+
}
108+
109+
public Exporter pipelines(String databaseIdOrName, String... pipelineNames) {
110+
return (pipelineNames != null && pipelineNames.length > 0) ? add(new PipelineExporter(manageClient, databaseIdOrName, pipelineNames)) : null;
85111
}
86112

87113
public Exporter privilegesExecute(String... privilegeNames) {
88-
return add(new PrivilegeExporter(manageClient, privilegeNames));
114+
return (privilegeNames != null && privilegeNames.length > 0) ? add(new PrivilegeExporter(manageClient, privilegeNames)) : null;
89115
}
90116

91117
public Exporter privilegesUri(String... privilegeNames) {
92-
PrivilegeExporter ex = new PrivilegeExporter(manageClient, privilegeNames);
93-
ex.setUriPrivilegeNames(privilegeNames);
94-
return add(ex);
118+
if (privilegeNames != null && privilegeNames.length > 0) {
119+
PrivilegeExporter ex = new PrivilegeExporter(manageClient, privilegeNames);
120+
ex.setUriPrivilegeNames(privilegeNames);
121+
return add(ex);
122+
}
123+
return this;
95124
}
96125

97126
public Exporter roles(String... roleNames) {
98-
return add(new RoleExporter(manageClient, roleNames));
127+
return (roleNames != null && roleNames.length > 0) ? add(new RoleExporter(manageClient, roleNames)) : null;
99128
}
100129

101130
public Exporter servers(String... serverNames) {
102-
return add(buildServerExporter(serverNames));
131+
return (serverNames != null && serverNames.length > 0) ? add(buildServerExporter(serverNames)) : null;
103132
}
104133

105134
public Exporter serversNoDatabases(String... serverNames) {
106-
ServerExporter se = buildServerExporter(serverNames);
107-
se.setExportDatabases(false);
108-
return add(se);
135+
if (serverNames != null && serverNames.length > 0) {
136+
ServerExporter se = buildServerExporter(serverNames);
137+
se.setExportDatabases(false);
138+
return add(se);
139+
}
140+
return this;
109141
}
110142

111143
protected ServerExporter buildServerExporter(String... serverNames) {
112144
return groupName != null ? new ServerExporter(groupName, manageClient, serverNames) : new ServerExporter(manageClient, serverNames);
113145
}
114146

115147
public Exporter tasks(String... taskNames) {
116-
TaskExporter te;
117-
if (groupName != null) {
118-
te = new TaskExporter(groupName, manageClient, taskNames);
119-
} else {
120-
te = new TaskExporter(manageClient, taskNames);
148+
if (taskNames != null && taskNames.length > 0) {
149+
TaskExporter te;
150+
if (groupName != null) {
151+
te = new TaskExporter(groupName, manageClient, taskNames);
152+
} else {
153+
te = new TaskExporter(manageClient, taskNames);
154+
}
155+
return add(te);
121156
}
122-
return add(te);
157+
return this;
123158
}
124159

125160
public Exporter users(String... usernames) {
126-
return add(new UserExporter(manageClient, usernames));
161+
return (usernames != null && usernames.length > 0) ? add(new UserExporter(manageClient, usernames)) : null;
127162
}
128163

129164
public void setGroupName(String groupName) {
130165
this.groupName = groupName;
131166
}
167+
168+
public Exporter withTriggersDatabase(String triggersDatabase) {
169+
setTriggersDatabase(triggersDatabase);
170+
return this;
171+
}
172+
173+
public void setTriggersDatabase(String triggersDatabase) {
174+
this.triggersDatabase = triggersDatabase;
175+
}
132176
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.marklogic.appdeployer.export.cpf;
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.cpf.CpfConfigManager;
8+
9+
import java.io.File;
10+
11+
public class CpfConfigExporter extends AbstractNamedResourceExporter {
12+
13+
private String databaseIdOrName;
14+
15+
public CpfConfigExporter(ManageClient manageClient, String databaseIdOrName, String... resourceNames) {
16+
super(manageClient, resourceNames);
17+
this.databaseIdOrName = databaseIdOrName;
18+
}
19+
20+
@Override
21+
protected ResourceManager newResourceManager(ManageClient manageClient) {
22+
return new CpfConfigManager(manageClient, databaseIdOrName);
23+
}
24+
25+
@Override
26+
protected File getResourceDirectory(File baseDir) {
27+
return new ConfigDir(baseDir).getCpfConfigsDir();
28+
}
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.marklogic.appdeployer.export.cpf;
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.cpf.DomainManager;
8+
9+
import java.io.File;
10+
11+
public class DomainExporter extends AbstractNamedResourceExporter {
12+
13+
private String databaseIdOrName;
14+
15+
public DomainExporter(ManageClient manageClient, String databaseIdOrName, String... domainNames) {
16+
super(manageClient, domainNames);
17+
this.databaseIdOrName = databaseIdOrName;
18+
}
19+
20+
@Override
21+
protected ResourceManager newResourceManager(ManageClient manageClient) {
22+
return new DomainManager(manageClient, databaseIdOrName);
23+
}
24+
25+
@Override
26+
protected File getResourceDirectory(File baseDir) {
27+
return new ConfigDir(baseDir).getDomainsDir();
28+
}
29+
}

0 commit comments

Comments
 (0)