def get_config_install_upgrade(ctx, config): config = copy.deepcopy(config) r = install.upgrade_remote_to_config(ctx, config).values() log.info("get_config_install_upgrade " + str(r)) return r
def test_upgrade_remote_to_config(self): expected_system_type = 'deb' def make_remote(): remote = Mock() remote.arch = 'x86_64' remote.os = Mock() remote.os.name = 'ubuntu' remote.os.version = '14.04' remote.os.codename = 'trusty' remote.system_type = expected_system_type return remote ctx = Mock() class cluster: remote1 = make_remote() remote2 = make_remote() remotes = { remote1: ['client.0'], remote2: ['mon.a','osd.0'], } def only(self, role): result = Mock() if role in ('client.0',): result.remotes = { cluster.remote1: None } elif role in ('osd.0', 'mon.a'): result.remotes = { cluster.remote2: None } else: result.remotes = None return result ctx.cluster = cluster() ctx.config = { 'roles': [ ['client.0'], ['mon.a','osd.0'] ], } # nothing -> nothing assert install.upgrade_remote_to_config(ctx, {}) == {} # select the remote for the osd.0 role # the 'ignored' role does not exist and is ignored # the remote for mon.a is the same as for osd.0 and # is silently ignored (actually it could be the other # way around, depending on how the keys are hashed) config = { 'osd.0': { 'sha1': 'expectedsha1', }, 'ignored': None, 'mon.a': { 'sha1': 'expectedsha1', }, } expected_config = { cluster.remote2: { 'project': 'ceph', 'sha1': 'expectedsha1', }, } assert install.upgrade_remote_to_config(ctx, config) == expected_config # select all nodes, regardless config = { 'all': { 'sha1': 'expectedsha1', }, } expected_config = { cluster.remote1: { 'project': 'ceph', 'sha1': 'expectedsha1', }, cluster.remote2: { 'project': 'ceph', 'sha1': 'expectedsha1', }, } assert install.upgrade_remote_to_config(ctx, config) == expected_config # verify that install overrides are used as default # values for the upgrade task, not as override ctx.config['overrides'] = { 'install': { 'ceph': { 'sha1': 'overridesha1', 'tag': 'overridetag', 'branch': 'overridebranch', }, }, } config = { 'client.0': { 'sha1': 'expectedsha1', }, 'osd.0': { }, } expected_config = { cluster.remote1: { 'project': 'ceph', 'sha1': 'expectedsha1', }, cluster.remote2: { 'project': 'ceph', 'sha1': 'overridesha1', 'tag': 'overridetag', 'branch': 'overridebranch', }, } assert install.upgrade_remote_to_config(ctx, config) == expected_config