Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »


Project Name: Distributed KV Store for configuration settings

Project description:

Requirements:

  • Currently, the configuration properties are stored in files. Each ONAP project maintains its settings in its own configuration files. Some of the challenges & requirements are :
    • Any update to the configuration settings require restart of the service.  This could lead to ONAP service unavailability for some time.  Requirement is that any configuration update should not lead to restart of ONAP services.
    • There is good amount of duplication information among the files in various ONAP projects.  Due to this, any change in this common information requires updating multiple files, which is error prone.
    • In future releases, ONAP is going to bring up services with multiple instances for high availability.  Any change in the configuration should be reflected in all service instances and also the configuration should be consistent in all instances.
    • Configuration store itself should be distributed for high availability of configuration data.
    • Configuration change should be easier for administrator - GUI facility to update the configuration.
  • When there is a cluster of service instances, there can be a need for one of the instances to become a leader. That is, leader election could be a requirement for services.
  • Yet times, some operations need to be atomically performed and hence there could be a requirement for distributed lock.

Distributed KV Store project is expected to address above requirements. It is expected to provide following functionality

  • Centralization of  configuration
  • Common configuration settings without duplication  
  • Configuration update without the need for  restarting services
  • GUI/CLI to update the configuration settings
  • Auto notification of services when there is a configuration change.
  • Reliable and distributed data storage. 
  • Leadership selection
  • Distributed lock 


Pictorial representation of Distributed KV Store with consuming services:



API Reference for the KV store:

Scope:

Functionality :

  • Ability to store configuration settings using reliable and distributed KV storage systems.
  • Ability to provide leadership election among micro services.
  • Ability to provide semaphore across service instances of ONAP services.
  • Ability to modify the configuration settings
  • Ability to inform active ONAP services of configuration changes.
  • Ability to read the changed configuration 
  • config-seed micro service to load default values of configuration settings, if settings are not present in the distributed KV storage.
  • Bootstrap phase functionality where each service upon startup reads the configuration settings from distribtued KV storage.

Interface/API:

  • RESTful API to set/read/update the configuration settings,  leadership election and take/release distributed lock.
  • Long poll for near instant configuration notifications.
  • Client packages:
    • For configuration store,  both Java and Python have abstraction alrady over consul and hence there is no special service-level package is required.
    • Python and Java based client package to simplify leadership election and distirbuted locks. This package wraps various operations required to elect the leader. Also, this client package abstracts various operations required to create lock, take and release the lock.


