Just a code move. We'll be adding more logic soon, and it'll
be nice not to pollute the do_prepare() function too much
because of it. Rename the existing load_config() function to
load_install_config() accordingly.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
guests/lcitool | 54 +++++++++++++++++++++++++++++++-----------------------
1 file changed, 31 insertions(+), 23 deletions(-)
diff --git a/guests/lcitool b/guests/lcitool
index 4578327..883e0eb 100755
--- a/guests/lcitool
+++ b/guests/lcitool
@@ -34,12 +34,12 @@ yaml_var() {
grep "^$2:\\s*" "$1" 2>/dev/null | tail -1 | sed
"s/$2:\\s*//g"
}
-# load_config FILE
+# load_install_config FILE
#
# Read all known configuration variables from $FILE and set them in the
# environment. Configuration variables that have already been set in
# the environment will not be updated.
-load_config() {
+load_install_config() {
INSTALL_URL=${INSTALL_URL:-$(yaml_var "$1" install_url)}
INSTALL_CONFIG=${INSTALL_CONFIG:-$(yaml_var "$1" install_config)}
INSTALL_VIRT_TYPE=${INSTALL_VIRT_TYPE:-$(yaml_var "$1" install_virt_type)}
@@ -53,6 +53,32 @@ load_config() {
INSTALL_NETWORK=${INSTALL_NETWORK:-$(yaml_var "$1" install_network)}
}
+# load_config
+#
+# Read tool configuration and perform the necessary validation.
+load_config() {
+ CONFIG_DIR="$HOME/.config/$PROGRAM_NAME"
+
+ VAULT_PASS_FILE="$CONFIG_DIR/vault-password"
+ ROOT_PASS_FILE="$CONFIG_DIR/root-password"
+
+ # Make sure required passwords exist and are not invalid (empty)
+ test -f "$VAULT_PASS_FILE" && test "$(cat
"$VAULT_PASS_FILE")" || {
+ die "$PROGRAM_NAME: $VAULT_PASS_FILE: Missing or invalid password"
+ }
+ test -f "$ROOT_PASS_FILE" && test "$(cat
"$ROOT_PASS_FILE")" || {
+ die "$PROGRAM_NAME: $ROOT_PASS_FILE: Missing or invalid password"
+ }
+
+ ROOT_HASH_FILE="$CONFIG_DIR/.root-password.hash"
+
+ # Regenerate root password hash. Ansible expects passwords as hashes but
+ # doesn't provide a built-in facility to generate one from plain text
+ hash_file "$ROOT_PASS_FILE" >"$ROOT_HASH_FILE" || {
+ die "$PROGRAM_NAME: Failure while hashing root password"
+ }
+}
+
# ----------------------
# User-visible actions
# ----------------------
@@ -92,8 +118,8 @@ do_install()
# Load configuration files. Values don't get overwritten after being
# set the first time, so loading the host-specific configuration before
# the group configuration ensures overrides work as expected
- load_config "host_vars/$GUEST/install.yml"
- load_config "group_vars/all/install.yml"
+ load_install_config "host_vars/$GUEST/install.yml"
+ load_install_config "group_vars/all/install.yml"
# Both memory size and disk size use GiB as unit, but virt-install wants
# disk size in GiB and memory size in *MiB*, so perform conversion here
@@ -136,24 +162,7 @@ do_prepare() {
die "$PROGRAM_NAME: $GUEST: Unknown guest"
}
- VAULT_PASS_FILE="$CONFIG_DIR/vault-password"
- ROOT_PASS_FILE="$CONFIG_DIR/root-password"
-
- # Make sure required passwords exist and are not invalid (empty)
- test -f "$VAULT_PASS_FILE" && test "$(cat
"$VAULT_PASS_FILE")" || {
- die "$PROGRAM_NAME: $VAULT_PASS_FILE: Missing or invalid password"
- }
- test -f "$ROOT_PASS_FILE" && test "$(cat
"$ROOT_PASS_FILE")" || {
- die "$PROGRAM_NAME: $ROOT_PASS_FILE: Missing or invalid password"
- }
-
- ROOT_HASH_FILE="$CONFIG_DIR/.root-password.hash"
-
- # Regenerate root password hash. Ansible expects passwords as hashes but
- # doesn't provide a built-in facility to generate one from plain text
- hash_file "$ROOT_PASS_FILE" >"$ROOT_HASH_FILE" || {
- die "$PROGRAM_NAME: Failure while hashing root password"
- }
+ load_config
ansible-playbook \
--vault-password-file "$VAULT_PASS_FILE" \
@@ -167,7 +176,6 @@ do_prepare() {
CALL_NAME="$0"
PROGRAM_NAME="${0##*/}"
-CONFIG_DIR="$HOME/.config/$PROGRAM_NAME"
test -f "$PROGRAM_NAME" || {
die "$PROGRAM_NAME: Must be run from the source directory"
--
2.13.6