Skip to content

Commit dd77716

Browse files
authored
chore: update docs, ZTDF change (#2)
- Update README for better documentation - ZTDF name change from TDF
1 parent 3cd5c92 commit dd77716

File tree

9 files changed

+71
-26
lines changed

9 files changed

+71
-26
lines changed

.github/workflows/checks.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
server-id: github
4444
- name: Maven Verify
4545
run: |
46-
mvn --batch-mode clean install -DskipTests -s settings.xml
46+
mvn --batch-mode clean install -s settings.xml
4747
env:
4848
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4949

README.md

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,46 @@
22
Integration of the [OpenTDF Platform](https://github.com/opentdf/platform) into [NiFi](https://nifi.apache.org/)
33

44
Components:
5-
* ConvertToTDF: A NiFi processor that converts FlowFile content to TDF format
6-
* ConvertFromTDF: A NiFi processor that converts TDF formatted FlowFile content to it's plaintext representation
7-
* OpenTDFControllerService: A NiFi controller service providing OpenTDF Platform Configuration
5+
* "Zero Trust Data Format" (ZTDF) Processors:
6+
* [ConvertToZTDF](./nifi-tdf-processors/src/main/java/io/opentdf/nifi/ConvertToZTDF.java): A NiFi processor that converts FlowFile content to TDF format. Does not currently support assertions
7+
* [ConvertFromZTDF](./nifi-tdf-processors/src/main/java/io/opentdf/nifi/ConvertFromZTDF.java): A NiFi processor that converts TDF formatted FlowFile content to it's plaintext representation
8+
* Controller Services:
9+
* [OpenTDFControllerService](./nifi-tdf-controller-services-api/src/main/java/io/opentdf/nifi/OpenTDFControllerService.java): A NiFi controller service providing OpenTDF Platform Configuration
810

911

12+
#### FlowChart: Generic Plaintext to ZTDF Nifi Flow
13+
14+
```mermaid
15+
---
16+
title: Generic Plaintext to ZTDF NiFi Flow
17+
---
18+
flowchart TD
19+
a[FlowFile: \nPlaintext content]
20+
b["`**UpdateAttribute**`" Add data policy attributes to FlowFile]
21+
c["`**ConvertToZTDF**`"]
22+
d["Process ZTDF"]
23+
e["Handle Error"]
24+
a -- success --> b
25+
b -- success --> c
26+
c -- success (content = ZTDF) --> d
27+
c -- failure --> e
28+
```
29+
30+
#### FlowChart: Generic ZTDF to Plaintext Nifi Flow
31+
```mermaid
32+
---
33+
title: Generic ZTDF to Plaintext Nifi Flow
34+
---
35+
flowchart TD
36+
a[FlowFile: \nZTDF content]
37+
b["`**ConvertFromZTDF**`"]
38+
c["Process ZTDF"]
39+
d["Handle Error"]
40+
a -- success --> b
41+
b -- success (content = plaintext) --> c
42+
b -- failure --> d
43+
```
44+
1045
# Quick Start - Docker Compose
1146

1247
1. Build the NiFi Archives (NARs) and place in the docker compose mounted volumes

nifi-tdf-processors/src/main/java/io/opentdf/nifi/ConvertFromTDF.java renamed to nifi-tdf-processors/src/main/java/io/opentdf/nifi/ConvertFromZTDF.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
import java.util.List;
1919

2020

21-
@CapabilityDescription("Decrypts TDF flow file content")
22-
@Tags({"TDF", "OpenTDF", "Decrypt", "Data Centric Security"})
23-
public class ConvertFromTDF extends AbstractTDFProcessor {
21+
@CapabilityDescription("Decrypts ZTDF flow file content")
22+
@Tags({"ZTDF", "Zero Trust Data Format", "OpenTDF", "Decrypt", "Data Centric Security"})
23+
public class ConvertFromZTDF extends AbstractTDFProcessor {
2424

2525
@Override
2626
public List<PropertyDescriptor> getSupportedPropertyDescriptors() {
@@ -40,7 +40,7 @@ public void onTrigger(ProcessContext processContext, ProcessSession processSessi
4040
try {
4141
getTDF().loadTDF(seekableByteChannel, outputStream, sdk.getServices().kas());
4242
} catch (Exception e) {
43-
getLogger().error("error decrypting tdf", e);
43+
getLogger().error("error decrypting ZTDF", e);
4444
throw new IOException(e);
4545
}
4646
});

nifi-tdf-processors/src/main/java/io/opentdf/nifi/ConvertToTDF.java renamed to nifi-tdf-processors/src/main/java/io/opentdf/nifi/ConvertToZTDF.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
import java.util.Set;
2727
import java.util.stream.Collectors;
2828

29-
@CapabilityDescription("Transforms flow file content into a TDF")
30-
@Tags({"TDF", "OpenTDF", "Encrypt", "Data Centric Security"})
29+
@CapabilityDescription("Transforms flow file content into a ZTDF")
30+
@Tags({"ZTDF", "OpenTDF", "Zero Trust Data Format", "Encrypt", "Data Centric Security"})
3131
@ReadsAttributes(value = {
3232
@ReadsAttribute(attribute = "kas_url", description = "The Key Access Server (KAS) URL used TDF Creation. This overrides " +
3333
"the KAS URL property of this processor."),
3434
@ReadsAttribute(attribute = "tdf_attribute", description = "A comma separated list of data attributes added " +
3535
"to created TDF Data Policy. e.g. http://example.org/attr/foo/value/bar,http://example.org/attr/foo/value/bar2")
3636
})
37-
public class ConvertToTDF extends AbstractTDFProcessor {
37+
public class ConvertToZTDF extends AbstractTDFProcessor {
3838
static final String KAS_URL_ATTRIBUTE = "kas_url";
3939
static final String TDF_ATTRIBUTE = "tdf_attribute";
4040

nifi-tdf-processors/src/main/java/io/opentdf/nifi/SimpleOpenTDFControllerService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.Arrays;
1616
import java.util.List;
1717

18-
@Tags({"TDF", "OpenTDF", "Configuration"})
18+
@Tags({"TDF", "ZTDF", "OpenTDF", "Configuration"})
1919
@CapabilityDescription("Provides An implementation of the OpenTDFControllerService API for OpenTDF SDK Configuration Parameters")
2020
public class SimpleOpenTDFControllerService extends AbstractControllerService implements OpenTDFControllerService {
2121

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
io.opentdf.nifi.ConvertFromTDF
2-
io.opentdf.nifi.ConvertToTDF
1+
io.opentdf.nifi.ConvertFromZTDF
2+
io.opentdf.nifi.ConvertToZTDF

nifi-tdf-processors/src/test/java/io/opentdf/nifi/ConvertFromTDFTest.java renamed to nifi-tdf-processors/src/test/java/io/opentdf/nifi/ConvertFromZTDFTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import static org.mockito.Mockito.*;
3030

3131

32-
class ConvertFromTDFTest {
32+
class ConvertFromZTDFTest {
3333

3434
SDK mockSDK;
3535
TDF mockTDF;
@@ -109,7 +109,7 @@ public void testConvertFromTDF() throws Exception {
109109
MockFlowFile messageTwo = runner.enqueue("message two".getBytes());
110110
runner.run(1);
111111
List<MockFlowFile> flowFileList =
112-
runner.getFlowFilesForRelationship(ConvertFromTDF.REL_SUCCESS);
112+
runner.getFlowFilesForRelationship(ConvertFromZTDF.REL_SUCCESS);
113113
assertEquals(2, flowFileList.size(), "Two successful flow files");
114114
assertEquals(1, flowFileList.stream().filter(x -> x.getAttribute("filename").equals(messageOne.getAttribute("filename")))
115115
.filter(x -> x.getContent().equals("Decrypted:message one")).count());
@@ -118,7 +118,7 @@ public void testConvertFromTDF() throws Exception {
118118

119119
}
120120

121-
public static class MockRunner extends ConvertFromTDF {
121+
public static class MockRunner extends ConvertFromZTDF {
122122
TDF mockTDF;
123123
SDKBuilder mockSDKBuilder;
124124

nifi-tdf-processors/src/test/java/io/opentdf/nifi/ConvertToTDFTest.java renamed to nifi-tdf-processors/src/test/java/io/opentdf/nifi/ConvertToZTDFTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import io.opentdf.platform.sdk.SDK;
55
import io.opentdf.platform.sdk.TDF;
66
import org.apache.commons.io.IOUtils;
7-
import org.apache.commons.lang3.StringUtils;
87
import org.apache.nifi.processor.ProcessContext;
98
import org.apache.nifi.util.MockFlowFile;
109
import org.apache.nifi.util.TestRunner;
@@ -25,7 +24,7 @@
2524
import static org.junit.jupiter.api.Assertions.*;
2625
import static org.mockito.Mockito.*;
2726

28-
class ConvertToTDFTest {
27+
class ConvertToZTDFTest {
2928

3029
SDK mockSDK;
3130
TDF mockTDF;
@@ -55,7 +54,7 @@ public void testToTDF() throws Exception {
5554
TestRunner runner = TestRunners.newTestRunner(MockRunner.class);
5655
((MockRunner) runner.getProcessor()).mockSDK = mockSDK;
5756
((MockRunner) runner.getProcessor()).mockTDF = mockTDF;
58-
runner.setProperty(ConvertToTDF.KAS_URL, "https://kas1");
57+
runner.setProperty(ConvertToZTDF.KAS_URL, "https://kas1");
5958
setupTDFControllerService(runner);
6059
runner.assertValid();
6160

@@ -94,14 +93,14 @@ public void testToTDF() throws Exception {
9493
//message one has no attribute
9594
MockFlowFile messageOne = runner.enqueue("message one".getBytes());
9695
//message two has attributes
97-
MockFlowFile messageTwo = runner.enqueue("message two".getBytes(), Map.of(ConvertToTDF.TDF_ATTRIBUTE,
96+
MockFlowFile messageTwo = runner.enqueue("message two".getBytes(), Map.of(ConvertToZTDF.TDF_ATTRIBUTE,
9897
"https://example.org/attr/one/value/a,https://example.org/attr/one/value/b"));
9998
//message three has attributes and kas url override
100-
MockFlowFile messageThree = runner.enqueue("message three".getBytes(), Map.of(ConvertToTDF.TDF_ATTRIBUTE,
101-
"https://example.org/attr/one/value/c", ConvertToTDF.KAS_URL_ATTRIBUTE, "https://kas2"));
99+
MockFlowFile messageThree = runner.enqueue("message three".getBytes(), Map.of(ConvertToZTDF.TDF_ATTRIBUTE,
100+
"https://example.org/attr/one/value/c", ConvertToZTDF.KAS_URL_ATTRIBUTE, "https://kas2"));
102101
runner.run(1);
103102
List<MockFlowFile> flowFileList =
104-
runner.getFlowFilesForRelationship(ConvertFromTDF.REL_SUCCESS);
103+
runner.getFlowFilesForRelationship(ConvertFromZTDF.REL_SUCCESS);
105104
assertEquals(2, flowFileList.size(), "Two flowfiles for success relationship");
106105
assertEquals(1, flowFileList.stream().filter(x -> x.getAttribute("filename").equals(messageTwo.getAttribute("filename")))
107106
.filter(x -> x.getContent().equals("TDF:message two")).count());
@@ -110,13 +109,13 @@ public void testToTDF() throws Exception {
110109

111110

112111
flowFileList =
113-
runner.getFlowFilesForRelationship(ConvertFromTDF.REL_FAILURE);
112+
runner.getFlowFilesForRelationship(ConvertFromZTDF.REL_FAILURE);
114113
assertEquals(1, flowFileList.size(), "One flowfile for failure relationship");
115114
assertEquals(1, flowFileList.stream().filter(x -> x.getAttribute("filename").equals(messageOne.getAttribute("filename")))
116115
.filter(x -> x.getContent().equals("message one")).count());
117116
}
118117

119-
public static class MockRunner extends ConvertToTDF {
118+
public static class MockRunner extends ConvertToZTDF {
120119
SDK mockSDK;
121120
TDF mockTDF;
122121

pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,17 @@
137137
</execution>
138138
</executions>
139139
</plugin>
140+
<plugin>
141+
<groupId>org.apache.maven.plugins</groupId>
142+
<artifactId>maven-surefire-plugin</artifactId>
143+
<version>3.2.5</version>
144+
<configuration>
145+
<!--When using the maven-surefire-plugin or maven-failsafe-plugin you must not use a forkCount of 0 or set the forkMode to never as this would prevent the execution of the tests with the javaagent set and no coverage would be recorded.-->
146+
<forkCount>1</forkCount>
147+
<!-- this is required for test coverage-->
148+
<!-- <argLine>${argLine}</argLine>-->
149+
</configuration>
150+
</plugin>
140151
</plugins>
141152
</pluginManagement>
142153
<plugins>

0 commit comments

Comments
 (0)