)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hongbin Lu \u003chongbin.lu@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-05 18:40:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Fwaas: add support for dynamic rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia853bb1e3cb1361f130aeff690c2256281650d26"},{"line_number":10,"context_line":"Implements: blueprint fwaas-2.0-dynamic-rules"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_cc82daa5","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2018-10-11 22:36:09.000000000","message":"I would remove the wip and add a paragraph with an overview of what is proposed. We want to attract reviews","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hongbin Lu \u003chongbin.lu@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-05 18:40:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Fwaas: add support for dynamic rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia853bb1e3cb1361f130aeff690c2256281650d26"},{"line_number":10,"context_line":"Implements: blueprint fwaas-2.0-dynamic-rules"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_6ab458f2","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"in_reply_to":"3f79a3b5_cc82daa5","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"}],"specs/stein/fwaas-2.0-dynamic-rules-support.rst":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"e37c7e3f654c787af04e9ef246bdd981eeaed1d9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Neutron ports based on high-level criteria (i.e. the VM\u0027s name or tag)."},{"line_number":42,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":43,"context_line":"If a firewall group has more than one dynamic rules, the relationship"},{"line_number":44,"context_line":"between the set of dynamic rules can be specified."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Firewall group that has dynamic rule(s) will watch for relevant events"},{"line_number":47,"context_line":"(i.e. port creation) and update the list of Neutron ports based on"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_a254bbff","line":44,"range":{"start_line":44,"start_character":12,"end_line":44,"end_character":15},"updated":"2018-08-29 22:44:52.000000000","message":"list","commit_id":"a0c18d53f75cc61c6d3836e96087647335c559fe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"f930b021f28549f2e4f1d6a82c64a4aff3e239fb","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Enhance firewall group to dynamically selecting the Neutron ports to which"},{"line_number":46,"context_line":"firewall rules apply. This can be achieved by introducing the concept of"},{"line_number":47,"context_line":"dynamic rules. Each dynamic rule defines a way to qeury the matching"},{"line_number":48,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."},{"line_number":49,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":50,"context_line":"If a firewall group has more than one dynamic rules, the relationship"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_f801bb6b","line":47,"range":{"start_line":47,"start_character":50,"end_line":47,"end_character":55},"updated":"2018-09-04 01:16:51.000000000","message":"typo ;-)","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"39d55aa02aa15094afc193d7370a55ece00d25d2","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Enhance firewall group to dynamically selecting the Neutron ports to which"},{"line_number":46,"context_line":"firewall rules apply. This can be achieved by introducing the concept of"},{"line_number":47,"context_line":"dynamic rules. Each dynamic rule defines a way to qeury the matching"},{"line_number":48,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."},{"line_number":49,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":50,"context_line":"If a firewall group has more than one dynamic rules, the relationship"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_7db31d9b","line":47,"range":{"start_line":47,"start_character":50,"end_line":47,"end_character":55},"in_reply_to":"3f79a3b5_f801bb6b","updated":"2018-09-05 18:41:19.000000000","message":"Done","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"f930b021f28549f2e4f1d6a82c64a4aff3e239fb","unresolved":false,"context_lines":[{"line_number":65,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":68,"context_line":"| Attribute         | Type    | Req   | CRUD | Description                           |"},{"line_number":69,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":70,"context_line":"| id                | uuid-str| N/A   | R    | Unique identifier for the             |"},{"line_number":71,"context_line":"|                   |         |       |      | dynamic_rules object.                 |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_67d97c81","line":68,"range":{"start_line":68,"start_character":32,"end_line":68,"end_character":35},"updated":"2018-09-04 01:16:51.000000000","message":"Req/opt ? or req/response? This column looks odd for me. Could you clean them up? ;-)","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"39d55aa02aa15094afc193d7370a55ece00d25d2","unresolved":false,"context_lines":[{"line_number":65,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":68,"context_line":"| Attribute         | Type    | Req   | CRUD | Description                           |"},{"line_number":69,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":70,"context_line":"| id                | uuid-str| N/A   | R    | Unique identifier for the             |"},{"line_number":71,"context_line":"|                   |         |       |      | dynamic_rules object.                 |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_9db87975","line":68,"range":{"start_line":68,"start_character":32,"end_line":68,"end_character":35},"in_reply_to":"3f79a3b5_67d97c81","updated":"2018-09-05 18:41:19.000000000","message":"Done","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"f930b021f28549f2e4f1d6a82c64a4aff3e239fb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"|"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":104,"context_line":"| Attribute         | Type    | Req   | CRUD | Description                           |"},{"line_number":105,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":106,"context_line":"| id                | uuid-str| N/A   | R    | Unique identifier for the firewall    |"},{"line_number":107,"context_line":"|                   |         |       |      | group object.                         |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_07bbe80e","line":104,"range":{"start_line":104,"start_character":32,"end_line":104,"end_character":35},"updated":"2018-09-04 01:16:51.000000000","message":"Same in L68","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"39d55aa02aa15094afc193d7370a55ece00d25d2","unresolved":false,"context_lines":[{"line_number":101,"context_line":"|"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":104,"context_line":"| Attribute         | Type    | Req   | CRUD | Description                           |"},{"line_number":105,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":106,"context_line":"| id                | uuid-str| N/A   | R    | Unique identifier for the firewall    |"},{"line_number":107,"context_line":"|                   |         |       |      | group object.                         |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_3db12590","line":104,"range":{"start_line":104,"start_character":32,"end_line":104,"end_character":35},"in_reply_to":"3f79a3b5_07bbe80e","updated":"2018-09-05 18:41:19.000000000","message":"Done","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"f930b021f28549f2e4f1d6a82c64a4aff3e239fb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":125,"context_line":"| egress_firewall   | uuid-str| No    | CRU  | \u0027null\u0027 if not associated with any     |"},{"line_number":126,"context_line":"| _policy_id        |         |       |      | firewall policy.                      |"},{"line_number":127,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":128,"context_line":"| ports             | List    | No    | CRU  | List of port_ids that will be         |"},{"line_number":129,"context_line":"|                   |         |       |      | associated to this firewall_group.    |"},{"line_number":130,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":131,"context_line":"| dynamic_rules     | String  | No    | CRU  | Logical relationship between members  |"},{"line_number":132,"context_line":"| _relation         |         |       |      | of dynamic_rules. Only ``and`` and    |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_07b44835","line":129,"range":{"start_line":127,"start_character":0,"end_line":129,"end_character":86},"updated":"2018-09-04 01:16:51.000000000","message":"Do you plan to extend the resources in the future? subnets, excluded cases?","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"2b1f98f024e2bd2438adc8ae10636db718c2d4ad","unresolved":false,"context_lines":[{"line_number":124,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":125,"context_line":"| egress_firewall   | uuid-str| No    | CRU  | \u0027null\u0027 if not associated with any     |"},{"line_number":126,"context_line":"| _policy_id        |         |       |      | firewall policy.                      |"},{"line_number":127,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":128,"context_line":"| ports             | List    | No    | CRU  | List of port_ids that will be         |"},{"line_number":129,"context_line":"|                   |         |       |      | associated to this firewall_group.    |"},{"line_number":130,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":131,"context_line":"| dynamic_rules     | String  | No    | CRU  | Logical relationship between members  |"},{"line_number":132,"context_line":"| _relation         |         |       |      | of dynamic_rules. Only ``and`` and    |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_ca364503","line":129,"range":{"start_line":127,"start_character":0,"end_line":129,"end_character":86},"in_reply_to":"3f79a3b5_07b44835","updated":"2018-09-04 18:31:18.000000000","message":"Yes, I plan to propose that. Just not sure if I should squeeze it into this spec or propose another spec for that. Thoughts?","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"ab19772377f1547fd55d2c449d93e1df12f7710f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":125,"context_line":"| egress_firewall   | uuid-str| No    | CRU  | \u0027null\u0027 if not associated with any     |"},{"line_number":126,"context_line":"| _policy_id        |         |       |      | firewall policy.                      |"},{"line_number":127,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":128,"context_line":"| ports             | List    | No    | CRU  | List of port_ids that will be         |"},{"line_number":129,"context_line":"|                   |         |       |      | associated to this firewall_group.    |"},{"line_number":130,"context_line":"+-------------------+---------+-------+------+---------------------------------------+"},{"line_number":131,"context_line":"| dynamic_rules     | String  | No    | CRU  | Logical relationship between members  |"},{"line_number":132,"context_line":"| _relation         |         |       |      | of dynamic_rules. Only ``and`` and    |"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_6e837757","line":129,"range":{"start_line":127,"start_character":0,"end_line":129,"end_character":86},"in_reply_to":"3f79a3b5_ca364503","updated":"2018-09-05 06:32:48.000000000","message":"Yes, you are right. I just raise that for reminding. I think just ports in this spec is OK, as the dynamic rules just affect the ports, because the only field \"port_tag\".","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"f930b021f28549f2e4f1d6a82c64a4aff3e239fb","unresolved":false,"context_lines":[{"line_number":491,"context_line":"User Documentation"},{"line_number":492,"context_line":"-------------------"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"* Neutron CLI and FWaaS API documentation have to be modified."},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"Developer Documentation"},{"line_number":497,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_c75f30e3","line":494,"updated":"2018-09-04 01:16:51.000000000","message":"Also the new FW cookbook for users. ;-)","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"39d55aa02aa15094afc193d7370a55ece00d25d2","unresolved":false,"context_lines":[{"line_number":491,"context_line":"User Documentation"},{"line_number":492,"context_line":"-------------------"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"* Neutron CLI and FWaaS API documentation have to be modified."},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"Developer Documentation"},{"line_number":497,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_5dae612e","line":494,"in_reply_to":"3f79a3b5_c75f30e3","updated":"2018-09-05 18:41:19.000000000","message":"Done","commit_id":"d3cfb92c9747fd959b7f61eebc1760e1c81ab8a5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  logic for their applications. Not every application deployers would"},{"line_number":35,"context_line":"  have the expertice or skillset to do it faultlessly."},{"line_number":36,"context_line":"* It is not managable if there is a large number of application deployments."},{"line_number":37,"context_line":"  In this case, application deployers need to manage a large number Neutron"},{"line_number":38,"context_line":"  ports and firewall groups and the mappings between them, which is"},{"line_number":39,"context_line":"  infeasible without adopting an automated configuration approach."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_71a59d9f","line":37,"range":{"start_line":37,"start_character":68,"end_line":37,"end_character":75},"updated":"2018-10-11 22:36:09.000000000","message":"of Neutron","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  logic for their applications. Not every application deployers would"},{"line_number":35,"context_line":"  have the expertice or skillset to do it faultlessly."},{"line_number":36,"context_line":"* It is not managable if there is a large number of application deployments."},{"line_number":37,"context_line":"  In this case, application deployers need to manage a large number Neutron"},{"line_number":38,"context_line":"  ports and firewall groups and the mappings between them, which is"},{"line_number":39,"context_line":"  infeasible without adopting an automated configuration approach."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0ac92479","line":37,"range":{"start_line":37,"start_character":68,"end_line":37,"end_character":75},"in_reply_to":"3f79a3b5_71a59d9f","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Proposed Change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Enhance firewall group to dynamically selecting the Neutron ports to which"},{"line_number":46,"context_line":"firewall rules apply. This can be achieved by introducing the concept of"},{"line_number":47,"context_line":"dynamic rules. Each dynamic rule defines a way to query the matching"},{"line_number":48,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_91a2b996","line":45,"range":{"start_line":45,"start_character":38,"end_line":45,"end_character":47},"updated":"2018-10-11 22:36:09.000000000","message":"select","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Proposed Change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Enhance firewall group to dynamically selecting the Neutron ports to which"},{"line_number":46,"context_line":"firewall rules apply. This can be achieved by introducing the concept of"},{"line_number":47,"context_line":"dynamic rules. Each dynamic rule defines a way to query the matching"},{"line_number":48,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_cac24c55","line":45,"range":{"start_line":45,"start_character":38,"end_line":45,"end_character":47},"in_reply_to":"3f79a3b5_91a2b996","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"dynamic rules. Each dynamic rule defines a way to query the matching"},{"line_number":48,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."},{"line_number":49,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":50,"context_line":"If a firewall group has more than one dynamic rules, the relationship"},{"line_number":51,"context_line":"between the set of dynamic rules can be specified."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Firewall group that has dynamic rule(s) will watch for relevant events"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_51bae1bf","line":50,"range":{"start_line":50,"start_character":46,"end_line":50,"end_character":51},"updated":"2018-10-11 22:36:09.000000000","message":"rule","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"dynamic rules. Each dynamic rule defines a way to query the matching"},{"line_number":48,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."},{"line_number":49,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":50,"context_line":"If a firewall group has more than one dynamic rules, the relationship"},{"line_number":51,"context_line":"between the set of dynamic rules can be specified."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Firewall group that has dynamic rule(s) will watch for relevant events"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_eabf08c8","line":50,"range":{"start_line":50,"start_character":46,"end_line":50,"end_character":51},"in_reply_to":"3f79a3b5_51bae1bf","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"If a firewall group has more than one dynamic rules, the relationship"},{"line_number":51,"context_line":"between the set of dynamic rules can be specified."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Firewall group that has dynamic rule(s) will watch for relevant events"},{"line_number":54,"context_line":"(i.e. port creation) and update the set of Neutron ports based on"},{"line_number":55,"context_line":"the defined matching rules. The set of Neutron ports compiled by"},{"line_number":56,"context_line":"dynamic rules, plus the set of Neutron ports that are statically defined,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_b1c81556","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":8},"updated":"2018-10-11 22:36:09.000000000","message":"A firewall","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"If a firewall group has more than one dynamic rules, the relationship"},{"line_number":51,"context_line":"between the set of dynamic rules can be specified."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Firewall group that has dynamic rule(s) will watch for relevant events"},{"line_number":54,"context_line":"(i.e. port creation) and update the set of Neutron ports based on"},{"line_number":55,"context_line":"the defined matching rules. The set of Neutron ports compiled by"},{"line_number":56,"context_line":"dynamic rules, plus the set of Neutron ports that are statically defined,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_8a9a1473","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":8},"in_reply_to":"3f79a3b5_b1c81556","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"|                   |         |          |      | have to be unique.                    |"},{"line_number":76,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":77,"context_line":"| type              | String  | No       | CRU  | Types of the dynamic rule. Only       |"},{"line_number":78,"context_line":"|                   |         |          |      | ``port_tag`` is supported for now.    |"},{"line_number":79,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":80,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule of  |"},{"line_number":81,"context_line":"|                   |         |          |      | the firewall group. Only ``equals``,  |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_4c16caa9","line":78,"range":{"start_line":78,"start_character":52,"end_line":78,"end_character":60},"updated":"2018-10-11 22:36:09.000000000","message":"Are these tags as they exist today in the Neutron API: https://developer.openstack.org/api-ref/network/v2/index.html#tag-extension-tags? If yes, please say so somewhere. If no, please explain where the tags will come from","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"|                   |         |          |      | have to be unique.                    |"},{"line_number":76,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":77,"context_line":"| type              | String  | No       | CRU  | Types of the dynamic rule. Only       |"},{"line_number":78,"context_line":"|                   |         |          |      | ``port_tag`` is supported for now.    |"},{"line_number":79,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":80,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule of  |"},{"line_number":81,"context_line":"|                   |         |          |      | the firewall group. Only ``equals``,  |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_4aa4fcb8","line":78,"range":{"start_line":78,"start_character":52,"end_line":78,"end_character":60},"in_reply_to":"3f79a3b5_4c16caa9","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"| type              | String  | No       | CRU  | Types of the dynamic rule. Only       |"},{"line_number":78,"context_line":"|                   |         |          |      | ``port_tag`` is supported for now.    |"},{"line_number":79,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":80,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule of  |"},{"line_number":81,"context_line":"|                   |         |          |      | the firewall group. Only ``equals``,  |"},{"line_number":82,"context_line":"|                   |         |          |      | ``contains``, ``starts_with``,        |"},{"line_number":83,"context_line":"|                   |         |          |      | ``ends_with`` are supported.          |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_3103a578","line":80,"range":{"start_line":80,"start_character":84,"end_line":80,"end_character":86},"updated":"2018-10-11 22:36:09.000000000","message":"I would remove. Too many words","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"| type              | String  | No       | CRU  | Types of the dynamic rule. Only       |"},{"line_number":78,"context_line":"|                   |         |          |      | ``port_tag`` is supported for now.    |"},{"line_number":79,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":80,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule of  |"},{"line_number":81,"context_line":"|                   |         |          |      | the firewall group. Only ``equals``,  |"},{"line_number":82,"context_line":"|                   |         |          |      | ``contains``, ``starts_with``,        |"},{"line_number":83,"context_line":"|                   |         |          |      | ``ends_with`` are supported.          |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_6aa9b88d","line":80,"range":{"start_line":80,"start_character":84,"end_line":80,"end_character":86},"in_reply_to":"3f79a3b5_3103a578","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"|                   |         |          |      | ``port_tag`` is supported for now.    |"},{"line_number":79,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":80,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule of  |"},{"line_number":81,"context_line":"|                   |         |          |      | the firewall group. Only ``equals``,  |"},{"line_number":82,"context_line":"|                   |         |          |      | ``contains``, ``starts_with``,        |"},{"line_number":83,"context_line":"|                   |         |          |      | ``ends_with`` are supported.          |"},{"line_number":84,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_5108a18f","line":81,"range":{"start_line":81,"start_character":50,"end_line":81,"end_character":68},"updated":"2018-10-11 22:36:09.000000000","message":"Ditto","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"|                   |         |          |      | ``port_tag`` is supported for now.    |"},{"line_number":79,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":80,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule of  |"},{"line_number":81,"context_line":"|                   |         |          |      | the firewall group. Only ``equals``,  |"},{"line_number":82,"context_line":"|                   |         |          |      | ``contains``, ``starts_with``,        |"},{"line_number":83,"context_line":"|                   |         |          |      | ``ends_with`` are supported.          |"},{"line_number":84,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0a8e0433","line":81,"range":{"start_line":81,"start_character":50,"end_line":81,"end_character":68},"in_reply_to":"3f79a3b5_5108a18f","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"List dynamic rules"},{"line_number":140,"context_line":"^^^^^^^^^^^^^^^^^^"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Lists dynamic rules."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_9124f9c4","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":18},"updated":"2018-10-11 22:36:09.000000000","message":"Looking at how small this section title is rendered (http://logs.openstack.org/24/597724/4/check/build-openstack-sphinx-docs/5169170/html/specs/stein/fwaas-2.0-dynamic-rules-support.html#list-dynamic-rules), I suggest replacing this for the same as L97 above. They are all sub-titles within the larger \"ReST API impact\" section","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":137,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"List dynamic rules"},{"line_number":140,"context_line":"^^^^^^^^^^^^^^^^^^"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Lists dynamic rules."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_aa8d902a","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":18},"in_reply_to":"3f79a3b5_9124f9c4","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":145,"context_line":"    | Request Type   | ``GET``                                        |"},{"line_number":146,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":147,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":148,"context_line":"    |                | _id\u003e/dynamic_rules``                           |"},{"line_number":149,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":150,"context_line":"    |                | Success | 200                                  |"},{"line_number":151,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_cc1bba19","line":148,"range":{"start_line":147,"start_character":6,"end_line":148,"end_character":71},"updated":"2018-10-11 22:36:09.000000000","message":"Can we get the end point in one line? Maybe, if you start the box all the way to the left, we can also get rid of the vertical bar that is added to the left of the box in the rendered version: http://logs.openstack.org/24/597724/4/check/build-openstack-sphinx-docs/5169170/html/specs/stein/fwaas-2.0-dynamic-rules-support.html#list-dynamic-rules","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":145,"context_line":"    | Request Type   | ``GET``                                        |"},{"line_number":146,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":147,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":148,"context_line":"    |                | _id\u003e/dynamic_rules``                           |"},{"line_number":149,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":150,"context_line":"    |                | Success | 200                                  |"},{"line_number":151,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0a9cc45a","line":148,"range":{"start_line":147,"start_character":6,"end_line":148,"end_character":71},"in_reply_to":"3f79a3b5_cc1bba19","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    }"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Show dynamic rule"},{"line_number":185,"context_line":"^^^^^^^^^^^^^^^^^"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Shows dynamic rule details."},{"line_number":188,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_b10a5524","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":17},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L140","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    }"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Show dynamic rule"},{"line_number":185,"context_line":"^^^^^^^^^^^^^^^^^"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Shows dynamic rule details."},{"line_number":188,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_caa56ca2","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":17},"in_reply_to":"3f79a3b5_b10a5524","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":190,"context_line":"    | Request Type   | ``GET``                                        |"},{"line_number":191,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":192,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":193,"context_line":"    |                | _id\u003e/dynamic_rules/\u003cdynamic_rule_id\u003e``         |"},{"line_number":194,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":195,"context_line":"    |                | Success | 200                                  |"},{"line_number":196,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_8c1142fb","line":193,"range":{"start_line":192,"start_character":5,"end_line":193,"end_character":71},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L147-148","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":190,"context_line":"    | Request Type   | ``GET``                                        |"},{"line_number":191,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":192,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":193,"context_line":"    |                | _id\u003e/dynamic_rules/\u003cdynamic_rule_id\u003e``         |"},{"line_number":194,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":195,"context_line":"    |                | Success | 200                                  |"},{"line_number":196,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_eaa2a897","line":193,"range":{"start_line":192,"start_character":5,"end_line":193,"end_character":71},"in_reply_to":"3f79a3b5_8c1142fb","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    }"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Create dynamic rule"},{"line_number":229,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Creates a dynamic rule."},{"line_number":232,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_d107d11c","line":229,"range":{"start_line":229,"start_character":0,"end_line":229,"end_character":19},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L140","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    }"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Create dynamic rule"},{"line_number":229,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Creates a dynamic rule."},{"line_number":232,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_4aab9c70","line":229,"range":{"start_line":229,"start_character":0,"end_line":229,"end_character":19},"in_reply_to":"3f79a3b5_d107d11c","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":234,"context_line":"    | Request Type   | ``POST``                                       |"},{"line_number":235,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":236,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":237,"context_line":"    |                | _id\u003e/dynamic_rules``                           |"},{"line_number":238,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":239,"context_line":"    |                | Success | 201                                  |"},{"line_number":240,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_2cd02e2b","line":237,"range":{"start_line":236,"start_character":1,"end_line":237,"end_character":71},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L147-148","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":234,"context_line":"    | Request Type   | ``POST``                                       |"},{"line_number":235,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":236,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":237,"context_line":"    |                | _id\u003e/dynamic_rules``                           |"},{"line_number":238,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":239,"context_line":"    |                | Success | 201                                  |"},{"line_number":240,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_6ab0d8dd","line":237,"range":{"start_line":236,"start_character":1,"end_line":237,"end_character":71},"in_reply_to":"3f79a3b5_2cd02e2b","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    }"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Update dynamic rule"},{"line_number":287,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Updates a dynamic rule."},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_91fdd90a","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":19},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L140","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    }"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Update dynamic rule"},{"line_number":287,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Updates a dynamic rule."},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0ac5a43e","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":19},"in_reply_to":"3f79a3b5_91fdd90a","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":292,"context_line":"    | Request Type   | ``PUT``                                        |"},{"line_number":293,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":294,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":295,"context_line":"    |                | _id\u003e/dynamic_rules/\u003cdynamic_rule_id\u003e``         |"},{"line_number":296,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":297,"context_line":"    |                | Success | 200                                  |"},{"line_number":298,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_ecd5561b","line":295,"range":{"start_line":294,"start_character":0,"end_line":295,"end_character":71},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L147-148","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":292,"context_line":"    | Request Type   | ``PUT``                                        |"},{"line_number":293,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":294,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":295,"context_line":"    |                | _id\u003e/dynamic_rules/\u003cdynamic_rule_id\u003e``         |"},{"line_number":296,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":297,"context_line":"    |                | Success | 200                                  |"},{"line_number":298,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_2ac2e036","line":295,"range":{"start_line":294,"start_character":0,"end_line":295,"end_character":71},"in_reply_to":"3f79a3b5_ecd5561b","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    }"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"Delete dynamic rule"},{"line_number":345,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"Deletes a dynamic rule."},{"line_number":348,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0c077219","line":345,"range":{"start_line":345,"start_character":0,"end_line":345,"end_character":19},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L140","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    }"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"Delete dynamic rule"},{"line_number":345,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"Deletes a dynamic rule."},{"line_number":348,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_cabeccae","line":345,"range":{"start_line":345,"start_character":0,"end_line":345,"end_character":19},"in_reply_to":"3f79a3b5_0c077219","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":352,"context_line":"    | Request Type   | ``DELETE``                                     |"},{"line_number":353,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":354,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":355,"context_line":"    |                | _id\u003e/dynamic_rules/\u003cdynamic_rule_id\u003e``         |"},{"line_number":356,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":357,"context_line":"    |                | Success | 204                                  |"},{"line_number":358,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0cdbf24d","line":355,"range":{"start_line":354,"start_character":0,"end_line":355,"end_character":71},"updated":"2018-10-11 22:36:09.000000000","message":"Please see my comment to L147-148","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":352,"context_line":"    | Request Type   | ``DELETE``                                     |"},{"line_number":353,"context_line":"    +----------------+------------------------------------------------+"},{"line_number":354,"context_line":"    | Endpoint       | ``/v2.0/fwaas/firewall_groups/\u003cfirewall_group\\ |"},{"line_number":355,"context_line":"    |                | _id\u003e/dynamic_rules/\u003cdynamic_rule_id\u003e``         |"},{"line_number":356,"context_line":"    +----------------+---------+--------------------------------------+"},{"line_number":357,"context_line":"    |                | Success | 204                                  |"},{"line_number":358,"context_line":"    | Response Codes +---------+--------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_eabb88bb","line":355,"range":{"start_line":354,"start_character":0,"end_line":355,"end_character":71},"in_reply_to":"3f79a3b5_0cdbf24d","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"b823acb2875fa790f3a5a741c4cc119f51de0ba8","unresolved":false,"context_lines":[{"line_number":384,"context_line":"Data Model Impact"},{"line_number":385,"context_line":"-----------------"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"TBD"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Security Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0c81b2c2","line":387,"updated":"2018-10-11 22:36:09.000000000","message":"I assume we are going to add at a minimum a dynamic rules table here: https://github.com/openstack/neutron-fwaas/blob/master/neutron_fwaas/db/firewall/v2/firewall_db_v2.py","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"8fe1be69e21fabcfdb51d6c6ff8281e770a2b99c","unresolved":false,"context_lines":[{"line_number":384,"context_line":"Data Model Impact"},{"line_number":385,"context_line":"-----------------"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"TBD"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Security Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_0aca8446","line":387,"in_reply_to":"3f79a3b5_0c81b2c2","updated":"2018-10-17 15:14:25.000000000","message":"Done","commit_id":"67c514e6f9f3ccabb57af56a03bb9bc2da7206db"},{"author":{"_account_id":6995,"name":"Sridar Kandaswamy","email":"skandasw@yahoo.com","username":"skandasw"},"change_message_id":"79d9d15181b589e03f7483f0ae8ca7cc824fd607","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Firewall as a Service API 2.0 Dynamic Rules Support"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/fwaas-2.0-dynamic-rules"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_01ea5bd8","line":8,"updated":"2018-10-18 05:40:22.000000000","message":"\"Dynamic Rules\" - terminology is a bit confusing since we also have Firewall Rules. The intention here is:\n\n- We have a FWG with some associated Policies (which in turn have some sets of Rules).\n- We want to automate the association of a FWG with some set of ports based on some criteria. Dynamic FWG Port association criteria ? I don\u0027t actually love this but IMHO \u0027rule\u0027 is a bit overloaded here. So pls consider some alternatives.","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"6d22e792862e21b562b687d5003ee368659215f8","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Firewall as a Service API 2.0 Dynamic Rules Support"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/fwaas-2.0-dynamic-rules"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_b196674a","line":8,"in_reply_to":"3f79a3b5_01ea5bd8","updated":"2018-10-30 18:11:08.000000000","message":"Done. Temporarily changed it to \"Dynamic Criteria\". Will collect more inputs to see if we can find a better name.","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":6995,"name":"Sridar Kandaswamy","email":"skandasw@yahoo.com","username":"skandasw"},"change_message_id":"79d9d15181b589e03f7483f0ae8ca7cc824fd607","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."},{"line_number":47,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":48,"context_line":"If a firewall group has more than one dynamic rule, the relationship"},{"line_number":49,"context_line":"between the set of dynamic rules can be specified."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"A firewall group that has dynamic rule(s) will watch for relevant events"},{"line_number":52,"context_line":"(i.e. port creation) and update the set of Neutron ports based on"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_a1b4c7f2","line":49,"updated":"2018-10-18 05:40:22.000000000","message":"Can u pls elaborate a bit more on this ? This can get a bit complex - maybe this is not really needed ?","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"6d22e792862e21b562b687d5003ee368659215f8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Neutron ports based on high-level criteria (i.e. if a port has a specific tag)."},{"line_number":47,"context_line":"Each firewall group can reference zero, one or multiple dynamic rules."},{"line_number":48,"context_line":"If a firewall group has more than one dynamic rule, the relationship"},{"line_number":49,"context_line":"between the set of dynamic rules can be specified."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"A firewall group that has dynamic rule(s) will watch for relevant events"},{"line_number":52,"context_line":"(i.e. port creation) and update the set of Neutron ports based on"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_11987b65","line":49,"in_reply_to":"3f79a3b5_a1b4c7f2","updated":"2018-10-30 18:11:08.000000000","message":"Done. Added two sentence to explain it.","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":6995,"name":"Sridar Kandaswamy","email":"skandasw@yahoo.com","username":"skandasw"},"change_message_id":"79d9d15181b589e03f7483f0ae8ca7cc824fd607","unresolved":false,"context_lines":[{"line_number":53,"context_line":"the defined matching rules. The set of Neutron ports compiled by"},{"line_number":54,"context_line":"dynamic rules, plus the set of Neutron ports that are statically defined,"},{"line_number":55,"context_line":"are the targets for applying firewall rules referenced by this firewall"},{"line_number":56,"context_line":"group."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Data Model Impact"},{"line_number":59,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_817d0b20","line":56,"updated":"2018-10-18 05:40:22.000000000","message":"Currently a port can have only one FWG. We will need to ensure that validation can catch this in the most meaningful manner. IF we have multiple FWG on a port - we have to deal with ensuring the rule ordering (or some ordering across FWGs) in a deterministic manner.","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"6d22e792862e21b562b687d5003ee368659215f8","unresolved":false,"context_lines":[{"line_number":53,"context_line":"the defined matching rules. The set of Neutron ports compiled by"},{"line_number":54,"context_line":"dynamic rules, plus the set of Neutron ports that are statically defined,"},{"line_number":55,"context_line":"are the targets for applying firewall rules referenced by this firewall"},{"line_number":56,"context_line":"group."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Data Model Impact"},{"line_number":59,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_91da4b1a","line":56,"in_reply_to":"3f79a3b5_817d0b20","updated":"2018-10-30 18:11:08.000000000","message":"Done. Added a paragraph to clarify it.","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"a5e2bc3fb8ab0d3425e0613040b36342deaa0ec8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"|                   |         |          |      | rule (255 characters limit). Does not |"},{"line_number":74,"context_line":"|                   |         |          |      | have to be unique.                    |"},{"line_number":75,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":76,"context_line":"| type              | String  | No       | CRU  | Types of the dynamic rule. Only       |"},{"line_number":77,"context_line":"|                   |         |          |      | ``port_tag`` (which matches a tag of  |"},{"line_number":78,"context_line":"|                   |         |          |      | port resource provided by Neutron Tag |"},{"line_number":79,"context_line":"|                   |         |          |      | extension) is supported for now.      |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_5389f7c4","line":76,"updated":"2018-10-18 17:28:06.000000000","message":"we should at least offer a second type to make sure that our API modeling is extensible enough","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"6d22e792862e21b562b687d5003ee368659215f8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"|                   |         |          |      | rule (255 characters limit). Does not |"},{"line_number":74,"context_line":"|                   |         |          |      | have to be unique.                    |"},{"line_number":75,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":76,"context_line":"| type              | String  | No       | CRU  | Types of the dynamic rule. Only       |"},{"line_number":77,"context_line":"|                   |         |          |      | ``port_tag`` (which matches a tag of  |"},{"line_number":78,"context_line":"|                   |         |          |      | port resource provided by Neutron Tag |"},{"line_number":79,"context_line":"|                   |         |          |      | extension) is supported for now.      |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_f1c85f4f","line":76,"in_reply_to":"3f79a3b5_5389f7c4","updated":"2018-10-30 18:11:08.000000000","message":"Done","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"a5e2bc3fb8ab0d3425e0613040b36342deaa0ec8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"|                   |         |          |      | port resource provided by Neutron Tag |"},{"line_number":79,"context_line":"|                   |         |          |      | extension) is supported for now.      |"},{"line_number":80,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":81,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule     |"},{"line_number":82,"context_line":"|                   |         |          |      | Only ``equals``, ``contains``,        |"},{"line_number":83,"context_line":"|                   |         |          |      | ``starts_with``, ``ends_with`` are    |"},{"line_number":84,"context_line":"|                   |         |          |      | supported.                            |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_f3b7e387","line":81,"updated":"2018-10-18 17:28:06.000000000","message":"why do we need that? If we support regex as a value we should be fine without this?","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"6d22e792862e21b562b687d5003ee368659215f8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"|                   |         |          |      | port resource provided by Neutron Tag |"},{"line_number":79,"context_line":"|                   |         |          |      | extension) is supported for now.      |"},{"line_number":80,"context_line":"+-------------------+---------+----------+------+---------------------------------------+"},{"line_number":81,"context_line":"| action            | String  | No       | CRU  | Matching mode of the dynamic rule     |"},{"line_number":82,"context_line":"|                   |         |          |      | Only ``equals``, ``contains``,        |"},{"line_number":83,"context_line":"|                   |         |          |      | ``starts_with``, ``ends_with`` are    |"},{"line_number":84,"context_line":"|                   |         |          |      | supported.                            |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_317b37f4","line":81,"in_reply_to":"3f79a3b5_f3b7e387","updated":"2018-10-30 18:11:08.000000000","message":"There is a problem on supporting regex in database query since not every database backend supports that. An advantage of this approach is that it can be implemented by a \"LIKE\" query, which is generally supported in different database backend.","commit_id":"e1656703d9b663785ba7fef0c7bf7466d8ebeddc"}]}
