09:00:12 #startmeeting Dragonflow 09:00:13 Meeting started Mon Dec 19 09:00:12 2016 UTC and is due to finish in 60 minutes. The chair is oanson. Information about MeetBot at http://wiki.debian.org/MeetBot. 09:00:14 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 09:00:16 The meeting name has been set to 'dragonflow' 09:00:19 Hello. 09:00:25 Hi 09:00:27 Hello 09:00:28 Welcome to this weeks Dragonflow Weekly! 09:00:28 Hey 09:00:48 We'll wait a second for others to join. 09:00:50 ¯\_(ツ)_/¯ 09:01:11 Good morning 09:01:31 yuval, a giant in the playground, no doubt! 09:01:55 o/ 09:01:56 play basketball?? 09:02:11 I thought more along the lines of order of the stick, but that works too 09:02:15 evrardjp, hi! 09:02:22 hello 09:02:23 All right. Let's start. 09:02:30 #topic Ocata Roadmap 09:02:37 hi 09:02:49 irenab, rajivk, hi. 09:03:08 hi 09:03:13 #info lihi hujie yuli_s yuval dimak evrardjp irenab rajivk in meeting 09:03:31 IPv6 - lihi uploaded an initial advertiser implementation. 09:03:32 * xiaohhui waves his hand 09:03:46 #info xiaohhui also in meeting 09:04:26 lihi, is it ready for review? Do you want some comments on it? Or do you want more time to stabilise it? 09:05:58 I still need to stabilize the tests. They fail differently in different envs. However, comments would be nice :) 09:06:08 Great 09:06:09 #link Add IPv6 ND Neighbor Advertiser application https://review.openstack.org/#/c/412208/ 09:06:31 SFC - dimak, I guess most of your patches will wait the NB refactor? 09:06:39 Yes 09:06:41 Anything you'd like to discuss? 09:06:45 Don't have much to show for now 09:07:04 Mostly NB refactor, but thats for later :) 09:07:10 Yes. Next time don't try to rewrite the project in ten patches, and we'll be good :) 09:07:31 Chassis health/service health reporting 09:07:56 rajivk 's spec is here: https://review.openstack.org/#/c/402395/ 09:08:03 #link Spec to support service status reporting https://review.openstack.org/#/c/402395/ 09:08:28 I see it has a few comments, but if I recall it is fairly close to being ready 09:08:28 Sorry, no status update. 09:08:35 Anything that has to be discussed? 09:08:39 yes 09:09:10 How should i handle service disable and enable? 09:09:45 Is it ok, if i put service status down? 09:09:59 or i need to remove corresponding app from the pipeline? 09:10:14 rajivk, putting service status down is enough 09:10:34 This feature is just monitoring and reporting. Acting upon this information can be dealt with later 09:10:42 ok 09:10:58 I will update the patch soon :) 09:11:05 that's all from my side. 09:11:07 oanson: question about the last poit 09:11:14 Since there are some open questions on how to handle actions: Each application to its own, or a centralised way? How to do this in a distributed manner (e.g. taking over control of other nodes), etc. 09:11:19 irenab, shoot 09:11:44 what is the way to manage services, it is only conf file for now? 09:12:16 I mean enable/disable 09:12:39 sorry, can you please elaborate more? 09:13:33 rajivk: you asked about taking action. My question is how this can be done, is there some API to do it? 09:14:05 I will add a command in df-db 09:14:20 which can enable or disable a service. 09:14:41 rajivk: got it, thanks. so it for the follow-up after monitoring and reporting is done 09:15:14 yes 09:15:35 Later on we can extend to perform some operations based on the status of the service. 09:15:47 as oanson pointed out earlier. 09:15:50 Sounds good to me. I hope that will probably be made easier with the NB refactor 09:15:57 rajivk: thanks for clarification 09:16:15 Anything else for chassis/service health? 09:16:26 no 09:16:58 Great! TAPaaS 09:17:23 yuli_s, any updates? 09:17:29 sure 09:17:52 tap as a service 09:17:59 https://review.openstack.org/#/c/256210 09:17:59 I see on the patch that the tunnel ID issue requires discussion 09:18:25 ops, 09:18:26 this one 09:18:28 https://review.openstack.org/#/c/396307/ 09:18:53 yeah, the neutron ml2 doesn't expose api to allocate segment_id, so how could the tapaas get segment_id from neutron? 09:19:08 Hong Hui Xiao advised to use one segment_id for all tapped packets 09:19:49 and I wanted to bring this to discussion 09:19:52 If there are two TapService ports on a remote compute node, how will that compute node know which tapped packets go where? 09:20:03 yuli_s: Can this be reserved range of seg-ids for taas? 09:20:07 No, I suggest to use a specific tunnel port whose local_ip is something special for the tapaas 09:20:24 irenab, yes, by marking original packet src 09:20:38 xiaohhui, and then recognise it's TAPaaS by tunnel source IP? 09:21:06 yes, so that we don't need to depend on neutron to allocate segment_id 09:21:22 from security point of view, it is better to have at least one segment for each customer 09:21:42 you can have one segment for one customer, 09:21:44 yuli_s, true. But that might not be possible 09:21:44 to minimize the chance the packet interfrerance in case of the bug 09:21:59 just the src of the tunnel is special 09:22:03 yes, 09:22:09 for me this can be done 09:22:22 If we don't have a way to get segment IDs, that won't work. And a bug may cause the same issue with different segment IDs too. 09:22:42 I just can't think about an easy way to get segment_id from neutron. 09:22:46 it complicates the system a bit 09:23:05 we can assign a segment id on each new tenant 09:23:13 in a kind of global way 09:23:26 xiaohhui, we can try asking them to expose an API for it. 09:23:27 Until then, I think the segmentation be src IP would work. 09:23:46 yuli_s, how would you assign the segment id? 09:24:01 It must be unique from anything Neutron will assign 09:24:20 currently we have no table for tenants 09:24:55 yuli_s, I don't see how a table for tenants would help 09:25:18 wait, neutron now has api for segments, which might be something we want. 09:25:50 xiaohhui, can you post a link? 09:25:55 we have the allocate_tenant_segment() call 09:26:04 one sec 09:26:32 in neutron/plugins/ml2/drivers/type_tunnel.py 09:26:46 do we need neutron to assign seg_id for taas? Maybe taas service plugin/driver can manage it 09:27:59 yes, that is what suggested by, or one for each tenant 09:28:00 irenab, you mean the TaaS northbound? 09:28:10 yes 09:28:13 https://review.openstack.org/#/c/317358/ 09:28:34 I added it in newton for routed network 09:28:51 xiaohhui, very cool! :) 09:29:29 yuli_s, what does the TaaS northbound say about segment IDs? 09:29:32 If we are going to use segment_id from neutron, then we can use the segment api 09:29:52 I think that would be better than piggy-backing it on the src IP. 09:30:09 If we can put it in the TaaS northbound, that would be best. 09:30:13 yuli_s, what do you think? 09:30:50 I need to study this. 09:31:09 imho this can be done 09:31:17 yuli_s, that's great. 09:31:40 Please also consult yamamoto if it's possible to add it to the TaaS northbound 09:31:57 ok 09:31:59 Otherwise, we will have to do it in our northbound driver 09:32:37 Whichever solutions you think is best. 09:32:51 Please also update the spec 09:33:46 ok 09:33:55 Anonymous sNAT 09:34:02 ishafran, any updates? 09:34:11 I put latest spec: https://review.openstack.org/#/c/397992/12 09:34:28 I would like to get functional comments/rejects if any 09:34:37 I see in that spec that you still have per-tenant hidden networks in br-int 09:34:50 There are 3 possible solutions threre , and I am going to stick to first one 09:34:56 I thought this requirement was removed due to the information in the metadata fields (reg6 and metadata) 09:35:30 I need cross-tenant network if double NAT is used 09:35:48 My understanding was to do first [1], and then [3] 09:36:04 I am OK with it 09:36:23 Great. 09:36:43 Please update the spec and diagram, and I think we can start pushing this along :) 09:36:56 OK 09:37:19 Anything open in Distributed sNAT? 09:37:42 I will use local file to store tenant info at least at first phase 09:37:50 Sounds good 09:38:01 fine 09:38:14 In the second phase (With external IP per (Compute node, tenant) pair) you will need an IP distribution mechanism 09:38:26 To distribute one IP pool across multiple compute nodes 09:38:43 But as we said, that's the second phase. It can wait 09:38:49 no sure but of course database is better 09:39:11 If it's local and constant, config file is a good solution 09:39:23 (constant in the lifetime of the controller, that is) 09:39:42 agree 09:39:57 Great! 09:40:08 NorthBound API refactor 09:40:23 #link North Bound Code Refactor https://review.openstack.org/#/c/410298/ 09:40:54 I don't know if you had a chance to go over the spec 09:40:57 I read it and looks good, have some comments 09:41:10 The version I put up last night (IST) was a bit buggy, and I only updated it a few hours ago 09:41:16 dimak, shoot 09:41:57 I saw that you defined events per model 09:42:04 which I think is a great idea 09:42:14 They serve to replace https://github.com/openstack/dragonflow/blob/master/dragonflow/db/api_nb.py#L199 ? 09:42:34 With some code in local controller that registers its functions to specific events? 09:42:46 Yes 09:42:56 There is plan for a southbound refactor as well. 09:43:10 Ok 09:43:14 It will allow applications to register to these 'dynamic' events 09:43:39 Another thing with crud example 09:43:40 Hopefully, we will also have other cool stuff, like an application manager that registers and organises applications 09:44:09 We're using **kwargs construct objects inside the crud helper 09:44:15 same with update 09:44:31 why not have @classmethod from_dict() or something? 09:44:37 on the model 09:44:39 Yes. Currently we support 'partial' updates, meaning we can only pass the columns we update 09:44:57 and update() for instances 09:45:23 This reduces the case for which we need to define a custom crud helper 09:45:24 dimak, the new structure will allow it, so there's no problem adding it 09:45:48 and the crud helper will operate on objects directly rather than dictionaries 09:46:24 dimak, I think being able to update a single column is a good thing 09:46:55 e.g. the Neutron API lets you update a single column if you provide the ID of the object 09:47:10 (I think it's a REST thing, but I don't remember the details enough to commit) 09:47:21 Yes, I wasn't talking about partial vs full updates though :) 09:48:00 In any case, with a from_dict/to_dict method, we can call: nbapi.get_resource().update(**.to_dict()) 09:48:40 dimak, if I need to pass an object rather than column=value fields (or in addition), we're going to have strange overloading magic to support both methods 09:48:42 CRUD can handle the instance rather than the dict 09:48:46 we* 09:49:14 but then I need to know if the instance is partial or complete 09:49:24 ummm 09:49:33 for a syntactic improvement that can be done with '**' 09:49:52 Actually, with '**'..to_dict(), but that still is not much 09:49:58 We still have to retrieve the full object for an update.. 09:50:14 Well I'm not sure it can be done in a nice way, I'll think about it 09:50:36 The retrieval is done very close to the database layer. The API layer doesn't see or know about it 09:50:46 Anyway, I wrote both points as comments, I'll post once I'll finish going over the spec 09:50:50 If some day we will be able to take advantage of that, I think that would be great 09:50:57 Sure 09:51:15 Any other comments on the NB refactor spec? 09:51:29 Over all, it seems like a huge step in the right direction 09:52:10 I hope so :) 09:52:19 hujie, would you like to take it? 09:52:38 Since you started doing something similar? 09:52:41 I'll take part in :) 09:53:06 I broke it down into byte sized actions. So we can split the work 09:53:20 great! 09:53:40 Registration was already started and merged by xiaohhui 09:54:04 The Base CRUD helper was written by dimak in another patch - dimak, would you mind isolating it and uploading it for review? 09:54:11 sure 09:54:31 The next two steps are Db Store implementation, and model constructor. 09:54:32 I'll see revise it according to the ideas in the spec 09:54:43 Great! Thanks! 09:55:34 Once these two are done, models can be moved 1 by 1 (rather than all of them at once) 09:56:10 So hujie, do you want to take the Db Store implementation? Or the model construction? 09:56:44 ok, maybe I need time to think about it 09:56:56 Sure. Let me know, and I'll take the other one 09:57:09 sure 09:57:13 Thanks! 09:57:18 :) 09:57:21 Anything else for Nb API refactor? 09:57:41 #topic Open Discussion 09:57:50 We have three minutes. Anything anyone would like to raise? 09:58:37 All right. Thanks everyone for the great work! 09:58:59 Enjoy your dinner/lunch/breakfast/tea 09:59:09 Gbye! 09:59:14 #endmeeting