def do_usage_list(cs, args): """List usage data for all tenants.""" dateformat = "%Y-%m-%d" rows = ["Tenant ID", "Instances", "RAM MB-Hours", "CPU Hours", "Disk GB-Hours"] now = timeutils.utcnow() if args.start: start = datetime.datetime.strptime(args.start, dateformat) else: start = now - datetime.timedelta(weeks=4) if args.end: end = datetime.datetime.strptime(args.end, dateformat) else: end = now + datetime.timedelta(days=1) def simplify_usage(u): simplerows = [x.lower().replace(" ", "_") for x in rows] setattr(u, simplerows[0], u.tenant_id) setattr(u, simplerows[1], "%d" % len(u.server_usages)) setattr(u, simplerows[2], "%.2f" % u.total_memory_mb_usage) setattr(u, simplerows[3], "%.2f" % u.total_vcpus_usage) setattr(u, simplerows[4], "%.2f" % u.total_local_gb_usage) usage_list = cs.usage.list(start, end, detailed=True) print("Usage from %s to %s:" % (start.strftime(dateformat), end.strftime(dateformat))) for usage in usage_list: simplify_usage(usage) utils.print_list(usage_list, rows)
def do_list(cs, args): """List active loadbalancers.""" def vip_filter(lb): vips = [x["address"] for x in lb.virtualIps] return ", ".join(vips) filters = {} formatters = {"VirtualIPs": vip_filter} field_titles = [] if args.fields: for field in args.fields.split(","): field_title, formatter = utils._make_field_formatter(field, filters) field_titles.append(field_title) formatters[field_title] = formatter id_col = "ID" loadbalancers = cs.loadbalancers.list() convert = [("OS-EXT-SRV-ATTR:host", "host"), ("hostId", "host_id")] _translate_keys(loadbalancers, convert) if field_titles: columns = [id_col] + field_titles else: columns = [id_col, "Name", "Status", "Protocol", "Port", "Algorithm", "VirtualIPs"] utils.print_list(loadbalancers, columns, formatters, sortby_index=1)
def _dump_timings(self, timings): class Tyme(object): def __init__(self, url, seconds): self.url = url self.seconds = seconds results = [Tyme(url, end - start) for url, start, end in timings] total = 0.0 for tyme in results: total += tyme.seconds results.append(Tyme("Total", total)) utils.print_list(results, ["url", "seconds"], sortby_index=None)
def _quota_show(quotas): class FormattedQuota(object): def __init__(self, key, value): setattr(self, "quota", key) setattr(self, "limit", value) quota_list = [] for resource in _quota_resources: try: quota = FormattedQuota(resource, getattr(quotas, resource)) quota_list.append(quota) except AttributeError: pass columns = ["Quota", "Limit"] utils.print_list(quota_list, columns)
def do_usage(cs, args): """Show usage data for a single tenant.""" dateformat = "%Y-%m-%d" rows = ["Instances", "RAM MB-Hours", "CPU Hours", "Disk GB-Hours"] now = timeutils.utcnow() if args.start: start = datetime.datetime.strptime(args.start, dateformat) else: start = now - datetime.timedelta(weeks=4) if args.end: end = datetime.datetime.strptime(args.end, dateformat) else: end = now + datetime.timedelta(days=1) def simplify_usage(u): simplerows = [x.lower().replace(" ", "_") for x in rows] setattr(u, simplerows[0], "%d" % len(u.server_usages)) setattr(u, simplerows[1], "%.2f" % u.total_memory_mb_usage) setattr(u, simplerows[2], "%.2f" % u.total_vcpus_usage) setattr(u, simplerows[3], "%.2f" % u.total_local_gb_usage) if args.tenant: usage = cs.usage.get(args.tenant, start, end) else: usage = cs.usage.get(cs.client.tenant_id, start, end) print("Usage from %s to %s:" % (start.strftime(dateformat), end.strftime(dateformat))) if getattr(usage, "total_vcpus_usage", None): simplify_usage(usage) utils.print_list([usage], rows) else: print("None")
def do_rate_limits(cs, args): """Print a list of rate limits for a user""" limits = cs.limits.get().rate columns = ["Verb", "URI", "Value", "Remain", "Unit", "Next_Available"] utils.print_list(limits, columns)
def do_absolute_limits(cs, args): """Print a list of absolute limits for a user""" limits = cs.limits.get(args.reserved, args.tenant).absolute columns = ["Name", "Value"] utils.print_list(limits, columns)