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)
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, }
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, }
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)
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)