.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
.. Copyright (C) 2020 highstreet technologies and others

OAM Controller Configuration and Deployment
===========================================

This documents the configuration and deployment of the O-RAN SC O1 Controller as
part of the SMO implementations by the ONAP project.

The SMO deployment is described in the `O-RAN-SC wiki <https://wiki.o-ran-sc.org/display/IAT/Automated+deployment+and+testing+-+using+SMO+package+and+ONAP+Python+SDK>`_

The procedure provides:
* ONAP-DCAE
* ONAP-DMaaP
* ONAP-SDNC (single node, SMO functionality)

but also automatic deployment of cloud native network functions and Automated
tests of the deployment.
