from teuthology.orchestra import connection
from teuthology.orchestra import console
from teuthology.orchestra.opsys import OS
+import teuthology.provision
from teuthology import misc
from teuthology.exceptions import CommandFailedError
from teuthology.misc import host_shortname
# for unit tests to hook into
_runner = staticmethod(run.run)
+ _reimage_types = None
def __init__(self, name, ssh=None, shortname=None, console=None,
host_key=None, keep_alive=True):
self._console = console
self.ssh = ssh
+ if self._reimage_types is None:
+ Remote._reimage_types = teuthology.provision.get_reimage_types()
+
def connect(self, timeout=None, create_key=None, context='connect'):
args = dict(user_at_host=self.name, host_key=self._host_key,
keep_alive=self.keep_alive, _create_key=create_key)
self._machine_type = remote_info.get("machine_type", None)
return self._machine_type
+ @property
+ def is_reimageable(self):
+ return self.machine_type in self._reimage_types
+
@property
def shortname(self):
if self._shortname is None:
"deb": deb._remove,
"rpm": rpm._remove,
}
+ cleanup = config.get('cleanup', False)
with parallel() as p:
for remote in ctx.cluster.remotes.keys():
- system_type = teuthology.get_system_type(remote)
- p.spawn(remove_pkgs[
- system_type], ctx, config, remote, pkgs[system_type])
+ if not remote.is_reimageable or cleanup:
+ system_type = teuthology.get_system_type(remote)
+ p.spawn(remove_pkgs[
+ system_type], ctx, config, remote, pkgs[system_type])
def remove_sources(ctx, config):
'deb': deb._remove_sources_list,
'rpm': rpm._remove_sources_list,
}
+ cleanup = config.get('cleanup', False)
+ project = config.get('project', 'ceph')
with parallel() as p:
- project = config.get('project', 'ceph')
- log.info("Removing {proj} sources lists".format(
- proj=project))
for remote in ctx.cluster.remotes.keys():
- remove_fn = remove_sources_pkgs[remote.os.package_type]
- p.spawn(remove_fn, ctx, config, remote)
+ if not remote.is_reimageable or cleanup:
+ log.info("Removing {p} sources lists on {r}"
+ .format(p=project,r=remote))
+ remove_fn = remove_sources_pkgs[remote.os.package_type]
+ p.spawn(remove_fn, ctx, config, remote)
def get_package_list(ctx, config):
else:
nested_config = dict(
branch=config.get('branch'),
+ cleanup=config.get('cleanup'),
debuginfo=config.get('debuginfo'),
downgrade_packages=config.get('downgrade_packages', []),
exclude_packages=config.get('exclude_packages', []),