Skip to content

Commit 8717742

Browse files
committed
Attempt to model some project isolation
1 parent e3b9d66 commit 8717742

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

os_capacity/prometheus.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,19 @@ def get_resource_provider_info(compute_client, placement_client):
105105
if agg_id in azones:
106106
rp["az"] = azones[agg_id]
107107
if agg_id in project_filters:
108-
rp["project_filter"] = project_filters[agg_id]["name"]
109-
return resource_providers
108+
# TODO(johngarbutt): loosing info here
109+
if "project_filter" in rp:
110+
rp["project_filter"] = "multiple"
111+
else:
112+
rp["project_filter"] = project_filters[agg_id]["name"]
113+
114+
project_to_aggregate = collections.defaultdict(list)
115+
for filter_info in project_filters.values():
116+
name = filter_info["name"]
117+
for project in filter_info["projects"]:
118+
project_to_aggregate[project] += [name]
119+
120+
return resource_providers, project_to_aggregate
110121

111122

112123
def print_details(compute_client, placement_client):
@@ -121,7 +132,9 @@ def print_details(compute_client, placement_client):
121132
print(f'openstack_total_capacity_per_flavor{{flavor="{flavor_name}"}} {total}')
122133

123134
# capacity per host
124-
resource_providers = get_resource_provider_info(compute_client, placement_client)
135+
resource_providers, project_to_aggregate = get_resource_provider_info(
136+
compute_client, placement_client
137+
)
125138
hostnames = sorted(resource_providers.keys())
126139
for hostname in hostnames:
127140
rp = resource_providers[hostname]
@@ -142,6 +155,12 @@ def print_details(compute_client, placement_client):
142155
f'openstack_capacity_by_hostname{{{host_str},flavor="{flavor_name}"}} {our_count}'
143156
)
144157

158+
for project, names in project_to_aggregate.items():
159+
for name in names:
160+
print(
161+
f'openstack_project_filter{{project="{project}",aggregate="{name}"}} 1'
162+
)
163+
145164

146165
def print_exporter_data(app):
147166
print_details(app.compute_client, app.placement_client)

0 commit comments

Comments
 (0)