)]}'
{"doc/source/user/vnffg_usage_guide.rst":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c2d4f148274336a5f98d20dee674721e70435f7c","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":".. code-block:: yaml"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"   description: Sample VNFFG template"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"   topology_template:"},{"line_number":328,"context_line":"     description: Sample VNFFG template"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"     node_templates:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"       Forwarding_path1:"},{"line_number":333,"context_line":"         type: tosca.nodes.nfv.FP.TackerV2"},{"line_number":334,"context_line":"         description: creates path (CP12-\u003eCP22)"},{"line_number":335,"context_line":"         properties:"},{"line_number":336,"context_line":"           id: 51"},{"line_number":337,"context_line":"           policy:"},{"line_number":338,"context_line":"             type: ACL"},{"line_number":339,"context_line":"             criteria:"},{"line_number":340,"context_line":"               - name: block_tcp"},{"line_number":341,"context_line":"                 classifier:"},{"line_number":342,"context_line":"                   network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1"},{"line_number":343,"context_line":"                   destination_port_range: 80-1024"},{"line_number":344,"context_line":"                   ip_proto: 6"},{"line_number":345,"context_line":"                   ip_dst_prefix: 192.168.1.2/24"},{"line_number":346,"context_line":"           path:"},{"line_number":347,"context_line":"             - forwarder: VNFD1"},{"line_number":348,"context_line":"               capability: CP12"},{"line_number":349,"context_line":"             - forwarder: VNFD2"},{"line_number":350,"context_line":"               capability: CP22"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"     groups:"},{"line_number":353,"context_line":"       VNFFG1:"},{"line_number":354,"context_line":"         type: tosca.groups.nfv.VNFFG"},{"line_number":355,"context_line":"         description: HTTP to Corporate Net"},{"line_number":356,"context_line":"         properties:"},{"line_number":357,"context_line":"           vendor: tacker"},{"line_number":358,"context_line":"           version: 1.0"},{"line_number":359,"context_line":"           number_of_endpoints: 2"},{"line_number":360,"context_line":"           dependent_virtual_link: [VL12,VL22]"},{"line_number":361,"context_line":"           connection_point: [CP12,CP22]"},{"line_number":362,"context_line":"           constituent_vnfs: [VNFD1,VNFD2]"},{"line_number":363,"context_line":"         members: [Forwarding_path1]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"The above template informs Tacker to update the current classifier,NFP and"},{"line_number":366,"context_line":"path (chain) with the ones that are described in that template. After the completion"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3fa0c359_2638d7d1","line":363,"range":{"start_line":323,"start_character":0,"end_line":363,"end_character":36},"updated":"2018-02-05 07:02:26.000000000","message":"what part can be updated via this way?","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"a2f7fd8aa792c9551507d89a21960905d24fe7c5","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":".. code-block:: yaml"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"   description: Sample VNFFG template"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"   topology_template:"},{"line_number":328,"context_line":"     description: Sample VNFFG template"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"     node_templates:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"       Forwarding_path1:"},{"line_number":333,"context_line":"         type: tosca.nodes.nfv.FP.TackerV2"},{"line_number":334,"context_line":"         description: creates path (CP12-\u003eCP22)"},{"line_number":335,"context_line":"         properties:"},{"line_number":336,"context_line":"           id: 51"},{"line_number":337,"context_line":"           policy:"},{"line_number":338,"context_line":"             type: ACL"},{"line_number":339,"context_line":"             criteria:"},{"line_number":340,"context_line":"               - name: block_tcp"},{"line_number":341,"context_line":"                 classifier:"},{"line_number":342,"context_line":"                   network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1"},{"line_number":343,"context_line":"                   destination_port_range: 80-1024"},{"line_number":344,"context_line":"                   ip_proto: 6"},{"line_number":345,"context_line":"                   ip_dst_prefix: 192.168.1.2/24"},{"line_number":346,"context_line":"           path:"},{"line_number":347,"context_line":"             - forwarder: VNFD1"},{"line_number":348,"context_line":"               capability: CP12"},{"line_number":349,"context_line":"             - forwarder: VNFD2"},{"line_number":350,"context_line":"               capability: CP22"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"     groups:"},{"line_number":353,"context_line":"       VNFFG1:"},{"line_number":354,"context_line":"         type: tosca.groups.nfv.VNFFG"},{"line_number":355,"context_line":"         description: HTTP to Corporate Net"},{"line_number":356,"context_line":"         properties:"},{"line_number":357,"context_line":"           vendor: tacker"},{"line_number":358,"context_line":"           version: 1.0"},{"line_number":359,"context_line":"           number_of_endpoints: 2"},{"line_number":360,"context_line":"           dependent_virtual_link: [VL12,VL22]"},{"line_number":361,"context_line":"           connection_point: [CP12,CP22]"},{"line_number":362,"context_line":"           constituent_vnfs: [VNFD1,VNFD2]"},{"line_number":363,"context_line":"         members: [Forwarding_path1]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"The above template informs Tacker to update the current classifier,NFP and"},{"line_number":366,"context_line":"path (chain) with the ones that are described in that template. After the completion"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3fa0c359_bcf2b699","line":363,"range":{"start_line":323,"start_character":0,"end_line":363,"end_character":36},"in_reply_to":"3fa0c359_06559b50","updated":"2018-02-05 09:00:07.000000000","message":"IMO, you should provide the old VNFFG and the update VNFFG template in this guide. And you can show users which part they can update (add, update, delete flow-classifiers; add \n or remove VNFs from path, change the sequence of VNFs in VNFFG, etc)","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"bbb3f47dea2c69df9b3fb21867b361392e164a02","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":".. code-block:: yaml"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"   description: Sample VNFFG template"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"   topology_template:"},{"line_number":328,"context_line":"     description: Sample VNFFG template"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"     node_templates:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"       Forwarding_path1:"},{"line_number":333,"context_line":"         type: tosca.nodes.nfv.FP.TackerV2"},{"line_number":334,"context_line":"         description: creates path (CP12-\u003eCP22)"},{"line_number":335,"context_line":"         properties:"},{"line_number":336,"context_line":"           id: 51"},{"line_number":337,"context_line":"           policy:"},{"line_number":338,"context_line":"             type: ACL"},{"line_number":339,"context_line":"             criteria:"},{"line_number":340,"context_line":"               - name: block_tcp"},{"line_number":341,"context_line":"                 classifier:"},{"line_number":342,"context_line":"                   network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1"},{"line_number":343,"context_line":"                   destination_port_range: 80-1024"},{"line_number":344,"context_line":"                   ip_proto: 6"},{"line_number":345,"context_line":"                   ip_dst_prefix: 192.168.1.2/24"},{"line_number":346,"context_line":"           path:"},{"line_number":347,"context_line":"             - forwarder: VNFD1"},{"line_number":348,"context_line":"               capability: CP12"},{"line_number":349,"context_line":"             - forwarder: VNFD2"},{"line_number":350,"context_line":"               capability: CP22"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"     groups:"},{"line_number":353,"context_line":"       VNFFG1:"},{"line_number":354,"context_line":"         type: tosca.groups.nfv.VNFFG"},{"line_number":355,"context_line":"         description: HTTP to Corporate Net"},{"line_number":356,"context_line":"         properties:"},{"line_number":357,"context_line":"           vendor: tacker"},{"line_number":358,"context_line":"           version: 1.0"},{"line_number":359,"context_line":"           number_of_endpoints: 2"},{"line_number":360,"context_line":"           dependent_virtual_link: [VL12,VL22]"},{"line_number":361,"context_line":"           connection_point: [CP12,CP22]"},{"line_number":362,"context_line":"           constituent_vnfs: [VNFD1,VNFD2]"},{"line_number":363,"context_line":"         members: [Forwarding_path1]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"The above template informs Tacker to update the current classifier,NFP and"},{"line_number":366,"context_line":"path (chain) with the ones that are described in that template. After the completion"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3fa0c359_467de36c","line":363,"range":{"start_line":323,"start_character":0,"end_line":363,"end_character":36},"in_reply_to":"3fa0c359_2638d7d1","updated":"2018-02-05 07:06:49.000000000","message":"NFP names,id \nClassifiers match criteria\nChain (Number of VNFs that are used)","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"2e326a91dafc1af4d3b5a214f1a360b8336c7d7a","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":".. code-block:: yaml"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"   description: Sample VNFFG template"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"   topology_template:"},{"line_number":328,"context_line":"     description: Sample VNFFG template"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"     node_templates:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"       Forwarding_path1:"},{"line_number":333,"context_line":"         type: tosca.nodes.nfv.FP.TackerV2"},{"line_number":334,"context_line":"         description: creates path (CP12-\u003eCP22)"},{"line_number":335,"context_line":"         properties:"},{"line_number":336,"context_line":"           id: 51"},{"line_number":337,"context_line":"           policy:"},{"line_number":338,"context_line":"             type: ACL"},{"line_number":339,"context_line":"             criteria:"},{"line_number":340,"context_line":"               - name: block_tcp"},{"line_number":341,"context_line":"                 classifier:"},{"line_number":342,"context_line":"                   network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1"},{"line_number":343,"context_line":"                   destination_port_range: 80-1024"},{"line_number":344,"context_line":"                   ip_proto: 6"},{"line_number":345,"context_line":"                   ip_dst_prefix: 192.168.1.2/24"},{"line_number":346,"context_line":"           path:"},{"line_number":347,"context_line":"             - forwarder: VNFD1"},{"line_number":348,"context_line":"               capability: CP12"},{"line_number":349,"context_line":"             - forwarder: VNFD2"},{"line_number":350,"context_line":"               capability: CP22"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"     groups:"},{"line_number":353,"context_line":"       VNFFG1:"},{"line_number":354,"context_line":"         type: tosca.groups.nfv.VNFFG"},{"line_number":355,"context_line":"         description: HTTP to Corporate Net"},{"line_number":356,"context_line":"         properties:"},{"line_number":357,"context_line":"           vendor: tacker"},{"line_number":358,"context_line":"           version: 1.0"},{"line_number":359,"context_line":"           number_of_endpoints: 2"},{"line_number":360,"context_line":"           dependent_virtual_link: [VL12,VL22]"},{"line_number":361,"context_line":"           connection_point: [CP12,CP22]"},{"line_number":362,"context_line":"           constituent_vnfs: [VNFD1,VNFD2]"},{"line_number":363,"context_line":"         members: [Forwarding_path1]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"The above template informs Tacker to update the current classifier,NFP and"},{"line_number":366,"context_line":"path (chain) with the ones that are described in that template. After the completion"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3fa0c359_06559b50","line":363,"range":{"start_line":323,"start_character":0,"end_line":363,"end_character":36},"in_reply_to":"3fa0c359_467de36c","updated":"2018-02-05 07:33:43.000000000","message":"Also forgot to mention that in the chain you can Update the VNfs that are used not only the number of them e.g if the current chain is the [red,blue] VNFs the updated chain could be [green,yellow] VNFs.","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"a083d22af4fd1db8a7dfab6b2f2506192505b6f4","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":".. code-block:: yaml"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"   description: Sample VNFFG template"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"   topology_template:"},{"line_number":328,"context_line":"     description: Sample VNFFG template"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"     node_templates:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"       Forwarding_path1:"},{"line_number":333,"context_line":"         type: tosca.nodes.nfv.FP.TackerV2"},{"line_number":334,"context_line":"         description: creates path (CP12-\u003eCP22)"},{"line_number":335,"context_line":"         properties:"},{"line_number":336,"context_line":"           id: 51"},{"line_number":337,"context_line":"           policy:"},{"line_number":338,"context_line":"             type: ACL"},{"line_number":339,"context_line":"             criteria:"},{"line_number":340,"context_line":"               - name: block_tcp"},{"line_number":341,"context_line":"                 classifier:"},{"line_number":342,"context_line":"                   network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1"},{"line_number":343,"context_line":"                   destination_port_range: 80-1024"},{"line_number":344,"context_line":"                   ip_proto: 6"},{"line_number":345,"context_line":"                   ip_dst_prefix: 192.168.1.2/24"},{"line_number":346,"context_line":"           path:"},{"line_number":347,"context_line":"             - forwarder: VNFD1"},{"line_number":348,"context_line":"               capability: CP12"},{"line_number":349,"context_line":"             - forwarder: VNFD2"},{"line_number":350,"context_line":"               capability: CP22"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"     groups:"},{"line_number":353,"context_line":"       VNFFG1:"},{"line_number":354,"context_line":"         type: tosca.groups.nfv.VNFFG"},{"line_number":355,"context_line":"         description: HTTP to Corporate Net"},{"line_number":356,"context_line":"         properties:"},{"line_number":357,"context_line":"           vendor: tacker"},{"line_number":358,"context_line":"           version: 1.0"},{"line_number":359,"context_line":"           number_of_endpoints: 2"},{"line_number":360,"context_line":"           dependent_virtual_link: [VL12,VL22]"},{"line_number":361,"context_line":"           connection_point: [CP12,CP22]"},{"line_number":362,"context_line":"           constituent_vnfs: [VNFD1,VNFD2]"},{"line_number":363,"context_line":"         members: [Forwarding_path1]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"The above template informs Tacker to update the current classifier,NFP and"},{"line_number":366,"context_line":"path (chain) with the ones that are described in that template. After the completion"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3fa0c359_17329cf2","line":363,"range":{"start_line":323,"start_character":0,"end_line":363,"end_character":36},"in_reply_to":"3fa0c359_9cc25ae9","updated":"2018-02-05 14:16:01.000000000","message":"Done","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"efe93032933dda71f8570875e3c0b3983573bfd1","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":".. code-block:: yaml"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"   description: Sample VNFFG template"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"   topology_template:"},{"line_number":328,"context_line":"     description: Sample VNFFG template"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"     node_templates:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"       Forwarding_path1:"},{"line_number":333,"context_line":"         type: tosca.nodes.nfv.FP.TackerV2"},{"line_number":334,"context_line":"         description: creates path (CP12-\u003eCP22)"},{"line_number":335,"context_line":"         properties:"},{"line_number":336,"context_line":"           id: 51"},{"line_number":337,"context_line":"           policy:"},{"line_number":338,"context_line":"             type: ACL"},{"line_number":339,"context_line":"             criteria:"},{"line_number":340,"context_line":"               - name: block_tcp"},{"line_number":341,"context_line":"                 classifier:"},{"line_number":342,"context_line":"                   network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1"},{"line_number":343,"context_line":"                   destination_port_range: 80-1024"},{"line_number":344,"context_line":"                   ip_proto: 6"},{"line_number":345,"context_line":"                   ip_dst_prefix: 192.168.1.2/24"},{"line_number":346,"context_line":"           path:"},{"line_number":347,"context_line":"             - forwarder: VNFD1"},{"line_number":348,"context_line":"               capability: CP12"},{"line_number":349,"context_line":"             - forwarder: VNFD2"},{"line_number":350,"context_line":"               capability: CP22"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"     groups:"},{"line_number":353,"context_line":"       VNFFG1:"},{"line_number":354,"context_line":"         type: tosca.groups.nfv.VNFFG"},{"line_number":355,"context_line":"         description: HTTP to Corporate Net"},{"line_number":356,"context_line":"         properties:"},{"line_number":357,"context_line":"           vendor: tacker"},{"line_number":358,"context_line":"           version: 1.0"},{"line_number":359,"context_line":"           number_of_endpoints: 2"},{"line_number":360,"context_line":"           dependent_virtual_link: [VL12,VL22]"},{"line_number":361,"context_line":"           connection_point: [CP12,CP22]"},{"line_number":362,"context_line":"           constituent_vnfs: [VNFD1,VNFD2]"},{"line_number":363,"context_line":"         members: [Forwarding_path1]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"The above template informs Tacker to update the current classifier,NFP and"},{"line_number":366,"context_line":"path (chain) with the ones that are described in that template. After the completion"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3fa0c359_9cc25ae9","line":363,"range":{"start_line":323,"start_character":0,"end_line":363,"end_character":36},"in_reply_to":"3fa0c359_bcf2b699","updated":"2018-02-05 09:09:36.000000000","message":"OK I can do that thanks!","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"}],"tacker/db/nfvo/vnffg_db.py":[{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                                                nfp_dict_new[\u0027name\u0027])"},{"line_number":960,"context_line":"            LOG.debug(\u0027New chain: %s\u0027, chain_new)"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"            update_chain \u003d self._update_chain(chain_old[\u0027chain\u0027], chain_new)"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"            if update_chain:"},{"line_number":965,"context_line":"                query_chain \u003d (self._model_query(context, VnffgChain)."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_3d3f9d87","line":962,"range":{"start_line":962,"start_character":32,"end_line":962,"end_character":45},"updated":"2018-02-02 15:42:27.000000000","message":"many existing functions have this name, I recommend rename it to valid_update_chain or others.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                                                nfp_dict_new[\u0027name\u0027])"},{"line_number":960,"context_line":"            LOG.debug(\u0027New chain: %s\u0027, chain_new)"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"            update_chain \u003d self._update_chain(chain_old[\u0027chain\u0027], chain_new)"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"            if update_chain:"},{"line_number":965,"context_line":"                query_chain \u003d (self._model_query(context, VnffgChain)."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_4aebb011","line":962,"range":{"start_line":962,"start_character":32,"end_line":962,"end_character":45},"in_reply_to":"5f93b717_3d3f9d87","updated":"2018-02-03 07:41:56.000000000","message":"I ll fix that.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"0ac9d925d60d766501c9a1e4cfc61f072c7384dd","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                                                nfp_dict_new[\u0027name\u0027])"},{"line_number":960,"context_line":"            LOG.debug(\u0027New chain: %s\u0027, chain_new)"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"            update_chain \u003d self._update_chain(chain_old[\u0027chain\u0027], chain_new)"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"            if update_chain:"},{"line_number":965,"context_line":"                query_chain \u003d (self._model_query(context, VnffgChain)."}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_ea471c1c","line":962,"range":{"start_line":962,"start_character":32,"end_line":962,"end_character":45},"in_reply_to":"5f93b717_4aebb011","updated":"2018-02-03 07:47:26.000000000","message":"Done","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":983,"context_line":"            classifiers_update, classifiers_delete \u003d \\"},{"line_number":984,"context_line":"                self._find_classifiers_to_update(classifiers_old,"},{"line_number":985,"context_line":"                                                 classifiers_new)"},{"line_number":986,"context_line":"            for clsfr in classifiers_update:"},{"line_number":987,"context_line":"                if clsfr.get(\u0027id\u0027):"},{"line_number":988,"context_line":"                    for item in MATCH_DB_KEY_LIST:"},{"line_number":989,"context_line":"                        if clsfr[\u0027match\u0027].get(item) is None:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_3d26bd69","line":986,"range":{"start_line":986,"start_character":16,"end_line":986,"end_character":21},"updated":"2018-02-02 15:42:27.000000000","message":"You also need to provide one unified name, example classifier_id, the same as L816.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":983,"context_line":"            classifiers_update, classifiers_delete \u003d \\"},{"line_number":984,"context_line":"                self._find_classifiers_to_update(classifiers_old,"},{"line_number":985,"context_line":"                                                 classifiers_new)"},{"line_number":986,"context_line":"            for clsfr in classifiers_update:"},{"line_number":987,"context_line":"                if clsfr.get(\u0027id\u0027):"},{"line_number":988,"context_line":"                    for item in MATCH_DB_KEY_LIST:"},{"line_number":989,"context_line":"                        if clsfr[\u0027match\u0027].get(item) is None:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_8f4d4ac5","line":986,"range":{"start_line":986,"start_character":16,"end_line":986,"end_character":21},"in_reply_to":"5f93b717_3d26bd69","updated":"2018-02-03 07:41:56.000000000","message":"The thing here is that the clsfr is not a \u0027classifier_id\u0027\nis the a dict wich contains the id of the classifier and the match as well. So this is the reason I am not using unified name :)","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"        update_classifiers \u003d []"},{"line_number":1022,"context_line":"        delete_classifiers \u003d []"},{"line_number":1023,"context_line":"        names_list \u003d []"},{"line_number":1024,"context_line":"        for new_clsfr in new_classifiers:"},{"line_number":1025,"context_line":"            found_name \u003d False"},{"line_number":1026,"context_line":"            for cur_clsfr in current_classifiers:"},{"line_number":1027,"context_line":"                if cur_clsfr[\u0027name\u0027] \u003d\u003d new_clsfr[\u0027name\u0027]:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_dde9d9e2","line":1024,"range":{"start_line":1024,"start_character":12,"end_line":1024,"end_character":21},"updated":"2018-02-02 15:42:27.000000000","message":"Changing to new_classifier looks good to me, but its up to you :-)","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"6e0610b8f7b33a9a8e8e45cf416994354a6f6c6b","unresolved":false,"context_lines":[{"line_number":880,"context_line":""},{"line_number":881,"context_line":"            LOG.debug(\u0027vnffg old template %s\u0027, template_db_old)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"            if vnffg.get(\u0027attributes\u0027) and \\"},{"line_number":884,"context_line":"                    vnffg[\u0027attributes\u0027].get(\u0027param_values\u0027):"},{"line_number":885,"context_line":"                vnffg_param \u003d vnffg[\u0027attributes\u0027]"},{"line_number":886,"context_line":"                vnffgd_topology_template \u003d \\"},{"line_number":887,"context_line":"                    template_db_new.template[\u0027vnffgd\u0027][\u0027topology_template\u0027]"},{"line_number":888,"context_line":"                self._process_parameterized_template(vnffg_param,"},{"line_number":889,"context_line":"                                                    vnffgd_topology_template)"},{"line_number":890,"context_line":"                template_db_new.template[\u0027vnffgd\u0027][\u0027topology_template\u0027] \u003d \\"},{"line_number":891,"context_line":"                    vnffgd_topology_template"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"            # VNF-Members"},{"line_number":894,"context_line":"            vnf_members_new \u003d self._get_vnffg_property("}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_d4e192d2","line":891,"range":{"start_line":883,"start_character":0,"end_line":891,"end_character":44},"updated":"2018-02-05 13:54:41.000000000","message":"You should make a function for both of them, https://github.com/openstack/tacker/blob/master/tacker/db/nfvo/vnffg_db.py#L352","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"f5f90e73260faf145cab11200439e9d0c1a71a2c","unresolved":false,"context_lines":[{"line_number":880,"context_line":""},{"line_number":881,"context_line":"            LOG.debug(\u0027vnffg old template %s\u0027, template_db_old)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"            if vnffg.get(\u0027attributes\u0027) and \\"},{"line_number":884,"context_line":"                    vnffg[\u0027attributes\u0027].get(\u0027param_values\u0027):"},{"line_number":885,"context_line":"                vnffg_param \u003d vnffg[\u0027attributes\u0027]"},{"line_number":886,"context_line":"                vnffgd_topology_template \u003d \\"},{"line_number":887,"context_line":"                    template_db_new.template[\u0027vnffgd\u0027][\u0027topology_template\u0027]"},{"line_number":888,"context_line":"                self._process_parameterized_template(vnffg_param,"},{"line_number":889,"context_line":"                                                    vnffgd_topology_template)"},{"line_number":890,"context_line":"                template_db_new.template[\u0027vnffgd\u0027][\u0027topology_template\u0027] \u003d \\"},{"line_number":891,"context_line":"                    vnffgd_topology_template"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"            # VNF-Members"},{"line_number":894,"context_line":"            vnf_members_new \u003d self._get_vnffg_property("}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_c30eace4","line":891,"range":{"start_line":883,"start_character":0,"end_line":891,"end_character":44},"in_reply_to":"3fa0c359_37731883","updated":"2018-02-05 22:08:06.000000000","message":"Done","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"e6a71585a940350be9deb751464782c187eb6cb3","unresolved":false,"context_lines":[{"line_number":880,"context_line":""},{"line_number":881,"context_line":"            LOG.debug(\u0027vnffg old template %s\u0027, template_db_old)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"            if vnffg.get(\u0027attributes\u0027) and \\"},{"line_number":884,"context_line":"                    vnffg[\u0027attributes\u0027].get(\u0027param_values\u0027):"},{"line_number":885,"context_line":"                vnffg_param \u003d vnffg[\u0027attributes\u0027]"},{"line_number":886,"context_line":"                vnffgd_topology_template \u003d \\"},{"line_number":887,"context_line":"                    template_db_new.template[\u0027vnffgd\u0027][\u0027topology_template\u0027]"},{"line_number":888,"context_line":"                self._process_parameterized_template(vnffg_param,"},{"line_number":889,"context_line":"                                                    vnffgd_topology_template)"},{"line_number":890,"context_line":"                template_db_new.template[\u0027vnffgd\u0027][\u0027topology_template\u0027] \u003d \\"},{"line_number":891,"context_line":"                    vnffgd_topology_template"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"            # VNF-Members"},{"line_number":894,"context_line":"            vnf_members_new \u003d self._get_vnffg_property("}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_37731883","line":891,"range":{"start_line":883,"start_character":0,"end_line":891,"end_character":44},"in_reply_to":"3fa0c359_d4e192d2","updated":"2018-02-05 14:24:18.000000000","message":"Ok thanks I think I can fix that :)","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b2eb3da3d05811b8846356cd4b698c671008ef28","unresolved":false,"context_lines":[{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"    def _update_vnffg_post(self, context, n_sfc_chain_id,"},{"line_number":1114,"context_line":"                           classifiers_map, vnffg_dict):"},{"line_number":1115,"context_line":"        \u0027\u0027\u0027 "},{"line_number":1116,"context_line":"        \u0027\u0027\u0027"},{"line_number":1117,"context_line":"        nfp_dict \u003d self.get_nfp(context, vnffg_dict[\u0027forwarding_paths\u0027])"},{"line_number":1118,"context_line":"        sfc_id \u003d nfp_dict[\u0027chain_id\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"3fa0c359_7dd4f3bd","line":1115,"range":{"start_line":1115,"start_character":11,"end_line":1115,"end_character":12},"updated":"2018-02-07 03:51:35.000000000","message":"sorry,  please add docstr for this function.","commit_id":"2b824b01679ffd8b79f54121e00755f47635d065"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"dc951c3a062e4b8d292fa098d751408bb60bbfd0","unresolved":false,"context_lines":[{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"    def _update_vnffg_post(self, context, n_sfc_chain_id,"},{"line_number":1114,"context_line":"                           classifiers_map, vnffg_dict):"},{"line_number":1115,"context_line":"        \u0027\u0027\u0027 "},{"line_number":1116,"context_line":"        \u0027\u0027\u0027"},{"line_number":1117,"context_line":"        nfp_dict \u003d self.get_nfp(context, vnffg_dict[\u0027forwarding_paths\u0027])"},{"line_number":1118,"context_line":"        sfc_id \u003d nfp_dict[\u0027chain_id\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"3fa0c359_de341afe","line":1115,"range":{"start_line":1115,"start_character":11,"end_line":1115,"end_character":12},"in_reply_to":"3fa0c359_7dd4f3bd","updated":"2018-02-07 08:34:48.000000000","message":"Done","commit_id":"2b824b01679ffd8b79f54121e00755f47635d065"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b2eb3da3d05811b8846356cd4b698c671008ef28","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"                    else:"},{"line_number":1136,"context_line":"                        query_clsfr.update({\u0027status\u0027: constants.ERROR})"},{"line_number":1137,"context_line":"                else:"},{"line_number":1138,"context_line":"                    # TODO(gongysh) why we do this?"},{"line_number":1139,"context_line":"                    query_match \u003d ("},{"line_number":1140,"context_line":"                        self._model_query(context, ACLMatchCriteria)."},{"line_number":1141,"context_line":"                        filter(ACLMatchCriteria.vnffgc_id \u003d\u003d clsfr_id))"},{"line_number":1142,"context_line":"                    query_match.delete()"},{"line_number":1143,"context_line":"                    query_clsfr.delete()"},{"line_number":1144,"context_line":""},{"line_number":1145,"context_line":"    def _update_vnffg_status_post(self, context, vnffg, error\u003dFalse,"},{"line_number":1146,"context_line":"                                  db_state\u003dconstants.ERROR):"}],"source_content_type":"text/x-python","patch_set":40,"id":"3fa0c359_bdca7b17","line":1143,"range":{"start_line":1138,"start_character":0,"end_line":1143,"end_character":40},"updated":"2018-02-07 03:51:35.000000000","message":"why we do this?","commit_id":"2b824b01679ffd8b79f54121e00755f47635d065"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"dc951c3a062e4b8d292fa098d751408bb60bbfd0","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"                    else:"},{"line_number":1136,"context_line":"                        query_clsfr.update({\u0027status\u0027: constants.ERROR})"},{"line_number":1137,"context_line":"                else:"},{"line_number":1138,"context_line":"                    # TODO(gongysh) why we do this?"},{"line_number":1139,"context_line":"                    query_match \u003d ("},{"line_number":1140,"context_line":"                        self._model_query(context, ACLMatchCriteria)."},{"line_number":1141,"context_line":"                        filter(ACLMatchCriteria.vnffgc_id \u003d\u003d clsfr_id))"},{"line_number":1142,"context_line":"                    query_match.delete()"},{"line_number":1143,"context_line":"                    query_clsfr.delete()"},{"line_number":1144,"context_line":""},{"line_number":1145,"context_line":"    def _update_vnffg_status_post(self, context, vnffg, error\u003dFalse,"},{"line_number":1146,"context_line":"                                  db_state\u003dconstants.ERROR):"}],"source_content_type":"text/x-python","patch_set":40,"id":"3fa0c359_9e3e92d8","line":1143,"range":{"start_line":1138,"start_character":0,"end_line":1143,"end_character":40},"in_reply_to":"3fa0c359_bdca7b17","updated":"2018-02-07 08:34:48.000000000","message":"I added some comments here","commit_id":"2b824b01679ffd8b79f54121e00755f47635d065"}],"tacker/nfvo/drivers/vim/openstack_driver.py":[{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        neutronclient_.port_chain_delete(chain_id)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    def update_flow_classifier(self, chain_id, fc, auth_attr\u003dNone):"},{"line_number":568,"context_line":"        def _translate_ip_protocol(ip_proto):"},{"line_number":569,"context_line":"            if ip_proto \u003d\u003d \u00271\u0027:"},{"line_number":570,"context_line":"                return \u0027icmp\u0027"},{"line_number":571,"context_line":"            elif ip_proto \u003d\u003d \u00276\u0027:"},{"line_number":572,"context_line":"                return \u0027tcp\u0027"},{"line_number":573,"context_line":"            elif ip_proto \u003d\u003d \u002717\u0027:"},{"line_number":574,"context_line":"                return \u0027udp\u0027"},{"line_number":575,"context_line":"            else:"},{"line_number":576,"context_line":"                return None"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        if not auth_attr:"},{"line_number":579,"context_line":"            LOG.warning(\"auth information required for n-sfc driver\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_3a81e3c3","line":576,"range":{"start_line":568,"start_character":8,"end_line":576,"end_character":27},"updated":"2018-02-02 15:42:27.000000000","message":"We already have this function, https://github.com/openstack/tacker/blob/073407ff2737165f1b0ef04456f689cbbc5b466d/tacker/nfvo/drivers/vim/openstack_driver.py#L346. You should bring it out, and reuse it for both update and create flow classifier function.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"0ac9d925d60d766501c9a1e4cfc61f072c7384dd","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        neutronclient_.port_chain_delete(chain_id)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    def update_flow_classifier(self, chain_id, fc, auth_attr\u003dNone):"},{"line_number":568,"context_line":"        def _translate_ip_protocol(ip_proto):"},{"line_number":569,"context_line":"            if ip_proto \u003d\u003d \u00271\u0027:"},{"line_number":570,"context_line":"                return \u0027icmp\u0027"},{"line_number":571,"context_line":"            elif ip_proto \u003d\u003d \u00276\u0027:"},{"line_number":572,"context_line":"                return \u0027tcp\u0027"},{"line_number":573,"context_line":"            elif ip_proto \u003d\u003d \u002717\u0027:"},{"line_number":574,"context_line":"                return \u0027udp\u0027"},{"line_number":575,"context_line":"            else:"},{"line_number":576,"context_line":"                return None"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        if not auth_attr:"},{"line_number":579,"context_line":"            LOG.warning(\"auth information required for n-sfc driver\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_8a5218dd","line":576,"range":{"start_line":568,"start_character":8,"end_line":576,"end_character":27},"in_reply_to":"5f93b717_0af12801","updated":"2018-02-03 07:47:26.000000000","message":"Done","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        neutronclient_.port_chain_delete(chain_id)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    def update_flow_classifier(self, chain_id, fc, auth_attr\u003dNone):"},{"line_number":568,"context_line":"        def _translate_ip_protocol(ip_proto):"},{"line_number":569,"context_line":"            if ip_proto \u003d\u003d \u00271\u0027:"},{"line_number":570,"context_line":"                return \u0027icmp\u0027"},{"line_number":571,"context_line":"            elif ip_proto \u003d\u003d \u00276\u0027:"},{"line_number":572,"context_line":"                return \u0027tcp\u0027"},{"line_number":573,"context_line":"            elif ip_proto \u003d\u003d \u002717\u0027:"},{"line_number":574,"context_line":"                return \u0027udp\u0027"},{"line_number":575,"context_line":"            else:"},{"line_number":576,"context_line":"                return None"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        if not auth_attr:"},{"line_number":579,"context_line":"            LOG.warning(\"auth information required for n-sfc driver\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_0af12801","line":576,"range":{"start_line":568,"start_character":8,"end_line":576,"end_character":27},"in_reply_to":"5f93b717_3a81e3c3","updated":"2018-02-03 07:41:56.000000000","message":"I\u0027ll fix that.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        fc.update(match_dict)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        sfc_classifier_params \u003d {}"},{"line_number":588,"context_line":"        for field in fc:"},{"line_number":589,"context_line":"            if field in FC_MAP:"},{"line_number":590,"context_line":"                sfc_classifier_params[FC_MAP[field]] \u003d fc[field]"},{"line_number":591,"context_line":"            elif field \u003d\u003d \u0027ip_proto\u0027:"},{"line_number":592,"context_line":"                protocol \u003d _translate_ip_protocol(str(fc[field]))"},{"line_number":593,"context_line":"                if not protocol:"},{"line_number":594,"context_line":"                    raise ValueError(\u0027protocol %s not supported\u0027 % fc[field])"},{"line_number":595,"context_line":"                sfc_classifier_params[\u0027protocol\u0027] \u003d protocol"},{"line_number":596,"context_line":"            else:"},{"line_number":597,"context_line":"                LOG.warning(\"flow classifier %s not supported by \""},{"line_number":598,"context_line":"                            \"networking-sfc driver\", field)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"        neutronclient_ \u003d NeutronClient(auth_attr)"},{"line_number":601,"context_line":"        if fc_status \u003d\u003d constants.PENDING_UPDATE:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_ba2c13ac","line":598,"range":{"start_line":588,"start_character":8,"end_line":598,"end_character":59},"updated":"2018-02-02 15:42:27.000000000","message":"If possible, create the new function for both create and update flow-classifier function:\nhttps://github.com/openstack/tacker/blob/073407ff2737165f1b0ef04456f689cbbc5b466d/tacker/nfvo/drivers/vim/openstack_driver.py#L363","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"0ac9d925d60d766501c9a1e4cfc61f072c7384dd","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        fc.update(match_dict)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        sfc_classifier_params \u003d {}"},{"line_number":588,"context_line":"        for field in fc:"},{"line_number":589,"context_line":"            if field in FC_MAP:"},{"line_number":590,"context_line":"                sfc_classifier_params[FC_MAP[field]] \u003d fc[field]"},{"line_number":591,"context_line":"            elif field \u003d\u003d \u0027ip_proto\u0027:"},{"line_number":592,"context_line":"                protocol \u003d _translate_ip_protocol(str(fc[field]))"},{"line_number":593,"context_line":"                if not protocol:"},{"line_number":594,"context_line":"                    raise ValueError(\u0027protocol %s not supported\u0027 % fc[field])"},{"line_number":595,"context_line":"                sfc_classifier_params[\u0027protocol\u0027] \u003d protocol"},{"line_number":596,"context_line":"            else:"},{"line_number":597,"context_line":"                LOG.warning(\"flow classifier %s not supported by \""},{"line_number":598,"context_line":"                            \"networking-sfc driver\", field)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"        neutronclient_ \u003d NeutronClient(auth_attr)"},{"line_number":601,"context_line":"        if fc_status \u003d\u003d constants.PENDING_UPDATE:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_aa4d943b","line":598,"range":{"start_line":588,"start_character":8,"end_line":598,"end_character":59},"in_reply_to":"5f93b717_2af424f0","updated":"2018-02-03 07:47:26.000000000","message":"Done","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        fc.update(match_dict)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        sfc_classifier_params \u003d {}"},{"line_number":588,"context_line":"        for field in fc:"},{"line_number":589,"context_line":"            if field in FC_MAP:"},{"line_number":590,"context_line":"                sfc_classifier_params[FC_MAP[field]] \u003d fc[field]"},{"line_number":591,"context_line":"            elif field \u003d\u003d \u0027ip_proto\u0027:"},{"line_number":592,"context_line":"                protocol \u003d _translate_ip_protocol(str(fc[field]))"},{"line_number":593,"context_line":"                if not protocol:"},{"line_number":594,"context_line":"                    raise ValueError(\u0027protocol %s not supported\u0027 % fc[field])"},{"line_number":595,"context_line":"                sfc_classifier_params[\u0027protocol\u0027] \u003d protocol"},{"line_number":596,"context_line":"            else:"},{"line_number":597,"context_line":"                LOG.warning(\"flow classifier %s not supported by \""},{"line_number":598,"context_line":"                            \"networking-sfc driver\", field)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"        neutronclient_ \u003d NeutronClient(auth_attr)"},{"line_number":601,"context_line":"        if fc_status \u003d\u003d constants.PENDING_UPDATE:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_2af424f0","line":598,"range":{"start_line":588,"start_character":8,"end_line":598,"end_character":59},"in_reply_to":"5f93b717_ba2c13ac","updated":"2018-02-03 07:41:56.000000000","message":"I\u0027ll fix that","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":601,"context_line":"        if fc_status \u003d\u003d constants.PENDING_UPDATE:"},{"line_number":602,"context_line":"            fc_info \u003d neutronclient_.flow_classifier_show(fc_id)"},{"line_number":603,"context_line":"            for field in sfc_classifier_params:"},{"line_number":604,"context_line":"                if (fc_info[\u0027flow_classifier\u0027].get(field) is not None) and \\"},{"line_number":605,"context_line":"                        (sfc_classifier_params[field] \u003d\u003d fc_info["},{"line_number":606,"context_line":"                            \u0027flow_classifier\u0027][field]):"},{"line_number":607,"context_line":"                    continue"},{"line_number":608,"context_line":"                else:"},{"line_number":609,"context_line":"                    pc_info \u003d neutronclient_.port_chain_show(chain_id)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_7ac0cbe1","line":606,"range":{"start_line":604,"start_character":16,"end_line":606,"end_character":55},"updated":"2018-02-02 15:42:27.000000000","message":"need more comments, e.g. Keep the old flow-classifier when update fc is the same as the old one","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":601,"context_line":"        if fc_status \u003d\u003d constants.PENDING_UPDATE:"},{"line_number":602,"context_line":"            fc_info \u003d neutronclient_.flow_classifier_show(fc_id)"},{"line_number":603,"context_line":"            for field in sfc_classifier_params:"},{"line_number":604,"context_line":"                if (fc_info[\u0027flow_classifier\u0027].get(field) is not None) and \\"},{"line_number":605,"context_line":"                        (sfc_classifier_params[field] \u003d\u003d fc_info["},{"line_number":606,"context_line":"                            \u0027flow_classifier\u0027][field]):"},{"line_number":607,"context_line":"                    continue"},{"line_number":608,"context_line":"                else:"},{"line_number":609,"context_line":"                    pc_info \u003d neutronclient_.port_chain_show(chain_id)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_ead95c82","line":606,"range":{"start_line":604,"start_character":16,"end_line":606,"end_character":55},"in_reply_to":"5f93b717_7ac0cbe1","updated":"2018-02-03 07:41:56.000000000","message":"I\u0027ll fix that","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"0ac9d925d60d766501c9a1e4cfc61f072c7384dd","unresolved":false,"context_lines":[{"line_number":601,"context_line":"        if fc_status \u003d\u003d constants.PENDING_UPDATE:"},{"line_number":602,"context_line":"            fc_info \u003d neutronclient_.flow_classifier_show(fc_id)"},{"line_number":603,"context_line":"            for field in sfc_classifier_params:"},{"line_number":604,"context_line":"                if (fc_info[\u0027flow_classifier\u0027].get(field) is not None) and \\"},{"line_number":605,"context_line":"                        (sfc_classifier_params[field] \u003d\u003d fc_info["},{"line_number":606,"context_line":"                            \u0027flow_classifier\u0027][field]):"},{"line_number":607,"context_line":"                    continue"},{"line_number":608,"context_line":"                else:"},{"line_number":609,"context_line":"                    pc_info \u003d neutronclient_.port_chain_show(chain_id)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_4a62d0af","line":606,"range":{"start_line":604,"start_character":16,"end_line":606,"end_character":55},"in_reply_to":"5f93b717_ead95c82","updated":"2018-02-03 07:47:26.000000000","message":"Done","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                else:"},{"line_number":609,"context_line":"                    pc_info \u003d neutronclient_.port_chain_show(chain_id)"},{"line_number":610,"context_line":"                    current_fc_list \u003d pc_info[\u0027port_chain\u0027][\u0027flow_classifiers\u0027]"},{"line_number":611,"context_line":"                    current_fc_list.remove(fc_id)"},{"line_number":612,"context_line":"                    pc_id \u003d neutronclient_.port_chain_update(chain_id,"},{"line_number":613,"context_line":"                            {\u0027flow_classifiers\u0027: current_fc_list})"},{"line_number":614,"context_line":"                    if pc_id is None:"},{"line_number":615,"context_line":"                        raise nfvo.UpdateClassifierException("},{"line_number":616,"context_line":"                            message\u003d\"Failed to update classifiers\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_5aeb8f76","line":613,"range":{"start_line":611,"start_character":20,"end_line":613,"end_character":66},"updated":"2018-02-02 15:42:27.000000000","message":"Example:\n# Update flow-classifier by removing old flow-classifier and create new flow-classifier, then update port chain.\nBut I recommend to use flow_classifier_update(sfc_classifier_params) if it is possible.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                else:"},{"line_number":609,"context_line":"                    pc_info \u003d neutronclient_.port_chain_show(chain_id)"},{"line_number":610,"context_line":"                    current_fc_list \u003d pc_info[\u0027port_chain\u0027][\u0027flow_classifiers\u0027]"},{"line_number":611,"context_line":"                    current_fc_list.remove(fc_id)"},{"line_number":612,"context_line":"                    pc_id \u003d neutronclient_.port_chain_update(chain_id,"},{"line_number":613,"context_line":"                            {\u0027flow_classifiers\u0027: current_fc_list})"},{"line_number":614,"context_line":"                    if pc_id is None:"},{"line_number":615,"context_line":"                        raise nfvo.UpdateClassifierException("},{"line_number":616,"context_line":"                            message\u003d\"Failed to update classifiers\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_8ae4583d","line":613,"range":{"start_line":611,"start_character":20,"end_line":613,"end_character":66},"in_reply_to":"5f93b717_5aeb8f76","updated":"2018-02-03 07:41:56.000000000","message":"Check the comments in the new patchset and you will understand we I am not using flow_classifier_update :-).","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":625,"context_line":"                            message\u003d\"Failed to update classifiers\")"},{"line_number":626,"context_line":"                    break"},{"line_number":627,"context_line":"        else:"},{"line_number":628,"context_line":"            fc_id \u003d neutronclient_.flow_classifier_create("},{"line_number":629,"context_line":"                sfc_classifier_params)"},{"line_number":630,"context_line":"            if fc_id is None:"},{"line_number":631,"context_line":"                raise nfvo.UpdateClassifierException("},{"line_number":632,"context_line":"                    message\u003d\"Failed to update classifiers\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_ba7e53ac","line":629,"range":{"start_line":628,"start_character":12,"end_line":629,"end_character":38},"updated":"2018-02-02 15:42:27.000000000","message":"Example:\n# Create a new flow-classifier","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"0ac9d925d60d766501c9a1e4cfc61f072c7384dd","unresolved":false,"context_lines":[{"line_number":625,"context_line":"                            message\u003d\"Failed to update classifiers\")"},{"line_number":626,"context_line":"                    break"},{"line_number":627,"context_line":"        else:"},{"line_number":628,"context_line":"            fc_id \u003d neutronclient_.flow_classifier_create("},{"line_number":629,"context_line":"                sfc_classifier_params)"},{"line_number":630,"context_line":"            if fc_id is None:"},{"line_number":631,"context_line":"                raise nfvo.UpdateClassifierException("},{"line_number":632,"context_line":"                    message\u003d\"Failed to update classifiers\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_6a654cb4","line":629,"range":{"start_line":628,"start_character":12,"end_line":629,"end_character":38},"in_reply_to":"5f93b717_aadfd463","updated":"2018-02-03 07:47:26.000000000","message":"Done","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":625,"context_line":"                            message\u003d\"Failed to update classifiers\")"},{"line_number":626,"context_line":"                    break"},{"line_number":627,"context_line":"        else:"},{"line_number":628,"context_line":"            fc_id \u003d neutronclient_.flow_classifier_create("},{"line_number":629,"context_line":"                sfc_classifier_params)"},{"line_number":630,"context_line":"            if fc_id is None:"},{"line_number":631,"context_line":"                raise nfvo.UpdateClassifierException("},{"line_number":632,"context_line":"                    message\u003d\"Failed to update classifiers\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_aadfd463","line":629,"range":{"start_line":628,"start_character":12,"end_line":629,"end_character":38},"in_reply_to":"5f93b717_ba7e53ac","updated":"2018-02-03 07:41:56.000000000","message":"I\u0027ll fix that","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"5d34cd2b633802ca37994ea891a4df0fd14e3e18","unresolved":false,"context_lines":[{"line_number":627,"context_line":"            pc_info \u003d neutronclient.port_chain_show(chain_id)"},{"line_number":628,"context_line":"            current_fc_list \u003d pc_info[\u0027port_chain\u0027][\u0027flow_classifiers\u0027]"},{"line_number":629,"context_line":"            for fc_id in fc_ids:"},{"line_number":630,"context_line":"                current_fc_list.remove(fc_id)"},{"line_number":631,"context_line":"            pc_id \u003d neutronclient.port_chain_update(chain_id,"},{"line_number":632,"context_line":"                    {\u0027flow_classifiers\u0027: current_fc_list})"},{"line_number":633,"context_line":"            if pc_id is None:"}],"source_content_type":"text/x-python","patch_set":41,"id":"3fa0c359_5e6faa91","line":630,"range":{"start_line":630,"start_character":16,"end_line":630,"end_character":45},"updated":"2018-02-07 08:14:47.000000000","message":"error happens in here. There are no fc_id.","commit_id":"5a7c30a6e47a7e50df7ea123bf2764d4f81fa61a"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"dc951c3a062e4b8d292fa098d751408bb60bbfd0","unresolved":false,"context_lines":[{"line_number":627,"context_line":"            pc_info \u003d neutronclient.port_chain_show(chain_id)"},{"line_number":628,"context_line":"            current_fc_list \u003d pc_info[\u0027port_chain\u0027][\u0027flow_classifiers\u0027]"},{"line_number":629,"context_line":"            for fc_id in fc_ids:"},{"line_number":630,"context_line":"                current_fc_list.remove(fc_id)"},{"line_number":631,"context_line":"            pc_id \u003d neutronclient.port_chain_update(chain_id,"},{"line_number":632,"context_line":"                    {\u0027flow_classifiers\u0027: current_fc_list})"},{"line_number":633,"context_line":"            if pc_id is None:"}],"source_content_type":"text/x-python","patch_set":41,"id":"3fa0c359_7109772a","line":630,"range":{"start_line":630,"start_character":16,"end_line":630,"end_character":45},"in_reply_to":"3fa0c359_5e6faa91","updated":"2018-02-07 08:34:48.000000000","message":"Yes this is caused because of the other problem in the nfvo_plugin.py comment.","commit_id":"5a7c30a6e47a7e50df7ea123bf2764d4f81fa61a"}],"tacker/nfvo/nfvo_plugin.py":[{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3c336b6e773877bb40cd050c9b567b1f315eb194","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                                 \u0027template\u0027: {"},{"line_number":378,"context_line":"                                     \u0027vnffgd\u0027: vnffg_info[\u0027vnffgd_template\u0027]},"},{"line_number":379,"context_line":"                                 \u0027template_source\u0027: \u0027inline\u0027,"},{"line_number":380,"context_line":"                                 \u0027description\u0027: vnffg_old[\u0027description\u0027]}}"},{"line_number":381,"context_line":"            try:"},{"line_number":382,"context_line":"                vnffg_info[\u0027vnffgd_id\u0027] \u003d \\"},{"line_number":383,"context_line":"                    self.create_vnffgd(context, vnffgd).get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_2624735d","line":380,"range":{"start_line":380,"start_character":48,"end_line":380,"end_character":72},"updated":"2018-02-02 15:42:27.000000000","message":"I think it is better to set as vnffg_info","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"aca756c60a0bc288c4e0c341d2a79ce7875690f1","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                                 \u0027template\u0027: {"},{"line_number":378,"context_line":"                                     \u0027vnffgd\u0027: vnffg_info[\u0027vnffgd_template\u0027]},"},{"line_number":379,"context_line":"                                 \u0027template_source\u0027: \u0027inline\u0027,"},{"line_number":380,"context_line":"                                 \u0027description\u0027: vnffg_old[\u0027description\u0027]}}"},{"line_number":381,"context_line":"            try:"},{"line_number":382,"context_line":"                vnffg_info[\u0027vnffgd_id\u0027] \u003d \\"},{"line_number":383,"context_line":"                    self.create_vnffgd(context, vnffgd).get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f93b717_8abd3803","line":380,"range":{"start_line":380,"start_character":48,"end_line":380,"end_character":72},"in_reply_to":"5f93b717_2624735d","updated":"2018-02-03 07:41:56.000000000","message":"Here we cannot use the vnffg_info because the arrived dict doesn\u0027t have a key \u0027description\u0027 in it. In create_vnffg the arrived dict does have a \u0027description\u0027 key which is derived from the already created vnffgd and all this functionality exists in the tackerclient side.","commit_id":"290f9565daa1f80243f2b8c1c2bb8091f92b44af"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"6e0610b8f7b33a9a8e8e45cf416994354a6f6c6b","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                driver_type, \u0027update_chain\u0027,"},{"line_number":444,"context_line":"                vnfs\u003dsfc[\u0027chain\u0027], fc_ids\u003dfc_ids,"},{"line_number":445,"context_line":"                chain_id\u003dsfc[\u0027instance_id\u0027], auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":446,"context_line":"            for item in classifier_delete:"},{"line_number":447,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":448,"context_line":"                                         \u0027delete_flow_classifier\u0027,"},{"line_number":449,"context_line":"                                         fc_id\u003ditem[\u0027instance_id\u0027],"},{"line_number":450,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":451,"context_line":"        except Exception:"},{"line_number":452,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":453,"context_line":"                super(NfvoPlugin, self)._update_vnffg_status_post(context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_f4ab6e72","line":450,"range":{"start_line":446,"start_character":0,"end_line":450,"end_character":72},"updated":"2018-02-05 13:54:41.000000000","message":"I think moving delete flow-classifier before update flow-classifier is better. Because when we rename a flow-classifier, update flow-classifier can cause existing flow-classifier error in networking-sfc.","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"f5f90e73260faf145cab11200439e9d0c1a71a2c","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                driver_type, \u0027update_chain\u0027,"},{"line_number":444,"context_line":"                vnfs\u003dsfc[\u0027chain\u0027], fc_ids\u003dfc_ids,"},{"line_number":445,"context_line":"                chain_id\u003dsfc[\u0027instance_id\u0027], auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":446,"context_line":"            for item in classifier_delete:"},{"line_number":447,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":448,"context_line":"                                         \u0027delete_flow_classifier\u0027,"},{"line_number":449,"context_line":"                                         fc_id\u003ditem[\u0027instance_id\u0027],"},{"line_number":450,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":451,"context_line":"        except Exception:"},{"line_number":452,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":453,"context_line":"                super(NfvoPlugin, self)._update_vnffg_status_post(context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_236510b6","line":450,"range":{"start_line":446,"start_character":0,"end_line":450,"end_character":72},"in_reply_to":"3fa0c359_23219a4e","updated":"2018-02-05 22:08:06.000000000","message":"Thanks Phuoc for that you were right I refactored the code to resolve that issue, good review :)","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"d3638c9fb5b4fe1500a20ed2e7c20e015ba76e18","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                driver_type, \u0027update_chain\u0027,"},{"line_number":444,"context_line":"                vnfs\u003dsfc[\u0027chain\u0027], fc_ids\u003dfc_ids,"},{"line_number":445,"context_line":"                chain_id\u003dsfc[\u0027instance_id\u0027], auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":446,"context_line":"            for item in classifier_delete:"},{"line_number":447,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":448,"context_line":"                                         \u0027delete_flow_classifier\u0027,"},{"line_number":449,"context_line":"                                         fc_id\u003ditem[\u0027instance_id\u0027],"},{"line_number":450,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":451,"context_line":"        except Exception:"},{"line_number":452,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":453,"context_line":"                super(NfvoPlugin, self)._update_vnffg_status_post(context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_23219a4e","line":450,"range":{"start_line":446,"start_character":0,"end_line":450,"end_character":72},"in_reply_to":"3fa0c359_377d581c","updated":"2018-02-05 16:24:12.000000000","message":"ok I think I got your point let me think this a bit and i will reply to you shortly.Thanks!","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"e6a71585a940350be9deb751464782c187eb6cb3","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                driver_type, \u0027update_chain\u0027,"},{"line_number":444,"context_line":"                vnfs\u003dsfc[\u0027chain\u0027], fc_ids\u003dfc_ids,"},{"line_number":445,"context_line":"                chain_id\u003dsfc[\u0027instance_id\u0027], auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":446,"context_line":"            for item in classifier_delete:"},{"line_number":447,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":448,"context_line":"                                         \u0027delete_flow_classifier\u0027,"},{"line_number":449,"context_line":"                                         fc_id\u003ditem[\u0027instance_id\u0027],"},{"line_number":450,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":451,"context_line":"        except Exception:"},{"line_number":452,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":453,"context_line":"                super(NfvoPlugin, self)._update_vnffg_status_post(context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_f7be10fe","line":450,"range":{"start_line":446,"start_character":0,"end_line":450,"end_character":72},"in_reply_to":"3fa0c359_f4ab6e72","updated":"2018-02-05 14:24:18.000000000","message":"we do not have functionality to rename the classifiers because we use the names to determine if the classifiers are new or not. So the  problem you are reffering to is not the case here.","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"d9f3492ff265d67c2ae479e0c0d5ef39b5f07123","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                driver_type, \u0027update_chain\u0027,"},{"line_number":444,"context_line":"                vnfs\u003dsfc[\u0027chain\u0027], fc_ids\u003dfc_ids,"},{"line_number":445,"context_line":"                chain_id\u003dsfc[\u0027instance_id\u0027], auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":446,"context_line":"            for item in classifier_delete:"},{"line_number":447,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":448,"context_line":"                                         \u0027delete_flow_classifier\u0027,"},{"line_number":449,"context_line":"                                         fc_id\u003ditem[\u0027instance_id\u0027],"},{"line_number":450,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"},{"line_number":451,"context_line":"        except Exception:"},{"line_number":452,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":453,"context_line":"                super(NfvoPlugin, self)._update_vnffg_status_post(context,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3fa0c359_377d581c","line":450,"range":{"start_line":446,"start_character":0,"end_line":450,"end_character":72},"in_reply_to":"3fa0c359_f7be10fe","updated":"2018-02-05 14:32:54.000000000","message":"I think moving delete fc before update fc can solve the problem. Because when the name is different, it will delete and create fc again with new name. If we keep this order, when create new fc, its parameters already existed in the old one.","commit_id":"760e46d29a2dd8d150b26beb7cee547694f38893"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"82bc0f9c1d9e02ed1a61d462b8919a78c1a29f27","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            fc_ids \u003d []"},{"line_number":436,"context_line":"            for item in classifier_delete:"},{"line_number":437,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":438,"context_line":"                                         \u0027update_flow_classifier\u0027,"},{"line_number":439,"context_line":"                                         chain_id\u003dsfc[\u0027instance_id\u0027],"},{"line_number":440,"context_line":"                                         fc\u003ditem,"},{"line_number":441,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"}],"source_content_type":"text/x-python","patch_set":37,"id":"3fa0c359_6f8f79cc","line":438,"range":{"start_line":438,"start_character":42,"end_line":438,"end_character":48},"updated":"2018-02-06 01:56:21.000000000","message":"It should be delete I think :-)","commit_id":"f6588fb707822468f0d18003f59659286d6c8d46"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"77c878e700acc82244c2239995d4296462147c61","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            fc_ids \u003d []"},{"line_number":436,"context_line":"            for item in classifier_delete:"},{"line_number":437,"context_line":"                self._vim_drivers.invoke(driver_type,"},{"line_number":438,"context_line":"                                         \u0027update_flow_classifier\u0027,"},{"line_number":439,"context_line":"                                         chain_id\u003dsfc[\u0027instance_id\u0027],"},{"line_number":440,"context_line":"                                         fc\u003ditem,"},{"line_number":441,"context_line":"                                         auth_attr\u003dvim_obj[\u0027auth_cred\u0027])"}],"source_content_type":"text/x-python","patch_set":37,"id":"3fa0c359_60cb0353","line":438,"range":{"start_line":438,"start_character":42,"end_line":438,"end_character":48},"in_reply_to":"3fa0c359_6f8f79cc","updated":"2018-02-06 07:11:10.000000000","message":"the delete function doesn\u0027t suit here because we need to dissociate the classifiers from chain before deletion and with the delete function we cannot do that.However my implementation here is not acceptable for me either. :) So I will try to find a better way to do this.","commit_id":"f6588fb707822468f0d18003f59659286d6c8d46"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"5d34cd2b633802ca37994ea891a4df0fd14e3e18","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                context, classifier_id, fields\u003d[\u0027id\u0027, \u0027name\u0027, \u0027match\u0027,"},{"line_number":425,"context_line":"                    \u0027instance_id\u0027, \u0027status\u0027])"},{"line_number":426,"context_line":"            if classifier_dict[\u0027status\u0027] \u003d\u003d constants.PENDING_DELETE:"},{"line_number":427,"context_line":"                classifier_delete_ids.append(classifier_dict.pop(\u0027id\u0027))"},{"line_number":428,"context_line":"            else:"},{"line_number":429,"context_line":"                classifier_ids.append(classifier_dict.pop(\u0027id\u0027))"},{"line_number":430,"context_line":"                classifier_update.append(classifier_dict)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3fa0c359_3e4bbe2b","line":427,"range":{"start_line":427,"start_character":16,"end_line":427,"end_character":71},"updated":"2018-02-07 08:14:47.000000000","message":"It should be pop.(\u0027instance_id\u0027). When I update VNFFG, this will return id of classifier in Tacker database not id of classifier in networking_sfc.","commit_id":"5a7c30a6e47a7e50df7ea123bf2764d4f81fa61a"},{"author":{"_account_id":25505,"name":"Dimitrios Markou","email":"dimitrios.markou@att.com","username":"mardim"},"change_message_id":"dc951c3a062e4b8d292fa098d751408bb60bbfd0","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                context, classifier_id, fields\u003d[\u0027id\u0027, \u0027name\u0027, \u0027match\u0027,"},{"line_number":425,"context_line":"                    \u0027instance_id\u0027, \u0027status\u0027])"},{"line_number":426,"context_line":"            if classifier_dict[\u0027status\u0027] \u003d\u003d constants.PENDING_DELETE:"},{"line_number":427,"context_line":"                classifier_delete_ids.append(classifier_dict.pop(\u0027id\u0027))"},{"line_number":428,"context_line":"            else:"},{"line_number":429,"context_line":"                classifier_ids.append(classifier_dict.pop(\u0027id\u0027))"},{"line_number":430,"context_line":"                classifier_update.append(classifier_dict)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3fa0c359_d102cb09","line":427,"range":{"start_line":427,"start_character":16,"end_line":427,"end_character":71},"in_reply_to":"3fa0c359_3e4bbe2b","updated":"2018-02-07 08:34:48.000000000","message":"You are tottaly right it was a typo I fixed it. Good catch thank :)","commit_id":"5a7c30a6e47a7e50df7ea123bf2764d4f81fa61a"}]}
