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