.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. _release_notes:

..      ======================================
..      * * *    ISTANBUL MAINTENANCE    * * *
..      ======================================

=============
Release Notes
=============

Istanbul Maintenance
========

Abstract
--------

This document provides the DMaaP Message Router release notes for the Istanbul release.

Summary
-------

Securities Issues addressed

Release Data
------------

+--------------------------------------+--------------------------------------+
| **DMaaP Message Router Project**     |                                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Docker images**                    | - onap/dmaap/dmaap-mr:1.3.2          |
|                                      | - onap/dmaap/kafka111:1.1.1          |
|                                      | - onap/dmaap/zookeeper:6.1.0         |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release designation**              | 9.0.1 Istanbul Maintenance           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2022-02-17                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+


New features
------------
* Remediate log4j bug (DMAAP-1691)


Known Limitations, Issues and Workarounds
-----------------------------------------

System Limitations
------------------


Known Vulnerabilities
---------------------


Workarounds
-----------


Security Notes
--------------


References
----------

For more information on the ONAP Guilin release, please see:

#. `ONAP Home Page`_
#. `ONAP Documentation`_
#. `ONAP Release Downloads`_
#. `ONAP Wiki Page`_


.. _`ONAP Home Page`: https://www.onap.org
.. _`ONAP Wiki Page`: https://wiki.onap.org
.. _`ONAP Documentation`: https://docs.onap.org
.. _`ONAP Release Downloads`: https://git.onap.org

Quick Links:
- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_


..      ===========================
..      * * *    ISTANBUL     * * *
..      ===========================

=============
Release Notes
=============

Istanbul
========

Abstract
--------

This document provides the DMaaP Message Router release notes for the Istanbul release.

Summary
-------

Securities Issues addressed

Release Data
------------

+--------------------------------------+--------------------------------------+
| **DMaaP Message Router Project**     |                                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Docker images**                    | - onap/dmaap/dmaap-mr:1.3.0          |
|                                      | - onap/dmaap/kafka111:1.1.1          |
|                                      | - onap/dmaap/zookeeper:6.1.0         |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release designation**              | 9.0.0 Istanbul                       |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2021-10-14                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+


New features
------------
* Consolidate msgrtr and message-service repos (DMAAP-1582)
* Remove redundant data (DMAAP-1638)
* Sonar fixes (DMAAP-1564)
* Remove Python 2.7 (DMAAP-1489)
* Sec vulnerabilities fix (DMAAP-1608)

Known Limitations, Issues and Workarounds
-----------------------------------------

System Limitations
------------------


Known Vulnerabilities
---------------------


Workarounds
-----------


Security Notes
--------------


References
----------

For more information on the ONAP Guilin release, please see:

#. `ONAP Home Page`_
#. `ONAP Documentation`_
#. `ONAP Release Downloads`_
#. `ONAP Wiki Page`_


.. _`ONAP Home Page`: https://www.onap.org
.. _`ONAP Wiki Page`: https://wiki.onap.org
.. _`ONAP Documentation`: https://docs.onap.org
.. _`ONAP Release Downloads`: https://git.onap.org

Quick Links:
- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_


..      ===========================
..      * * *    HONOLULU    * * *
..      ===========================

Honolulu
========

Abstract
--------

This document provides the DMaaP Message Router release notes for the Honolulu release.

Summary
-------

Securities Issues addressed

Release Data
------------

+--------------------------------------+--------------------------------------+
| **DMaaP Message Router Project**     |                                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Docker images**                    | - onap/dmaap/dmaap-mr:1.1.20         |
|                                      | - onap/dmaap/kafka111:1.0.5          |
|                                      | - onap/dmaap/zookeeper:6.0.3         |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release designation**              | 8.0.0 Honolulu                       |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2021-04-01                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+


New features
------------
* Fix Security Vulnerabilities (listed in "Known Vulnerabilities" below) - DMAAP-1515
* Alter Project Lead information - DMAAP-1538
* Update certs - DMAAP-1565
* Update AAF Artifacts - DMAAP-1565

Known Limitations, Issues and Workarounds
-----------------------------------------

System Limitations
------------------


Known Vulnerabilities
---------------------
* CVE-2018-11307
* CVE-2018-12022
* CVE-2018-12023
* CVE-2019-17571
* SONATYPE-2010-0053
* CVE-2020-11994
* SONATYPE-2015-0174
* CVE-2020-5397
* SONATYPE-2012-0050

Workarounds
-----------


Security Notes
--------------


References
----------

For more information on the ONAP Guilin release, please see:

#. `ONAP Home Page`_
#. `ONAP Documentation`_
#. `ONAP Release Downloads`_
#. `ONAP Wiki Page`_


