.. This work is licensed under a Creative Commons Attribution 4.0 International
.. License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 Bell Canada & Amdocs Intellectual Property.  All rights
.. reserved.
.. _release_notes_casablanca:

ONAP Operations Manager Release Notes
=====================================

Version 3.0.0 Casablanca Release
--------------------------------

:Release Date: 2018-11-30

**Previous Release Notes**

- :ref:`Beijing <release_notes_beijing>`
- :ref:`Amsterdam <release_notes_amsterdam>`

Summary
-------

The focus of this release was on incremental improvements in the following
areas:

* Pluggable persistent storage with support for GlusterFS as the first storage
  class provisioner

* CPU and Memory limits in Helm Charts to improve Pod placement based on
  resource availablity in Kubernetes Cluster

* Support of Node Selectors for Pod placement

* Common "shared" Helm Charts referencing common images

  - mariadb-galera
  - postgres
  - cassandra
  - mysql
  - mongo

* Integration of ARK Backup and Restore solution

* Introduction of Helm deploy and undeploy plugins to better manage ONAP
  deployments


**Security Notes**

OOM code has been formally scanned during build time using NexusIQ and no
Critical vulnerability was found.

Quick Links:

  - `OOM project page <https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project>`_

  - `Passing Badge information for OOM <https://bestpractices.coreinfrastructure.org/en/projects/1631>`_


**Known Issues**

 * **Problem**:        kubectl connections to pods (kubectl exec|logs) will
   fail after a while due to a known bug in Kubernetes (1.11.2)

   **Workaround**:     Restart of the kubelet daemons on the k8s hosts

   **Fix**:            Will be delivered in the next release via a new
   Kubernetes version (1.12)

   - `K8S Bug Report <https://github.com/kubernetes/kubernetes/issues/67659>`_
   - `OOM-1532 <https://jira.onap.org/browse/OOM-1532>`_
   - `OOM-1516 <https://jira.onap.org/browse/OOM-1516>`_
   - `OOM-1520 <https://jira.onap.org/browse/OOM-1520>`_

End of Release Notes
