14:00:38 <rafaelweingartne> #startmeeting cloudkitty
14:00:39 <openstack> Meeting started Mon Jan 25 14:00:38 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:40 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
14:00:42 <openstack> The meeting name has been set to 'cloudkitty'
14:00:44 <rafaelweingartne> Hello guys
14:00:52 <rafaelweingartne> Roll count
14:01:02 <priteau> o/
14:03:06 <mkarpiarz> Hi!
14:03:57 <rafaelweingartne> :)
14:05:30 <rafaelweingartne> #topic Review priorities
14:05:40 <rafaelweingartne> Do you guys have some review priorities?
14:05:51 <rafaelweingartne> At least, from my side, I do not have any so far
14:06:28 <priteau> I'll look at the policy patch, it's one of the priorities for this cycle.
14:07:45 <mkarpiarz> I can do testing of changes to the v2 API once I wrap my head around how v2 API works. :)
14:08:17 <rafaelweingartne> I am mistaken, I would have some priorities
14:08:19 <rafaelweingartne> #link https://review.opendev.org/c/openstack/cloudkitty-specs/+/770928
14:08:26 <rafaelweingartne> #link https://review.opendev.org/c/openstack/cloudkitty-specs/+/771513
14:08:32 <rafaelweingartne> Did you have time to check them?
14:09:08 <mkarpiarz> Yeah, good shout on this one, rafaelweingartne.
14:09:43 <rafaelweingartne> As soon as I get your feedback on them there, and if we are ok with them. I could create the patches
14:09:52 <rafaelweingartne> and maybe we can add these to Wallaby release as well
14:11:29 <mkarpiarz> There would need to be a change in database migration between releases, I imagine.
14:11:50 <rafaelweingartne> exactly
14:12:46 <rafaelweingartne> and specially for the state field deprecation
14:13:43 <mkarpiarz> I'm totally onboard with this change and I feel like the name you suggested describes this column way better.
14:14:41 <mkarpiarz> (but I've already given my +1 to this one)
14:15:20 <priteau> I need to check the code but I think the last_processed_date is OK, although I'll have comments
14:15:24 <rafaelweingartne> Thanks for the review in both of them
14:15:39 <rafaelweingartne> priteau: I am open to suggestions
14:15:45 <priteau> The other one I am not so sure, I was hoping the fetcher could do something automatic
14:15:51 <rafaelweingartne> the last_processed_date was just what I came up with
14:16:10 <rafaelweingartne> priteau: we discussed that, but it is not so simple
14:17:04 <rafaelweingartne> There are some implication if we do that automatically, and we could always miss data, or create a situation that the system could be exploited
14:20:45 <mkarpiarz> It might be better to have an option to manually set projects as inactive rather than no such option at all.
14:22:51 <priteau> OK, looking at the Gnocchi fetcher code, it is based on resource.list(). I thought that it was looking at metrics.
14:24:34 <priteau> Your approach may be appropriate then
14:27:42 <rafaelweingartne> Thank you guys for your reviews!
14:28:03 <rafaelweingartne> I will open for general questions and topics that people might have.
14:28:07 <rafaelweingartne> #topic AOB
14:29:54 <priteau> Do you want to discuss the mutators?
14:30:19 <rafaelweingartne> If you guys want, we do have time for it
14:31:24 <mkarpiarz> Sure. Is there anything you want to discuss?
14:32:10 <mkarpiarz> There are no changes yet but I belive we've agreed to going the "function mappings" route for now.
14:33:04 <mkarpiarz> Unless you guys are comfortable with using eval() with custom strings for defining mutators.
14:33:46 <priteau> I think it's best to avoid if we can get away with something well defined
14:34:24 <mkarpiarz> I agree.
14:35:48 <priteau> Even for ease of use. Get the function a bit wrong and you get exceptions in CloudKitty
14:36:14 <mkarpiarz> However mapping allowed strings to allowed mutators is already done in the code.
14:36:57 <mkarpiarz> Granted, we could move all the mutators to a dict and add more of them, especially the negating mutator.
14:38:56 <mkarpiarz> Or maybe we should let users chain basic mutators together so they can create more complex functions this way?
14:39:41 <rafaelweingartne> Do we have use cases for that?
14:39:48 <rafaelweingartne> If not, I would not go down that road
14:41:26 <mkarpiarz> Well, the main usecase is the Prometheus one.
14:42:50 <mkarpiarz> Where 0 in openstack_nova_server_status denotes instances that are active.
14:43:38 <rafaelweingartne> hmm for chained mutators?
14:44:40 <mkarpiarz> Well, if we let users chain mutator they could chain NOT with the NUMBOOL for this. :)
14:44:49 <rafaelweingartne> I mean, is there a current use case for Prometheus where one needs to retrieve some data, and then pass it through different mutators?
14:44:59 <rafaelweingartne> I see
14:46:04 <mkarpiarz> But the same can easier if we introduce a "NOT NUMBOOL" mutator
14:48:50 <mkarpiarz> which returns 1 when the measurement is a zero and 0 otherwise.
14:49:35 <rafaelweingartne> I see
14:49:52 <rafaelweingartne> we do not actually use mutators, but I can see where you are using it
14:49:53 <mkarpiarz> But then what if someone wants to bill shut down instances but not these in error state?
14:50:15 <rafaelweingartne> We use the dynamic pollster for that
14:50:22 <rafaelweingartne> we map the states to either 0 or 1
14:50:44 <rafaelweingartne> and then we create a metric on Gnocchi with these, and this metric that has either 0 or 1 is rated by Cloudkitty
14:50:55 <rafaelweingartne> we do this for octavia, VPN, and other resources as well
14:51:09 <mkarpiarz> Ah, nice!
14:51:24 <rafaelweingartne> That is why we do not use the mutators
14:51:38 <rafaelweingartne> CloudKitty receives that data already prepared and processed, and it only has to rate it
14:52:36 <rafaelweingartne> We do know that Ceilometer removed the binary that collection pollsters, but the dynamic pollsters is generic :)
14:52:58 <mkarpiarz> I've no idea if it's possible to tell Prometheus to convert values it returns to bools before submitting them but I'll check.
14:52:59 <rafaelweingartne> therefore, the operators create their own using YAML
14:53:41 <rafaelweingartne> data collection pollsters*
14:56:20 <rafaelweingartne> guys, I gotta go now
14:56:34 <rafaelweingartne> Thank you guys for participating. Have a nice week.
14:56:39 <priteau> Thanks both
14:56:43 <priteau> Bye!
14:56:44 <rafaelweingartne> If you need anything from me, just ping
14:56:54 <rafaelweingartne> #endmeeting