Tuesday, 2017-12-19

*** yamamoto has joined #openstack-dragonflow04:57
*** yamamoto has quit IRC05:07
*** yamamoto has joined #openstack-dragonflow05:08
*** yamamoto has quit IRC05:27
*** yamamoto has joined #openstack-dragonflow05:30
*** yamamoto has quit IRC05:36
*** CrayZee has joined #openstack-dragonflow06:28
*** yamamoto has joined #openstack-dragonflow06:35
*** yamamoto has quit IRC06:41
*** yamamoto has joined #openstack-dragonflow07:45
oansonMorning07:56
oansonsnapiri, CrayZee, ping08:04
oansonWell, when you see this: Patch https://review.openstack.org/#/c/528539 requires upgrade code. I don't mind pushing it through as is, but I want to get an ack before I do so08:16
CrayZeepong08:28
CrayZeehmm... I would need some mentoring (or example) with it08:29
CrayZeeoanson: ^^08:44
oansonCrayZee, No worries.08:45
oansonI mostly wanted you to know it's expected. Since the upgrade is still in design stages, a simple placeholder is enough.08:45
oansonThere are 2-3 patches, let me hunt them down.08:45
oansonBase implementation: https://review.openstack.org/#/c/401210/ , example one (DHCP) https://review.openstack.org/#/c/527716/ example 2 (Subnet, which I believe is most relevant) https://review.openstack.org/#/c/527717/08:46
oansonThere's also a spec: https://review.openstack.org/#/c/500647/08:47
*** natanbro has joined #openstack-dragonflow08:51
CrayZeeSo AFAIU I should pop the name field and re-set the objects?09:23
CrayZeeoanson: use https://review.openstack.org/#/c/401210/ as a parent?09:29
oansonCrayZee, Yes, that sounds about right. Lemme check re: the parent09:30
oansonThat or https://review.openstack.org/#/c/527717/. Up to you.09:30
oansonWorse comes, we'll rebase it if needed.09:30
openstackgerritShachar Snapiri proposed openstack/dragonflow master: Added Migration code for floatingip field removal  https://review.openstack.org/52901209:42
CrayZeeoanson: done: https://review.openstack.org/529012/09:43
oansonCrayZee, looks good.09:44
oansonPushed the parent09:44
openstackgerritDima Kuznetsov proposed openstack/dragonflow master: Datapath abstraction spec  https://review.openstack.org/50353809:50
dimakoanson, ^^^09:51
oansondimak, thanks. Looking now09:51
oansondimak, looks good.09:56
oansonDo you plan to update the spec with the low-level design? Add that to a dev-ref? Or just go ahead and implement it once the spec is approved?09:57
dimakoanson, I think of adding some extra stuff to graph wiring config09:58
dimaki.e. how to instantiate the apps09:58
oansonI see09:58
oansonThis can also give us automatic registration to packet-in event.09:59
dimakthough it breaks up a bit, because apps != datapath elements09:59
dimakI think app list should go out09:59
dimakand be parametrizable09:59
oansonDefinitely. Apps should be defined by the graph.10:00
dimakno!10:00
oansonNo?10:00
dimakGraph is composed of elements10:00
dimakApps define elements10:00
dimakone or many or none at all10:00
oansonSo you need an app list - you need to know which apps to load, to know what elements you have10:00
dimakI want to somehow unify it10:01
oansonWe should avoid loading apps which the deployer doesn't want.10:01
dimakfor me, each app is an instance10:01
dimakit will have its type10:01
dimak(e.g. stevedore entrypoint)10:01
dimakand its init params10:01
dimakthen each app will have elements10:01
dimakand each element will have exits/entrypoints10:02
dimakso you're basically define nodes, that are app instances10:02
dimakjust like there are ports in DOT10:02
dimakWe can used app_instance:element:entrypoint:entrypoint_name10:03
dimakA bit long notation, but I think it makes it very clear10:03
oansonIf it's too long, I think we can remove the ':entrypoint:' element. It should be clear from the syntax10:03
dimakKind of10:04
dimakbecause exits got to entries10:04
oansonSo how do you tell Dragonflow what apps to load, and what are their init params?10:04
dimakA moment :)10:04
oansonIt will be: app_instance:element:exitpoint_name -> app_instance_2:element2:entrypoint_name; , or something similar, right?10:05
dimakyes10:06
dimakmaybe allow omitting element name if there's only one10:06
dimakwhich is most apps10:06
dimakdunno yet10:06
oansonThat makes sense.10:07
oansonIf you have only one element, and one entry or exit point, there's no need to be explicit. And it will probably be more readable in this particular case.10:07
dimakhttps://etherpad.openstack.org/p/df-graph10:08
dimakI think explicitness can add readability10:08
oansonI was referring to the case when there's only one element or entrypoint/exitpoint. Otherwise, I agree that it should be explicit10:10
dimakWe can decide to do that later10:10
dimakoanson, lets get back to IRC10:13
oansonEach app that has to be loaded, will have a stevedore name10:13
dimakyes, it has one right now10:13
oansonStevedore loads this class.10:13
dimakYes10:13
oansonThis class will contain the necessary params10:14
dimakWhat do you refer to as params?10:14
oansonThese params will be elements, entrypoints, exitpoints, init params, etc., right?10:14
dimakNo10:14
dimakThose are fixed for a specific version of code10:14
oansonYes.10:14
oansonThis is not a configuration option. When stevedore loads the class, this information has to be made available.10:15
dimakI was aiming at application level config10:15
dimakfor instance, enabled seg types for trunk app10:15
dimaki.e. do macvlan or not10:15
oansonThese are the init params, right?10:16
dimakyes10:16
oansonBut the application has to define (at code level) elements, entrypoints, and exit points. Isn't that what we agreed?10:16
dimakmaybe you want to have 2 instances of trunk app, add different locations10:16
dimakone doing macvlan and one doing vlans10:16
dimakyes10:16
oansonI see. This explains why a config file isn't good enough10:16
oansonSo at code level, when the class is loaded, it should make the following information public: elements, entrypoints, exitpoints, init params, and a constructor to initialise the actual application (to prepare it to start receiving events)10:18
oansonIf that's wrong, then I'm missing something big...10:18
dimakyes10:18
oansonAll right. So we're on the same page.10:18
dimakI think that's pretty much it10:18
oansonCool!10:19
dimakI think params are can be pretty much opaque10:19
dimakjust throw the dictionary inside as kwargs10:19
oansonIf it's not opaque, we can verify it first. Like configuration options10:19
oansone.g. make sure an int is an int, a bool is a bool, and a list is a list.10:20
dimakThis can come later, I think it's less interesting in the scope of this change10:20
oansonSure10:20
dimakI mean, it can be great, just does not aid in decoupling apps :)10:21
oansonTrue.10:21
oansonSounds like we have a plan!10:22
dimakOh, and most importantly, with this approach we can start porting apps and we don't have to change all that much ode10:23
oansonYes10:24
oansonHow do you pass table names and goto commands to the apps?10:24
oansonI mean table numbers10:24
oansonAnd the commands the apps need to use to pass the packet to the next item in the pipeline10:24
dimakI don't pass names10:28
dimakI'll construct the element objects on initialization10:29
dimakthen it will contain IDs10:29
dimakelement.states.STAT_NAME10:29
dimakalso, IDs are allocated in the same order they were listed10:29
oansonI see. And the STATE_NAME of the exit point will actually be the entrypoint of the next element in the pipeline?10:30
dimakso Gotos/Resubmits won't have to change10:30
dimakoanson, no10:30
dimakIt's an intermediate table10:30
dimakI'll have to move registers around there10:30
dimakIn my approach the app will dictate what registers it uses, and how10:31
oansonAh10:31
dimakIf we optimize the in-tree code, it won't have to copy at all10:31
dimakbut I can't force that10:31
oansonAll right.10:31
dimakIt also simplifies the SetField actions a lot10:32
oansonI would prefer the registrar solution (like for cookies) we discussed in the past. But we should take it step-by-step10:32
oansonYes. I figured that's one of the reasons10:32
dimakI think its so much work its not even worth it10:33
dimakWe can just offer optimization tool10:33
oansonProbably.10:33
dimakthat can give hints what registers should be used10:33
dimakto avoid copies10:33
oansonIt's also very OpenFlow specific. Which is also a good reason to avoid working hard for it :).10:33
dimakYes10:34
dimakI'll add the config part to the spec, and I think we can more forward quite fast from there10:35
oansonSure. Sounds good10:35
dimakThe code snippet there is non binding, I haven't figured it out in all details10:36
oansonMakes sense.10:36
dimakBut its good enough as concept for now10:36
oansonPlease also include what we discussed re registers (naming and moving around), STATE_NAME + intermediary tables, etc.10:36
oansonYes, definitely!10:36
dimakOk10:37
oansonThanks!10:37
*** yamamoto has quit IRC10:55
*** yamamoto has joined #openstack-dragonflow10:55
*** yamamoto has quit IRC10:56
*** yamamoto has joined #openstack-dragonflow10:56
*** yamamoto has quit IRC11:09
*** yamamoto has joined #openstack-dragonflow11:13
*** yamamoto has quit IRC11:18
openstackgerritDima Kuznetsov proposed openstack/dragonflow master: Datapath abstraction spec  https://review.openstack.org/50353811:30
openstackgerritMerged openstack/dragonflow master: Remove the 'name' attribute from FloatingIP  https://review.openstack.org/52853911:30
*** yamamoto has joined #openstack-dragonflow12:06
*** yamamoto has quit IRC12:10
*** mlavalle has joined #openstack-dragonflow12:28
openstackgerritOmer Anson proposed openstack/dragonflow master: Fix calling convention in lockedobjects_db.py  https://review.openstack.org/52905112:32
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952312:35
CrayZeeIt seems that my fix at https://review.openstack.org/#/c/527625/ indeed does not solve the issue.12:38
*** yamamoto has joined #openstack-dragonflow12:38
CrayZeewhen zuul is vary busy it still fails. I am still investigating12:38
*** yamamoto has quit IRC12:39
oansonCrayZee, maybe there's something we can wait on to know when OVSDB and DF reconnect?12:53
openstackgerritOmer Anson proposed openstack/dragonflow master: Fix calling convention in lockedobjects_db.py  https://review.openstack.org/52905112:57
CrayZeeI am not sure they are not reconnected. Added some debug prints to try and figure out13:07
CrayZeeoanson: ^^13:07
*** yamamoto has joined #openstack-dragonflow13:40
*** yamamoto has quit IRC13:48
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952314:49
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952315:56
*** natanbro has quit IRC16:35
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952319:18
*** openstack has joined #openstack-dragonflow19:44
*** ChanServ sets mode: +o openstack19:44
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952320:26
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952320:56
*** CrayZee has quit IRC21:02
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952321:15
openstackgerritShachar Snapiri proposed openstack/dragonflow master: [WIP][DNM]Test various debug patches  https://review.openstack.org/49952322:44

Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!