Skip to content

Commit 94cf118

Browse files
authored
Merge pull request #56 from cisco-open/feature/master/add-MELT-url-cli
Added fields to set metrics, logs & traces URL paths for CLI mode when using REST URL
2 parents 2191572 + 37cc22d commit 94cf118

File tree

7 files changed

+81
-18
lines changed

7 files changed

+81
-18
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ dependencies {
2626
api group: 'org.projectlombok', name: 'lombok', version: '1.18.20'
2727
api group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.13.2'
2828
api group: 'io.opentelemetry.proto', name: 'opentelemetry-proto', version: '0.18.0-alpha'
29-
api group: 'io.opentelemetry', name: 'opentelemetry-sdk-trace', version: '1.12.0'
29+
api group: 'io.opentelemetry', name: 'opentelemetry-sdk-trace', version: '1.17.0'
3030
api group: 'com.google.guava', name: 'guava', version: 'r05'
3131
api group: 'org.apache.commons', name: 'commons-collections4', version: '4.4'
3232
api group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'

example-definitions/cli-target-rest.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ authMode: "none"
22
# Set authmode to 'basic' and uncomment username & password if you need authentication
33
# username: "your-username"
44
# password: "your-password"
5-
restURL: "http://localhost:4318/v1/traces"
5+
restURL:
6+
baseURL: "http://localhost:4318"
7+
metricsPath: "/v1/metrics"
8+
logsPath: "/v1/logs"
9+
tracesPath: "/v1/traces"

src/main/java/io/opentelemetry/contrib/generator/telemetry/cli/CLIProcessor.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.opentelemetry.contrib.generator.telemetry.cli;
1818

1919
import io.opentelemetry.contrib.generator.core.exception.GeneratorException;
20+
import io.opentelemetry.contrib.generator.telemetry.cli.dto.TargetEnvironmentDetails;
2021
import io.opentelemetry.contrib.generator.telemetry.dto.GeneratorInput;
2122
import io.opentelemetry.contrib.generator.telemetry.transport.PayloadHandler;
2223
import io.opentelemetry.contrib.generator.telemetry.TelemetryGenerator;
@@ -108,10 +109,11 @@ private static Options getOptions() {
108109

109110
private static PayloadHandler getPayloadHandler(String targetEnvYAML) {
110111
TargetEnvironmentDetails targetEnvironmentDetails = getTargetEnvDetails(targetEnvYAML);
111-
String nonNullRestURL = StringUtils.defaultString(targetEnvironmentDetails.getRestURL());
112112
String nonNullGRPCHost = StringUtils.defaultString(targetEnvironmentDetails.getGRPCHost());
113113
String nonNullGRPCPort = StringUtils.defaultString(targetEnvironmentDetails.getGRPCPort());
114-
if (nonNullRestURL.isBlank() && (nonNullGRPCHost.isBlank() || nonNullGRPCPort.isBlank())) {
114+
boolean restURLProvided = targetEnvironmentDetails.getRestURL() != null &&
115+
!StringUtils.defaultString(targetEnvironmentDetails.getRestURL().getBaseURL()).isBlank();
116+
if (!restURLProvided && (nonNullGRPCHost.isBlank() || nonNullGRPCPort.isBlank())) {
115117
throw new GeneratorException("Either restURL (for REST endpoint) or gRPCHost & gRPCPort (for gRPC endpoint) " +
116118
"must be provided in environment target YAML");
117119
}
@@ -128,13 +130,24 @@ private static PayloadHandler getPayloadHandler(String targetEnvYAML) {
128130
authHandler = new BasicAuthHandler(targetEnvironmentDetails.getUsername(),
129131
targetEnvironmentDetails.getPassword());
130132
}
131-
if (!nonNullRestURL.isBlank()) {
133+
if (restURLProvided) {
134+
String restBaseURL = targetEnvironmentDetails.getRestURL().getBaseURL();
132135
try {
133-
new URI(nonNullRestURL);
136+
new URI(restBaseURL);
134137
} catch (URISyntaxException e) {
135138
log.warn("Invalid rest URL provided in environment target YAML", e);
136139
}
137-
return new RESTPayloadHandler(nonNullRestURL, authHandler);
140+
RESTPayloadHandler restPayloadHandler = new RESTPayloadHandler(restBaseURL, authHandler);
141+
if (!StringUtils.defaultString(targetEnvironmentDetails.getRestURL().getMetricsPath()).isBlank()) {
142+
restPayloadHandler.setMetricsURL(targetEnvironmentDetails.getRestURL().getMetricsPath());
143+
}
144+
if (!StringUtils.defaultString(targetEnvironmentDetails.getRestURL().getLogsPath()).isBlank()) {
145+
restPayloadHandler.setMetricsURL(targetEnvironmentDetails.getRestURL().getLogsPath());
146+
}
147+
if (!StringUtils.defaultString(targetEnvironmentDetails.getRestURL().getTracesPath()).isBlank()) {
148+
restPayloadHandler.setMetricsURL(targetEnvironmentDetails.getRestURL().getTracesPath());
149+
}
150+
return restPayloadHandler;
138151
}
139152
int gRPCPort;
140153
try {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.opentelemetry.contrib.generator.telemetry.cli.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class RestURL {
7+
8+
private String baseURL;
9+
private String metricsPath;
10+
private String logsPath;
11+
private String tracesPath;
12+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.opentelemetry.contrib.generator.telemetry.cli;
17+
package io.opentelemetry.contrib.generator.telemetry.cli.dto;
1818

1919
import lombok.Data;
2020

2121
@Data
2222
public class TargetEnvironmentDetails {
2323

24-
private String restURL;
24+
private RestURL restURL;
2525
private String gRPCHost;
2626
private String gRPCPort;
2727
private String authMode;

src/test/java/io/opentelemetry/contrib/generator/telemetry/ValidateExampleDefinitionsTest.java

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,39 +16,72 @@
1616

1717
package io.opentelemetry.contrib.generator.telemetry;
1818

19+
import com.fasterxml.jackson.databind.ObjectMapper;
20+
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
21+
import io.opentelemetry.contrib.generator.telemetry.cli.dto.TargetEnvironmentDetails;
1922
import io.opentelemetry.contrib.generator.telemetry.dto.GeneratorInput;
2023
import org.testng.annotations.Test;
2124

25+
import java.io.File;
26+
import java.io.IOException;
2227
import java.nio.file.Paths;
2328

2429
public class ValidateExampleDefinitionsTest {
25-
26-
private final String DEFINITION_PATH = Paths.get(System.getProperty("user.dir"), "example-definitions", "qa").toString();
30+
31+
private final String DEFINITION_BASE_PATH = Paths.get(System.getProperty("user.dir"), "example-definitions").toString();
32+
private final String DEFINITION_PATH = Paths.get(DEFINITION_BASE_PATH, "qa").toString();
2733

2834
@Test
29-
public void validateEntityAndMetricDefinitions() {
35+
public void validateQAEntityAndMetricDefinitions() {
3036
String entityDefinitions = Paths.get(DEFINITION_PATH, "entity-definition.yaml").toString();
3137
String metricDefinitions = Paths.get(DEFINITION_PATH, "metric-definition.yaml").toString();
3238
GeneratorInput generatorInput = new GeneratorInput.YAMLFilesBuilder(entityDefinitions)
3339
.withMetricDefinitionYAML(metricDefinitions).build();
34-
generatorInput.validate("ValidateExampleDefinitionsTest_EntityMetricDefinitions");
40+
generatorInput.validate("ValidateQAExampleDefinitionsTest_EntityMetricDefinitions");
3541
}
3642

3743
@Test
38-
public void validateLogDefinitions() {
44+
public void validateQALogDefinitions() {
3945
String entityDefinitions = Paths.get(DEFINITION_PATH, "entity-definition.yaml").toString();
4046
String logDefinitions = Paths.get(DEFINITION_PATH, "log-definition.yaml").toString();
4147
GeneratorInput generatorInput = new GeneratorInput.YAMLFilesBuilder(entityDefinitions)
4248
.withLogDefinitionYAML(logDefinitions).build();
43-
generatorInput.validate("ValidateExampleDefinitionsTest_LogDefinitions");
49+
generatorInput.validate("ValidateQAExampleDefinitionsTest_LogDefinitions");
4450
}
4551

4652
@Test
47-
public void validateTraceDefinitions() {
53+
public void validateQATraceDefinitions() {
4854
String entityDefinitions = Paths.get(DEFINITION_PATH, "entity-definition.yaml").toString();
4955
String traceDefinitions = Paths.get(DEFINITION_PATH, "trace-definition.yaml").toString();
5056
GeneratorInput generatorInput = new GeneratorInput.YAMLFilesBuilder(entityDefinitions)
5157
.withTraceDefinitionYAML(traceDefinitions).build();
52-
generatorInput.validate("ValidateExampleDefinitionsTest_TraceDefinitions");
58+
generatorInput.validate("ValidateQAExampleDefinitionsTest_TraceDefinitions");
59+
}
60+
61+
@Test
62+
public void validateDemoEntityAndTraceDefinitions() {
63+
String entityDefinitions = Paths.get(DEFINITION_BASE_PATH, "demo", "entity-definition.yaml").toString();
64+
String tracesDefinitions = Paths.get(DEFINITION_BASE_PATH, "demo", "trace-definition.yaml").toString();
65+
GeneratorInput generatorInput = new GeneratorInput.YAMLFilesBuilder(entityDefinitions)
66+
.withTraceDefinitionYAML(tracesDefinitions).build();
67+
generatorInput.validate("ValidateDemoExampleDefinitionsTest_EntityTraceDefinitions");
68+
}
69+
70+
@Test
71+
public void validateSimpleEntityAndTraceDefinitions() {
72+
String entityDefinitions = Paths.get(DEFINITION_BASE_PATH, "simple", "entity-definition.yaml").toString();
73+
String tracesDefinitions = Paths.get(DEFINITION_BASE_PATH, "simple", "trace-definition.yaml").toString();
74+
GeneratorInput generatorInput = new GeneratorInput.YAMLFilesBuilder(entityDefinitions)
75+
.withTraceDefinitionYAML(tracesDefinitions).build();
76+
generatorInput.validate("ValidateSimpleExampleDefinitionsTest_EntityTraceDefinitions");
77+
}
78+
79+
@Test
80+
public void validateCLITargetYAMLs() throws IOException {
81+
File cliRestTargetYAML = Paths.get(DEFINITION_BASE_PATH, "cli-target-rest.yaml").toFile();
82+
File cligRPCTargetYAML = Paths.get(DEFINITION_BASE_PATH, "cli-target-grpc.yaml").toFile();
83+
ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
84+
yamlMapper.readValue(cliRestTargetYAML, TargetEnvironmentDetails.class);
85+
yamlMapper.readValue(cligRPCTargetYAML, TargetEnvironmentDetails.class);
5386
}
5487
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
authMode: "none"
2-
restURL: "http://localhost:3388"
2+
restURL:
3+
baseURL: "http://localhost:3388"

0 commit comments

Comments
 (0)