[ostree] sysroot: Error out on deploy --os=<unknown> which has not been initialized



commit 091523a3bd6531a73a9322599cc8848d830d997c
Author: Colin Walters <walters verbum org>
Date:   Wed Jan 8 18:29:05 2014 -0500

    sysroot: Error out on deploy --os=<unknown> which has not been initialized
    
    We should hard require "ostree admin os-init foo" before letting
    deployments go there; it's too easy to typo the argument.

 src/libostree/ostree-sysroot-deploy.c |    9 +++++++++
 tests/test-admin-deploy-1.sh          |    9 ++++++++-
 2 files changed, 17 insertions(+), 1 deletions(-)
---
diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c
index d908cd8..b14b2b7 100644
--- a/src/libostree/ostree-sysroot-deploy.c
+++ b/src/libostree/ostree-sysroot-deploy.c
@@ -1043,6 +1043,7 @@ ostree_sysroot_deploy_one_tree (OstreeSysroot     *self,
   gs_unref_object OstreeDeployment *new_deployment = NULL;
   gs_unref_object OstreeDeployment *merge_deployment = NULL;
   gs_unref_object OstreeRepo *repo = NULL;
+  gs_unref_object GFile *osdeploydir = NULL;
   gs_unref_object GFile *commit_root = NULL;
   gs_unref_object GFile *tree_kernel_path = NULL;
   gs_unref_object GFile *tree_initramfs_path = NULL;
@@ -1055,6 +1056,14 @@ ostree_sysroot_deploy_one_tree (OstreeSysroot     *self,
   if (osname == NULL)
     osname = ostree_deployment_get_osname (self->booted_deployment);
 
+  osdeploydir = ot_gfile_get_child_build_path (self->path, "ostree", "deploy", osname, NULL);
+  if (!g_file_query_exists (osdeploydir, NULL))
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+                   "No OS named \"%s\" known", osname);
+      goto out;
+    }
+
   if (!ostree_sysroot_get_repo (self, &repo, cancellable, error))
     goto out;
 
diff --git a/tests/test-admin-deploy-1.sh b/tests/test-admin-deploy-1.sh
index e591f9b..c1151d1 100755
--- a/tests/test-admin-deploy-1.sh
+++ b/tests/test-admin-deploy-1.sh
@@ -27,7 +27,7 @@ setup_os_repository "archive-z2" "syslinux"
 
 echo "ok setup"
 
-echo "1..8"
+echo "1..9"
 
 ostree --repo=sysroot/ostree/repo pull-local --remote=testos testos-repo testos/buildmaster/x86_64-runtime
 rev=$(ostree --repo=sysroot/ostree/repo rev-parse testos/buildmaster/x86_64-runtime)
@@ -78,6 +78,8 @@ ostree admin --sysroot=sysroot status
 
 echo "ok third deploy (swap)"
 
+ostree admin --sysroot=sysroot os-init otheros
+
 ostree admin --sysroot=sysroot deploy --os=otheros testos/buildmaster/x86_64-runtime
 assert_not_has_dir sysroot/boot/loader.0
 assert_has_dir sysroot/boot/loader.1
@@ -155,3 +157,8 @@ assert_not_has_dir sysroot/ostree/deploy/testos/deploy/${newrev}.0
 ostree admin --sysroot=sysroot status
 
 echo "ok undeploy"
+
+if ostree admin --sysroot=sysroot deploy --os=unknown testos:testos/buildmaster/x86_64-runtime; then
+    assert_not_reached "Unexpected successful deploy of unknown OS"
+fi
+echo "ok deploy with unknown OS"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]