.. _`ONAP Home Page`: https://www.onap.org
.. _`ONAP Wiki Page`: https://wiki.onap.org
.. _`ONAP Documentation`: https://docs.onap.org
.. _`ONAP Release Downloads`: https://git.onap.org

Quick Links:
- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_


..      ===================================
..      * * *    GUILIN  MAINTENANCE  * * *
..      ===================================


Guilin maintenance
==================

Version: 7.0.1
--------------

Abstract
--------

This document provides the release notes for the Guilin Maintenance release


Summary
-------

This maintenance release is primarily to resolve bugs identified during Guilin release testing.


Release Data
------------

+--------------------------------------+--------------------------------------+
| **DMaaP Message Router Project**     |                                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Docker images**                    | Same as Guilin Release               |
+--------------------------------------+--------------------------------------+
| **Release designation**              | Guilin Maintenance Release           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2021/04/19                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+

New features
------------

None

**Bug fixes**

- `DMAAP-1547 <https://jira.onap.org/browse/DMAAP-1547>`_ Update certificats for DMaaP message router

**Known Issues**

Same as Guilin Release


..      ===========================
..      * * *    GUILIN    * * *
..      ===========================

Guilin
======

Abstract
--------

This document provides the DMaaP Message Router release notes for the Guilin release.

Summary
-------


Release Data
------------

+--------------------------------------+--------------------------------------+
| **DMaaP Message Router Project**     |                                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Docker images**                    | - onap/dmaap/dmaap-mr:1.1.18         |
|                                      | - onap/dmaap/kafka111:1.0.4          |
|                                      | - onap/dmaap/zookeeper:6.0.3         |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release designation**              | 7.0.0 guilin                         |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2020-11-18                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+


New features
------------

Known Limitations, Issues and Workarounds
-----------------------------------------

System Limitations
------------------


Known Vulnerabilities
---------------------
* CVE-2016-1000027
* CVE-2018-11307
* CVE-2019-13990
* SONATYPE-2018-0624
* CVE-2018-12022
* SONATYPE-2019-0414
* SONATYPE-2019-0808
* CVE-2019-10241
* CVE-2019-12406
* CVE-2020-5408
* CVE-2019-10246
* CVE-2019-10247
* CVE-2020-5397
* SONATYPE-2012-0050
* SONATYPE-2017-0507
* SONATYPE-2019-0469
* CVE-2018-12023
* SONATYPE-2018-0624
* CVE-2019-20444
* CVE-2019-20445
* CVE-2019-16869
* SONATYPE-2020-0029
* SONATYPE-2020-0103
* CVE-2019-17571
* CVE-2020-5398
* CVE-2018-17196


Workarounds
-----------


Security Notes
--------------


References
----------

For more information on the ONAP Guilin release, please see:

#. `ONAP Home Page`_
#. `ONAP Documentation`_
#. `ONAP Release Downloads`_
#. `ONAP Wiki Page`_


.. _`ONAP Home Page`: https://www.onap.org
.. _`ONAP Wiki Page`: https://wiki.onap.org
.. _`ONAP Documentation`: https://docs.onap.org
.. _`ONAP Release Downloads`: https://git.onap.org

Quick Links:
- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_

..      ===========================
..      * * *    FRANKFURT    * * *
..      ===========================

Frankfurt
=========

Abstract
--------

This document provides the DMaaP Message Router release notes for the Frankfurt release.

Summary
-------


Release Data
------------

+--------------------------------------+--------------------------------------+
| **DMaaP Message Router Project**     |                                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Docker images**                    | - onap/dmaap/dmaap-mr:1.1.18         |
|                                      | - onap/dmaap/kafka111:1.0.4          |
|                                      | - onap/dmaap/zookeeper:6.0.3         |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release designation**              | 6.0.0 frankfurt                      |
|                                      |                                      |
+--------------------------------------+--------------------------------------+
| **Release date**                     | 2020-06-04                           |
|                                      |                                      |
+--------------------------------------+--------------------------------------+


New features
------------
* Kafka and Zookeeper images are created using confluent community edition 5.3.0 
* Prometheus monitoring
* Protected all the Kafka operations using AAF
* Remove the AAF dependency by toggling  a flag


Known Limitations, Issues and Workarounds
-----------------------------------------

System Limitations
------------------


Known Vulnerabilities
---------------------
* CVE-2016-1000027
* CVE-2018-11307
* CVE-2019-13990
* SONATYPE-2018-0624
* CVE-2018-12022
* SONATYPE-2019-0414
* SONATYPE-2019-0808
* CVE-2019-10241
* CVE-2019-12406
* CVE-2020-5408
* CVE-2019-10246
* CVE-2019-10247
* CVE-2020-5397
* SONATYPE-2012-0050
* SONATYPE-2017-0507
* SONATYPE-2019-0469
* CVE-2018-12023
* SONATYPE-2018-0624
* CVE-2019-20444
* CVE-2019-20445
* CVE-2019-16869
* SONATYPE-2020-0029
* SONATYPE-2020-0103
* CVE-2019-17571
* CVE-2020-5398
* CVE-2018-17196