Architecture Alignment:

  • How does this project fit into the rest of the ONAP Architecture?
    • Configuration-seed micro service is expcted to be a common service.
    • consul from MSB can be used as Distributed key store
    • Boot strap phase is expected to be part of each service 
  • What other ONAP projects does this project depend on?
    • It does not depend on any existing ONAP projects.
  • Are there dependencies with other open source projects?
    • Consul (http://consul.io).  Reasons for choosing consule:
      • Well maintained.
      • Used by many projects (e.g EdgexFoundry, vault project)
      • Good support for Java libraries (For Java based services, cfg4j is normally used to read the configuration. cfg4j has consul backend,  python-envconsul package is useful for python based services)
      • It is alredy being used by ONAP (as part of MSB) as service-registry and service-discovery.


Other Information:


Key Project Facts:

Primary contact :  Srinivasa Addepalli,  Shashank Kumar Shankar

Facts

Info

PTL (first and last name)
Jira Project Name
Jira Key
Project ID
Link to Wiki Space

Release Components Name:

Note: refer to existing project for details on how to fill out this table

Components Name

Components Repository name

Maven Group ID

Components Description

distributed-kv-store

music/distributed-kv-store

org.onap.music.distributed-kv-store

Source code to read initial configuration date into KV Store.





Resources committed to the Release:

Note 1: No more than 5 committers per project. Balance the committers list and avoid members representing only one company.

Note 2: It is critical to complete all the information requested, that will help to fast forward the onboarding process.

Role

First Name Last Name

Linux Foundation ID

Email Address

Location

PTL



CommittersShashank Kumar Shankarshashank.kumar.shankarshashank.kumar.shankar@intel.comPortland, OR















Contributors













Distributed KV Store Functionality Freeze Checklist:


Practice AreaCheckpointYes/NoEvidence - CommentHow to?
Product Management

Are all provisional APIs interface (stub) been defined (at beta-quality level)? 

Yeshttps://git.onap.org/music/distributed-kv-store/tree/swagger.json


Is there a final list of externally consumable APIs available?Yeshttps://git.onap.org/music/distributed-kv-store/tree/swagger.json

For all completed Sprints, have Sprint Backlog Stories been marked as "Done" in Jira?

Yes

Are all tasks associated with the completed Sprint Backlog Stories been marked as "Done" in Jira?

Yeshttps://jira.onap.org/secure/RapidBoard.jspa?rapidView=113&view=detail&selectedIssue=MUSIC-9&quickFilter=273
If applicable to your project, has your team been able to clear the project' blockers? If not provide status on the plan to close the blocker(s).NoWaiting for Go to be enabled in the Jenkins job builder. Currenly waiting for patch to be merged: https://gerrit.onap.org/r/#/c/31137/
What new features or changes to existing features in this project scope need to be communicated to VNF Providers? List the changes in the Evidence tab.NA

If yes to the previous question, have these been communicated to the VNF Requirements project? NA

Release Management

Have all source code files been updated with License Apache 2 header?Yes
Specific rules and instruction are available in ONAP wiki.
Has the year format in copyright header of all source code files been updated? (Rules for new files created in 2018 and existing files modified in 2018 are different)NA
Guidance on year format
In case source code can't be edited, has a "License.txt" file been placed at the root directory for which the license is applicable?NA
Guidance for source code file that can't be edited
(a) Has the Project Team added appropriate license and copyright notices to all ONAP source code and documentation files, where possible for the particular file format?Yes

(b) Has the Project Team reviewed and understood the most recent license scan reports from the LF, for both (a) licenses within the codebase and (b) licenses for third-party build time dependencies?Yes

For both (a) and (b) questions, have all high priority non-Project Licenses been either removed, planned for removal before code freeze, or escalated as likely exception requests?Yes

Have all API projects dependencies been captured?

Yeshttps://git.onap.org/music/distributed-kv-store/tree/swagger.json
DevelopmentFor new projects approved for this release, have all defined repositories source code been placed into Gerrit?Yes

https://gerrit.onap.org/r/gitweb?p=music/distributed-kv-store.git;a=summary

For evidences, provide link(s) to Gerrit repos by providing the URL as shown in this example

Example

Has the project team reach the Automated Unit Test Code Coverage expectation? (Refer to artifacts available in Sonar)NA

Not applicatible to Golang projects.

Guidance on Code Coverage and Static Code Analysis

Tools: Sonar

Is there any binaries (jar, war, tar, gz, gzip, zip files) in Gerrit project repository?No
Refer to CI Development Best Practices
Could you ensure that all proprietary trademarks, logos, product names, company name, etc. have been removed? All ONAP deliverables must comply with this rule and be agnostic of any proprietary symbols.Yes

Is there any pending commit request older than 36 business hours in Gerrit?No

Have all the Jenkins jobs successfully passed (Merge-Jobs)?In ProgressAs mentioned before, waiting for Golang to be enabled at Jenkins Job Builder: https://gerrit.onap.org/r/#/c/31137/


Are all snapshot binaries available in Nexus?NA

Integration and Testing  Have functional test cases been documented in wiki?In Progress

Have you implemented in Jenkins at least 1 functional test case for each of the project repository?Yeshttps://git.onap.org/music/distributed-kv-store/tree/src/dkv/api/endpointViews_test.go

As an example (provided by Integration Team)


Has the project code successfully passed the Build process?In ProgressAs mentioned before, waiting for Golang to be enabled at Jenkins Job Builder: https://gerrit.onap.org/r/#/c/31137/

Goal is to ensure your project latest commits have not broken the build.

DocumentationHas the team identified and outlined the set of documentations to be delivered in this Release?Yes



  • No labels