Deleted records
It is possible to access previously deleted records in the "Deleted" section. Ended executions are automatically deleted after a configurable timeout and subsequently permanently deleted after a configurable timeout.
If not configured otherwise, der default, ended executions will be deleted after 2 weeks. Deleted executions will remain deleted for another 2 weeks before being permanently deleted from the Cloudomation database.
Deleting Execution records is executed asynchronously!
Therefore, Execution records may still exist after the delete()
method returns.
Concept
Ended executions are automatically marked as deleted after a timeout. Manually deleting a record will mark it as deleted. Records which are marked as deleted can be restored. After a timeout deleted records are permanently deleted from the database.
Configuration
The behaviour can be configured using the Workspace Configuration. Please refer to Trash bin for configuration options.
Deleting Records
Deleting a project will also delete all records of that project.
Via the User-Interface
Deleting Individual Records
Open the record and click on "Delete" in the "More Actions" popover.
The delete action in the more actions popover
The record will be moved to the "Deleted" secion.
Bulk-Delete many Records
Open the workspace dashboard, project dashboard, or execution live monitor. In the resoures list check the records and click on "Delete" in the "More Actions" popover.
The bulk-delete action in the more actions popover
The records will be moved to the "Deleted" section.
Via the Flow-API
Use the delete
method on any record.
Delete a setting.
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution):
system.setting('the-setting').delete()
return this.success('all done')
Via the REST-API
Make a HTTP DELETE request.
Delete a setting
curl -X DELETE https://your-workspace-name.cloudomation.com/api/latest/setting/the-setting?by=name
Permanently Deleting Records
Permanently deleting a record from Cloudomation is permanent. The record cannot be restored afterwards!
Permanently deleting a project will also permanently delete all records of that project.
Handling errors when permanently deleting records
Permanently deleting a record that is used by another record (e.g. a setting that is used by a schedule) is not possible and will fail with the following error message:
Failed to delete or update <resource-type>, <resource-name>:
The row is still in use by table <resource-type-of-other-resource>
To delete the aforementioned record, you need to either permanently delete the record that uses it (e.g. delete the schedule first to delete the setting) or make sure that the record is not used by other records (e.g. remove the setting from the schedule).
The following might cause this issue:
- settings used in schedules
- schedulers used in schedules
- flows used in schedules
- flows used in webhooks
Permanently deleting projects
You might encounter above error when you permanently delete a project. This happens because, when permanently deleting a project, all it's resources are permanently deleted as well. The order in which they are permanently deleted is, however, not fixed. This can lead to the issue described above (when a record that is still used by another record cannot be permanently deleted).
To circumvent this, you can first permanently delete all schedules and webhook in the project. After this, you can permanently delete the project.
Via the User-Interface
Permanently Deleting Individual Records
Open the record and click on "Delete Permanently" in the "More Actions" popover.
The delete permanently action in the more actions popover
Bulk-Permanently-Delete many Records
Open the workspace dashboard, project dashboard, or execution live monitor. In the resoures list check the records and click on "Delete Permanently" in the "More Actions" popover.
The bulk-delete action in the more actions popover
Via the Flow-API
Use the delete
method with the permanently=True
argument on any record.
Delete a setting.
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution):
system.setting('the-setting').delete(permanently=True)
return this.success('all done')
Via the REST-API
Make a HTTP DELETE request.
Delete a setting
curl -X DELETE https://your-workspace-name.cloudomation.com/api/latest/setting/the-setting?by=name\&permanently=true
Accessing Deleted Records
Via the User-Interface
List Deleted Resources
Deleted resources are listed in the "Deleted" section at the bottom of the left-hand navigation.
List Deleted Activities
Deleted activities can be listed using the advanced search. Please refer to Advanced Search for details.
Access Deleted Records
Clicking on a deleted record in the "Deleted" section or the advanced search will open it. Opened deleted records are marked with a badge.
The deleted badge
Deleted records cannot be modified and all actions are disabled, except "Delete permanently" and "Restore".
Via the Flow-API
List Deleted Records
Listing methods can be configured to access deleted records. To include deleted records in the listing the allow_deleted
argument must be set to True
.
List all deleted settings.
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution):
for setting in system.settings(
# do not include "Normal" (not deleted) records in the lising
allow_normal=False,
allow_deleted=True,
):
this.log(setting.get_dict('name', 'deleted_at'))
return this.success('all done')
Access Deleted Records
Individual deleted records can be accessed using the Flow-API. The allow_deleted
argument must be set to True
.
Read value of a deleted setting.
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution):
value = system.setting(
'the-deleted-setting',
allow_deleted=True,
).get('value')
this.log(value=value)
return this.success('all done')
Trying to access deleted records without using the allow_deleted
flag will result in a PermissionDeniedError
:
Traceback (most recent call last):
File "example-read-deleted-with-permission-error (4c886cf9-61cc-41ab-b3a2-c6fdad5a334c)", line 4, in handler
flow_api.exceptions.PermissionDenied: {"operation": "read", "by": "name", "ids": ["the-deleted-setting"], "table": "setting", "message": "No permission to read setting in project 239dface-c437-488f-9390-42c70483c3b6 with name(s) {'the-deleted-setting'}: Cannot access deleted record without `allow_deleted` flag.", "reason": "Cannot access deleted record without `allow_deleted` flag."}
Via the REST-API
List Deleted Records
Use the allow_deleted
flag with any listing request.
List only deleted settings.
curl https://your-workspace-name.cloudomation.com/api/latest/setting?allow_normal=false\&allow_deleted=true
Please refer to Accessing and Manipulating Records for details on how to use the REST API.
Access deleted records
Use the allow_deleted
flag.
Access a deleted setting.
curl https://your-workspace-name.cloudomation.com/api/latest/setting/the-deleted-setting?by=name\&allow_deleted=true
Restoring Records
Restoring a project will also restore all records of that project.
Via the User-Interface
Restoring Individual Records
Open a record from the "Deleted" section and click on "Restore" in the "More Actions" popover.
The restore action in the more actions popover
The record will be restored and moved to the project it is associated with.
Bulk-Restore many Records
Open the "Deleted" section. In the list check the records and click on "Restore".
The bulk-restore action
The records will be restored and moved to the projects they are associated with.
Via the Flow-API
Use the restore
method on any record.
To be able to access a record which is deleted the allow_deleted
argument must be used.
Restore a setting.
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution):
system.setting('the-deleted-setting', allow_deleted=True).restore()
return this.success('all done')
Via the REST-API
Make a HTTP PATCH request to restore
.
Restore a setting
curl -X PATCH https://your-workspace-name.cloudomation.com/api/latest/setting/the-deleted-setting/restore?by=name\&allow_deleted=true