Workarounds
-----------


Security Notes
--------------


References
----------

For more information on the ONAP Frankfurt release, please see:

#. `ONAP Home Page`_
#. `ONAP Documentation`_
#. `ONAP Release Downloads`_
#. `ONAP Wiki Page`_


.. _`ONAP Home Page`: https://www.onap.org
.. _`ONAP Wiki Page`: https://wiki.onap.org
.. _`ONAP Documentation`: https://docs.onap.org
.. _`ONAP Release Downloads`: https://git.onap.org

Quick Links:
- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_

ElAlto
======

Version: 1.1.16
---------------

:Release Date: 2019-10-10

**New Features**

- Cert based authentication support in Message Router
- Improved Kafka and Zookeeper cluster lookup
- Pluggable Kafka server.properties,log4j.properties  and Message Router logback.xml


**Bug Fixes**

- Fixed for security vulnerabilities in Message Router
- Fixed  authorization issues in Message Router

**Known Issues**
	NA

**Security Notes**

DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Dublin <https://wiki.onap.org/pages/viewpage.action?pageId=64003715>`_.

Quick Links:

- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_
- `Dublin Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=64003715>`_

**Upgrade Notes**
  NA

**Deprecation Notes**

Dublin
======

Version: 1.1.14
---------------

:Release Date: 2019-06-06

**New Features**

- Upgrade Kafka to v1.1.1
- Support for Authenticated topics
- Add Scaling support
- Support for multi-site applications 
- Add MirrorMaker to allow for message replication across Kafka clusters

**Bug Fixes**
	NA
**Known Issues**
	NA

**Security Notes**

DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Dublin <https://wiki.onap.org/pages/viewpage.action?pageId=64003715>`_.

Quick Links:

- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_
- `Dublin Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=64003715>`_

**Upgrade Notes**
  NA

**Deprecation Notes**

Casablanca
==========

Version: 1.1.8
--------------

:Release Date: 2018-11-30

**New Features**

 - DMaaP client changes to fix some known issues
 - Kafka upgrade  to 0.11.0.1 and corresponding changes in the Message Router
 - New Kafka image was created instead of using the publicly available Kafka image

**Bug Fixes**
	NA
	
**Known Issues**

If the ZooKeeper  is restarted, Message Router works as expected only after restarting the Message Router . Refer  `Jira <https://jira.onap.org/browse/DMAAP-893>`_  for more details

**Security Notes**

DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Casablanca <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_.

Quick Links:

- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_
- `Casablanca Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_

**Upgrade Notes**
  NA

**Deprecation Notes**


Beijing
=======

Version: 1.1.4
--------------

:Release Date: 2018-06-07

**New Features**

 - Topic creation with out AAF
 - DMaaP client changes to call the message Router with out authentication
 - Kafka upgrade from 0.8.11 to 1.1.0
 - Fixes for docker image packaging issues

**Bug Fixes**
	NA
**Known Issues**
	NA

**Security Notes**

DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=28379799>`_.

Quick Links:
- `DMAAP project page <https://wiki.onap.org/display/DW/DMaaP+Planning>`_
- `Passing Badge information for DMAAP <https://bestpractices.coreinfrastructure.org/en/projects/1751>`_
- `Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=28379799>`_

**Upgrade Notes**
  NA

**Deprecation Notes**

Amsterdam
=========

Version: 1.0.1
--------------

:Release Date: 2017-11-16


New Features:

 - Pub/sub messaging metaphor to broaden data processing opportunities
 - A single solution for most event distribution needs to support a range of environments
 - Standardized topic names
 - Implements a RESTful HTTP API for provisioning
 - Implements a RESTful HTTP API for message transactions (i.e. pub, sub)
 - Implements a RESTful HTTP API for transaction metrics
 - Topic registry and discovery



Bug Fixes
   - `DMAAP-165 <https://jira.onap.org/browse/DMAAP-165>`_ Correct documentation rst file errors and warnings
   - `DMAAP-160 <https://jira.onap.org/browse/DMAAP-160>`_ DMaaP periodically loses connection to Kafka
   - `DMAAP-157 <https://jira.onap.org/browse/DMAAP-157>`_ SDC service models distribution fails
   - `DMAAP-151 <https://jira.onap.org/browse/DMAAP-151>`_ Fix docker image bug
   - `DMAAP-1 <https://jira.onap.org/browse/DMAAP-1>`_ MSO DB is not populated with the models from SDC
   
Known Issues
   - `DMAAP-164 <https://jira.onap.org/browse/DMAAP-164>`_ The dependency from kafka for zookeeper created issues when the vm is restarted

Other

