51-hosts fails if given lots of changes
The issue is how awk is used to update hosts files. When
os-apply-config produces sufficiently large amounts of lines
to be added (or ensure in) hosts files, awk will error out.
To work around it, instead use sed, and reconstruct the
host file(s) to ensure the entries between the comment delimeters
of "# HEAT_HOSTS_START" and "# HEAT_HOSTS_END" are swapped with
the new entries.
Also get rid of blank lines produced by os-apply-config
Partial-Bug: #1674732
Change-Id: Ibe0a9f6ec10d55750e3b0e16301236141f988d69
(cherry picked from commit a1da5fbe30
)
This commit is contained in:
parent
7bc3642202
commit
cb8335c9b1
|
@ -14,14 +14,16 @@ write_entries() {
|
|||
|
||||
if grep -q "^# HEAT_HOSTS_START" "$file"; then
|
||||
temp=$(mktemp)
|
||||
awk -v v="$entries" '/^# HEAT_HOSTS_START/ {
|
||||
print $0
|
||||
print v
|
||||
f=1
|
||||
}f &&!/^# HEAT_HOSTS_END$/{next}/^# HEAT_HOSTS_END$/{f=0}!f' "$file" > "$temp"
|
||||
echo "INFO: Updating hosts file $file, check below for changes"
|
||||
diff "$file" "$temp" || true
|
||||
cat "$temp" > "$file"
|
||||
(
|
||||
sed '/^# HEAT_HOSTS_START/,$d' "$file"
|
||||
echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n"
|
||||
echo "$entries"
|
||||
echo -ne "# HEAT_HOSTS_END\n\n"
|
||||
sed '1,/^# HEAT_HOSTS_END/d' "$file"
|
||||
) > "$temp"
|
||||
echo "INFO: Updating hosts file $file, check below for changes"
|
||||
diff "$file" "$temp" || true
|
||||
cat "$temp" > "$file"
|
||||
else
|
||||
echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n" >> "$file"
|
||||
echo "$entries" >> "$file"
|
||||
|
@ -30,7 +32,7 @@ write_entries() {
|
|||
|
||||
}
|
||||
|
||||
ENTRIES=$(os-apply-config --key hosts --type raw --key-default '' | tr '[A-Z]' '[a-z]')
|
||||
ENTRIES=$(os-apply-config --key hosts --type raw --key-default '' | tr '[A-Z]' '[a-z]' | sed -e 's/\\n/\n/g' -e '/^$/d')
|
||||
if [ ! -z "$ENTRIES" ]; then
|
||||
# cloud-init files are /etc/cloud/templates/hosts.OSNAME.tmpl
|
||||
DIST=$(lsb_release -is | tr -s [A-Z] [a-z])
|
||||
|
|
Loading…
Reference in New Issue