)]}'
{"doc/source/specs/vlan_aware_vms.rst":[{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"50554bf37ee838d55ca7f1e6e9fec49fe49d317f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"The Neutron API proposes two structures: `trunks` and `subports`."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_e7297ee7","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":59},"updated":"2017-02-24 08:23:24.000000000","message":"How about letting the trunks be there and giving apps the freedom of using it or not? One possible benefit may be then can find out trunk ports more easily from tons of normal ports.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"4e625033e69dd24efe1f0995838fc22073775885","unresolved":false,"context_lines":[{"line_number":65,"context_line":"The Neutron API proposes two structures: `trunks` and `subports`."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_03d3c660","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":59},"in_reply_to":"da36d5c6_d5e984b8","updated":"2017-02-25 08:59:12.000000000","message":"Based on two factors:\n1. Being consistent with neutron\u0027s abstraction. Dragonflow will  define it\u0027s own API in the future. If the API was compatible with Neutorn\u0027s, It will be beneficial to both sides.  \n2. though not essential, it will be more convenient to have trunk object, when we need to query/modify the reference between parent ports and subports","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0c4fab6dfdfc3a1026b2878f76e6ec874502ce8d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"The Neutron API proposes two structures: `trunks` and `subports`."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_d5e984b8","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":59},"in_reply_to":"da36d5c6_e7297ee7","updated":"2017-02-24 10:03:28.000000000","message":"What\u0027s the use-case? I don\u0027t want to manage an entire object which, by definition, only exists to simplify a Neutron use case unless I have to.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"50554bf37ee838d55ca7f1e6e9fec49fe49d317f","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"It will implement the `add_subports` and `remove_subports` methods."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The `add_subports` method will create TaggedPort objects in the NB DB."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The `delete_subports` method will delete TaggedPort objects from the NB DB."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_e7fb3e77","line":96,"range":{"start_line":96,"start_character":38,"end_line":96,"end_character":48},"updated":"2017-02-24 08:23:24.000000000","message":"Can we unify the name to \"taggedPort\" or \"subPort\"?","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"4e625033e69dd24efe1f0995838fc22073775885","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"It will implement the `add_subports` and `remove_subports` methods."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The `add_subports` method will create TaggedPort objects in the NB DB."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The `delete_subports` method will delete TaggedPort objects from the NB DB."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_800fac35","line":96,"range":{"start_line":96,"start_character":38,"end_line":96,"end_character":48},"in_reply_to":"da36d5c6_950aac88","updated":"2017-02-25 08:59:12.000000000","message":"I mean: add_subports method creating SubPort or add_taggedport method creating TaggedPort will be more straightforward. not a big issue, it\u0027s up to you.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0c4fab6dfdfc3a1026b2878f76e6ec874502ce8d","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"It will implement the `add_subports` and `remove_subports` methods."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The `add_subports` method will create TaggedPort objects in the NB DB."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The `delete_subports` method will delete TaggedPort objects from the NB DB."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_950aac88","line":96,"range":{"start_line":96,"start_character":38,"end_line":96,"end_character":48},"in_reply_to":"da36d5c6_e7fb3e77","updated":"2017-02-24 10:03:28.000000000","message":"Not sure I understand?\n\nThis is the model\u0027s class name, like LogicalPort, LogicalSwitch, SecurityGroup, etc.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"50554bf37ee838d55ca7f1e6e9fec49fe49d317f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"A VLAN-aware-VM application will be written, implementing the changes in this"},{"line_number":107,"context_line":"section."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"When a TaggedPort is created, a classification flow will be added detecting"},{"line_number":110,"context_line":"packets tagged with the given type, and the tag value of the given ID."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The classification flow will attach the relevant `reg6` and metadata `values`."}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_e78c1edc","line":109,"range":{"start_line":109,"start_character":47,"end_line":109,"end_character":51},"updated":"2017-02-24 08:23:24.000000000","message":"flow entry may be more accurate","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0c4fab6dfdfc3a1026b2878f76e6ec874502ce8d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"A VLAN-aware-VM application will be written, implementing the changes in this"},{"line_number":107,"context_line":"section."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"When a TaggedPort is created, a classification flow will be added detecting"},{"line_number":110,"context_line":"packets tagged with the given type, and the tag value of the given ID."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The classification flow will attach the relevant `reg6` and metadata `values`."}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_d500a468","line":109,"range":{"start_line":109,"start_character":47,"end_line":109,"end_character":51},"in_reply_to":"da36d5c6_e78c1edc","updated":"2017-02-24 10:03:28.000000000","message":"Sure. Will fix.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e19a0c10224919b6bf5ef2a3c2ac3f3a7b10da7d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":146,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"PortSecurity app will be updated to use `reg6` rather than in_port."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Devstack Impact"},{"line_number":151,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_8960e702","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":12},"updated":"2017-02-23 20:56:54.000000000","message":"Is PortSecurity the only application that requires update?","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e19a0c10224919b6bf5ef2a3c2ac3f3a7b10da7d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":146,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"PortSecurity app will be updated to use `reg6` rather than in_port."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Devstack Impact"},{"line_number":151,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_8979c7ca","line":148,"range":{"start_line":148,"start_character":59,"end_line":148,"end_character":66},"updated":"2017-02-23 20:56:54.000000000","message":"Please add an example of the removed flow","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0c4fab6dfdfc3a1026b2878f76e6ec874502ce8d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":146,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"PortSecurity app will be updated to use `reg6` rather than in_port."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Devstack Impact"},{"line_number":151,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_9531cc5c","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":12},"in_reply_to":"da36d5c6_8960e702","updated":"2017-02-24 10:03:28.000000000","message":"Well, no. When changing portsec I found many other apps that behave this way. I\u0027ll reword,","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0c4fab6dfdfc3a1026b2878f76e6ec874502ce8d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":146,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"PortSecurity app will be updated to use `reg6` rather than in_port."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Devstack Impact"},{"line_number":151,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_d50ee48a","line":148,"range":{"start_line":148,"start_character":59,"end_line":148,"end_character":66},"in_reply_to":"da36d5c6_8979c7ca","updated":"2017-02-24 10:03:28.000000000","message":"I\u0027ll make this line more general, since PortSec is only an example. I don\u0027t want to go into that here, since it\u0027s not a part of VLAN aware VMs design, just an action item because we had a hidden assumption that is now removed.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e19a0c10224919b6bf5ef2a3c2ac3f3a7b10da7d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":158,"context_line":"aware VMs service plugin."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This option will be disabled by default. It can be enabled in local.conf."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Once the feature is stable, the option can be enabled by default."},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_4c6c3dd0","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":39},"updated":"2017-02-23 20:56:54.000000000","message":"Is this means that by default we will use reg6 instead of in_port?","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0c4fab6dfdfc3a1026b2878f76e6ec874502ce8d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":158,"context_line":"aware VMs service plugin."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This option will be disabled by default. It can be enabled in local.conf."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Once the feature is stable, the option can be enabled by default."},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_f570480d","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":39},"in_reply_to":"da36d5c6_4c6c3dd0","updated":"2017-02-24 10:03:28.000000000","message":"In any case, we will move over to using port\u0027s unique_keys rather than in_port. This way, new classification/dispatch mechanisms can be installed and rely only on reg6/reg7 to know where the packet came from/going.\n\nThis specific point says that by default, VLAN aware VMs feature will be off, until deemed stable enough to be on by default.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"2401f8baf08a4912749e4d3341db939cbe4c6967","unresolved":false,"context_lines":[{"line_number":157,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":158,"context_line":"aware VMs service plugin."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This option will be disabled by default. It can be enabled in local.conf."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Once the feature is stable, the option can be enabled by default."},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da36d5c6_d9e616e7","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":39},"in_reply_to":"da36d5c6_f570480d","updated":"2017-02-24 15:46:37.000000000","message":"+1 use port\u0027s unique key rather than in_port.","commit_id":"23c15f6671b7cf16cb6961629d8ac5bb8796c241"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem Description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"It is useful to allow a VM to different networks using a single port, and have"},{"line_number":21,"context_line":"the VM dictate which traffic goes to which network. The use cases for this are:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* Some applications have requirements to connect to many (say, hundreds)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_b1f5eded","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":39},"updated":"2017-02-24 22:06:38.000000000","message":"to attach to different","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem Description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"It is useful to allow a VM to different networks using a single port, and have"},{"line_number":21,"context_line":"the VM dictate which traffic goes to which network. The use cases for this are:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* Some applications have requirements to connect to many (say, hundreds)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_dd1ef00a","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":39},"in_reply_to":"da36d5c6_b1f5eded","updated":"2017-02-25 03:39:47.000000000","message":"Done","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* Some applications have requirements to connect to many (say, hundreds)"},{"line_number":24,"context_line":"  of Neutron networks. It is more practical to use a single or other"},{"line_number":25,"context_line":"  small number of VIFs and VLANs to differentiate traffic for each"},{"line_number":26,"context_line":"  network than to have hundreds of VIFs per VM."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Cloud workloads are often very dynamic. It may be more efficient and/or"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_71d61550","line":25,"range":{"start_line":25,"start_character":23,"end_line":25,"end_character":32},"updated":"2017-02-24 22:06:38.000000000","message":"and use VLANs","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* Some applications have requirements to connect to many (say, hundreds)"},{"line_number":24,"context_line":"  of Neutron networks. It is more practical to use a single or other"},{"line_number":25,"context_line":"  small number of VIFs and VLANs to differentiate traffic for each"},{"line_number":26,"context_line":"  network than to have hundreds of VIFs per VM."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Cloud workloads are often very dynamic. It may be more efficient and/or"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_fd19f422","line":25,"range":{"start_line":25,"start_character":23,"end_line":25,"end_character":32},"in_reply_to":"da36d5c6_71d61550","updated":"2017-02-25 03:39:47.000000000","message":"Done","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"This information is also available on the Neutron side [1]_."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Currently, this is not implemented in Dragonflow. A vlan-tagged packet is"},{"line_number":46,"context_line":"treated like a regular packet, and passed as is."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_713d358e","line":45,"range":{"start_line":45,"start_character":52,"end_line":45,"end_character":56},"updated":"2017-02-24 22:06:38.000000000","message":"vlan -\u003e VLAN","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"This information is also available on the Neutron side [1]_."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Currently, this is not implemented in Dragonflow. A vlan-tagged packet is"},{"line_number":46,"context_line":"treated like a regular packet, and passed as is."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_1d15e8e3","line":45,"range":{"start_line":45,"start_character":52,"end_line":45,"end_character":56},"in_reply_to":"da36d5c6_713d358e","updated":"2017-02-25 03:39:47.000000000","message":"Done","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"should be stored such that if new tagging methods (e.g. encapsulation, MPLS)"},{"line_number":54,"context_line":"need to be added, there will be no change to the model and API layer."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"In Dragonlfow, it is very easy to identify from which port and network a"},{"line_number":57,"context_line":"packet is received.  This information is stored in OVS metadata by the"},{"line_number":58,"context_line":"classification application. The network is stored in the metadata. The"},{"line_number":59,"context_line":"destination port information is also stored in OVS metadata during"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_1155d9c4","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":13},"updated":"2017-02-24 22:06:38.000000000","message":"Dragonlfow -\u003e Dragonflow","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"should be stored such that if new tagging methods (e.g. encapsulation, MPLS)"},{"line_number":54,"context_line":"need to be added, there will be no change to the model and API layer."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"In Dragonlfow, it is very easy to identify from which port and network a"},{"line_number":57,"context_line":"packet is received.  This information is stored in OVS metadata by the"},{"line_number":58,"context_line":"classification application. The network is stored in the metadata. The"},{"line_number":59,"context_line":"destination port information is also stored in OVS metadata during"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_3dd62c28","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":13},"in_reply_to":"da36d5c6_1155d9c4","updated":"2017-02-25 03:39:47.000000000","message":"Done","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":65,"context_line":"The Neutron API proposes two structures: `trunks` and `subports`."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_b1116d06","line":68,"range":{"start_line":68,"start_character":52,"end_line":68,"end_character":64},"updated":"2017-02-24 22:06:38.000000000","message":"Can you clarify \"do away with\"? I believe you\u0027re not proposing to change the Neutron API, but merely to ignore the trunks object as unnecessary for Dragonflow to correctly configure the dataplane.","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":65,"context_line":"The Neutron API proposes two structures: `trunks` and `subports`."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_5dd92056","line":68,"range":{"start_line":68,"start_character":52,"end_line":68,"end_character":64},"in_reply_to":"da36d5c6_b1116d06","updated":"2017-02-25 03:39:47.000000000","message":"Yes. We are not changing the Neutron API, just ignoring this object that we do not need.","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"},{"line_number":72,"context_line":"if they appear untagged from the virtual port."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_b1288d34","line":70,"range":{"start_line":70,"start_character":16,"end_line":70,"end_character":19},"updated":"2017-02-24 22:06:38.000000000","message":"This makes it sound like a one to one relationship. Isn\u0027t it many subports connected to the same parent port?","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":68,"context_line":"reference between subports and ports. We propose to do away with this object."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"`subports` link two `port` objects. One is the parent port, which is connected"},{"line_number":71,"context_line":"to the VM, and the second is a virtual port. Tagged packets should appear as"},{"line_number":72,"context_line":"if they appear untagged from the virtual port."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_3dbd4cd8","line":70,"range":{"start_line":70,"start_character":16,"end_line":70,"end_character":19},"in_reply_to":"da36d5c6_b1288d34","updated":"2017-02-25 03:39:47.000000000","message":"I\u0027ll expand to make this more clear. It is a one-to-one relationship per `subport` object, but there may be many `subports` per parent port.","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"3f40f7c6ef044fdba768f55668d72eaada3cdad7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `port` - A reference to the virtual port"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* `segmentataion_type` - The type of tagging used. Currently, only \u0027vlan\u0027 is"},{"line_number":85,"context_line":"  supported."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* `segmentation_id` - The value of the tag used on this port."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_51d67128","line":84,"range":{"start_line":84,"start_character":3,"end_line":84,"end_character":21},"updated":"2017-02-24 22:06:38.000000000","message":"spelling: segmentation_type","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73bf9c4cb517185c2cad2a0300eb613fc5c4e0a7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `port` - A reference to the virtual port"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* `segmentataion_type` - The type of tagging used. Currently, only \u0027vlan\u0027 is"},{"line_number":85,"context_line":"  supported."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* `segmentation_id` - The value of the tag used on this port."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da36d5c6_ddcc308b","line":84,"range":{"start_line":84,"start_character":3,"end_line":84,"end_character":21},"in_reply_to":"da36d5c6_51d67128","updated":"2017-02-25 03:39:47.000000000","message":"Done","commit_id":"b7d20d6b7303cc8442f42fc97dd8dcf57ae4c275"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"baa9f4bb12928524d8d5f564a5f5160288a9c6ab","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  and scalable than requiring a vNIC per container."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* There are legacy applications that expect to use VLANs as a way to connect"},{"line_number":41,"context_line":"  to multiple networks. Neutron should provide a way to expose that model"},{"line_number":42,"context_line":"  to the VM decoupled from how the network is actually implemented."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This information is also available on the Neutron side [1]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_495cf87c","line":41,"range":{"start_line":41,"start_character":23,"end_line":41,"end_character":52},"updated":"2017-02-26 06:25:32.000000000","message":"Current spec is not about neutron. Neutron already exposes required API. It should be Dragonflow to expose model to allow the above cases","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  and scalable than requiring a vNIC per container."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* There are legacy applications that expect to use VLANs as a way to connect"},{"line_number":41,"context_line":"  to multiple networks. Neutron should provide a way to expose that model"},{"line_number":42,"context_line":"  to the VM decoupled from how the network is actually implemented."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This information is also available on the Neutron side [1]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_3fa1b646","line":41,"range":{"start_line":41,"start_character":23,"end_line":41,"end_character":52},"in_reply_to":"da36d5c6_495cf87c","updated":"2017-02-26 16:46:47.000000000","message":"Will fix","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"baa9f4bb12928524d8d5f564a5f5160288a9c6ab","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Proposed Change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Dragonflow will be notified by the API layer which ports are VLAN-tagged, to"},{"line_number":53,"context_line":"which port they are attached, and what is their segmentation ID. The data"},{"line_number":54,"context_line":"should be stored such that if new tagging methods (e.g. encapsulation, MPLS)"},{"line_number":55,"context_line":"need to be added, there will be no change to the model and API layer."}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_a94d74c5","line":52,"range":{"start_line":52,"start_character":61,"end_line":52,"end_character":72},"updated":"2017-02-26 06:25:32.000000000","message":"It should be generic as in neutron (segmentation type + id). Vlan is just the first type to be supported","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Proposed Change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Dragonflow will be notified by the API layer which ports are VLAN-tagged, to"},{"line_number":53,"context_line":"which port they are attached, and what is their segmentation ID. The data"},{"line_number":54,"context_line":"should be stored such that if new tagging methods (e.g. encapsulation, MPLS)"},{"line_number":55,"context_line":"need to be added, there will be no change to the model and API layer."}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_5f8caad9","line":52,"range":{"start_line":52,"start_character":61,"end_line":52,"end_character":72},"in_reply_to":"da36d5c6_a94d74c5","updated":"2017-02-26 16:46:47.000000000","message":"Yes. That\u0027s stated in this paragraph.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"baa9f4bb12928524d8d5f564a5f5160288a9c6ab","unresolved":false,"context_lines":[{"line_number":73,"context_line":"`subports` link two `port` objects. One is the parent port, which is"},{"line_number":74,"context_line":"connected to the VM, and the second is a virtual port. There may be many"},{"line_number":75,"context_line":"`subports` linking to a single parent port, but at most one `subport`"},{"line_number":76,"context_line":"linking a virtual port. Tagged packets should appear as if they appear"},{"line_number":77,"context_line":"untagged from the virtual port."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_29d0a4c8","line":77,"range":{"start_line":76,"start_character":23,"end_line":77,"end_character":30},"updated":"2017-02-26 06:25:32.000000000","message":"How is this related to the data model?","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":73,"context_line":"`subports` link two `port` objects. One is the parent port, which is"},{"line_number":74,"context_line":"connected to the VM, and the second is a virtual port. There may be many"},{"line_number":75,"context_line":"`subports` linking to a single parent port, but at most one `subport`"},{"line_number":76,"context_line":"linking a virtual port. Tagged packets should appear as if they appear"},{"line_number":77,"context_line":"untagged from the virtual port."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_9549a333","line":77,"range":{"start_line":76,"start_character":23,"end_line":77,"end_character":30},"in_reply_to":"da36d5c6_29d0a4c8","updated":"2017-02-26 16:46:47.000000000","message":"I can remove it. It\u0027s explained above.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"deb9af1caddeafaad1e6f458da55b58ec7332c46","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* `id` - The ID of the `TaggedPort`"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* `version` - The version of the object (for versioning and consistency feature)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* `parent` - A reference to the parent port"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_9fac628d","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":80},"updated":"2017-02-26 13:28:50.000000000","message":"Maybe I am wrong about it. looks like TaggedPort map to subport in neutron. But from the definition of subport, it will not have StandardAttributes(which contains the revision number), nor will it have id. So, where will the value of these two fields come from?\n\nhttps://github.com/openstack/neutron/blob/337999968821ef375c2fd476aa8b466f5d8368ee/neutron/services/trunk/models.py#L50","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3084b3aff11f785c616085fc3e549ec88c89e178","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* `id` - The ID of the `TaggedPort`"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* `version` - The version of the object (for versioning and consistency feature)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* `parent` - A reference to the parent port"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_f1302e58","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":80},"in_reply_to":"da36d5c6_1564d3b6","updated":"2017-02-27 03:12:49.000000000","message":"If we generate id at df side and an event of deleting subport comes, how can we know which TaggedPort should be deleted?\n\nAnd without version, we will use TaggedPort as constant entry, only creation and deletion will be supported, right?","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* `id` - The ID of the `TaggedPort`"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* `version` - The version of the object (for versioning and consistency feature)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* `parent` - A reference to the parent port"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_1564d3b6","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":80},"in_reply_to":"da36d5c6_9fac628d","updated":"2017-02-26 16:46:47.000000000","message":"True, it doesn\u0027t. The `id` will be generated (since I don\u0027t like objects that can\u0027t be identified). The `version` will be removed. I will add this information.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"baa9f4bb12928524d8d5f564a5f5160288a9c6ab","unresolved":false,"context_lines":[{"line_number":94,"context_line":"API Impact"},{"line_number":95,"context_line":"----------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Dragonflow will extend Neutron\u0027s TrunkPlugin service plugin [2]_."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"It will implement the `add_subports` and `remove_subports` methods."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_69de1cde","line":97,"range":{"start_line":97,"start_character":45,"end_line":97,"end_character":59},"updated":"2017-02-26 06:25:32.000000000","message":"Any chance to implement as driver?","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":94,"context_line":"API Impact"},{"line_number":95,"context_line":"----------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Dragonflow will extend Neutron\u0027s TrunkPlugin service plugin [2]_."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"It will implement the `add_subports` and `remove_subports` methods."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_9570c373","line":97,"range":{"start_line":97,"start_character":45,"end_line":97,"end_character":59},"in_reply_to":"da36d5c6_3f59b635","updated":"2017-02-26 16:46:47.000000000","message":"Sure. Will update.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"deb9af1caddeafaad1e6f458da55b58ec7332c46","unresolved":false,"context_lines":[{"line_number":94,"context_line":"API Impact"},{"line_number":95,"context_line":"----------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Dragonflow will extend Neutron\u0027s TrunkPlugin service plugin [2]_."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"It will implement the `add_subports` and `remove_subports` methods."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_3f59b635","line":97,"range":{"start_line":97,"start_character":45,"end_line":97,"end_character":59},"in_reply_to":"da36d5c6_69de1cde","updated":"2017-02-26 13:28:50.000000000","message":"+1 for implementing as a driver. driver can subscribe the trunk or subport events and then update nb db.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"baa9f4bb12928524d8d5f564a5f5160288a9c6ab","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":152,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other Dragonflow applications will be updated to use port\u0027s unique key"},{"line_number":155,"context_line":"(`reg6`/`reg7`) value, rather than relying on the `in_port`."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Devstack Impact"},{"line_number":158,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_a9fbb445","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":60},"updated":"2017-02-26 06:25:32.000000000","message":"This is not clear. Is this generic change or specific once VLAN aware app is enabled?","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"bb917bc9b932e9a0a399c82e1730a6f605971b69","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":152,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other Dragonflow applications will be updated to use port\u0027s unique key"},{"line_number":155,"context_line":"(`reg6`/`reg7`) value, rather than relying on the `in_port`."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Devstack Impact"},{"line_number":158,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_7f524e68","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":60},"in_reply_to":"da36d5c6_3fa7f60b","updated":"2017-02-26 13:59:41.000000000","message":"So this change is applicable regardless if the vlan aware app is enabled","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"7b417689bd68143f38d2940f9fbd9211e17f7c77","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":152,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other Dragonflow applications will be updated to use port\u0027s unique key"},{"line_number":155,"context_line":"(`reg6`/`reg7`) value, rather than relying on the `in_port`."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Devstack Impact"},{"line_number":158,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_3fa60dae","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":60},"in_reply_to":"da36d5c6_5511eb02","updated":"2017-02-27 05:52:53.000000000","message":"That\u0027s why I was a bit surprised that it is stated part of the current spec. Just wanted to be sure of the intention","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":152,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other Dragonflow applications will be updated to use port\u0027s unique key"},{"line_number":155,"context_line":"(`reg6`/`reg7`) value, rather than relying on the `in_port`."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Devstack Impact"},{"line_number":158,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_5511eb02","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":60},"in_reply_to":"da36d5c6_7f524e68","updated":"2017-02-26 16:46:47.000000000","message":"Other Dragonflow applications use openflow port to identify ports, while the ability to identify logical ports exists (reg6/reg7). This is a pattern should be changed regardless of this spec, since the correct way to identify ports is using the logical port, not the openflow port.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"deb9af1caddeafaad1e6f458da55b58ec7332c46","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x168 actions\u003dmod_vlan_vid:vlan_vid:0x10064,output:183"},{"line_number":152,"context_line":"  table\u003d115, priority\u003d100,reg7\u003d0x166 actions\u003doutput:183"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other Dragonflow applications will be updated to use port\u0027s unique key"},{"line_number":155,"context_line":"(`reg6`/`reg7`) value, rather than relying on the `in_port`."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Devstack Impact"},{"line_number":158,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_3fa7f60b","line":155,"range":{"start_line":154,"start_character":0,"end_line":155,"end_character":60},"in_reply_to":"da36d5c6_a9fbb445","updated":"2017-02-26 13:28:50.000000000","message":"there have already been several changes for it. \nhttps://review.openstack.org/#/q/project:openstack/dragonflow+branch:master+topic:bp/vlan-trunk","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"deb9af1caddeafaad1e6f458da55b58ec7332c46","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"This option will be disabled by default. It can be enabled in local.conf."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Once the feature is stable, the option can be enabled by default."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Work Items"},{"line_number":172,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_ffee3e20","line":169,"range":{"start_line":169,"start_character":0,"end_line":169,"end_character":65},"updated":"2017-02-26 13:28:50.000000000","message":"If implement it as drvier, maybe the q-trunk flag from neutron devstack script can be used as the option.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"829bf9afde6bcf18096a5d034643ee70f2c3bbb7","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"This option will be disabled by default. It can be enabled in local.conf."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Once the feature is stable, the option can be enabled by default."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Work Items"},{"line_number":172,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da36d5c6_75fc2fb8","line":169,"range":{"start_line":169,"start_character":0,"end_line":169,"end_character":65},"in_reply_to":"da36d5c6_ffee3e20","updated":"2017-02-26 16:46:47.000000000","message":"I\u0027ll look into it.","commit_id":"c0fd898fe654cac6d514e9a9b14e5360f3c7f48a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":70,"context_line":"`trunks` are only used to state that a port has subports, and acts as a"},{"line_number":71,"context_line":"reference between subports and ports. We propose to ignore this object"},{"line_number":72,"context_line":"in the Dragonflow database. The Neutron API is not modified, but there will"},{"line_number":73,"context_line":"be no matching `Trunk` object in Dragonflow."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"`subports` link two `port` objects. One is the parent port, which is"},{"line_number":76,"context_line":"connected to the VM, and the second is a virtual port. There may be many"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_e5306458","line":73,"updated":"2017-02-27 08:31:49.000000000","message":"Continuing discussion from PS1:\nDuankebo wrote:\n\n\u003e Based on two factors:\n\u003e 1. Being consistent with neutron\u0027s abstraction. Dragonflow will  define it\u0027s own API in the future. If the API was compatible with Neutorn\u0027s, It will be beneficial to both sides.  \n\nI am not convinced. The API is compatible. I don\u0027t think we want to support objects for quirks in other APIs. If we support the quirks of every API, our data model will explode with objects that we don\u0027t use.\n\n\u003e 2. though not essential, it will be more convenient to have trunk object, when we need to query/modify the reference between parent ports and subports\n\nWe can add an index to the db store, which will have the same result, but will work 100% in memory, and with one fewer dereferences.\n\nSorry - I am still not convinced to add this object to the datamodel.","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"23cae3cd02d46b9ac52581fdd40e21d28f0cc257","unresolved":false,"context_lines":[{"line_number":77,"context_line":"`subports` linking to a single parent port, but at most one `subport`"},{"line_number":78,"context_line":"linking a virtual port."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `id` - The ID of the `TaggedPort`. This value is not provided by Neutron, and"},{"line_number":83,"context_line":"  will be generated by Dragonflow\u0027s Neutron driver."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_454e903b","line":80,"range":{"start_line":80,"start_character":34,"end_line":80,"end_character":44},"updated":"2017-02-27 07:52:17.000000000","message":"as stated above, the proposed entity is not a port, but link. Maybe rename the entity to \u0027ChildPortLink/Binding\u0027","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":77,"context_line":"`subports` linking to a single parent port, but at most one `subport`"},{"line_number":78,"context_line":"linking a virtual port."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"We propose the following object: `TaggedPort`, with the following fields:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `id` - The ID of the `TaggedPort`. This value is not provided by Neutron, and"},{"line_number":83,"context_line":"  will be generated by Dragonflow\u0027s Neutron driver."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_e0ee9220","line":80,"range":{"start_line":80,"start_character":34,"end_line":80,"end_character":44},"in_reply_to":"da36d5c6_454e903b","updated":"2017-02-27 08:31:49.000000000","message":"As per our IRC disucssion, I\u0027ll rename to \u0027ChildPortSegmentation\u0027","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `id` - The ID of the `TaggedPort`. This value is not provided by Neutron, and"},{"line_number":83,"context_line":"  will be generated by Dragonflow\u0027s Neutron driver."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* `parent` - A reference to the parent port"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* `port` - A reference to the virtual port"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_45cdb064","line":84,"updated":"2017-02-27 08:31:49.000000000","message":"Continuing from PS3 - \nModification of subports is currently not support by Neutron API. Only the function for adding and deleting existing \u0027subports\u0027.","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c3179007f7a5759b9e0f28d2a1dec9c95387eee4","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Devstack Impact"},{"line_number":159,"context_line":"---------------"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"A new devstack option will exist to enable VLAN aware VMs."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"This option will add the VLAN aware VMs application to the apps list."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_b14876b4","line":161,"range":{"start_line":161,"start_character":0,"end_line":161,"end_character":58},"updated":"2017-02-27 03:14:14.000000000","message":"Given q-trunk will be used, and there is no \"new\" option, maybe reword this sentence?","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Devstack Impact"},{"line_number":159,"context_line":"---------------"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"A new devstack option will exist to enable VLAN aware VMs."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"This option will add the VLAN aware VMs application to the apps list."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_dfcc1137","line":161,"range":{"start_line":161,"start_character":0,"end_line":161,"end_character":58},"in_reply_to":"da36d5c6_b14876b4","updated":"2017-02-27 08:31:49.000000000","message":"Sure.","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c3179007f7a5759b9e0f28d2a1dec9c95387eee4","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"This option will add the VLAN aware VMs application to the apps list."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":166,"context_line":"aware VMs service plugin."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"This option can be enabled by enableing the `q-trunk` service in local.conf."},{"line_number":169,"context_line":"The Dragonflow `plugin.sh` will detect the service is enabled, and treat it"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_d17b2af3","line":166,"range":{"start_line":165,"start_character":0,"end_line":166,"end_character":25},"updated":"2017-02-27 03:14:14.000000000","message":"Since there is no df special plugin, this description is not needed.","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"This option will add the VLAN aware VMs application to the apps list."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":166,"context_line":"aware VMs service plugin."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"This option can be enabled by enableing the `q-trunk` service in local.conf."},{"line_number":169,"context_line":"The Dragonflow `plugin.sh` will detect the service is enabled, and treat it"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_5fd901f2","line":166,"range":{"start_line":165,"start_character":0,"end_line":166,"end_character":25},"in_reply_to":"da36d5c6_d17b2af3","updated":"2017-02-27 08:31:49.000000000","message":"This description is still needed. It\u0027s already covered by q-service, but it comes to say that the local.conf option will take care of both dragonflow and neutron configuration.","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c3179007f7a5759b9e0f28d2a1dec9c95387eee4","unresolved":false,"context_lines":[{"line_number":165,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":166,"context_line":"aware VMs service plugin."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"This option can be enabled by enableing the `q-trunk` service in local.conf."},{"line_number":169,"context_line":"The Dragonflow `plugin.sh` will detect the service is enabled, and treat it"},{"line_number":170,"context_line":"as the option described above."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_713d1e2a","line":168,"range":{"start_line":168,"start_character":30,"end_line":168,"end_character":39},"updated":"2017-02-27 03:14:14.000000000","message":"enabling","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":165,"context_line":"This option will configure Neutron\u0027s config file to use Dragonflow\u0027s VLAN"},{"line_number":166,"context_line":"aware VMs service plugin."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"This option can be enabled by enableing the `q-trunk` service in local.conf."},{"line_number":169,"context_line":"The Dragonflow `plugin.sh` will detect the service is enabled, and treat it"},{"line_number":170,"context_line":"as the option described above."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_9fdff9d4","line":168,"range":{"start_line":168,"start_character":30,"end_line":168,"end_character":39},"in_reply_to":"da36d5c6_713d1e2a","updated":"2017-02-27 08:31:49.000000000","message":"Will fix.","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"23cae3cd02d46b9ac52581fdd40e21d28f0cc257","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Change dragonflow apps to use unique key rather than in_port. Some apps are"},{"line_number":176,"context_line":"  exempted, e.g. classification, tunneling, since these apps do need to work"},{"line_number":177,"context_line":"  on the of-ports, rather than the Neutron logical ports."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  * port security"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_0525785a","line":177,"range":{"start_line":177,"start_character":35,"end_line":177,"end_character":42},"updated":"2017-02-27 07:52:17.000000000","message":"dragonflow","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Change dragonflow apps to use unique key rather than in_port. Some apps are"},{"line_number":176,"context_line":"  exempted, e.g. classification, tunneling, since these apps do need to work"},{"line_number":177,"context_line":"  on the of-ports, rather than the Neutron logical ports."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  * port security"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_c58a801a","line":177,"range":{"start_line":177,"start_character":35,"end_line":177,"end_character":42},"in_reply_to":"da36d5c6_0525785a","updated":"2017-02-27 08:31:49.000000000","message":"Done","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"23cae3cd02d46b9ac52581fdd40e21d28f0cc257","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"* Implement data model"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"* Implement Neutron service plugin"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"* Implement VLAN aware VMs app"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_651e340d","line":195,"range":{"start_line":195,"start_character":28,"end_line":195,"end_character":34},"updated":"2017-02-27 07:52:17.000000000","message":"driver","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ddaea8dc6cdb80d85b7597fbae04b6da13281f68","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"* Implement data model"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"* Implement Neutron service plugin"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"* Implement VLAN aware VMs app"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da36d5c6_e58dc431","line":195,"range":{"start_line":195,"start_character":28,"end_line":195,"end_character":34},"in_reply_to":"da36d5c6_651e340d","updated":"2017-02-27 08:31:49.000000000","message":"Done","commit_id":"462574a0e20717fedcde534d0ea2fd76f72aec0b"}]}
