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