aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcps-ncmp-rest/docs/openapi/openapi-inventory.yml2
-rwxr-xr-xcps-ncmp-rest/docs/openapi/openapi.yml2
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy15
-rw-r--r--cps-rest/docs/openapi/openapi.yml2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml53
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml1
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/23-yang-resource-index.yaml1
-rw-r--r--docker-compose/config/endurance.env1
-rw-r--r--docker-compose/config/prometheus.yml13
-rw-r--r--docker-compose/docker-compose.yml2
-rw-r--r--docs/api/swagger/cps/openapi.yaml2
-rw-r--r--docs/api/swagger/ncmp/openapi-inventory.yaml2
-rw-r--r--docs/api/swagger/ncmp/openapi.yaml2
-rw-r--r--docs/release-notes.rst12
14 files changed, 88 insertions, 22 deletions
diff --git a/cps-ncmp-rest/docs/openapi/openapi-inventory.yml b/cps-ncmp-rest/docs/openapi/openapi-inventory.yml
index 6c207ee2af..b52a7fbfa7 100755
--- a/cps-ncmp-rest/docs/openapi/openapi-inventory.yml
+++ b/cps-ncmp-rest/docs/openapi/openapi-inventory.yml
@@ -21,7 +21,7 @@ openapi: 3.0.3
info:
title: NCMP Inventory API
description: NCMP Inventory API
- version: "3.5.4"
+ version: "3.6.0"
servers:
- url: /ncmpInventory
components:
diff --git a/cps-ncmp-rest/docs/openapi/openapi.yml b/cps-ncmp-rest/docs/openapi/openapi.yml
index dd2706a795..3faf3c181e 100755
--- a/cps-ncmp-rest/docs/openapi/openapi.yml
+++ b/cps-ncmp-rest/docs/openapi/openapi.yml
@@ -22,7 +22,7 @@ openapi: 3.0.3
info:
title: NCMP to CPS Proxy API
description: NCMP to CPS Proxy API
- version: "3.5.4"
+ version: "3.6.0"
servers:
- url: /ncmp
components:
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy
index 4f41f2cbb1..bf79fe35d3 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy
@@ -209,13 +209,16 @@ class TrustLevelManagerSpec extends Specification {
assert ncmpServiceCmHandle.currentTrustLevel == TrustLevel.NONE
}
- def 'CmHandle trust level removed'() {
- given: 'a cm handle'
+ def 'Removing cm Handle ids from trust level cache.'() {
+ given: 'a cm handle id with trustlevel in the cache'
trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE)
- when: 'the remove is handled'
- objectUnderTest.removeCmHandles(['ch-1'])
- then: 'cm handle removed from the cache'
- assert trustLevelPerCmHandleId.get('ch-1') == null
+ when: 'remove existing and non-existing cm handle ids'
+ objectUnderTest.removeCmHandles(['non-existing-id','ch-1'])
+ then: 'both cm handle ids are not included in the cache'
+ assert !trustLevelPerCmHandleId.contains('non-existing-id')
+ assert !trustLevelPerCmHandleId.contains('ch-1')
+ and: 'removing the non-existing id did not cause an exception'
+ noExceptionThrown()
}
}
diff --git a/cps-rest/docs/openapi/openapi.yml b/cps-rest/docs/openapi/openapi.yml
index 95c32312cf..f4eab61875 100644
--- a/cps-rest/docs/openapi/openapi.yml
+++ b/cps-rest/docs/openapi/openapi.yml
@@ -23,7 +23,7 @@ openapi: 3.0.3
info:
title: ONAP Open API v3 Configuration Persistence Service
description: Configuration Persistence Service is a Model Driven Generic Database
- version: "3.5.4"
+ version: "3.6.0"
contact:
name: ONAP
url: "https://onap.readthedocs.io"
diff --git a/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml b/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml
index c9fbf8faaf..72d4271132 100644
--- a/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml
+++ b/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml
@@ -19,6 +19,7 @@ databaseChangeLog:
- changeSet:
id: 1-1
author: cps
+ comment: Create anchor table
changes:
- createTable:
columns:
@@ -45,6 +46,7 @@ databaseChangeLog:
- changeSet:
id: 1-2
author: cps
+ comment: Create relation table
changes:
- createTable:
columns:
@@ -77,6 +79,7 @@ databaseChangeLog:
- changeSet:
id: 1-3
author: cps
+ comment: Create relation_type table
changes:
- createTable:
columns:
@@ -97,6 +100,7 @@ databaseChangeLog:
- changeSet:
id: 1-4
author: cps
+ comment: create fragment table
changes:
- createTable:
columns:
@@ -134,6 +138,7 @@ databaseChangeLog:
- changeSet:
id: 1-5
author: cps
+ comment: Create schema_set table
changes:
- createTable:
columns:
@@ -159,6 +164,7 @@ databaseChangeLog:
- changeSet:
id: 1-6
author: cps
+ comment: Create yang_resource table
changes:
- createTable:
columns:
@@ -189,6 +195,7 @@ databaseChangeLog:
- changeSet:
id: 1-7
author: cps
+ comment: Create dataspace table
changes:
- createTable:
columns:
@@ -209,6 +216,7 @@ databaseChangeLog:
- changeSet:
id: 1-8
author: cps
+ comment: Create schema_node table
changes:
- createTable:
columns:
@@ -229,6 +237,7 @@ databaseChangeLog:
- changeSet:
id: 1-9
author: cps
+ comment: Create schema_set_yang_resources table
changes:
- createTable:
columns:
@@ -246,6 +255,7 @@ databaseChangeLog:
- changeSet:
id: 1-10
author: cps
+ comment: Add index to the anchor table on schema_set_id
changes:
- createIndex:
columns:
@@ -256,6 +266,7 @@ databaseChangeLog:
- changeSet:
id: 1-11
author: cps
+ comment: Add uniqueness constraint to anchor table
changes:
- addUniqueConstraint:
columnNames: dataspace_id, name
@@ -264,6 +275,7 @@ databaseChangeLog:
- changeSet:
id: 1-12
author: cps
+ comment: Add foreign key constraint from fragment to anchor table
changes:
- addForeignKeyConstraint:
baseColumnNames: anchor_id
@@ -279,6 +291,7 @@ databaseChangeLog:
- changeSet:
id: 1-13
author: cps
+ comment: Add index to relation table on from_fragment_id
changes:
- createIndex:
columns:
@@ -289,6 +302,7 @@ databaseChangeLog:
- changeSet:
id: 1-14
author: cps
+ comment: Add index to relation table on to_fragment_id
changes:
- createIndex:
columns:
@@ -299,6 +313,7 @@ databaseChangeLog:
- changeSet:
id: 1-15
author: cps
+ comment: Add index to relation table on relation_type_id
changes:
- createIndex:
columns:
@@ -309,6 +324,7 @@ databaseChangeLog:
- changeSet:
id: 1-16
author: cps
+ comment: Add primary key relation table
changes:
- addPrimaryKey:
columnNames: to_fragment_id, from_fragment_id, relation_type_id
@@ -317,6 +333,7 @@ databaseChangeLog:
- changeSet:
id: 1-17
author: cps
+ comment: Add index to fragment table on anchor_id
changes:
- createIndex:
columns:
@@ -327,6 +344,7 @@ databaseChangeLog:
- changeSet:
id: 1-18
author: cps
+ comment: Add index to fragment table on dataspace_id
changes:
- createIndex:
columns:
@@ -337,6 +355,7 @@ databaseChangeLog:
- changeSet:
id: 1-19
author: cps
+ comment: Add index to fragment table on parent_id
changes:
- createIndex:
columns:
@@ -347,6 +366,7 @@ databaseChangeLog:
- changeSet:
id: 1-20
author: cps
+ comment: Add index to fragment table on schema_node_id
changes:
- createIndex:
columns:
@@ -357,6 +377,7 @@ databaseChangeLog:
- changeSet:
id: 1-21
author: cps
+ comment: Add index to fragment table on xpath and dataspace_id
changes:
- createIndex:
columns:
@@ -370,6 +391,7 @@ databaseChangeLog:
- changeSet:
id: 1-22
author: cps
+ comment: Add uniqueness constraint to fragment table
changes:
- addUniqueConstraint:
columnNames: dataspace_id, anchor_id, xpath
@@ -378,6 +400,7 @@ databaseChangeLog:
- changeSet:
id: 1-23
author: cps
+ comment: Add foreign key constraint from relation to fragment table on from_fragment_id
changes:
- addForeignKeyConstraint:
baseColumnNames: from_fragment_id
@@ -393,6 +416,7 @@ databaseChangeLog:
- changeSet:
id: 1-24
author: cps
+ comment: Add foreign key constraint from relation to fragment table on to_fragment_id
changes:
- addForeignKeyConstraint:
baseColumnNames: to_fragment_id
@@ -408,6 +432,7 @@ databaseChangeLog:
- changeSet:
id: 1-25
author: cps
+ comment: Add uniqueness constraint to schema_set table
changes:
- addUniqueConstraint:
columnNames: name, dataspace_id
@@ -416,6 +441,7 @@ databaseChangeLog:
- changeSet:
id: 1-26
author: cps
+ comment: Add foreign key constraint from schema_set_yang_resources to schema_set table
changes:
- addForeignKeyConstraint:
baseColumnNames: schema_set_id
@@ -431,6 +457,7 @@ databaseChangeLog:
- changeSet:
id: 1-27
author: cps
+ comment: Add uniqueness constraint to yang_resource table
changes:
- addUniqueConstraint:
columnNames: checksum
@@ -439,6 +466,7 @@ databaseChangeLog:
- changeSet:
id: 1-28
author: cps
+ comment: Add uniqueness constraint to dataspace table
changes:
- addUniqueConstraint:
columnNames: name
@@ -447,6 +475,7 @@ databaseChangeLog:
- changeSet:
id: 1-29
author: cps
+ comment: Add foreign key constraint from fragment to dataspace table
changes:
- addForeignKeyConstraint:
baseColumnNames: dataspace_id
@@ -462,6 +491,7 @@ databaseChangeLog:
- changeSet:
id: 1-30
author: cps
+ comment: Add foreign key constraint from schema_set to dataspace table
changes:
- addForeignKeyConstraint:
baseColumnNames: dataspace_id
@@ -477,6 +507,7 @@ databaseChangeLog:
- changeSet:
id: 1-31
author: cps
+ comment: Add index to schema_node table on schema_node_identifier
changes:
- createIndex:
columns:
@@ -487,6 +518,7 @@ databaseChangeLog:
- changeSet:
id: 1-32
author: cps
+ comment: Add foreign key constraint from schema_set_yang_resources to yang_resource table
changes:
- addForeignKeyConstraint:
baseColumnNames: yang_resource_id
@@ -502,6 +534,7 @@ databaseChangeLog:
- changeSet:
id: 1-33
author: cps
+ comment: Add foreign key constraint from anchor to dataspace table
changes:
- addForeignKeyConstraint:
baseColumnNames: dataspace_id
@@ -517,6 +550,7 @@ databaseChangeLog:
- changeSet:
id: 1-34
author: cps
+ comment: Add foreign key constraint from anchor to schema_set table
changes:
- addForeignKeyConstraint:
baseColumnNames: schema_set_id
@@ -532,6 +566,7 @@ databaseChangeLog:
- changeSet:
id: 1-35
author: cps
+ comment: Add foreign key constraint from relation to relation_type table
changes:
- addForeignKeyConstraint:
baseColumnNames: relation_type_id
@@ -547,6 +582,7 @@ databaseChangeLog:
- changeSet:
id: 1-36
author: cps
+ comment: Add foreign key constraint in fragment table from parent_id to id
changes:
- addForeignKeyConstraint:
baseColumnNames: parent_id
@@ -562,6 +598,7 @@ databaseChangeLog:
- changeSet:
id: 1-37
author: cps
+ comment: Add foreign key constraint from fragment to schema_node table
changes:
- addForeignKeyConstraint:
baseColumnNames: schema_node_id
@@ -597,8 +634,8 @@ databaseChangeLog:
- changeSet:
logicalFilePath: changelog/db/changes/11-add-column-to-yang-resources-table.yaml
id: 11
- label: add-module-name-and-revision-column
author: cps
+ comment: Add module name and revision columns
changes:
- addColumn:
tableName: yang_resource
@@ -612,8 +649,8 @@ databaseChangeLog:
- changeSet:
logicalFilePath: changelog/db/changes/11-add-column-to-yang-resources-table.yaml
id: 11.1
- label: update-previous-data-module-name-and-revision
author: cps
+ comment: Update previous data module name and revision
changes:
- sql:
sql: update yang_resource set module_name = 'dummy_module_name', revision = '2021-08-04' where module_name is null and revision is null
@@ -622,8 +659,8 @@ databaseChangeLog:
- changeSet:
logicalFilePath: changelog/db/changes/15-rename-column-yang-resource-table.yaml
author: cps
- label: yang-resource-rename-column
id: 15
+ comment: rename yang-resource.file_name column to name
changes:
- renameColumn:
tableName: yang_resource
@@ -636,6 +673,7 @@ databaseChangeLog:
- changeSet:
logicalFilePath: changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml
author: cps
+ comment: add index to schema_set_yang_resources on schema_set_id
id: 17
changes:
- createIndex:
@@ -651,6 +689,7 @@ databaseChangeLog:
- changeSet:
logicalFilePath: changelog/db/changes/18-cascade-delete-fragment-children.yaml
author: cps
+ comment: add cascade delete to fragment table (delete children automatically)
id: 18
changes:
- dropForeignKeyConstraint:
@@ -686,6 +725,7 @@ databaseChangeLog:
logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
id: 19-1
author: cps
+ comment: Remove dataspace_id field from fragment table, drop related index
changes:
- dropIndex:
indexName: FKI_FRAGMENT_DATASPACE_ID_FK
@@ -701,6 +741,7 @@ databaseChangeLog:
logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
id: 19-2
author: cps
+ comment: Remove dataspace_id field from fragment table, drop related index, change related constraint
changes:
- dropUniqueConstraint:
constraintName: fragment_dataspace_id_anchor_id_xpath_key
@@ -721,6 +762,7 @@ databaseChangeLog:
logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
id: 19-3
author: cps
+ comment: Remove dataspace_id field from fragment table, drop related index, remove unique constraint
changes:
- dropForeignKeyConstraint:
baseTableName: fragment
@@ -741,6 +783,7 @@ databaseChangeLog:
logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
id: 19-4
author: cps
+ comment: Remove dataspace_id field from fragment table, drop column
changes:
- dropColumn:
columnName: dataspace_id
@@ -762,6 +805,7 @@ databaseChangeLog:
- changeSet:
logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
id: 19-5
+ comment: Remove dataspace_id field from fragment table, add non-null constraint on anchor_id
author: cps
changes:
- addNotNullConstraint:
@@ -775,6 +819,7 @@ databaseChangeLog:
columnDataType: BIGINT
- changeSet:
author: cps
+ comment: Align integer datatypes to java (change from bigint to integer)
logicalFilePath: changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml
id: 20
changes:
@@ -812,4 +857,4 @@ databaseChangeLog:
path: changelog/db/changes/21-escape-quotes-in-xpath-forward.sql
rollback:
- sqlFile:
- path: changelog/db/changes/21-escape-quotes-in-xpath-rollback.sql \ No newline at end of file
+ path: changelog/db/changes/21-escape-quotes-in-xpath-rollback.sql
diff --git a/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml
index 8bdabb5019..e2526f6a56 100644
--- a/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml
+++ b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml
@@ -19,6 +19,7 @@
databaseChangeLog:
- changeSet:
author: cps
+ comment: Change the ID generation strategy on fragment table from IDENTITY to SEQUENCE generator for improved performance
id: 21
changes:
- sqlFile:
diff --git a/cps-ri/src/main/resources/changelog/db/changes/23-yang-resource-index.yaml b/cps-ri/src/main/resources/changelog/db/changes/23-yang-resource-index.yaml
index 0dff471dc1..8c343ef418 100644
--- a/cps-ri/src/main/resources/changelog/db/changes/23-yang-resource-index.yaml
+++ b/cps-ri/src/main/resources/changelog/db/changes/23-yang-resource-index.yaml
@@ -19,6 +19,7 @@
databaseChangeLog:
- changeSet:
author: cps
+ comment: Add index to the yang_resource table on module_name and revision
id: 23
changes:
- createIndex:
diff --git a/docker-compose/config/endurance.env b/docker-compose/config/endurance.env
index 0ca1a1149a..be337219cf 100644
--- a/docker-compose/config/endurance.env
+++ b/docker-compose/config/endurance.env
@@ -3,6 +3,7 @@ DB_PORT=5433
NGINX_CONTAINER_NAME=endurance-nginx-loadbalancer
CPS_CORE_PORT=8884
+CPS_PORT_RANGE=8798-8799
ZOOKEEPER_CONTAINER_NAME=endurance-zookeeper
ZOOKEEPER_PORT=2182
diff --git a/docker-compose/config/prometheus.yml b/docker-compose/config/prometheus.yml
index e1aa4763d9..8db07c8d05 100644
--- a/docker-compose/config/prometheus.yml
+++ b/docker-compose/config/prometheus.yml
@@ -3,7 +3,7 @@ global:
evaluation_interval: 5s
scrape_configs:
-- job_name: 'cps-and-ncmp'
+- job_name: 'cps-and-ncmp-kpi'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
@@ -11,4 +11,13 @@ scrape_configs:
# - 'docker-compose-cps-and-ncmp-1:8080'
# - 'docker-compose-cps-and-ncmp-2:8080'
- targets:
- - 'cps-and-ncmp:8080' \ No newline at end of file
+ - '172.17.0.1:8698'
+ - '172.17.0.1:8699'
+
+- job_name: 'cps-and-ncmp-endurance'
+ metrics_path: '/actuator/prometheus'
+ scrape_interval: 5s
+ static_configs:
+ - targets:
+ - '172.17.0.1:8798'
+ - '172.17.0.1:8799' \ No newline at end of file
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
index ae34fc3606..604cfe91a2 100644
--- a/docker-compose/docker-compose.yml
+++ b/docker-compose/docker-compose.yml
@@ -49,6 +49,8 @@ services:
cps-and-ncmp:
image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-and-ncmp:${CPS_VERSION:-latest}
+ ports:
+ - ${CPS_PORT_RANGE:-8698-8699}:8080
environment:
CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser}
CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!}
diff --git a/docs/api/swagger/cps/openapi.yaml b/docs/api/swagger/cps/openapi.yaml
index fea68480ab..7a300207cf 100644
--- a/docs/api/swagger/cps/openapi.yaml
+++ b/docs/api/swagger/cps/openapi.yaml
@@ -9,7 +9,7 @@ info:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0
title: ONAP Open API v3 Configuration Persistence Service
- version: 3.5.4
+ version: 3.6.0
servers:
- url: /cps/api
security:
diff --git a/docs/api/swagger/ncmp/openapi-inventory.yaml b/docs/api/swagger/ncmp/openapi-inventory.yaml
index ab83ed2ae6..0b9f5b9414 100644
--- a/docs/api/swagger/ncmp/openapi-inventory.yaml
+++ b/docs/api/swagger/ncmp/openapi-inventory.yaml
@@ -2,7 +2,7 @@ openapi: 3.0.3
info:
description: NCMP Inventory API
title: NCMP Inventory API
- version: 3.5.4
+ version: 3.6.0
servers:
- url: /ncmpInventory
security:
diff --git a/docs/api/swagger/ncmp/openapi.yaml b/docs/api/swagger/ncmp/openapi.yaml
index e7256c0836..55adf40615 100644
--- a/docs/api/swagger/ncmp/openapi.yaml
+++ b/docs/api/swagger/ncmp/openapi.yaml
@@ -2,7 +2,7 @@ openapi: 3.0.3
info:
description: NCMP to CPS Proxy API
title: NCMP to CPS Proxy API
- version: 3.5.4
+ version: 3.6.0
servers:
- url: /ncmp
security:
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 85dce216bd..d60c2c0d73 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -15,7 +15,7 @@ CPS Release Notes
.. * * * PARIS * * *
.. ====================
-Version: 3.5.6
+Version: 3.6.0
==============
Release Data
@@ -25,10 +25,10 @@ Release Data
| **CPS Project** | |
| | |
+--------------------------------------+--------------------------------------------------------+
-| **Docker images** | onap/cps-and-ncmp:3.5.6 |
+| **Docker images** | onap/cps-and-ncmp:3.6.0 |
| | |
+--------------------------------------+--------------------------------------------------------+
-| **Release designation** | 3.5.6 Oslo |
+| **Release designation** | 3.6.0 Paris |
| | |
+--------------------------------------+--------------------------------------------------------+
| **Release date** | Not yet released |
@@ -83,9 +83,13 @@ Features
- `CPS-2436 <https://lf-onap.atlassian.net/browse/CPS-2436>`_ CM Avc Event to publish source key to target key while forwarding.
- `CPS-2445 <https://lf-onap.atlassian.net/browse/CPS-2445>`_ Expose CPS and NCMP version information using git plugin.
- `CPS-2451 <https://lf-onap.atlassian.net/browse/CPS-2451>`_ Removing oparent from CPS-NCMP and ONAP DMI Plugin repository.
- - `CPS-2478 <https://lf-onap.atlassian.net/browse/CPS-2478>`_ Minimize affect of module and size from Cm Handle Registration and De-Registration use case.
+ - `CPS-2478 <https://lf-onap.atlassian.net/browse/CPS-2478>`_ Optimized Cm Handle Registration and De-Registration use case.
- `CPS-2507 <https://lf-onap.atlassian.net/browse/CPS-2507>`_ Upgrade liquibase to 4.30.0 version.
+Performance
+-----------
+The OSLO delivery brought major performance enhancements by streamlining module sync algorithm. It also optimized caching technology, improving instance efficiency and connection management.
+
Version: 3.5.4
==============