promenade/HostSystem/v1 schema cleanup

When the genesis and join package source definitions were split, the
.common, .genesis, and .join subkeys were inserted directly under
.properties.packages instead of .properties.packages.properties),
causing anything under packages to erroneously pass.

This change implements the intended validation, allowing packages to be
defined under either under .packages.common, or .packages.genesis and
.packages.join. The expectation is that the genesis node will end up
with the union of what is defined under genesis and common. Required
packages (a runtime and socat) need to be defined in at least one of
those locations. Similarly, join nodes will have the union of join
packages and common packages.

Change-Id: I4a658eef6efbba53ba04b2d8b4ea4711ca0b1ab0
This commit is contained in:
Phil Sphicas
2019-12-16 07:26:18 +00:00
parent 3674a86ed8
commit 04ddbcd2a4
2 changed files with 82 additions and 129 deletions

View File

@@ -94,32 +94,27 @@ while true; do
fi
done
{% for role in roles %}
while true; do
if ! DEBIAN_FRONTEND=noninteractive apt-get install -o Dpkg::Options::="--force-confold" -y --no-install-recommends \
{%- for package in config['HostSystem:packages.' + role + '.additional'] | default([]) %}
{{ package }} \
{%- endfor %}
{%- if config['HostSystem:packages.' + role + '.required.docker'] is defined %}
{{ config['HostSystem:packages.' + role + '.required.docker'] }} \
{%- elif config['HostSystem:packages.' + role + '.required.runtime'] is defined %}
{{ config['HostSystem:packages.' + role + '.required.runtime'] }} \
{%- endif %}
{%- if config['HostSystem:packages.' + role + '.required.socat'] is defined %}
{{ config['HostSystem:packages.' + role + '.required.socat'] }} \
{%- endif %}
;then
now=$(date +%s)
if [[ ${now} -gt ${end} ]]; then
log Failed to install apt packages.
exit 1
fi
sleep 10
else
break
while true; do
if ! DEBIAN_FRONTEND=noninteractive apt-get install -o Dpkg::Options::="--force-confold" -y --no-install-recommends \
{%- for role in roles %}
{%- for package in config['HostSystem:packages.' + role + '.required'].values() | default([]) %}
{{ package }} \
{%- endfor %}
{%- for package in config['HostSystem:packages.' + role + '.additional'] | default([]) %}
{{ package }} \
{%- endfor %}
{%- endfor %}
;then
now=$(date +%s)
if [[ ${now} -gt ${end} ]]; then
log Failed to install apt packages.
exit 1
fi
done
{% endfor %}
sleep 10
else
break
fi
done
# Start core processes
#