def info(self): res = {} res['addr'] = self.__str__() res['hostname'] = infrastructure.get_hostname_by_addr(self.host.addr) res['status'] = self.status res['dc'] = self.host.dc res['last_stat_update'] = ( self.stat and datetime.datetime.fromtimestamp( self.stat.ts).strftime('%Y-%m-%d %H:%M:%S') or 'unknown') if self.stat: min_free_space = config['balancer_config'].get( 'min_free_space', 256) * 1024 * 1024 min_free_space_rel = config['balancer_config'].get( 'min_free_space_relative', 0.15) res['free_space'] = int(self.stat.free_space) node_eff_space = max( min(self.stat.total_space - min_free_space, self.stat.total_space * (1 - min_free_space_rel)), 0.0) res['free_effective_space'] = int( max( self.stat.free_space - (self.stat.total_space - node_eff_space), 0)) res['used_space'] = int(self.stat.used_space) res['total_files'] = self.stat.files + self.stat.files_removed res['fragmentation'] = self.stat.fragmentation res['path'] = port_to_path(int(res['addr'].split(':')[1])) return res
def info(self): res = {} res['addr'] = self.__str__() res['hostname'] = infrastructure.get_hostname_by_addr(self.host.addr) res['status'] = self.status res['dc'] = self.host.dc res['last_stat_update'] = (self.stat and datetime.datetime.fromtimestamp(self.stat.ts).strftime('%Y-%m-%d %H:%M:%S') or 'unknown') if self.stat: min_free_space = config['balancer_config'].get('min_free_space', 256) * 1024 * 1024 min_free_space_rel = config['balancer_config'].get('min_free_space_relative', 0.15) res['free_space'] = int(self.stat.free_space) node_eff_space = max(min(self.stat.total_space - min_free_space, self.stat.total_space * (1 - min_free_space_rel)), 0.0) res['free_effective_space'] = int(max(self.stat.free_space - (self.stat.total_space - node_eff_space), 0)) res['used_space'] = int(self.stat.used_space) res['total_files'] = self.stat.files + self.stat.files_removed res['fragmentation'] = self.stat.fragmentation res['path'] = port_to_path(int(res['addr'].split(':')[1])) return res
def groups_by_dc(self, request): groups = request[0] logger.info("Groups: %s" % (groups,)) groups_by_dcs = {} for g in groups: if not g in storage.groups: logger.info("Group %s not found" % (g,)) continue group = storage.groups[g] group_data = {"group": group.group_id, "nodes": [n.info() for n in group.nodes]} for node in group_data["nodes"]: node["path"] = infrastructure.port_to_path(int(node["addr"].split(":")[1])) if group.couple: group_data.update({"couple": str(group.couple), "couple_status": group.couple.status}) if not group.nodes: dc_groups = groups_by_dcs.setdefault("unknown", {}) dc_groups[group.group_id] = group_data continue for node in group.nodes: dc_groups = groups_by_dcs.setdefault(node.host.dc, {}) dc_groups[group.group_id] = group_data return groups_by_dcs
def groups_by_dc(self, request): groups = request[0] logger.info('Groups: %s' % (groups, )) groups_by_dcs = {} for g in groups: if not g in storage.groups: logger.info('Group %s not found' % (g, )) continue group = storage.groups[g] group_data = { 'group': group.group_id, 'nodes': [n.info() for n in group.nodes], } for node in group_data['nodes']: node['path'] = infrastructure.port_to_path( int(node['addr'].split(':')[1])) if group.couple: group_data.update({ 'couple': str(group.couple), 'couple_status': group.couple.status }) if not group.nodes: dc_groups = groups_by_dcs.setdefault('unknown', {}) dc_groups[group.group_id] = group_data continue for node in group.nodes: dc_groups = groups_by_dcs.setdefault(node.host.dc, {}) dc_groups[group.group_id] = group_data return groups_by_dcs