:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Copyright (c) 2017 Mirantis Inc., Enea AB and others. : : All rights reserved. This program and the accompanying materials : are made available under the terms of the Apache License, Version 2.0 : which accompanies this distribution, and is available at : http://www.apache.org/licenses/LICENSE-2.0 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: From: Alexandru Avadanii Date: Sat, 5 Aug 2017 02:03:01 +0200 Subject: [PATCH] maas: region: force artifact download MaaS configuration fails until all required artifacts are in place, including bootloaders and target images. Hack around this by forcing an explicit artifact sync. NOTE: This is probably achievable through existing maas salt custom module (py) and/or minor rework on that. This fixup should be temporary at best. Signed-off-by: Alexandru Avadanii --- diff --git a/maas/region.sls b/maas/region.sls --- a/maas/region.sls +++ b/maas/region.sls @@ -109,11 +109,19 @@ cmd.run: - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials" +maas_force_artifact_sync: + cmd.script: + - name: salt://maas/files/maas-artifact-sync.sh + - template: jinja + - shell: /bin/bash + - require: + - cmd: maas_login_admin + maas_config: module.run: - name: maas.process_maas_config - require: - - cmd: maas_login_admin + - cmd: maas_force_artifact_sync maas_commissioning_scripts: module.run: diff --git a/maas/files/maas-artifact-sync.sh b/maas/files/maas-artifact-sync.sh new file mode 100644 --- /dev/null +++ b/maas/files/maas-artifact-sync.sh @@ -0,0 +1,20 @@ +{%- from "maas/map.jinja" import region with context %} +#!/bin/bash +function wait_for { + local total_attempts=$1; shift + local cmdstr=$@ + local sleep_time=10 + echo -e "\n[NOTE] Waiting for cmd to return success: ${cmdstr}\n" + for attempt in $(seq "${total_attempts}"); do + eval "${cmdstr}" && break || true + echo -n '.'; sleep "${sleep_time}" + done +} +maas login {{ region.admin.username }} \ + http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < \ + /var/lib/maas/.maas_credentials || exit 1 +# wait max 5 min for service up, 15 min image download, 5 min region to rack sync +wait_for 30 "maas opnfv boot-resources import" +wait_for 90 "! maas opnfv boot-resources is-importing | grep -q 'true'" +maas opnfv rack-controllers import-boot-images || exit 3 +wait_for 30 "test -d /var/lib/maas/boot-resources/current/ubuntu/amd64"