Пример #1
0
    def volumes(self):
        """Get a list of volumes in this cluster."""

        all_volumes = api.listVolumes(includeMeta=True)['volumeList']
        volumes = [Volume(self, name, data)
                   for name, data in all_volumes.items()]
        return sorted(volumes, key=lambda v: v.name)
Пример #2
0
    def get_cluster_context(self):
        """Show info about the physical cluster."""

        nodes_down = not self.nodes

        def node_physical_size(node):
            return node['storageUsed'] + \
                node['fsAvailBlocks'] * node['fsBlockSize']

        cluster = {
            'address': 'sx://{}'.format(api._cluster.name
                                        or api._cluster.host),
            'port': api._cluster.port
            or (443 if api._cluster.is_secure else 80),
            'virtual_size': sum(n['nodeCapacity'] for n in chain(*self.zones)),
            'physical_size': sum(map(node_physical_size, self.nodes))
        }

        volumes = api.listVolumes()['volumeList'].values()
        vcluster_info = {
            'allocated_size': sum(v['sizeBytes'] for v in volumes),
            'count': 1
        }

        disk_usage = {
            'pre_replica': sum(v['usedSize'] for v in volumes),
            'post_replica': sum(n['storageUsed'] for n in self.nodes),
        }
        return {
            'nodes_down': nodes_down,
            'cluster': cluster,
            'vcluster_info': vcluster_info,
            'disk_usage': disk_usage,
        }
Пример #3
0
    def get_cluster_context(self):
        """Show info about the physical cluster."""

        nodes_down = not self.nodes

        def node_physical_size(node):
            return node['storageUsed'] + \
                node['fsAvailBlocks'] * node['fsBlockSize']

        cluster = {
            'address': 'sx://{}'.format(api._cluster.name or
                                        api._cluster.host),
            'port': api._cluster.port or (
                443 if api._cluster.is_secure else 80),
            'virtual_size': sum(n['nodeCapacity'] for n in chain(*self.zones)),
            'physical_size': sum(map(node_physical_size, self.nodes))
        }

        volumes = api.listVolumes()['volumeList'].values()
        vcluster_info = {
            'allocated_size': sum(v['sizeBytes'] for v in volumes),
            'count': 1
        }

        disk_usage = {
            'pre_replica': sum(v['usedSize'] for v in volumes),
            'post_replica': sum(n['storageUsed'] for n in self.nodes),
        }
        return {
            'nodes_down': nodes_down,
            'cluster': cluster,
            'vcluster_info': vcluster_info,
            'disk_usage': disk_usage,
        }
Пример #4
0
    def collect_cluster_stats(self):
        volumes = api.listVolumes()['volumeList']
        used_size = sum(v['usedSize'] for v in volumes.itervalues())

        path = 'space_usage'

        data = [(path, (self.timestamp, used_size))]
        self.send_data(data)
Пример #5
0
    def collect_cluster_stats(self):
        volumes = api.listVolumes()['volumeList']
        used_size = sum(v['usedSize'] for v in volumes.itervalues())

        path = 'space_usage'

        data = [(path, (self.timestamp, used_size))]
        self.send_data(data)
Пример #6
0
    def volumes(self):
        """Get a list of volumes in this cluster."""

        all_volumes = api.listVolumes(includeMeta=True)['volumeList']
        volumes = [
            Volume(self, name, data) for name, data in all_volumes.items()
        ]
        return sorted(volumes, key=lambda v: v.name)