Commit 9f8ee468 authored by Nicolas Wavrant's avatar Nicolas Wavrant

stack-resilient: adds promise for data integrity in pbsready-import

parent 6b5b9f5d
...@@ -50,7 +50,7 @@ mode = 0644 ...@@ -50,7 +50,7 @@ mode = 0644
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/pbsready-import.cfg.in url = ${:_profile_base_location_}/pbsready-import.cfg.in
output = ${buildout:directory}/pbsready-import.cfg output = ${buildout:directory}/pbsready-import.cfg
md5sum = b4a48d7fc502ca08d14b52097ccc4c6e md5sum = 32343741db4ad7792a27af99da707bae
mode = 0644 mode = 0644
[pbsready-export] [pbsready-export]
......
...@@ -24,7 +24,9 @@ parts = ...@@ -24,7 +24,9 @@ parts =
resilient-web-takeover-httpd-wrapper resilient-web-takeover-httpd-wrapper
resilient-web-takeover-httpd-promise resilient-web-takeover-httpd-promise
check-backup-integrity-on-notification
import-on-notification import-on-notification
backup-transfer-integrity-promise
resilient-publish-connection-parameter resilient-publish-connection-parameter
[resilient-publish-connection-parameter] [resilient-publish-connection-parameter]
...@@ -56,6 +58,31 @@ recipe = slapos.cookbook:notifier.callback ...@@ -56,6 +58,31 @@ recipe = slapos.cookbook:notifier.callback
on-notification-id = $${slap-parameter:on-notification} on-notification-id = $${slap-parameter:on-notification}
callback = $${importer:wrapper} callback = $${importer:wrapper}
[post-notification-run]
recipe = collective.recipe.template
diff-file-name = $${basedirectory:backup}/backup.diff
input = inline:
#!/${bash:location}/bin/bash
cd $${directory:backup}
find -type f ! -name backup.signature ! -wholename "./rdiff-backup-data/*" -print0 | xargs -P4 -0 sha256sum | LC_ALL=C sort -k 66 > ../proof.signature
diff -ruw backup.signature $${basedirectory:backup}/proof.signature > $${:diff-file-name}
output = $${rootdirectory:bin}/post-notification-run
mode = 0700
[check-backup-integrity-on-notification]
<= notifier
recipe = slapos.cookbook:notifier.callback
on-notification-id = $${slap-parameter:on-notification}
callback = $${post-notification-run:output}
[backup-transfer-integrity-promise]
recipe = slapos.recipe.template:jinja2
template = inline:
#!/${bash:location}/bin/bash
if [ "$(wc -l $${post-notification-run:diff-file-name} | cut -d \ -f1)" -eq 0 ]; then exit 0; else exit 1; fi
rendered = $${basedirectory:promises}/backup-transfer-integrity-promise
mode = 700
########### ###########
# Generate the takeover script # Generate the takeover script
########### ###########
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment