for info in self.get_standbys():
yield info
for fs in self.map['filesystems']:
- for info in fs['mdsmap']['info'].values():
+ for info in fs['mdsmap']['info']:
yield info
def get_standbys(self):
Get the standby:replay MDS for the given FSCID.
"""
fs = self.get_fsmap(fscid)
- for info in fs['mdsmap']['info'].values():
+ for info in fs['mdsmap']['info']:
if info['state'] == 'up:standby-replay':
yield info
Get the ranks for the given FSCID.
"""
fs = self.get_fsmap(fscid)
- for info in fs['mdsmap']['info'].values():
+ for info in fs['mdsmap']['info']:
if info['rank'] >= 0:
yield info
return info
raise RuntimeError("FSCID {0} has no rank {1}".format(fscid, rank))
+ def get_cluster(self, fscid):
+ """
+ Get the MDS cluster for the given FSCID.
+ """
+ fs = self.get_fsmap(fscid)
+ for info in fs['mdsmap']['info']:
+ yield info
+
def get_mds(self, name):
"""
Get the info for the given MDS name.
mdsmap = fs['mdsmap']
metadata_pool = pool_id_name[mdsmap['metadata_pool']]
- for gid in mdsmap['up'].values():
- self.mon_manager.raw_cluster_cmd('mds', 'fail', gid.__str__())
+ for info in status.get_ranks(fs['id']):
+ self.mon_manager.raw_cluster_cmd('mds', 'fail', str(info['gid']))
self.mon_manager.raw_cluster_cmd('fs', 'rm', mdsmap['fs_name'], '--yes-i-really-mean-it')
self.mon_manager.raw_cluster_cmd('osd', 'pool', 'delete',
log.info("are_daemons_healthy: mds map: {0}".format(mds_map))
- for mds_id, mds_status in mds_map['info'].items():
- if mds_status['state'] not in ["up:active", "up:standby", "up:standby-replay"]:
- log.warning("Unhealthy mds state {0}:{1}".format(mds_id, mds_status['state']))
+ for info in mds_map['info']:
+ if info['state'] not in ["up:active", "up:standby", "up:standby-replay"]:
+ log.warning("Unhealthy mds state {0}:{1}".format(info['gid'], info['state']))
return False
- elif mds_status['state'] == 'up:active':
+ elif info['state'] == 'up:active':
active_count += 1
log.info("are_daemons_healthy: {0}/{1}".format(
if active_count >= mds_map['max_mds']:
# The MDSMap says these guys are active, but let's check they really are
- for mds_id, mds_status in mds_map['info'].items():
- if mds_status['state'] == 'up:active':
+ for info in mds_map['info']:
+ if info['state'] == 'up:active':
try:
- daemon_status = self.mds_asok(["status"], mds_id=mds_status['name'])
+ daemon_status = self.mds_asok(["status"], mds_id=info['name'])
except CommandFailedError as cfe:
if cfe.exitstatus == errno.EINVAL:
# Old version, can't do this check
"""
status = self.get_mds_map()
result = []
- for mds_status in sorted(status['info'].values(), lambda a, b: cmp(a['rank'], b['rank'])):
+ for mds_status in sorted(status['info'], lambda a, b: cmp(a['rank'], b['rank'])):
if mds_status['state'] == state or state is None:
result.append(mds_status['name'])
def get_all_mds_rank(self):
status = self.get_mds_map()
result = []
- for mds_status in sorted(status['info'].values(), lambda a, b: cmp(a['rank'], b['rank'])):
+ for mds_status in sorted(status['info'], lambda a, b: cmp(a['rank'], b['rank'])):
if mds_status['rank'] != -1 and mds_status['state'] != 'up:standby-replay':
result.append(mds_status['rank'])
"""
status = self.get_mds_map()
result = []
- for mds_status in sorted(status['info'].values(), lambda a, b: cmp(a['rank'], b['rank'])):
+ for mds_status in sorted(status['info'], lambda a, b: cmp(a['rank'], b['rank'])):
if mds_status['rank'] != -1 and mds_status['state'] != 'up:standby-replay':
result.append(mds_status['name'])