From: Michal Nowikowski Date: Sun, 14 Apr 2019 05:26:50 +0000 (+0200) Subject: fixed bringing up lxc container when there is conflicting one present X-Git-Tag: Kea-1.6.0-beta~151 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be42fe414fccbf4e020138a52d0763c466fbcb9a;p=thirdparty%2Fkea.git fixed bringing up lxc container when there is conflicting one present --- diff --git a/hammer.py b/hammer.py index 66518e6566..6718862084 100755 --- a/hammer.py +++ b/hammer.py @@ -52,7 +52,7 @@ SYSTEMS = { IMAGE_TEMPLATES = { 'fedora-27-lxc': {'bare': 'lxc-fedora-27', 'kea': 'godfryd/kea-fedora-27'}, 'fedora-27-virtualbox': {'bare': 'generic/fedora27', 'kea': 'godfryd/kea-fedora-27'}, - 'fedora-28-lxc': {'bare': 'lxc-fedora-28', 'kea': 'godfryd/kea-fedora-28'}, + 'fedora-28-lxc': {'bare': 'godfryd/lxc-fedora-28', 'kea': 'godfryd/kea-fedora-28'}, 'fedora-28-virtualbox': {'bare': 'generic/fedora28', 'kea': 'godfryd/kea-fedora-28'}, 'fedora-29-lxc': {'bare': 'godfryd/lxc-fedora-29', 'kea': 'godfryd/kea-fedora-29'}, 'fedora-29-virtualbox': {'bare': 'generic/fedora29', 'kea': 'godfryd/kea-fedora-29'}, @@ -446,8 +446,23 @@ class VagrantEnv(object): def up(self): """Do Vagrant up.""" - execute("vagrant up --no-provision --provider %s" % self.provider, - cwd=self.vagrant_dir, timeout=15 * 60, dry_run=self.dry_run) + exitcode, out = execute("vagrant up --no-provision --provider %s" % self.provider, + cwd=self.vagrant_dir, timeout=15 * 60, dry_run=self.dry_run, + capture=True, raise_error=False) + if exitcode != 0: + if 'There is container on your system' in out and 'lxc-destroy' in out: + m = re.search('`lxc-destroy.*?`', out) + if m: + # destroy some old container + cmd = m.group(0)[1:-1] + cmd = 'sudo ' + cmd + ' -f' + execute(cmd, timeout=60) + + # try again spinning up new + execute("vagrant up --no-provision --provider %s" % self.provider, + cwd=self.vagrant_dir, timeout=15 * 60, dry_run=self.dry_run) + return + raise ExecutionError('There is a problem with putting up a system') def _get_cloud_meta(self, image_tpl=None): if '/' not in self.image_tpl: