Support os variants
[ext/instance-debootstrap.git] / common.sh.in
index 167bb00..130201f 100644 (file)
@@ -143,6 +143,7 @@ fi
 : ${ARCH:=""}
 : ${EXTRA_PKGS:=""}
 : ${CUSTOMIZE_DIR:="@sysconfdir@/ganeti/instance-debootstrap.d"}
+: ${VARIANTS_DIR:="@sysconfdir@/ganeti/instance-debootstrap/variants"}
 : ${GENERATE_CACHE:="yes"}
 : ${CLEAN_CACHE:="14"} # number of days to keep a cache file
 if [ -z "$OS_API_VERSION" -o "$OS_API_VERSION" = "5" ]; then
@@ -178,3 +179,27 @@ else
   log_error "Unknown OS API VERSION $OS_API_VERSION"
   exit 1
 fi
+
+if [ -n "$OS_VARIANT" ]; then
+  if [ ! -d "$VARIANTS_DIR" ]; then
+    log_error "OS Variants directory $VARIANTS_DIR doesn't exist"
+    exit 1
+  fi
+  VARIANT_CONFIG="$VARIANTS_DIR/$OS_VARIANT.conf"
+  if [ -f "$VARIANTS_CONFIG" ]; then
+    . "$VARIANTS_CONFIG"
+  else
+    if grep -qxF "$OS_VARIANT" variants.list; then
+      log_error "ERROR: instance-debootstrap configuration error"
+      log_error "  Published variant $OS_VARIANT is missing its config file"
+      log_error "  Please create $VARIANT_CONFIG or unpublish the variant"
+      log_error "  (by removing $OS_VARIANT from variants.list)"
+    else
+      log_error "Unofficial variant $OS_VARIANT is unsupported"
+      log_error "Most probably this is a user error, forcing a wrong name"
+      log_error "To support this variant please create file $VARIANT_CONFIG"
+    fi
+    exit 1
+  fi
+fi
+