Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Add your comments directly to the page. Include links to any relevant research, data, or feedback.

Page Properties
label


Status
Status
colourGreen
titleDecided
Impact

Status
colourRed
titleHIGH
/
Status
colourYellow
titleMEDIUM
/
Status
colourGreen
titleLOW

Driver
Approver
Contributors
Informed
Due date
Outcome


Background

Going to rip off the docker libkv API and implement it as puppet functions under the libkv:: namespace.

A storage backend in libkv should implement (fully or partially) this interface:

Code Block
Non-Atomic
*     delete(String $key) (Boolean)
*     deletetree(String $directory) (Boolean)
*     get(String $key) (Any)
*     put(String $key, Any $value) (Boolean)
*     exists(String $key) (Boolean)
*     list(String $directory) (Hash)

Atomic
*     atomic_create(String $key, Any $value) (Boolean)
*     atomic_delete(String $key, Hash $previous) (Boolean)
*     atomic_get(String $key) (Hash)
*     atomic_put(String $key, Any $value, Hash previous, Hash options) (Boolean)
*     atomic_list(String $directory) (Hash)

Support
*     empty_value() (Hash)
*     info() (Hash)
*     provider() (String)
*     supports() (Array)

Defined but not implemented
*     watch(String $key, Queue $queue)  - Not Implemented
*     watchtree(String $key, Queue $queue) - Not Implemented
*     newlock(String $key, Hash options) - Not Implemented



We will start with four backends:

  • mock - This is a fake KV store that will only be used for unit and acceptance testing purposes.
  • legacy-simp6 - this duplicates fakeca and passgen and other simp modules that store random files on a puppet master. This will be the default at least for the SIMP 6 major branch.
  • consul - implements the storage semantics under consul
  • etcd - implements the storage semantics under etcd

The default will be 'legacy-simp6' so it won't be an API breakage

Architecting is considered finished when unit and acceptance tests are created in pupmod-simp-libkv, and mockprovider passes all the tests. implementation of other backends will be other tickets.

Documentation will be another ticket blocked by this one, as I don't want to finalize docs until after the first providers are written and we attempt to integrate with existing modules

global parameters:

  • url
  • softfail
  • debug
  • auth

Jira Legacy
serverSystem JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId45e63be1-2551-37a6-b050-86a38172f71d
keySIMP-2435

Relevant data


Jira Legacy
serverSystem JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQuery

...

"

...

Epic Link" = SIMP-2431
serverId45e63be1-2551-37a6-b050-86a38172f71d

...

Options considered


Option 1:Option 2:
Description

Pros and cons

(plus)

(minus)

(plus)

(minus)

Estimated cost
Status
colourRED
titleLARGE
Status
colourYELLOW
titleMEDIUM

Action items

  •  

Outcome