While trying to convert the QuotaPlugin for Manila into a liquid, I noticed that its share type configuration matches projects and domains by name. So as a liquid, given only the project ID, it would have to query Keystone for name and domain association on every single usage report. I find that excessive, esp. considering that Limes already has this information available.
This change also adds the same signaling to ServiceQuotaRequest. This will be useful for liquid-swift: It needs the domain ID when setting quota. Since SetQuota is rarer than ReportUsage, I considered it fine there to just query Keystone directly, but if we're changing this anyway, we're making the full change.
Zooming out into the big picture, this PR demonstrates how I intend to evolve the LIQUID spec in a backwards-compatible way (from the perspective of the liquid implementations). When a protocol extension is added, liquids need to signal their willingness to use it through the ServiceInfo, and only then will Limes include the respective data in requests (or consume the respective data in responses).
While trying to convert the QuotaPlugin for Manila into a liquid, I noticed that its share type configuration matches projects and domains by name. So as a liquid, given only the project ID, it would have to query Keystone for name and domain association on every single usage report. I find that excessive, esp. considering that Limes already has this information available.
This change also adds the same signaling to ServiceQuotaRequest. This will be useful for liquid-swift: It needs the domain ID when setting quota. Since SetQuota is rarer than ReportUsage, I considered it fine there to just query Keystone directly, but if we're changing this anyway, we're making the full change.
Zooming out into the big picture, this PR demonstrates how I intend to evolve the LIQUID spec in a backwards-compatible way (from the perspective of the liquid implementations). When a protocol extension is added, liquids need to signal their willingness to use it through the ServiceInfo, and only then will Limes include the respective data in requests (or consume the respective data in responses).