@@ -105,8 +105,19 @@ def get_resource_provider_info(compute_client, placement_client):
105
105
if agg_id in azones :
106
106
rp ["az" ] = azones [agg_id ]
107
107
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
110
121
111
122
112
123
def print_details (compute_client , placement_client ):
@@ -121,7 +132,9 @@ def print_details(compute_client, placement_client):
121
132
print (f'openstack_total_capacity_per_flavor{{flavor="{ flavor_name } "}} { total } ' )
122
133
123
134
# 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
+ )
125
138
hostnames = sorted (resource_providers .keys ())
126
139
for hostname in hostnames :
127
140
rp = resource_providers [hostname ]
@@ -142,6 +155,12 @@ def print_details(compute_client, placement_client):
142
155
f'openstack_capacity_by_hostname{{{ host_str } ,flavor="{ flavor_name } "}} { our_count } '
143
156
)
144
157
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
+
145
164
146
165
def print_exporter_data (app ):
147
166
print_details (app .compute_client , app .placement_client )
0 commit comments