Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 88 additions & 29 deletions score/kvs/docs/requirements/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -338,83 +338,142 @@ Component Requirements
application to implement versioning, including upgrade and downgrade paths,
as needed.

.. comp_req:: Snapshot Creation
:id: comp_req__kvs__snapshot_creation
.. comp_req:: Snapshot maximum number
:id: comp_req__kvs__snapshot_max_num

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of refactoring existing requrirements we keep the old ones and mark them as :status: invalid

:reqtype: Functional
:security: NO
:safety: ASIL_B
:derived_from: feat_req__persistency__snapshot_create[version==1]
:derived_from: feat_req__persistency__cfg[version==1]
:status: valid
:version: 1
:belongs_to: comp__persistency_kvs[version==1]
:tags: inspected
:tags: valid

The component shall create a snapshot each time data is stored.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extend by
Note: Invalid after change of snapshot handling #xxx xxx is the issue reference @umaucher will create

The component shall maintain a configurable maximum number of snapshots. The maximum number shall be in the range <0..3>.
A value of zero means that snapshot operations are disabled, while a non-zero value specifies the maximum number of snapshots.

.. comp_req:: Snapshot Maximum Number
:id: comp_req__kvs__snapshot_max_num
.. comp_req:: Snapshot create API
:id: comp_req__kvs__snapshot_create_api
:reqtype: Functional
:security: NO
:safety: ASIL_B
:derived_from: feat_req__persistency__cfg[version==1]
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_create[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: inspected
:tags: valid

The component shall maintain a configurable maximum number of snapshots.
The component shall provide API for creation of snapshots with an argument that selects a dedicated snapshot slot by snapshot index.

.. comp_req:: Snapshot IDs
:id: comp_req__kvs__snapshot_id
.. note::

A snapshot is a point-in-time, frozen view on all values in a key-value storage.

.. comp_req:: Snapshot create
:id: comp_req__kvs__snapshot_create
:reqtype: Functional
:security: NO
:safety: ASIL_B
:derived_from: feat_req__persistency__snapshot_create[version==1]
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_create[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: inspected
:tags: valid

The component shall assign the ID 1 to the newest snapshot and shall increment the IDs of older snapshots accordingly.
The component shall create a new snapshot in the selected snapshot slot when the slot is empty.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The component shall create a new snapshot in the selected snapshot slot when the slot is empty.
The component shall create a new snapshot in the selected snapshot slot when the slot is empty or return an error.

this should be defined for all API's handling snapshots

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed with last commit


.. comp_req:: Snapshot Rotation
:id: comp_req__kvs__snapshot_rotate
.. comp_req:: Snapshot overwrite
:id: comp_req__kvs__snapshot_overwrite
:reqtype: Functional
:security: NO
:safety: ASIL_B
:derived_from: feat_req__persistency__snapshot_remove[version==1],feat_req__persistency__snapshot_restore[version==1]
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_create[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: inspected
:tags: valid

The component shall rotate and delete the oldest snapshot when the maximum number is reached.
The component shall overwrite the selected snapshot slot when the slot is occupied.

.. comp_req:: Snapshot Restore
:id: comp_req__kvs__snapshot_restore
.. comp_req:: Snapshot restore API
:id: comp_req__kvs__snapshot_restore_api
:reqtype: Functional
:security: NO
:safety: ASIL_B
:derived_from: feat_req__persistency__snapshot_restore[version==1]
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_restore[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: inspected
:tags: valid

The component shall allow restoration of a snapshot by its ID.
The component shall provide API for restoration of snapshots with an argument that selects a dedicated snapshot slot by snapshot index.
The function shall return an error, when referenced snapshot slot is free.

.. comp_req:: Snapshot Deletion
:id: comp_req__kvs__snapshot_delete
.. comp_req:: Snapshot remove API
:id: comp_req__kvs__snapshot_remove_api
:reqtype: Functional
:security: NO
:safety: ASIL_B
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_remove[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: valid

The component shall provide API for removing of snapshots with an argument that selects a dedicated snapshot slot by snapshot index.
The function shall return an error, when referenced slot is free.

.. comp_req:: Explicit snapshot operations
:id: comp_req__kvs__explicit_snapshot_operations
:reqtype: Functional
:security: NO
:safety: ASIL_B
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_create[version==1], feat_req__persistency__snapshot_restore[version==1], feat_req__persistency__snapshot_remove[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: inspected
:tags: valid

The component shall perform snapshot creation, restoration, and deletion only when explicitly triggered by the user through the corresponding APIs.

.. comp_req:: Snapshot slot indexing
:id: comp_req__kvs__snapshot_id
:reqtype: Functional
:security: NO
:safety: ASIL_B
:derived_from: feat_req__persistency__snapshot_create[version==1]
:status: valid
:version: 1
:belongs_to: comp__persistency_kvs[version==1]
:tags: valid

The component shall identify snapshot slots by a zero-based index, where the first slot has index 0, the second slot has index 1, and so on.

.. comp_req:: Snapshot data source
:id: comp_req__kvs__snapshot_source
:reqtype: Functional
:security: NO
:safety: ASIL_B
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_create[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: valid

The component shall use the live values that were set by the user, regardless of whether the values were flushed to disk.

.. comp_req:: Snapshot slot free query API
:id: comp_req__kvs__snapshot_slot_free_api
:reqtype: Functional
:security: NO
:safety: ASIL_B
:status: valid
:version: 1
:derived_from: feat_req__persistency__snapshot_create[version==1], feat_req__persistency__snapshot_remove[version==1], feat_req__persistency__cfg[version==1]
:belongs_to: comp__persistency_kvs[version==1]
:tags: valid

The component shall allow deletion of individual snapshots.
The component shall provide an API to check whether a slot identified by a snapshot index is free or occupied.

.. comp_req:: Engineering Mode
:id: comp_req__kvs__eng_mode
Expand Down
Loading