14:00:10 <rafaelweingartne> #startmeeting cloudkitty
14:00:11 <openstack> Meeting started Mon Feb  8 14:00:10 2021 UTC and is due to finish in 60 minutes.  The chair is rafaelweingartne. Information about MeetBot at http://wiki.debian.org/MeetBot.
14:00:12 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
14:00:14 <openstack> The meeting name has been set to 'cloudkitty'
14:00:19 <rafaelweingartne> Roll count
14:00:45 <mkarpiarz> Hi!
14:01:47 <priteau> o/
14:05:27 <rafaelweingartne> #topic Review priorities
14:05:43 <rafaelweingartne> I do not have any review priority for today's meeting
14:05:47 <rafaelweingartne> do you guys have any?
14:06:33 <mkarpiarz> Any thoughts on https://review.opendev.org/c/openstack/cloudkitty/+/774084?
14:06:56 <rafaelweingartne> I have not seen this one
14:06:58 <mkarpiarz> (it's a WIP but feel free to comment on the idea)
14:07:01 <rafaelweingartne> I will note it here to review
14:07:03 <priteau> Hi mkarpiarz. I haven't had the chance to look at it yet, slowly getting back to reviews.
14:08:03 <mkarpiarz> Sure, no problem. Whenever you guys have some spare time. :)
14:08:49 <mkarpiarz> It's a simple change that basically adds another "if" to the mutator() function.
14:09:45 <mkarpiarz> I think we could do with cleaning this function up so it's not just a bunch of ifs
14:10:05 <mkarpiarz> but for now I just want to add the functionality the simplest way possible.
14:10:38 <mkarpiarz> Also, there is this idea: https://storyboard.openstack.org/#!/story/2008584
14:12:33 <mkarpiarz> It might be useful to have a "keystone" module (seperate from the Keystone fetcher)
14:13:15 <mkarpiarz> that could do things like translation of project names to UUIDs
14:13:43 <priteau> The main question is whether we want the complexity to be in CloudKitty or in the deployment tool
14:14:25 <priteau> Do keep in mind that you'll need to deal with user domains and project domains
14:16:58 <mkarpiarz> Do you mean situations in which the rating user/project is in a different domain than the tenant storing metrics?
14:19:14 <mkarpiarz> We are setting all the required auth parameters when configuring the Monasca collector so we can always use these credentials.
14:19:35 <priteau> I mean to do a lookup against keystone v3 you'll have to handle domain information as well
14:20:37 <priteau> And potentially the metrics user could be under a different domain than the cloudkitty service user?
14:21:42 <priteau> Not that I am against the idea, just letting you know about the potential complexity :)
14:23:54 <mkarpiarz> OK, so what do you think would the best way for interacting with external services be?
14:25:06 <priteau> What kind of external service do you have in mind?
14:25:27 <mkarpiarz> I'm asking a general question because one can imagine a usecase where users would want to call not only Keysone but maybe some other APIs.
14:26:01 <mkarpiarz> Let's limit the question to REST-based HTTP APIs. :)
14:27:08 <priteau> Are we still talking about fetching some information to replace what's in the metrics file?
14:28:43 <priteau> I would be OK with some code to handle a project name instead of ID but I don't think we want to encourage cloudkitty to interact with various external APIs unless there is a strong use case for it
14:29:54 <mkarpiarz> I see. It's a fair point.
14:30:00 <rafaelweingartne> Sorry, I lost the connection
14:33:28 <mkarpiarz> Just to clarify that the idea behind translation of project names to UUIDs is affecting the query
14:34:33 <priteau> Hum, I thought it was just to get around the forced_project_id key in metrics.yml
14:34:54 <mkarpiarz> that we run against the database with metrics and is not going to affect the metrics.yml file.
14:36:25 <mkarpiarz> "external services" could come in when you have other parameters that you want to define in metrics.yml and then tell Cloudkitty how to translate these into elements of the query.
14:36:56 <mkarpiarz> In this case you can think of Keystone as an "external service". :)
14:37:44 <mkarpiarz> Apologis if the Story description was not clear but the idea is to introduce the `forced_project_name` parameter
14:38:05 <mkarpiarz> that would then be translated by Cloudkitty to the project UUID.
14:39:43 <priteau> If these elements in metrics.yml can be determined at deployment time and don't tend to change, I would prefer if it was the job of the deployment system to figure out the right parameters
14:40:09 <priteau> except for keystone project name -> id which is a very common use case
14:41:49 <mkarpiarz> OK, so a different approach maybe:
14:42:35 <mkarpiarz> We can tell collectors to add metadata parameters to metrics, right?
14:44:31 <mkarpiarz> Instead of authenticating against Keystone from Cloudkitty we could ask Monasca to add the "project_name" parameter to each measurement.
14:45:34 <mkarpiarz> Then we'd only need to adjust the query that Cloudkitty sends to, say, Influx so that it includes the metadata parameter.
14:45:58 <rafaelweingartne> That is possible already in the sumary V2 endpoint
14:46:11 <rafaelweingartne> one can customize the projection/output of the summary request
14:47:41 <mkarpiarz> Right, but doesn't the /v2/summary endpoint work on data that's been processed to quantities and rates?
14:48:08 <mkarpiarz> (so stuff that is in the "cloudkitty" database and not in, say, the "monasca" one)
14:49:02 <rafaelweingartne> it works on the influx database
14:49:17 <mkarpiarz> Ah, I didn't know that!
14:49:20 <rafaelweingartne> I mean the endpoint consumes it, and it would normally only return the quantity and price
14:49:29 <rafaelweingartne> but I extended it to allow us to project more
14:49:39 <rafaelweingartne> this allows one to create richer reports
14:49:52 <rafaelweingartne> using the metadata that we have stored in Influx
14:50:24 <rafaelweingartne> #link https://docs.openstack.org/cloudkitty/latest/api-reference/v2/index.html?expanded=get-a-rating-summary-detail#get-a-rating-summary
14:51:49 <mkarpiarz> Interesting, thanks!
14:52:17 <mkarpiarz> I'll have a look then.
14:52:43 <mkarpiarz> (into what the /v2/summary endpoint can do)
14:53:45 <rafaelweingartne> Guys, I guess we will have to end the meeting, as we are running out of time
14:53:49 <mkarpiarz> I don't want to keep you guys on this tangent so feel free to move to the next item.
14:54:06 <rafaelweingartne> We do not have any other defined topics
14:54:07 <rafaelweingartne> #topic AOB
14:54:11 <mkarpiarz> Haha, good tming. ;)
14:54:11 <rafaelweingartne> Now, I open for general questions and topics that people might have.
14:54:35 <rafaelweingartne> I will wait for another 5min. before ending the meeting
14:54:45 <mkarpiarz> Nothing on my side.
14:56:48 <priteau> Nothing special from me either
14:58:48 <rafaelweingartne> Thank you guys for participating. Have a nice week.
14:58:52 <rafaelweingartne> #endmeeting