diff options
Diffstat (limited to 'common')
11 files changed, 215 insertions, 13 deletions
diff --git a/common/pom.xml b/common/pom.xml index 45359231d0..dd296e8504 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -11,10 +11,10 @@ <name>common</name> <description>MSO Common classes:- Logger</description> <properties> - <grpc.version>1.17.1</grpc.version> - <protobuf.version>3.6.1</protobuf.version> + <grpc.version>1.25.0</grpc.version> + <protobuf.version>3.10.0</protobuf.version> <grpc.netty.version>4.1.30.Final</grpc.netty.version> - <ccsdk.version>0.4.2</ccsdk.version> + <ccsdk.version>1.1.2</ccsdk.version> </properties> <dependencies> <dependency> @@ -163,9 +163,15 @@ </dependency> <!-- CDS dependencies --> <dependency> - <groupId>org.onap.ccsdk.cds.components</groupId> - <artifactId>proto-definition</artifactId> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor.modules</groupId> + <artifactId>blueprint-proto</artifactId> <version>${ccsdk.version}</version> + <exclusions> + <exclusion> + <groupId>io.springfox</groupId> + <artifactId>springfox-boot-starter</artifactId> + </exclusion> + </exclusions> </dependency> <!-- protobuf dependencies --> <dependency> diff --git a/common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java index 1b0986ca0d..3d25ef1d45 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java @@ -39,4 +39,6 @@ public class AllocateTnNssi implements Serializable { private NsiInfo nsiInfo; private String scriptName; + + private String nssiId; } diff --git a/common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java b/common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java index 3d0f70805c..be4833a0c6 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java @@ -66,4 +66,7 @@ public class AnSliceProfile implements Serializable { @JsonProperty(value = "resourceSharingLevel") private ResourceSharingLevel resourceSharingLevel; + @JsonProperty(value = "maxNumberofPDUSession") + private int maxNumberOfPDUSession; + } diff --git a/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java b/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java index 90cee2794a..0bd6d64dc3 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java @@ -131,6 +131,7 @@ public class SliceProfileAdapter implements Serializable { anSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(this.ueMobilityLevel)); anSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(this.resourceSharingLevel)); + anSliceProfile.setMaxNumberOfPDUSession(this.maxNumberOfPDUSession); anSliceProfile.setPerfReq(generatePerfReq()); return anSliceProfile; @@ -158,6 +159,8 @@ public class SliceProfileAdapter implements Serializable { List<PerfReqEmbb> perfReqEmbbs = new ArrayList<>(); PerfReqEmbb perfReqEmbb = new PerfReqEmbb(); BeanUtils.copyProperties(this, perfReqEmbb); + perfReqEmbb.setExpDataRateDL(this.expDataRateDL); + perfReqEmbb.setExpDataRateUL(this.expDataRateUL); perfReqEmbbs.add(perfReqEmbb); perfReq.setPerfReqEmbbList(perfReqEmbbs); } else if ("ullc".equalsIgnoreCase(sST)) { diff --git a/common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java b/common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java index f904e1c466..50f0e3d8ce 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java @@ -48,4 +48,7 @@ public class TnSliceProfile implements Serializable { @JsonProperty(value = "jitter") private int jitter; + + @JsonProperty(value = "resourceSharingLevel") + private ResourceSharingLevel resourceSharingLevel; } diff --git a/common/src/main/java/org/onap/so/client/cds/CDSProcessingClient.java b/common/src/main/java/org/onap/so/client/cds/CDSProcessingClient.java index fa309b54fe..e40b936daa 100644 --- a/common/src/main/java/org/onap/so/client/cds/CDSProcessingClient.java +++ b/common/src/main/java/org/onap/so/client/cds/CDSProcessingClient.java @@ -22,7 +22,6 @@ package org.onap.so.client.cds; import io.grpc.ManagedChannel; import io.grpc.internal.DnsNameResolverProvider; -import io.grpc.internal.PickFirstLoadBalancerProvider; import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.NettyChannelBuilder; import java.security.KeyStore; @@ -81,8 +80,7 @@ public class CDSProcessingClient implements AutoCloseable { "No RestProperty.CDSProperties implementation found on classpath, can't create client."); } NettyChannelBuilder builder = NettyChannelBuilder.forAddress(props.getHost(), props.getPort()) - .nameResolverFactory(new DnsNameResolverProvider()) - .loadBalancerFactory(new PickFirstLoadBalancerProvider()); + .nameResolverFactory(new DnsNameResolverProvider()); if (props.getUseSSL()) { log.info("Configure SSL connection"); KeyStore ks = KeyStoreLoader.getKeyStore(); diff --git a/common/src/main/java/org/onap/so/client/cds/CDSProcessingHandler.java b/common/src/main/java/org/onap/so/client/cds/CDSProcessingHandler.java index 6097f7e3fd..a0a5577402 100644 --- a/common/src/main/java/org/onap/so/client/cds/CDSProcessingHandler.java +++ b/common/src/main/java/org/onap/so/client/cds/CDSProcessingHandler.java @@ -24,8 +24,8 @@ import io.grpc.ManagedChannel; import io.grpc.stub.StreamObserver; import java.util.concurrent.CountDownLatch; import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceStub; +import org.onap.ccsdk.cds.controllerblueprints.processing.api.BlueprintProcessingServiceGrpc; +import org.onap.ccsdk.cds.controllerblueprints.processing.api.BlueprintProcessingServiceGrpc.BlueprintProcessingServiceStub; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput; import org.slf4j.Logger; @@ -50,7 +50,7 @@ class CDSProcessingHandler { final CountDownLatch finishLatch = new CountDownLatch(1); - final BluePrintProcessingServiceStub asyncStub = BluePrintProcessingServiceGrpc.newStub(channel); + final BlueprintProcessingServiceStub asyncStub = BlueprintProcessingServiceGrpc.newStub(channel); final StreamObserver<ExecutionServiceOutput> responseObserver = new StreamObserver<ExecutionServiceOutput>() { @Override diff --git a/common/src/main/java/org/onap/so/logger/MaskLogStatements.java b/common/src/main/java/org/onap/so/logger/MaskLogStatements.java new file mode 100644 index 0000000000..cadadcf9f3 --- /dev/null +++ b/common/src/main/java/org/onap/so/logger/MaskLogStatements.java @@ -0,0 +1,71 @@ +package org.onap.so.logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import ch.qos.logback.classic.PatternLayout; +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class MaskLogStatements extends PatternLayout { + + private String patternsProperty; + private String maskChar = "*"; + private Optional<Pattern> pattern = Optional.empty(); + private static final Pattern authPattern = + Pattern.compile("Authorization(?:\\:|=)\\s?(?:\"|\\[)(?:Basic|Bearer) (.*?)(?:\"|\\])"); + private static final Pattern openstackPattern = Pattern.compile("\"password\"\\s?:\\s?\"(.*?)\""); + + public String getPatternsProperty() { + return patternsProperty; + } + + public void setPatternsProperty(String patternsProperty) { + this.patternsProperty = patternsProperty; + if (this.patternsProperty != null) { + this.pattern = Optional.of(Pattern.compile(patternsProperty, Pattern.MULTILINE)); + } + } + + public String getMaskChar() { + return maskChar; + } + + public void setMaskChar(String maskChar) { + this.maskChar = maskChar; + } + + + protected Collection<Pattern> getPatterns() { + return Arrays.asList(authPattern, openstackPattern); + } + + @Override + public String doLayout(ILoggingEvent event) { + + final StringBuilder message = new StringBuilder(super.doLayout(event)); + List<Pattern> patterns = new ArrayList<>(getPatterns()); + if (pattern.isPresent()) { + patterns.add(pattern.get()); + } + patterns.forEach(p -> { + Matcher matcher = p.matcher(message); + while (matcher.find()) { + int group = 1; + while (group <= matcher.groupCount()) { + if (matcher.group(group) != null) { + for (int i = matcher.start(group); i < matcher.end(group); i++) { + message.setCharAt(i, maskChar.charAt(0)); + } + } + group++; + } + } + }); + return message.toString(); + } + +} diff --git a/common/src/test/java/org/onap/so/client/cds/CDSProcessingClientTest.java b/common/src/test/java/org/onap/so/client/cds/CDSProcessingClientTest.java index 5792c28f5f..b92326cc89 100644 --- a/common/src/test/java/org/onap/so/client/cds/CDSProcessingClientTest.java +++ b/common/src/test/java/org/onap/so/client/cds/CDSProcessingClientTest.java @@ -41,7 +41,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mock; import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers; -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase; +import org.onap.ccsdk.cds.controllerblueprints.processing.api.BlueprintProcessingServiceGrpc.BlueprintProcessingServiceImplBase; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput; @@ -72,7 +72,7 @@ public class CDSProcessingClientTest { client = new CDSProcessingClient(InProcessChannelBuilder.forName(serverName).directExecutor().build(), handler); - final BluePrintProcessingServiceImplBase routeChatImpl = new BluePrintProcessingServiceImplBase() { + final BlueprintProcessingServiceImplBase routeChatImpl = new BlueprintProcessingServiceImplBase() { @Override public StreamObserver<ExecutionServiceInput> process( StreamObserver<ExecutionServiceOutput> responseObserver) { diff --git a/common/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java b/common/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java new file mode 100644 index 0000000000..ba5aeb522a --- /dev/null +++ b/common/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java @@ -0,0 +1,90 @@ +package org.onap.so.logging; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import org.junit.Test; +import org.onap.so.logger.MaskLogStatements; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.classic.spi.LoggingEvent; + +public class MaskLogStatementsTest { + + private LoggerContext lc = new LoggerContext(); + private Logger logger = lc.getLogger(MaskLogStatementsTest.class); + + @Test + public void verifyOpenStackPayload() throws IOException { + String payload = + new String(Files.readAllBytes(Paths.get("src/test/resources/__files/logging/openstack-payload.json"))); + + ILoggingEvent event = makeLoggingEvent(payload); + + MaskLogStatements mask = new MaskLogStatements(); + + mask.setContext(lc); + mask.setPattern("%m"); + mask.start(); + String result = mask.doLayout(event); + + assertTrue(result.matches("(?s).*?\"password\"\\s?:\\s?\"\\*+\".*")); + + } + + @Test + public void maskAuthHeaderTest() { + String msg = "Headers : [Accept:\"application/json\", Authorization:\"Basic dklfjeaklfjdkalf\"," + + "Content-Type:\"application/json\", Content-Length:\"10\"," + + "X-RequestID:\"db2a0462-69d0-499f-93ec-e2a064ef1f59\", X-TransactionID:\"db2a0462-69d0-499f-93ec-e2a064ef1f59\"," + + "X-ECOMP-RequestID:\"db2a0462-69d0-499f-93ec-e2a064ef1f59\", X-ONAP-PartnerName:\"SO.APIH\"," + + "X-InvocationID:\"885e4f99-6f24-4f17-ab1b-584b37715b49\"]"; + + String expected = "Headers : [Accept:\"application/json\", Authorization:\"Basic ****************\"," + + "Content-Type:\"application/json\", Content-Length:\"10\"," + + "X-RequestID:\"db2a0462-69d0-499f-93ec-e2a064ef1f59\", X-TransactionID:\"db2a0462-69d0-499f-93ec-e2a064ef1f59\"," + + "X-ECOMP-RequestID:\"db2a0462-69d0-499f-93ec-e2a064ef1f59\", X-ONAP-PartnerName:\"SO.APIH\"," + + "X-InvocationID:\"885e4f99-6f24-4f17-ab1b-584b37715b49\"]"; + ILoggingEvent event = makeLoggingEvent(msg); + + MaskLogStatements mask = new MaskLogStatements(); + + mask.setContext(lc); + mask.setPattern("%m"); + mask.start(); + String result = mask.doLayout(event); + + assertEquals(expected, result); + } + + @Test + public void maskAuthHeaderObjectStringTest() { + String msg = "Headers: {Accept=[text/plain, application/json, application/*+json, */*]," + + "Authorization=[Basic aaaaa]," + + "connection=[keep-alive], Content-Length=[217], content-type=[application/xml]," + + "host=[mso-bpmn-infra-svc:9200], user-agent=[Java/11.0.6]}"; + String expected = "Headers: {Accept=[text/plain, application/json, application/*+json, */*]," + + "Authorization=[Basic -----]," + + "connection=[keep-alive], Content-Length=[217], content-type=[application/xml]," + + "host=[mso-bpmn-infra-svc:9200], user-agent=[Java/11.0.6]}"; + ILoggingEvent event = makeLoggingEvent(msg); + + MaskLogStatements mask = new MaskLogStatements(); + + mask.setContext(lc); + mask.setPattern("%m"); + mask.setMaskChar("-"); + mask.start(); + String result = mask.doLayout(event); + + assertEquals(expected, result); + } + + private ILoggingEvent makeLoggingEvent(String message) { + return new LoggingEvent(MaskLogStatementsTest.class.getName(), logger, Level.INFO, message, null, null); + } +} diff --git a/common/src/test/resources/__files/logging/openstack-payload.json b/common/src/test/resources/__files/logging/openstack-payload.json new file mode 100644 index 0000000000..ac4d1639dc --- /dev/null +++ b/common/src/test/resources/__files/logging/openstack-payload.json @@ -0,0 +1,26 @@ +{ + "auth": { + "identity": { + "password": { + "user": { + "name": "j0000", + "domain": { + "name": "name" + }, + "password": "my-password-wow" + } + }, + "methods": [ + "password" + ] + }, + "scope": { + "project": { + "id": "ad299b37da30413391e9c28138f0b0dd", + "domain": { + "name": "name" + } + } + } + } +} |