Skip to content

Commit f6974d2

Browse files
committed
small cleanup and documentation for the julieops controller
1 parent c72d997 commit f6974d2

File tree

5 files changed

+60
-32
lines changed

5 files changed

+60
-32
lines changed

core/src/main/java/com/purbon/kafka/topology/model/Plan.java

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

88
public class Plan {
99

10+
public static final String DEFAULT_VALUE = "default";
11+
1012
@JsonInclude(Include.NON_EMPTY)
1113
private String alias;
1214

service/src/main/java/com/purbon/kafka/topology/JulieOps.java

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.purbon.kafka.topology.api.mds.MDSApiClientBuilder;
1212
import com.purbon.kafka.topology.audit.Auditor;
1313
import com.purbon.kafka.topology.exceptions.ValidationException;
14+
import com.purbon.kafka.topology.model.Plan;
1415
import com.purbon.kafka.topology.model.Topology;
1516
import com.purbon.kafka.topology.schemas.SchemaRegistryManager;
1617
import com.purbon.kafka.topology.serviceAccounts.VoidPrincipalProvider;
@@ -35,6 +36,7 @@
3536
import org.apache.logging.log4j.LogManager;
3637
import org.apache.logging.log4j.Logger;
3738

39+
/** JulieOps Main Controller class */
3840
@Getter
3941
@Setter
4042
public class JulieOps implements AutoCloseable {
@@ -51,30 +53,15 @@ public class JulieOps implements AutoCloseable {
5153
private final Configuration config;
5254
private final PrintStream outputStream;
5355

54-
private JulieOps(
55-
Map<String, Topology> topologies,
56-
Configuration config,
57-
TopicManager topicManager,
58-
AccessControlManager accessControlManager,
59-
PrincipalUpdateManager principalUpdateManager,
60-
PrincipalDeleteManager principalDeleteManager,
61-
KafkaConnectArtefactManager connectorManager,
62-
KSqlArtefactManager kSqlArtefactManager) {
63-
this.topologies = topologies;
64-
this.config = config;
65-
this.topicManager = topicManager;
66-
this.accessControlManager = accessControlManager;
67-
this.principalUpdateManager = principalUpdateManager;
68-
this.principalDeleteManager = principalDeleteManager;
69-
this.connectorManager = connectorManager;
70-
this.kSqlArtefactManager = kSqlArtefactManager;
71-
this.outputStream = System.out;
72-
}
73-
74-
public static JulieOps build(String topologyFile, Map<String, String> config) throws Exception {
75-
return build(topologyFile, "default", config);
76-
}
77-
56+
/**
57+
* Builder method for the controller
58+
*
59+
* @param topologyFile A topology file or directory
60+
* @param plansFile A file describing the plans to be used with the application
61+
* @param config A set of configuration properties for the application
62+
* @return JulieOps
63+
* @throws Exception Any error detected during the building process
64+
*/
7865
public static JulieOps build(String topologyFile, String plansFile, Map<String, String> config)
7966
throws Exception {
8067

@@ -98,7 +85,20 @@ public static JulieOps build(String topologyFile, String plansFile, Map<String,
9885
principalProviderFactory.get());
9986
}
10087

101-
public static JulieOps build(
88+
/**
89+
* Simplified builder method, only used for tests
90+
*
91+
* @param topologyFileOrDir A topology file with the desired state description, could be single
92+
* file or a directory
93+
* @param config A set of configuration properties for the application
94+
* @param adminClient And instance of TopologyBuilderAdminClient to be used for admin ops by
95+
* JulieOps
96+
* @param accessControlProvider An instance of a valid provider for access control rules
97+
* @param bindingsBuilderProvider An instance of a valid provider for building bindings maps
98+
* @return JulieOps
99+
* @throws Exception Any error detected during the building process
100+
*/
101+
static JulieOps build(
102102
String topologyFileOrDir,
103103
Configuration config,
104104
TopologyBuilderAdminClient adminClient,
@@ -107,7 +107,7 @@ public static JulieOps build(
107107
throws Exception {
108108
return build(
109109
topologyFileOrDir,
110-
"default",
110+
Plan.DEFAULT_VALUE,
111111
config,
112112
adminClient,
113113
accessControlProvider,
@@ -127,7 +127,7 @@ public static JulieOps build(
127127
throws Exception {
128128

129129
Map<String, Topology> topologies;
130-
if (plansFile.equals("default")) {
130+
if (plansFile.equals(Plan.DEFAULT_VALUE)) {
131131
topologies = TopologyObjectBuilder.build(topologyFileOrDir, config);
132132
} else {
133133
topologies = TopologyObjectBuilder.build(topologyFileOrDir, plansFile, config);
@@ -190,6 +190,26 @@ public static JulieOps build(
190190
kSqlArtefactManager);
191191
}
192192

193+
private JulieOps(
194+
Map<String, Topology> topologies,
195+
Configuration config,
196+
TopicManager topicManager,
197+
AccessControlManager accessControlManager,
198+
PrincipalUpdateManager principalUpdateManager,
199+
PrincipalDeleteManager principalDeleteManager,
200+
KafkaConnectArtefactManager connectorManager,
201+
KSqlArtefactManager kSqlArtefactManager) {
202+
this.topologies = topologies;
203+
this.config = config;
204+
this.topicManager = topicManager;
205+
this.accessControlManager = accessControlManager;
206+
this.principalUpdateManager = principalUpdateManager;
207+
this.principalDeleteManager = principalDeleteManager;
208+
this.connectorManager = connectorManager;
209+
this.kSqlArtefactManager = kSqlArtefactManager;
210+
this.outputStream = System.out;
211+
}
212+
193213
void run(BackendController backendController, PrintStream printStream, Auditor auditor)
194214
throws IOException {
195215
ExecutionPlan plan = ExecutionPlan.init(backendController, printStream, auditor);

service/src/test/java/com/purbon/kafka/topology/JulieOpsTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.purbon.kafka.topology.backend.BackendState;
1717
import com.purbon.kafka.topology.backend.RedisBackend;
1818
import com.purbon.kafka.topology.exceptions.TopologyParsingException;
19+
import com.purbon.kafka.topology.model.Plan;
1920
import com.purbon.kafka.topology.utils.TestUtils;
2021
import java.io.IOException;
2122
import java.util.HashMap;
@@ -147,7 +148,7 @@ public void builderRunTestAsFromCLI() throws Exception {
147148
config.put(QUIET_OPTION, "false");
148149
config.put(CLIENT_CONFIG_OPTION, clientConfigFile);
149150

150-
JulieOps builder = JulieOps.build(fileOrDirPath, config);
151+
JulieOps builder = JulieOps.build(fileOrDirPath, Plan.DEFAULT_VALUE, config);
151152

152153
builder.setTopicManager(topicManager);
153154
builder.setAccessControlManager(accessControlManager);
@@ -177,7 +178,7 @@ public void builderRunTestAsFromCLIWithARedisBackend() throws Exception {
177178
config.put(QUIET_OPTION, "false");
178179
config.put(CLIENT_CONFIG_OPTION, clientConfigFile);
179180

180-
JulieOps builder = JulieOps.build(fileOrDirPath, config);
181+
JulieOps builder = JulieOps.build(fileOrDirPath, Plan.DEFAULT_VALUE, config);
181182

182183
builder.setTopicManager(topicManager);
183184
builder.setAccessControlManager(accessControlManager);

service/src/test/java/com/purbon/kafka/topology/integration/JulieOpsIT.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.purbon.kafka.topology.JulieOps;
99
import com.purbon.kafka.topology.integration.containerutils.ContainerFactory;
1010
import com.purbon.kafka.topology.integration.containerutils.SaslPlaintextKafkaContainer;
11+
import com.purbon.kafka.topology.model.Plan;
1112
import com.purbon.kafka.topology.utils.TestUtils;
1213
import java.io.IOException;
1314
import java.util.HashMap;
@@ -43,7 +44,7 @@ public void testSetupKafkaTopologyBuilderWithWrongCredentialsHC() throws Excepti
4344
config.put(QUIET_OPTION, "true");
4445
config.put(CLIENT_CONFIG_OPTION, clientConfigFile);
4546

46-
JulieOps.build(fileOrDirPath, config);
47+
JulieOps.build(fileOrDirPath, Plan.DEFAULT_VALUE, config);
4748
}
4849

4950
@Test
@@ -58,6 +59,6 @@ public void testSetupKafkaTopologyBuilderWithGoodCredentialsHC() throws Exceptio
5859
config.put(QUIET_OPTION, "true");
5960
config.put(CLIENT_CONFIG_OPTION, clientConfigFile);
6061

61-
JulieOps.build(fileOrDirPath, config);
62+
JulieOps.build(fileOrDirPath, Plan.DEFAULT_VALUE, config);
6263
}
6364
}

service/src/test/java/com/purbon/kafka/topology/integration/containerutils/ContainerTestUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import com.purbon.kafka.topology.Configuration;
66
import com.purbon.kafka.topology.JulieOps;
77
import com.purbon.kafka.topology.api.adminclient.TopologyBuilderAdminClient;
8+
import com.purbon.kafka.topology.model.Plan;
89
import com.purbon.kafka.topology.roles.SimpleAclsProvider;
910
import com.purbon.kafka.topology.roles.acls.AclsBindingsBuilder;
11+
import com.purbon.kafka.topology.serviceAccounts.VoidPrincipalProvider;
1012
import com.purbon.kafka.topology.utils.TestUtils;
1113
import com.typesafe.config.ConfigFactory;
1214
import java.io.IOException;
@@ -95,10 +97,12 @@ private static JulieOps getKafkaTopologyBuilder(
9597
try {
9698
return JulieOps.build(
9799
fileOrDirPath,
100+
Plan.DEFAULT_VALUE,
98101
builderConfig,
99102
topologyAdminClient,
100103
accessControlProvider,
101-
bindingsBuilderProvider);
104+
bindingsBuilderProvider,
105+
new VoidPrincipalProvider());
102106
} catch (final Exception e) {
103107
throw new RuntimeException(e);
104108
}

0 commit comments

Comments
 (0)