13:02:05 <Qiming> #startmeeting senlin 13:02:06 <openstack> Meeting started Tue Aug 8 13:02:05 2017 UTC and is due to finish in 60 minutes. The chair is Qiming. Information about MeetBot at http://wiki.debian.org/MeetBot. 13:02:07 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 13:02:09 <openstack> The meeting name has been set to 'senlin' 13:04:17 <Qiming> hi 13:04:30 <ruijie> evening, Qiming, XueFeng 13:04:37 <XueFeng> hi 13:04:55 <Qiming> hi, this week is the RC1 week 13:05:02 <XueFeng> evening, all 13:05:12 <XueFeng> OK 13:05:13 <Qiming> let's see if we have some patches to merge 13:05:40 <Qiming> I'm reading elynn's patch on nova server 13:06:06 <elynn> finally someone is reading it 13:06:11 <Qiming> overall it looks good 13:06:25 <XueFeng> Qiming, maybe there is a bug in client 13:06:47 <Qiming> I'm still trying to be picky 13:07:26 <XueFeng> Let me check 13:07:36 <XueFeng> senlin node-list 'Namespace' object has no attribute 'os_profile' 13:07:37 <elynn> sure, welcome picky. 13:07:39 <Qiming> elynn, I don't like the 'return ex' or 'return obj, ex' code 13:08:20 <elynn> It's copycat from golang.. 13:08:29 <Qiming> exceptions are not supposed to be passed this way 13:09:03 <Qiming> better change it to 'return error_string' or 'return obj, error_string' 13:09:29 <elynn> error_string? 13:09:32 <Qiming> the code won't cause an issue in its current state 13:09:39 <Qiming> six.text_type(ex) 13:10:01 <elynn> might lost the exception type in this way 13:10:20 <Qiming> but in future, if someone wants to parse that exception "object", he will fail 13:10:51 <Qiming> exception objects are only meant to be parsed INSIDE a try ... except <parse it here> clause 13:10:54 <elynn> I see.. Sounds good. 13:11:18 <Qiming> I myself have suffered from that before 13:11:43 <Qiming> trying to figure out the exception details out of the exception context ... most things changed 13:12:50 <elynn> persuaded, I will modify that. 13:12:54 <Qiming> XueFeng, what is it? 13:13:23 <Qiming> can you nail it down to the changes made? 13:13:32 <XueFeng> https://review.openstack.org/#/c/487766/ 13:13:40 <XueFeng> maybe cause by this patch 13:14:34 <XueFeng> Christopher Brown is making senlinclient rpm 13:14:49 <XueFeng> senlin server rpm has been finished 13:15:50 <Qiming> I noticed that complaint 13:16:56 <XueFeng> I will check how to solve the problem ASAP. 13:17:37 <Qiming> okay, it looks to me the current fix is incorrect 13:18:21 <Qiming> I think we should fix the unit test 13:18:25 <Qiming> make it smarter 13:18:47 <XueFeng> ok 13:19:19 <Qiming> http://git.openstack.org/cgit/openstack/python-senlinclient/tree/senlinclient/tests/unit/test_shell.py#n195 13:19:55 <Qiming> when os_profiler is installed, parser.add_argument.call_count should be 1, or else it should be 0 13:20:30 <XueFeng> OK 13:20:41 <XueFeng> got it 13:24:34 <Qiming> any other bugs / issues? 13:24:49 <Qiming> I have got one: 13:24:52 <XueFeng> No more from me 13:24:54 <Qiming> BIG ONE 13:25:03 <Qiming> https://review.openstack.org/#/c/490707/ 13:25:18 <Qiming> and this: http://lists.openstack.org/pipermail/openstack-dev/2017-August/120656.html 13:25:26 <Qiming> :D 13:25:46 <XueFeng> Congratulations 13:25:49 <XueFeng> :) 13:26:08 <Qiming> Ruijie has decided to step forward to lead us 13:26:25 <ruijie> :) 13:27:02 <ruijie> Hope we can go to next level, of course with all your supports 13:27:06 <Qiming> as far as I know, if no one else would propose, he will be our next center-of-complaints 13:27:21 <XueFeng> Next cycle we will do more hard for senlin 13:27:38 <elynn> Good to know~ Welcome ruijie :) 13:27:51 <Qiming> thanks, ruijie 13:28:07 <ruijie> thanks all :) 13:29:01 <ruijie> about the bug/improvements, here's one http://git.openstack.org/cgit/openstack/senlin/tree/senlin/engine/actions/base.py#n322 13:29:39 <Qiming> right, we talked about that last week 13:29:42 <ruijie> we may need an interval/max retry times for this kind of actions 13:29:49 <Qiming> yep 13:31:10 <ruijie> but, as you see, this is inside a thread, do we need a column or somethings to mark the retry times? 13:32:25 <Qiming> ... good question 13:32:49 <Qiming> I don't think it needs to be persisted into database 13:33:21 <Qiming> but without persisting to db, we don't have a workaround 13:33:33 <Qiming> all actions are fetched again from db 13:34:20 <ruijie> yes Qiming, or we could write it into the data field .. 13:34:42 <Qiming> yep, sounds a workaround 13:36:36 <Qiming> put {'#retries': 1} in to action.data? 13:37:58 <ruijie> yes, need extra code to parse this field. 13:38:20 <Qiming> parse and set it if necessary 13:38:26 <Qiming> logic is straightfoward 13:38:29 <ruijie> and we now have a lot of data in action.input & output 13:38:39 <Qiming> :) 13:38:59 <Qiming> a lot of? 13:39:48 <ruijie> for the messaging purpose, I add a lot of them in out project .. not sure that is necessary to add back to Senlin 13:39:58 <ruijie> out/our 13:40:41 <Qiming> :) 13:41:10 <Qiming> so ... it has better be done on a per-field basis 13:42:10 <Qiming> anyone of you is aware of how to use etcd as the data store? 13:44:30 <elynn> What kind of data store? 13:44:37 <Qiming> replace mysql 13:44:39 <Qiming> https://review.openstack.org/#/c/445432 13:45:48 <Qiming> I'm tired of the mysql -> sqlalchemy -> oslo.db -> our own db model abstraction 13:46:42 <elynn> Any advantage replacing mysql with etcd? 13:46:53 <Qiming> it is introducing a lot of bizarre errors 13:47:06 <elynn> as a kv database, I guess it would be very easy to use 13:47:22 <Qiming> the most powerful thing is HA 13:47:24 <elynn> just throw a dict to it 13:47:33 <Qiming> then it has "watch" api 13:48:15 <Qiming> actually, we are storing "dict" in mysqldb 13:49:08 <Qiming> then action engine can simply "watch" new action objects creation and start working on it 13:50:09 <elynn> https://python-etcd.readthedocs.io/en/latest/ 13:50:35 <elynn> Still not so sure how to implement that 13:50:46 <XueFeng> <Qiming> anyone of you is hihiof how to use etcd as the data store? ///Hi, Senlin need introduce etcd to the project? 13:50:57 <Qiming> a lot easier from the doc 13:51:35 <Qiming> XueFeng, just curious if that can save us from the db consistency problem once for all 13:52:28 <Qiming> this is wonderful: client.read('/nodes/n2', wait=True) #Waits for a change in value in the key before returning. 13:52:58 <XueFeng> use raft protocol 13:53:01 <Qiming> things written into etcd can have a ttl 13:53:20 <Qiming> that means they will go away after that time period 13:53:41 <Qiming> a single option to controll all events in db 13:53:49 <ruijie> auto purge the action data .. 13:54:32 <XueFeng> It's better than corosync which use totem protocol 13:55:50 <Qiming> anyway, just throw a question on you 13:56:09 <Qiming> in case someone is interested in this 13:56:20 <XueFeng> Ok, and these days 13:56:43 <XueFeng> Which things can we do for the k8s+senlin 13:56:45 <elynn> Maintain the relationship might still be a problem in etcd I guess. 13:57:04 <ruijie> that is acceptable that we replace mysqldb with etcd? or add it as one component ? 13:57:22 <Qiming> it doesn't have to be a replace 13:57:33 <Qiming> it can be another db driver 13:58:02 <Qiming> recall that we have senlin/db/sqlalchemy, we can have senlin/db/etcd 13:58:25 <ruijie> okay, cool 13:58:29 <XueFeng> Yes 13:59:03 <Qiming> time's up, guys 13:59:10 <Qiming> thanks for joining 13:59:16 <Qiming> have a good sleep 13:59:25 <Qiming> it is heavy raining outside here 13:59:28 <XueFeng> good night 13:59:29 <elynn> see u 13:59:31 <Qiming> good night 13:59:43 <Qiming> #endmeeting