lib/upgrader: Pull with `timestamp-check-from-rev`
For the same reason as https://github.com/coreos/rpm-ostree/pull/2094. What we care most about is that the new commit we pull is newer than the one we're currently sitting on, not necessarily that it's newer than the branch itself, which it might not be if e.g. we're trying to deploy a commit older than the tip but still newer than the deployment (via `--override-commit`).
This commit is contained in:
parent
c8efce0656
commit
79079c2657
|
|
@ -530,8 +530,8 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self,
|
|||
g_variant_new_variant (g_variant_new_int32 (flags)));
|
||||
/* Add the timestamp check, unless disabled */
|
||||
if ((upgrader_flags & OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_ALLOW_OLDER) == 0)
|
||||
g_variant_builder_add (optbuilder, "{s@v}", "timestamp-check",
|
||||
g_variant_new_variant (g_variant_new_boolean (TRUE)));
|
||||
g_variant_builder_add (optbuilder, "{s@v}", "timestamp-check-from-rev",
|
||||
g_variant_new_variant (g_variant_new_string (from_revision)));
|
||||
|
||||
g_variant_builder_add (optbuilder, "{s@v}", "refs",
|
||||
g_variant_new_variant (g_variant_new_strv ((const char *const*) refs_to_fetch, -1)));
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
set -euo pipefail
|
||||
|
||||
echo "1..$((27 + ${extra_admin_tests:-0}))"
|
||||
echo "1..$((28 + ${extra_admin_tests:-0}))"
|
||||
|
||||
mkdir sysrootmin
|
||||
${CMD_PREFIX} ostree admin init-fs --modern sysrootmin
|
||||
|
|
@ -304,8 +304,14 @@ ${CMD_PREFIX} ostree pull --repo=sysroot/ostree/repo --commit-metadata-only --de
|
|||
head_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buildmaster/x86_64-runtime)
|
||||
prev_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buildmaster/x86_64-runtime^^^^)
|
||||
assert_not_streq ${head_rev} ${prev_rev}
|
||||
# check that we can't "upgrade" to an older commit without --allow-downgrade
|
||||
if ${CMD_PREFIX} ostree admin upgrade --os=testos --override-commit=${prev_rev} 2> err.txt; then
|
||||
fatal "downgraded without --allow-downgrade?"
|
||||
fi
|
||||
assert_file_has_content err.txt "Upgrade.*is chronologically older"
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos --override-commit=${prev_rev} --allow-downgrade
|
||||
curr_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buildmaster/x86_64-runtime)
|
||||
|
||||
assert_streq ${curr_rev} ${prev_rev}
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos
|
||||
curr_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buildmaster/x86_64-runtime)
|
||||
|
|
@ -313,6 +319,18 @@ assert_streq ${curr_rev} ${head_rev}
|
|||
|
||||
echo "ok upgrade with and without override-commit"
|
||||
|
||||
# check that we can still upgrade to a rev that's not the tip of the branch but
|
||||
# that's still newer than the deployment
|
||||
sleep 1
|
||||
os_repository_new_commit
|
||||
sleep 1
|
||||
os_repository_new_commit
|
||||
${CMD_PREFIX} ostree pull --repo=sysroot/ostree/repo --commit-metadata-only --depth=-1 testos:testos/buildmaster/x86_64-runtime
|
||||
curr_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buildmaster/x86_64-runtime)
|
||||
prev_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buildmaster/x86_64-runtime^)
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos --override-commit=${prev_rev}
|
||||
echo "ok upgrade to newer version older than branch tip"
|
||||
|
||||
${CMD_PREFIX} ostree --repo=${test_tmpdir}/testos-repo commit --add-metadata-string "version=${version}" \
|
||||
--add-metadata-string 'ostree.source-title=libtest os_repository_new_commit()' -b testos/buildmaster/x86_64-runtime \
|
||||
-s "Build" --tree=dir=${test_tmpdir}/osdata
|
||||
|
|
|
|||
Loading…
Reference in New Issue