)]}'
{"contrib/tacker-config/ns-clean.sh":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"670b3c8d5d2e932fbf69257024a8837aaa1abeda","unresolved":false,"context_lines":[{"line_number":16,"context_line":"for ns in NS1 NS2; do"},{"line_number":17,"context_line":"    network_service_id\u003d$(openstack ns list | grep $ns | awk \u0027{print $2}\u0027)"},{"line_number":18,"context_line":"    if [ -n \"$network_service_id\" ]; then"},{"line_number":19,"context_line":"        openstack ns delete $network_service_id"},{"line_number":20,"context_line":"    fi"},{"line_number":21,"context_line":"done"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"5f7c97a3_47be67af","line":19,"range":{"start_line":19,"start_character":8,"end_line":19,"end_character":47},"updated":"2018-08-01 04:43:03.000000000","message":"why not just openstack ns delete NS1 NS2?","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"729db709e6e4c39d42a895bc46d38456bdd7d7b8","unresolved":false,"context_lines":[{"line_number":16,"context_line":"for ns in NS1 NS2; do"},{"line_number":17,"context_line":"    network_service_id\u003d$(openstack ns list | grep $ns | awk \u0027{print $2}\u0027)"},{"line_number":18,"context_line":"    if [ -n \"$network_service_id\" ]; then"},{"line_number":19,"context_line":"        openstack ns delete $network_service_id"},{"line_number":20,"context_line":"    fi"},{"line_number":21,"context_line":"done"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"5f7c97a3_9794a836","line":19,"range":{"start_line":19,"start_character":8,"end_line":19,"end_character":47},"in_reply_to":"5f7c97a3_47be67af","updated":"2018-08-01 12:22:22.000000000","message":"I make a loop for that because we need to check each network service exists before deleting them.","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"670b3c8d5d2e932fbf69257024a8837aaa1abeda","unresolved":false,"context_lines":[{"line_number":32,"context_line":"for vnfd_name in sample-tosca-vnfd1 sample-tosca-vnfd2 sample-vnfd1 sample-vnfd2; do"},{"line_number":33,"context_line":"    vnfd_id\u003d$(openstack vnf descriptor list | grep $vnfd_name | awk \u0027{print $2}\u0027)"},{"line_number":34,"context_line":"    if [ -n \"$vnfd_id\" ]; then"},{"line_number":35,"context_line":"        openstack vnf descriptor delete $vnfd_id"},{"line_number":36,"context_line":"    fi"},{"line_number":37,"context_line":"done"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"5f7c97a3_27dd6b12","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":39},"updated":"2018-08-01 04:43:03.000000000","message":"openstack vnf descriptor delete sample-tosca-vnfd1 sample-tosca-vnfd2 sample-vnfd1 sample-vnfd2 ?","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"}],"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":"670b3c8d5d2e932fbf69257024a8837aaa1abeda","unresolved":false,"context_lines":[{"line_number":145,"context_line":"          - forwarder: VNFD2"},{"line_number":146,"context_line":"            capability: CP22"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"In above template, users can set **symmetric** in properties of a forwarding"},{"line_number":149,"context_line":"path create symmetrical VNFFG. If this property is not set, **symmetric**"},{"line_number":150,"context_line":"will be specified by **--symmetrical** in create VNFFG command."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_ba33d211","line":148,"range":{"start_line":148,"start_character":35,"end_line":148,"end_character":44},"updated":"2018-08-01 04:43:03.000000000","message":"sysmmetrical ?","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"729db709e6e4c39d42a895bc46d38456bdd7d7b8","unresolved":false,"context_lines":[{"line_number":145,"context_line":"          - forwarder: VNFD2"},{"line_number":146,"context_line":"            capability: CP22"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"In above template, users can set **symmetric** in properties of a forwarding"},{"line_number":149,"context_line":"path create symmetrical VNFFG. If this property is not set, **symmetric**"},{"line_number":150,"context_line":"will be specified by **--symmetrical** in create VNFFG command."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_d7a0e0a6","line":148,"range":{"start_line":148,"start_character":35,"end_line":148,"end_character":44},"in_reply_to":"5f7c97a3_ba33d211","updated":"2018-08-01 12:22:22.000000000","message":"Done","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"}],"tacker/db/nfvo/vnffg_db.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b1dd84318cc4fc42157e3cd0fe40c3f885376bbb","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d symmetrical_in_temp if symmetrical_in_temp \\"},{"line_number":363,"context_line":"            else vnffg[\u0027symmetrical\u0027]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":366,"context_line":"            template_db \u003d self._get_resource(context, VnffgTemplate,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_a76f80f8","line":363,"range":{"start_line":363,"start_character":17,"end_line":363,"end_character":22},"updated":"2018-07-28 02:51:14.000000000","message":"we can use vnffg.get","commit_id":"dd585e9b4e7aabb11d9b3100eb02d3f258d897ba"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"667098fabdbfe0948ea4b616183520a9cc43243e","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d symmetrical_in_temp if symmetrical_in_temp \\"},{"line_number":363,"context_line":"            else vnffg[\u0027symmetrical\u0027]"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":366,"context_line":"            template_db \u003d self._get_resource(context, VnffgTemplate,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_56f71b8f","line":363,"range":{"start_line":363,"start_character":17,"end_line":363,"end_character":22},"in_reply_to":"5f7c97a3_a76f80f8","updated":"2018-07-31 02:02:39.000000000","message":"Done","commit_id":"dd585e9b4e7aabb11d9b3100eb02d3f258d897ba"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b1dd84318cc4fc42157e3cd0fe40c3f885376bbb","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"            vnffgd_template \u003d self.get_vnffgd(context, vnffg.get(\u0027vnffgd_id\u0027))"},{"line_number":1336,"context_line":"            vnffgd_topo \u003d vnffgd_template[\u0027template\u0027][\u0027vnffgd\u0027]["},{"line_number":1337,"context_line":"                \u0027topology_template\u0027]"},{"line_number":1338,"context_line":"        vnffg_name \u003d list(vnffgd_topo[\u0027groups\u0027].keys())[0]"},{"line_number":1339,"context_line":"        nfp_name \u003d vnffgd_topo[\u0027groups\u0027][vnffg_name][\u0027members\u0027][0]"},{"line_number":1340,"context_line":"        fp_prop \u003d vnffgd_topo[\u0027node_templates\u0027][nfp_name][\u0027properties\u0027]"},{"line_number":1341,"context_line":"        return fp_prop.get(\u0027symmetric\u0027, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_c764fc22","line":1338,"range":{"start_line":1338,"start_character":52,"end_line":1338,"end_character":56},"updated":"2018-07-28 02:51:14.000000000","message":"are you assuming vnffgd just have one vnffg?","commit_id":"dd585e9b4e7aabb11d9b3100eb02d3f258d897ba"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"667098fabdbfe0948ea4b616183520a9cc43243e","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"            vnffgd_template \u003d self.get_vnffgd(context, vnffg.get(\u0027vnffgd_id\u0027))"},{"line_number":1336,"context_line":"            vnffgd_topo \u003d vnffgd_template[\u0027template\u0027][\u0027vnffgd\u0027]["},{"line_number":1337,"context_line":"                \u0027topology_template\u0027]"},{"line_number":1338,"context_line":"        vnffg_name \u003d list(vnffgd_topo[\u0027groups\u0027].keys())[0]"},{"line_number":1339,"context_line":"        nfp_name \u003d vnffgd_topo[\u0027groups\u0027][vnffg_name][\u0027members\u0027][0]"},{"line_number":1340,"context_line":"        fp_prop \u003d vnffgd_topo[\u0027node_templates\u0027][nfp_name][\u0027properties\u0027]"},{"line_number":1341,"context_line":"        return fp_prop.get(\u0027symmetric\u0027, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_d63fab20","line":1338,"range":{"start_line":1338,"start_character":52,"end_line":1338,"end_character":56},"in_reply_to":"5f7c97a3_c764fc22","updated":"2018-07-31 02:02:39.000000000","message":"Because we assumed one NFP per VNFFG (https://github.com/openstack/tacker/blob/master/tacker/db/nfvo/vnffg_db.py#L457).","commit_id":"dd585e9b4e7aabb11d9b3100eb02d3f258d897ba"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b1dd84318cc4fc42157e3cd0fe40c3f885376bbb","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"            vnffgd_topo \u003d vnffgd_template[\u0027template\u0027][\u0027vnffgd\u0027]["},{"line_number":1337,"context_line":"                \u0027topology_template\u0027]"},{"line_number":1338,"context_line":"        vnffg_name \u003d list(vnffgd_topo[\u0027groups\u0027].keys())[0]"},{"line_number":1339,"context_line":"        nfp_name \u003d vnffgd_topo[\u0027groups\u0027][vnffg_name][\u0027members\u0027][0]"},{"line_number":1340,"context_line":"        fp_prop \u003d vnffgd_topo[\u0027node_templates\u0027][nfp_name][\u0027properties\u0027]"},{"line_number":1341,"context_line":"        return fp_prop.get(\u0027symmetric\u0027, None)"},{"line_number":1342,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_e769f8f6","line":1339,"range":{"start_line":1339,"start_character":64,"end_line":1339,"end_character":65},"updated":"2018-07-28 02:51:14.000000000","message":"onely one?","commit_id":"dd585e9b4e7aabb11d9b3100eb02d3f258d897ba"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"bb3d9ce5d923bbd72f7d5937ee5d2a623076b0f2","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        template_id \u003d vnffg[\u0027vnffgd_id\u0027]"},{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d symmetrical_in_temp if symmetrical_in_temp \\"},{"line_number":363,"context_line":"            else vnffg.get(\u0027symmetrical\u0027)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":366,"context_line":"            template_db \u003d self._get_resource(context, VnffgTemplate,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e53c672e","line":363,"range":{"start_line":362,"start_character":8,"end_line":363,"end_character":41},"updated":"2018-07-31 08:24:01.000000000","message":"What if user gives symmentrical in argument too?\nShould it be ignored?\n\nIMO, it should be like:\n\nsymmetrical \u003d vnffg.get(\u0027symmetrical\u0027) if vnffg.get(\u0027symmetrical\u0027) else symmetrical_in_temp\n\nThoughts?","commit_id":"e9b33b9c2da270bcdb5b57c7aed1e11f78aef9cf"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"cde8726540d5f47c6800eb9530acbd2fc15ab754","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        template_id \u003d vnffg[\u0027vnffgd_id\u0027]"},{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d symmetrical_in_temp if symmetrical_in_temp \\"},{"line_number":363,"context_line":"            else vnffg.get(\u0027symmetrical\u0027)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":366,"context_line":"            template_db \u003d self._get_resource(context, VnffgTemplate,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_816a4215","line":363,"range":{"start_line":362,"start_character":8,"end_line":363,"end_character":41},"in_reply_to":"5f7c97a3_e53c672e","updated":"2018-07-31 12:26:00.000000000","message":"Done","commit_id":"e9b33b9c2da270bcdb5b57c7aed1e11f78aef9cf"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"333ee12f93db24264278715f52baabee4295af51","unresolved":false,"context_lines":[{"line_number":1349,"context_line":"        vnffg_name \u003d list(vnffgd_topo[\u0027groups\u0027].keys())[0]"},{"line_number":1350,"context_line":"        nfp_name \u003d vnffgd_topo[\u0027groups\u0027][vnffg_name][\u0027members\u0027][0]"},{"line_number":1351,"context_line":"        fp_prop \u003d vnffgd_topo[\u0027node_templates\u0027][nfp_name][\u0027properties\u0027]"},{"line_number":1352,"context_line":"        return fp_prop.get(\u0027symmetric\u0027, None)"},{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"    def _make_template_dict(self, template, fields\u003dNone):"},{"line_number":1355,"context_line":"        res \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_4f053a67","line":1352,"range":{"start_line":1352,"start_character":28,"end_line":1352,"end_character":37},"updated":"2018-07-31 06:34:02.000000000","message":"why now we use symmetric instead of symmetrical ? what is it before?","commit_id":"e9b33b9c2da270bcdb5b57c7aed1e11f78aef9cf"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"98385ac11cbe5f3258e7f47dc93faa0271b6ea50","unresolved":false,"context_lines":[{"line_number":1349,"context_line":"        vnffg_name \u003d list(vnffgd_topo[\u0027groups\u0027].keys())[0]"},{"line_number":1350,"context_line":"        nfp_name \u003d vnffgd_topo[\u0027groups\u0027][vnffg_name][\u0027members\u0027][0]"},{"line_number":1351,"context_line":"        fp_prop \u003d vnffgd_topo[\u0027node_templates\u0027][nfp_name][\u0027properties\u0027]"},{"line_number":1352,"context_line":"        return fp_prop.get(\u0027symmetric\u0027, None)"},{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"    def _make_template_dict(self, template, fields\u003dNone):"},{"line_number":1355,"context_line":"        res \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_2f06be22","line":1352,"range":{"start_line":1352,"start_character":28,"end_line":1352,"end_character":37},"in_reply_to":"5f7c97a3_4f053a67","updated":"2018-07-31 06:55:26.000000000","message":"\u0027symmetric\u0027 is similar to \u0027symmetrical\u0027, I think the shorter name is better, but I can change it later. In the past, we only add \u0027symmetrical\u0027 by using \u0027--symmetrical\u0027 in create VNFFG command, so it is hard to manage multiple VNFFGs in NSD. Adding \u0027symmetric\u0027 to forwarding path parameter makes it easy to create VNFFGs with different \u0027symmetrical\u0027 in NSD.","commit_id":"e9b33b9c2da270bcdb5b57c7aed1e11f78aef9cf"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"cde8726540d5f47c6800eb9530acbd2fc15ab754","unresolved":false,"context_lines":[{"line_number":1349,"context_line":"        vnffg_name \u003d list(vnffgd_topo[\u0027groups\u0027].keys())[0]"},{"line_number":1350,"context_line":"        nfp_name \u003d vnffgd_topo[\u0027groups\u0027][vnffg_name][\u0027members\u0027][0]"},{"line_number":1351,"context_line":"        fp_prop \u003d vnffgd_topo[\u0027node_templates\u0027][nfp_name][\u0027properties\u0027]"},{"line_number":1352,"context_line":"        return fp_prop.get(\u0027symmetric\u0027, None)"},{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"    def _make_template_dict(self, template, fields\u003dNone):"},{"line_number":1355,"context_line":"        res \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_215fae75","line":1352,"range":{"start_line":1352,"start_character":28,"end_line":1352,"end_character":37},"in_reply_to":"5f7c97a3_4f053a67","updated":"2018-07-31 12:26:00.000000000","message":"Done","commit_id":"e9b33b9c2da270bcdb5b57c7aed1e11f78aef9cf"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"adac1d96a0a298b78ce5d2f089ddc45cb799f6ea","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d vnffg.get(\u0027symmetrical\u0027) if vnffg.get(\u0027symmetrical\u0027) \\"},{"line_number":363,"context_line":"            else symmetrical_in_temp"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":366,"context_line":"            template_db \u003d self._get_resource(context, VnffgTemplate,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_9d0a901b","line":363,"range":{"start_line":363,"start_character":17,"end_line":363,"end_character":36},"updated":"2018-08-01 04:44:51.000000000","message":"let specific sysmetrical_in_temp over  general one","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"729db709e6e4c39d42a895bc46d38456bdd7d7b8","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d vnffg.get(\u0027symmetrical\u0027) if vnffg.get(\u0027symmetrical\u0027) \\"},{"line_number":363,"context_line":"            else symmetrical_in_temp"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":366,"context_line":"            template_db \u003d self._get_resource(context, VnffgTemplate,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_b79d246d","line":363,"range":{"start_line":363,"start_character":17,"end_line":363,"end_character":36},"in_reply_to":"5f7c97a3_9d0a901b","updated":"2018-08-01 12:22:22.000000000","message":"Done\n\nHi Dkushwaha, I rethink about the order here. Currently, as input of --symmetrical, it always be true or false (https://github.com/openstack/python-tackerclient/blob/master/tackerclient/tacker/v1_0/nfvo/vnffg.py#L118), therefore the value of \u0027symmetrical_in_temp\u0027 always is not considered. I updated the doc to notice users about this case.","commit_id":"5b9fe4785c23167816b00b337353d6e8f8a97370"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"2c62d8708a70f2a593bf174ae46d3f5dcc91ecad","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        template_id \u003d vnffg[\u0027vnffgd_id\u0027]"},{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d symmetrical_in_temp if symmetrical_in_temp \\"},{"line_number":363,"context_line":"            else vnffg.get(\u0027symmetrical\u0027)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_6cf23109","line":362,"range":{"start_line":362,"start_character":45,"end_line":362,"end_character":64},"updated":"2018-08-06 02:32:35.000000000","message":"if symmetrical_in_temp is not None","commit_id":"1060b63d4d60408a5e66d737a3e5b53cfb362452"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"3d9bd970b589d10557bb1cfebd6a014da201e0cb","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        template_id \u003d vnffg[\u0027vnffgd_id\u0027]"},{"line_number":360,"context_line":"        ns_id \u003d vnffg.get(\u0027ns_id\u0027, None)"},{"line_number":361,"context_line":"        symmetrical_in_temp \u003d self._get_symmetrical_template(context, vnffg)"},{"line_number":362,"context_line":"        symmetrical \u003d symmetrical_in_temp if symmetrical_in_temp \\"},{"line_number":363,"context_line":"            else vnffg.get(\u0027symmetrical\u0027)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_70d99b81","line":362,"range":{"start_line":362,"start_character":45,"end_line":362,"end_character":64},"in_reply_to":"3f79a3b5_6cf23109","updated":"2018-08-06 11:09:45.000000000","message":"Done","commit_id":"1060b63d4d60408a5e66d737a3e5b53cfb362452"}]}
