.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (c) 2017-2018 AT&T Intellectual Property.  All rights reserved.
.. _architecture:

Clamp in ONAP Architecture
--------------------------

CLAMP is a platform for designing and managing control loops. It is used to visualize
a control loop, configure it with specific parameters for a particular network
service, then deploying and undeploying it.  Once deployed, the user can also
update the loop with new parameters during runtime, as well as suspending and
restarting it.

It interacts with other systems to deploy and execute the control loop. For
example, it extracts the control loop blueprint and Policy Model(Model Driven Control Loop) 
from CSAR distributed by SDC/DCAE-DS.
It requests from DCAE the instantiation of microservices
to manage the control loop flow.  Furthermore, it creates and updates multiple
policies (for DCAE mS configuration and actual Control Operations) in the Policy Engine 
that define the closed loop flow.

|clamp-flow|

The ONAP CLAMP platform abstracts the details of these systems under the concept
of a control loop model.  The design of a control loop and its management is
represented by a workflow in which all relevant system interactions take
place.  This is essential for a self-service model of creating and managing
control loops, where no low-level user interaction with other components is
required.

CLAMP also allows to visualize control loop metrics through a dashboard, in order
to help operations understand how and when a control loop is triggered and takes action.

|dashboard-flow|

At a higher level, CLAMP is about supporting and managing the broad operational
life cycle of VNFs/VMs and ultimately ONAP components itself. It will offer the
ability to design, test, deploy and update control loop automation - both closed
and open. Automating these functions would represent a significant saving on
operational costs compared to traditional methods.

|closed-loop|

.. |clamp-flow| image:: images/architecture/distdepl.png
.. |dashboard-flow| image:: images/architecture/monitoring.png
.. |closed-loop| image:: images/architecture/ONAP-closedloop.png
