diff --git a/score/kvs/docs/requirements/index.rst b/score/kvs/docs/requirements/index.rst index 565fca21b..08d27d064 100644 --- a/score/kvs/docs/requirements/index.rst +++ b/score/kvs/docs/requirements/index.rst @@ -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 :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. + 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. -.. 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