<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-aaf-auth</artifactId>
import org.onap.aai.aaf.auth.ResponseFormatter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.web.filter.OrderedRequestContextFilter;
+import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.onap.aai.aaf.auth.AafRequestFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.web.filter.OrderedRequestContextFilter;
+import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.onap.aai.aaf.auth.AafRequestFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.web.filter.OrderedRequestContextFilter;
+import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.onap.aaf.cadi.filter.CadiFilter;
import org.onap.aai.aaf.auth.ResponseFormatter;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.web.filter.OrderedRequestContextFilter;
+import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import org.onap.aai.aaf.auth.ResponseFormatter;
import org.onap.aai.exceptions.AAIException;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.web.filter.OrderedRequestContextFilter;
+import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-annotations</artifactId>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-auth</artifactId>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-common-docker</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
</parent>
<artifactId>aai-common-images</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<packaging>pom</packaging>
<name>aai-aai-common-images</name>
<description>Contains dockerfiles for aai-common images (alpine and ubuntu based).</description>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-common-docker</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
</parent>
<artifactId>aai-haproxy-image</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<packaging>pom</packaging>
<name>aai-aai-haproxy-image</name>
<description>Contains dockerfiles for aai-haproxy image.</description>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-core</artifactId>
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.util.MultiValueMap;
MultivaluedMap<String, String> result = new MultivaluedHashMap<>();
String queryParams = uri.getRawQuery();
if (queryParams != null) {
- try {
- String[] sections = queryParams.split("&");
- String[] query = null;
- String key, value = "";
- for (String section : sections) {
- query = section.split("=");
- key = UriUtils.decode(query[0], "UTF-8");
- if (query[1] != null) {
- query[1] = query[1].replaceAll("\\+", "%20");
- }
- value = UriUtils.decode(query[1], "UTF-8");
- if (result.containsKey(key)) {
- result.add(key, value);
- } else {
- result.putSingle(key, value);
- }
+ String[] sections = queryParams.split("&");
+ String[] query = null;
+ String key, value = "";
+ for (String section : sections) {
+ query = section.split("=");
+ key = UriUtils.decode(query[0], "UTF-8");
+ if (query[1] != null) {
+ query[1] = query[1].replaceAll("\\+", "%20");
+ }
+ value = UriUtils.decode(query[1], "UTF-8");
+ if (result.containsKey(key)) {
+ result.add(key, value);
+ } else {
+ result.putSingle(key, value);
}
- } catch (UnsupportedEncodingException e) {
-
}
}
return result;
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-els-onap-logging</artifactId>
<?xml version="1.0" encoding="UTF-8"?>
<!--
- ============LICENSE_START======================================================
- org.onap.aai
- ===============================================================================
- Copyright © 2019 AT&T Intellectual Property. All rights reserved.
- ===============================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+============LICENSE_START======================================================
+org.onap.aai
+===============================================================================
+Copyright © 2019 AT&T Intellectual Property. All rights reserved.
+===============================================================================
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
===========LICENSE_END=========================================================
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-common</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
</parent>
<artifactId>aai-parent</artifactId>
<name>aai-parent</name>
<slf4j.version>1.7.25</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<mockito.all.version>1.10.19</mockito.all.version>
- <mockito.core.version>2.15.0</mockito.core.version>
+ <mockito.core.version>1.10.19</mockito.core.version>
<netty.handler.version>4.1.43.Final</netty.handler.version>
<netty.version>4.0.56.Final</netty.version>
<opencsv.version>3.1</opencsv.version>
<reflections.version>0.9.10</reflections.version>
<snakeyaml.version>1.25</snakeyaml.version>
- <spring.boot.version>1.5.22.RELEASE</spring.boot.version>
+ <spring.boot.version>2.1.12.RELEASE</spring.boot.version>
<javax.servlet.version>3.1.0</javax.servlet.version>
<javax.annotation.version>1.2</javax.annotation.version>
- <sonar.jacoco.reportPath />
+ <sonar.jacoco.reportPath />
<sonar.jacoco.itReportPath />
<sonar.jacoco.reportMissing.force.zero />
<sonar.scanner.version>3.7.0.1746</sonar.scanner.version>
- <spring.version>4.3.25.RELEASE</spring.version>
- <spring.jms.version>4.3.25.RELEASE</spring.jms.version>
- <spring.test.version>4.3.25.RELEASE</spring.test.version>
+ <spring.version>5.1.13.RELEASE</spring.version>
+ <spring.jms.version>5.1.13.RELEASE</spring.jms.version>
+ <spring.test.version>5.1.13.RELEASE</spring.test.version>
<spring.security.rsa.version>1.0.8.RELEASE</spring.security.rsa.version>
<json.simple.version>1.1.1</json.simple.version>
<powermock.api.mockito2.version>2.0.4</powermock.api.mockito2.version>
<profiles>
<profile>
<id>spring-boot-2-1</id>
+ <properties>
+ <spring.boot.version>2.1.12.RELEASE</spring.boot.version>
+ </properties>
+ </profile>
+ <profile>
+ <id>spring-boot-1-5</id>
<properties>
<spring.boot.version>1.5.22.RELEASE</spring.boot.version>
</properties>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-rest</artifactId>
import org.apache.http.impl.client.HttpClients;
import org.onap.aai.aailog.filter.RestClientLoggingInterceptor;
import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@PostConstruct
public void init() throws Exception {
- restTemplate =
- new RestTemplateBuilder().requestFactory(this.getHttpRequestFactory()).build();
+ restTemplate = new RestTemplate();
+ restTemplate.setRequestFactory(this.getHttpRequestFactory());
restTemplate.setErrorHandler(new RestClientResponseErrorHandler());
RestClientLoggingInterceptor loggingInterceptor = new RestClientLoggingInterceptor();
restTemplate.getInterceptors().add(loggingInterceptor);
@PostConstruct
public void init() throws Exception {
- restTemplate =
- new RestTemplateBuilder().requestFactory(this.getHttpRequestFactory()).build();
+ restTemplate = new RestTemplate();
+ restTemplate.setRequestFactory(this.getHttpRequestFactory());
restTemplate.setErrorHandler(new RestClientResponseErrorHandler());
RestClientLoggingInterceptor loggingInterceptor = new RestClientLoggingInterceptor();
@PostConstruct
public void init() throws Exception {
- restTemplate =
- new RestTemplateBuilder().requestFactory(this.getHttpRequestFactory()).build();
-
+ restTemplate = new RestTemplate();
+ restTemplate.setRequestFactory(this.getHttpRequestFactory());
restTemplate.setErrorHandler(new RestClientResponseErrorHandler());
RestClientLoggingInterceptor loggingInterceptor = new RestClientLoggingInterceptor();
restTemplate.getInterceptors().add(loggingInterceptor);
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.runners.MockitoJUnitRunner;
import org.onap.aai.schemaif.SchemaProviderException;
import org.onap.aai.schemaif.definitions.EdgeSchema;
import org.onap.aai.schemaif.definitions.PropertySchema;
import org.onap.aai.schemaif.definitions.VertexSchema;
import org.onap.aai.schemaif.definitions.types.DataType.Type;
-@RunWith(MockitoJUnitRunner.Silent.class)
+@RunWith(MockitoJUnitRunner.class)
public class OxmSchemaProviderTest extends OxmSchemaServiceSetup {
@Test
VertexSchema vertSchema = schemaProvider.getVertexSchema("pserver", schemaProvider.getLatestSchemaVersion());
System.out.println(vertSchema.toString());
- EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
+ EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
"cloud-region", "zone", schemaProvider.getLatestSchemaVersion());
System.out.println(edgeSchema.toString());
-
+
// Validate vertex schema
assertTrue(vertSchema.getName().equals("pserver"));
assertTrue(vertSchema.getAnnotationValue("nameProps").equals("pserver-name2"));
assertTrue(vertSchema.getAnnotationValue("dependentOn") == null);
-
+
PropertySchema propSchema = vertSchema.getPropertySchema("hostname");
assertTrue(propSchema.getName().equals("hostname"));
assertTrue(propSchema.getDefaultValue().equals(""));
assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
Object obj = propSchema.validateValue("somestring");
assertTrue(obj instanceof String);
-
+
propSchema = vertSchema.getPropertySchema("in-maint");
assertTrue(propSchema.getName().equals("in-maint"));
assertTrue(propSchema.getDefaultValue().equals("false"));
obj = propSchema.validateValue("false");
assertTrue(obj instanceof Boolean);
assertTrue(propSchema.getDataType().validateValue("badValue") == null);
-
-
+
+
propSchema = vertSchema.getPropertySchema("aai-node-type");
assertTrue(propSchema.getName().equals("aai-node-type"));
assertTrue(propSchema.getDefaultValue().equals(""));
assertTrue(!propSchema.isKey());
assertTrue(propSchema.isReserved());
assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
-
+
propSchema = vertSchema.getPropertySchema("pserver-id");
assertTrue(propSchema.getName().equals("pserver-id"));
assertTrue(propSchema.getDefaultValue().equals(""));
assertTrue(!propSchema.isReserved());
assertTrue(propSchema.isKey());
assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
-
+
propSchema = vertSchema.getPropertySchema("number-of-cpus");
assertTrue(propSchema.getName().equals("number-of-cpus"));
assertTrue(propSchema.getAnnotationValue("source-of-truth-type").equals("openstack"));
assertTrue(obj instanceof Integer);
assertTrue(propSchema.getDataType().validateValue("5.5") == null);
assertTrue(propSchema.getDataType().validateValue("xyz") == null);
-
+
// Validate edge schema
assertTrue(edgeSchema.getName().equals("org.onap.relationships.inventory.LocatedIn"));
assertTrue(edgeSchema.getSource().equals("cloud-region"));
assertTrue(edgeSchema.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
assertTrue(edgeSchema.getAnnotationValue("contains-other-v").equals("NONE"));
assertTrue(edgeSchema.getPropertySchema("prevent-delete").getDataType().getType().equals(Type.STRING));
-
+
// Validate 'dependentOn' annotation
vertSchema = schemaProvider.getVertexSchema("tenant", schemaProvider.getLatestSchemaVersion());
assertTrue(vertSchema.getAnnotationValue("dependentOn").equals("cloud-region"));
assertTrue(false);
}
}
-
+
@Test
public void testAdjacentEdges() throws SchemaProviderException {
try {
OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
schemaProvider.loadSchema();
- Set<EdgeSchema> edgeSchemaList =
+ Set<EdgeSchema> edgeSchemaList =
schemaProvider.getAdjacentEdgeSchema("snapshot", schemaProvider.getLatestSchemaVersion());
-
+
// Validate edge schema
assertTrue(edgeSchemaList.size() == 2);
-
+
for (EdgeSchema es : edgeSchemaList) {
System.out.println(es.toString());
if (es.getName().equals("org.onap.relationships.inventory.BelongsTo")) {
assertTrue(false);
}
}
-
+
@Test
public void testValidSourceTargetEdge() throws SchemaProviderException {
try {
OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
schemaProvider.loadSchema();
- Set<EdgeSchema> edgeSchemaList =
- schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "customer",
+ Set<EdgeSchema> edgeSchemaList =
+ schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "customer",
schemaProvider.getLatestSchemaVersion());
// Validate edge schema
assertTrue(edgeSchemaList.iterator().next().getSource().equals("service-instance"));
assertTrue(edgeSchemaList.iterator().next().getTarget().equals("customer"));
assertTrue(edgeSchemaList.iterator().next().getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY));
-
- edgeSchemaList =
- schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "complex",
+
+ edgeSchemaList =
+ schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "complex",
schemaProvider.getLatestSchemaVersion());
-
+
// Validate edge schema
assertTrue(edgeSchemaList.size() == 2);
-
+
for (EdgeSchema es : edgeSchemaList) {
System.out.println(es.toString());
if (es.getName().equals("org.onap.relationships.inventory.FoundIn")) {
assertTrue(false);
}
}
-
- edgeSchemaList =
- schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "bad-node",
+
+ edgeSchemaList =
+ schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "bad-node",
schemaProvider.getLatestSchemaVersion());
-
+
// Validate edge schema
assertTrue(edgeSchemaList.size() == 0);
}
assertTrue(false);
}
}
-
+
@Test
public void testInvalidVertexOrEdge() throws SchemaProviderException {
try {
OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
schemaProvider.loadSchema();
- VertexSchema vertSchema =
+ VertexSchema vertSchema =
schemaProvider.getVertexSchema("bad-node", schemaProvider.getLatestSchemaVersion());
assertTrue(vertSchema == null);
- EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
+ EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
"cloud-region", "bad-node", schemaProvider.getLatestSchemaVersion());
assertTrue(edgeSchema == null);
-
- Set<EdgeSchema> edgeSchemaList =
- schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node",
+
+ Set<EdgeSchema> edgeSchemaList =
+ schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node",
schemaProvider.getLatestSchemaVersion());
assertTrue(edgeSchemaList.isEmpty());
}
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-schema-ingest</artifactId>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {MockProvider.class, EdgesConfiguration.class})
@TestPropertySource(
- properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test.properties"})
-
+ properties = {
+ "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test.properties",
+ "spring.main.allow-bean-definition-overriding=true"
+ })
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
@SpringBootTest
public class EdgeIngestorTest {
@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(
- properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-test.properties"})
+ properties = {
+ "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-test.properties",
+ "spring.main.allow-bean-definition-overriding=true"
+ })
@ContextConfiguration(classes = {MockProvider.class, NodesConfiguration.class})
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+@Ignore("Support of schema ingest via context configuration with prop file is removed as it won't work with spring boot 2")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:forWiringTests/testUsingPropFileContext.xml"})
public class SchemaLocationsBeanXMLSetterWithPropFileTest {
<property name="edgeDirectory" value="${schema.edges.location}" />
</bean>
- <context:property-placeholder location="classpath:forWiringTests/schema-ingest-for-xml-test.properties" ignore-unresolvable="true" />
+ <context:property-placeholder location="/forWiringTests/schema-ingest-for-xml-test.properties" ignore-unresolvable="true" />
-</beans>
\ No newline at end of file
+</beans>
<parent>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-parent</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<relativePath>../aai-parent/pom.xml</relativePath>
</parent>
<artifactId>aai-utils</artifactId>
<groupId>org.onap.aai.aai-common</groupId>
<artifactId>aai-common</artifactId>
- <version>1.6.10-SNAPSHOT</version>
+ <version>1.6.11-SNAPSHOT</version>
<packaging>pom</packaging>
<name>aai-aai-common</name>
<description>Contains all of the common code for resources and traversal repos</description>
</repositories>
<!-- End of ONAP Specific Repositories -->
</project>
+<!-- noop for release -->
major_version=1
minor_version=6
-patch_version=10
+patch_version=11
base_version=${major_version}.${minor_version}.${patch_version}