aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LICENSE.txt4
-rw-r--r--docs/architecture.rst17
-rw-r--r--docs/index.rst52
-rw-r--r--docs/release-notes.rst58
-rw-r--r--extra/docker/clamp/config/clds-policy-config-third_party_proxy.properties37
-rw-r--r--extra/docker/elk/.env11
-rw-r--r--extra/docker/elk/docker-compose.yml8
-rwxr-xr-xextra/docker/elk/tools/DMaaPServiceMocker/ds_mocker.py54
8 files changed, 180 insertions, 61 deletions
diff --git a/LICENSE.txt b/LICENSE.txt
index bb235ffb2..1de272e1c 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START==========================================
* ===================================================================
-* Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+* Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
* ===================================================================
*
* Unless otherwise specified, all software contained herein is licensed
@@ -34,6 +34,4 @@
*
* ============LICENSE_END============================================
*
-* ECOMP is a trademark and service mark of AT&T Intellectual Property.
-*
*/
diff --git a/docs/architecture.rst b/docs/architecture.rst
index 6211f121a..19c9b7052 100644
--- a/docs/architecture.rst
+++ b/docs/architecture.rst
@@ -1,21 +1,21 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 AT&T Intellectual Property. All rights reserved.
+.. Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
Clamp in ONAP Architecture
--------------------------
-CLAMP is a platform for designing and managing control loops. It is used to design
-a closed loop, configure it with specific parameters for a particular network
+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 closed loop. For
-example, it pushes the control loop design to the SDC catalog, associating it
-with the VF resource. It requests from DCAE the instantiation of microservices
-to manage the closed loop flow. Further, it creates and updates multiple
+It interacts with other systems to deploy and execute the control loop. For
+example, it gets the control loop blueprint from SDC - DCAE-D.
+It requests from DCAE the instantiation of microservices
+to manage the control loop flow. Furthermore, it creates and updates multiple
policies in the Policy Engine that define the closed loop flow.
The ONAP CLAMP platform abstracts the details of these systems under the concept
@@ -25,6 +25,9 @@ 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.
+
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
diff --git a/docs/index.rst b/docs/index.rst
index 38044ab79..dfb19eb45 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,6 +1,6 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-.. Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+.. Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
CLAMP - Closed Loop Automation Management Platform
==================================================
@@ -40,32 +40,48 @@ CLAMP uses the API's exposed by the following ONAP components:
Delivery
--------
CLAMP component is composed of a UI layer and a BackEnd layer and packaged into a single container.
-CLAMP also requires a database instance with 2 DB, it uses MariaDB.
+CLAMP also requires a database instance with 1 DB, it uses MariaDB.
+CLAMP also uses an ELK stack (Elastic Search, Logstash and Kibana) for the Dashboard.
.. blockdiag::
blockdiag layers {
- orientation = portrait
- CLAMP_UI -> CLAMP_BACKEND;
- CLAMP_BACKEND -> CAMUNDADB;
- CLAMP_BACKEND -> CLDSDB;
- group l1 {
- color = blue;
- label = "CLAMP container";
- CLAMP_UI; CLAMP_BACKEND;
+ orientation = portrait
+ CLAMP_UI -> CLAMP_BACKEND;
+ CLAMP_BACKEND -> CLDSDB;
+ CLAMP_KIBANA -> CLAMP_ELASTICSEARCH;
+ CLAMP_LOGSTASH -> CLAMP_ELASTICSEARCH;
+ group l1 {
+ color = blue;
+ label = "CLAMP container";
+ CLAMP_UI; CLAMP_BACKEND;
+ }
+ group l3 {
+ color = orange;
+ label = "MariaDB container";
+ CLDSDB;
+ }
+ group l4 {
+ color = green;
+ label = "E_Search container";
+ CLAMP_ELASTICSEARCH;
+ }
+ group l5 {
+ color = green;
+ label = "Kibana container";
+ CLAMP_KIBANA;
+ }
+ group l6 {
+ color = green;
+ label = "LogStash container";
+ CLAMP_LOGSTASH;
+ }
}
- group l3 {
- color = orange;
- label = "MariaDB container";
- CAMUNDADB; CLDSDB;
- }
- }
-
Logging & Diagnostic Information
--------------------------------
-CLAMP uses logback framework to generate logs. The logback.xml file cand be found under the [src/main/resources/ folder](src/main/resources).
+CLAMP uses logback framework to generate logs. The logback.xml file can be found under the [src/main/resources/ folder](src/main/resources).
With the default log settings, all logs will be generated into console and into root.log file under the CLAMP root folder. The root.log file is not allowed to be appended, thus restarting the CLAMP will result in cleaning of the old log files.
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index e372c8468..2e6fd4793 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -1,10 +1,62 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 AT&T Intellectual Property. All rights reserved.
+.. Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
Release Notes
=============
+Version: 2.0.0
+--------------
+
+:Release Date: 2018-06-25
+
+**New Features**
+
+The Beijing release is the second release of the Control Loop Automation Management Platform (CLAMP).
+
+The main goal of the Beijing release was to:
+
+ - Enhance Platform maturity by improving CLAMP maturity matrix see `Wiki <https://wiki.onap.org/display/DW/Beijing+Release+Platform+Maturity>`_.
+ - Focus CLAMP on Closed loop runtime operations and control - this is reflected by the move of the design part to DCAE-D.
+ - Introduce CLAMP Dashboard for monitoring of active Closed Loops.
+ - CLAMP is integrated with MSB.
+ - CLAMP has integrated SWAGGER.
+ - CLAMP main Core has been reworked for improved flexibility.
+
+**Bug Fixes**
+
+ - The full list of implemented user stories and epics is available on `BEIJING RELEASE <https://jira.onap.org/projects/CLAMP/versions/10314>`_
+ This includes the list of bugs that were fixed during the course of this release.
+
+**Known Issues**
+
+ - `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work.
+
+ The "Deploy" action does not work directly after submitting it.
+
+ Workaround:
+
+ You have to close the CL and reopen it again. In that case the Deploy action will do something.
+
+
+**Security Issues**
+
+CLAMP is following the CII Best Practices Badge Program, results including security assesment can be found on the `project page <https://bestpractices.coreinfrastructure.org/projects/1197>`_.
+CLAMP Code is formally scanned during build time, the goal of Beijing Release was to ensure that all Critical items are closed.
+The remaining security issues and their workarounds are captured `here <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_.
+
+**Upgrade Notes**
+
+ New Docker Containers are avaialble, an ELK stack is also now part of CLAMP deployments.
+
+**Deprecation Notes**
+
+ The CLAMP Designer UI is now deprecated and unavailable, the design time is being onboarded into SDC - DCAE D.
+
+**Other**
+
+ CLAMP Dashboard is now implemented, allows to monitor Closed Loops that are running by retrieving CL events on DMAAP.
+
Version: 1.1.0
--------------
@@ -22,7 +74,7 @@ The main goal of the Amsterdam release was to:
**Bug Fixes**
- - The full list of implemented user stories and epics is available on `JIRA <https://jira.onap.org/projects/CLAMP/versions/10313>`_
+ - The full list of implemented user stories and epics is available on `AMSTERDAM RELEASE <https://jira.onap.org/projects/CLAMP/versions/10313>`_
This is technically the first release of CLAMP, previous release was the seed code contribution.
As such, the defects fixed in this release were raised during the course of the release.
Anything not closed is captured below under Known Issues. If you want to review the defects fixed in the Amsterdam release, refer to Jira link above.
@@ -35,7 +87,7 @@ The main goal of the Amsterdam release was to:
Workaround:
If you have multiple service available (if not create a dummy one on SDC), just click on another one and then click back on the first one in the list. The ResourceVF should be provisioned now.
-.
+
- `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work.
The "Deploy" action does not work directly after submitting it.
diff --git a/extra/docker/clamp/config/clds-policy-config-third_party_proxy.properties b/extra/docker/clamp/config/clds-policy-config-third_party_proxy.properties
new file mode 100644
index 000000000..ecf21e65a
--- /dev/null
+++ b/extra/docker/clamp/config/clds-policy-config-third_party_proxy.properties
@@ -0,0 +1,37 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# Copyright (C) 2017 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+###
+
+# Configuration Settings for Policy Engine Components
+PDP_URL1=http://third_party_proxy:8085/pdp/ , testpdp, alpha123
+PDP_URL2=http://third_party_proxy:8085/pdp/ , testpdp, alpha123
+NOTIFICATION_TYPE=websocket
+NOTIFICATION_UEB_SERVERS=localhost
+NOTIFICATION_TOPIC=
+CLIENT_ID=python
+# base64 encoding
+#CLIENT_KEY=ChlakDuk
+CLIENT_KEY=dGVzdA==
+#DEVL for development
+#TEST for Test environments
+#PROD for prod environments
+ENVIRONMENT=TEST
diff --git a/extra/docker/elk/.env b/extra/docker/elk/.env
index 4f1781d51..79d794306 100644
--- a/extra/docker/elk/.env
+++ b/extra/docker/elk/.env
@@ -1,13 +1,2 @@
# docker compose related
COMPOSE_PROJECT_NAME=clamp_elk
-
-# dmaap configuration for logstash
-dmaap_base_url=http://localhost:3904/
-dmaap_user=user
-dmaap_password=password
-dmaap_consumer_group=CG42
-dmaap_consumer_id=C42
-
-event_topic=EVENT_TOPIC
-notification_topic=NOTIFICATION_TOPIC
-request_topic=REQUEST_TOPIC
diff --git a/extra/docker/elk/docker-compose.yml b/extra/docker/elk/docker-compose.yml
index ded2c6b01..3b7284d53 100644
--- a/extra/docker/elk/docker-compose.yml
+++ b/extra/docker/elk/docker-compose.yml
@@ -20,6 +20,14 @@ services:
networks:
es_net:
environment:
+ - dmaap_base_url=http://localhost:3904/
+ - dmaap_user=user
+ - dmaap_password=password
+ - dmaap_consumer_group=CG42
+ - dmaap_consumer_id=C42
+ - event_topic=EVENT_TOPIC
+ - notification_topic=NOTIFICATION_TOPIC
+ - request_topic=REQUEST_TOPIC
kibana:
image: kibana
diff --git a/extra/docker/elk/tools/DMaaPServiceMocker/ds_mocker.py b/extra/docker/elk/tools/DMaaPServiceMocker/ds_mocker.py
index 9891b8ef6..c1116066e 100755
--- a/extra/docker/elk/tools/DMaaPServiceMocker/ds_mocker.py
+++ b/extra/docker/elk/tools/DMaaPServiceMocker/ds_mocker.py
@@ -194,25 +194,41 @@ class CLStatus(object):
yield Notification.final().success(**config)
raise StopIteration()
-DMaaPMessage.dmaap_host_url = "http://uebsb93kcdc.it.att.com:3904"
-Event.topic = "APPC-TEST-AMDOCS1-1607-E2E"
-Notification.topic = "APPC-TEST-AMDOCS1-1607-IST"
-# Request.topic = "APPC-TEST-AMDOCS1-1607-RY303T"
-
-test_datas = [CLStatus(missing=False, disabled=False, op_failure=False) for i in range(45)] \
+def print_usage():
+ print("""
+ ./ds_mocker.py <DMAAP_URL> <EVENT_TOPIC> [NOTIFICATION_TOPIC [REQUEST_TOPIC]]
+ """)
+ exit()
+
+def push(test_datas):
+ for current_i, status in enumerate(test_datas):
+ time.sleep(random.randint(0,6))
+ for s in status:
+ # print(s)
+ status_code = s.publish()
+ if status_code != 200:
+ print("Error when publishing : status_code={}".format(status_code))
+ exit(1)
+ time.sleep(random.randint(0,3))
+ print("%03d,missing:%5s,disabled:%5s,op_failure:%5s - %s" % (current_i, status._missing, status._disabled, status._op_failure, status._config))
+
+
+def generate_dataset_1():
+ test_datas = [CLStatus(missing=False, disabled=False, op_failure=False) for i in range(45)] \
+ [CLStatus(missing=True, disabled=False, op_failure=False) for i in range(5)] \
+ [CLStatus(missing=False, disabled=True, op_failure=False) for i in range(6)] \
+ [CLStatus(missing=False, disabled=False, op_failure=True) for i in range(7)]
-random.shuffle(test_datas)
-random.shuffle(test_datas)
-
-for current_i, status in enumerate(test_datas):
- time.sleep(random.randint(0,6))
- for s in status:
- # print(s)
- status_code = s.publish()
- if status_code != 200:
- print("Error when publishing : status_code={}".format(status_code))
- exit(1)
- time.sleep(random.randint(0,3))
- print("%03d,missing:%5s,disabled:%5s,op_failure:%5s - %s" % (current_i, status._missing, status._disabled, status._op_failure, status._config))
+ random.shuffle(test_datas)
+ return test_datas
+
+
+if __name__ == "__main__":
+ import sys
+ if len(sys.argv) < 3:
+ print_usage()
+
+ DMaaPMessage.dmaap_host_url = sys.argv[1]
+ Event.topic = sys.argv[2]
+ Notification.topic = len(sys.argv) > 3 and sys.argv[3] or sys.argv[2]
+ # Request.topic = len(sys.argv) > 4 or Notification.topic
+ push(generate_dataset_1())