diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-02-16 22:38:30 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-02-16 23:07:59 +0200 |
commit | de583a71bb0675c0b8cc9d6a5856a37db748a36f (patch) | |
tree | 330806f3c8e255601dddcc48abb558e601ca2cd3 | |
parent | 5adf083b2fde5e20d5bd7b9ce63bb24ecbc13ccc (diff) | |
download | ick-de583a71bb0675c0b8cc9d6a5856a37db748a36f.tar.gz |
Collect Debian info about targets only once
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | icklib/project.py | 11 |
2 files changed, 10 insertions, 3 deletions
@@ -4,6 +4,8 @@ NEWS for Ick Version 0.13+git, not yet released ---------------------------------- +* Ick now collects information about target Debian systems only once + per target, rather than once per target and pipeline. Version 0.13, released 2016-02-16 ---------------------------------- diff --git a/icklib/project.py b/icklib/project.py index a09da23..771bb8f 100644 --- a/icklib/project.py +++ b/icklib/project.py @@ -17,6 +17,7 @@ import glob +import logging import os import re import StringIO @@ -515,17 +516,21 @@ class RunLocalShellCommands(icklib.BuildStep): class CollectDebianInfoAboutTargets(icklib.BuildStep): def build(self): + wanted = ['debian_arch', 'debian_codename', 'debian_release'] if getattr(self.run_state, 'collect_debian_info', False): for target in self.targets: - target.debian_arch = self._get_debian_arch(target) - os_release = self._get_os_release(target) - self._collect_from_os_release(target, os_release) + if not all(getattr(target, x, None) for x in wanted): + target.debian_arch = self._get_debian_arch(target) + os_release = self._get_os_release(target) + self._collect_from_os_release(target, os_release) def _get_debian_arch(self, target): + logging.info('Finding Debian arch for %s', target.name) output = target.ssh_runcmd(['dpkg', '--print-architecture']) return output.strip() def _get_os_release(self, target): + logging.info('Finding os-release for %s', target.name) pbuilder_argv = [ 'sudo', 'pbuilder', |