Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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