)]}'
{"samples/tosca-templates/vnfd/tosca-vnfd-block-attach.yaml":[{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"bfd6388e778059bbf9bbbd69426227b853dcd15e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"  node_templates:"},{"line_number":10,"context_line":"    VDU1:"},{"line_number":11,"context_line":"      type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":12,"context_line":"      #requirements:"},{"line_number":13,"context_line":"      #  - local_storage:"},{"line_number":14,"context_line":"      #      node: VB1"},{"line_number":15,"context_line":"      #      relationship:"},{"line_number":16,"context_line":"      #        type: tosca.relationships.AttachesTo"},{"line_number":17,"context_line":"      #        location: /dev/vdb"},{"line_number":18,"context_line":"      #        delete_on_termination: false"},{"line_number":19,"context_line":" "},{"line_number":20,"context_line":"      capabilities:"},{"line_number":21,"context_line":"        nfv_compute:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f1d235d_b1ed8eb8","line":18,"range":{"start_line":12,"start_character":0,"end_line":18,"end_character":43},"updated":"2017-07-05 11:14:11.000000000","message":"Can we remove this?","commit_id":"b6e3234c6c760543b1db4942959e060179d7ca0d"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"bfd6388e778059bbf9bbbd69426227b853dcd15e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      #        type: tosca.relationships.AttachesTo"},{"line_number":17,"context_line":"      #        location: /dev/vdb"},{"line_number":18,"context_line":"      #        delete_on_termination: false"},{"line_number":19,"context_line":" "},{"line_number":20,"context_line":"      capabilities:"},{"line_number":21,"context_line":"        nfv_compute:"},{"line_number":22,"context_line":"          properties:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f1d235d_71d93655","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":1},"updated":"2017-07-05 11:14:11.000000000","message":"nit: remove this","commit_id":"b6e3234c6c760543b1db4942959e060179d7ca0d"},{"author":{"_account_id":26222,"name":"Cong Phuoc Hoang","email":"hoangphuocbk2.07@gmail.com","username":"hoangphuoc"},"change_message_id":"641a5af42088385826b52f4132172ca30342d54d","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    VB1:"},{"line_number":39,"context_line":"      type: tosca.nodes.BlockStorage.Tacker"},{"line_number":40,"context_line":"      properties:"},{"line_number":41,"context_line":"        size: 1 GB"},{"line_number":42,"context_line":"        image: cirros-0.3.5-x86_64-disk"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff346bd7_58a59c03","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":16},"updated":"2017-07-25 15:18:04.000000000","message":"I think you should add availability_zone here when we have many zones. You also change tosca lib if necessary.","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"cffae4ce8f89cc03c000dfe2d5f820234d500968","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    VB1:"},{"line_number":39,"context_line":"      type: tosca.nodes.BlockStorage.Tacker"},{"line_number":40,"context_line":"      properties:"},{"line_number":41,"context_line":"        size: 1 GB"},{"line_number":42,"context_line":"        image: cirros-0.3.5-x86_64-disk"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff346bd7_c9352348","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":16},"in_reply_to":"ff346bd7_58a59c03","updated":"2017-07-26 08:51:41.000000000","message":"sure, will update that","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"}],"tacker/tests/functional/vnfm/test_tosca_vnf_block_storage.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b713e4034c109806862ce0badad1f793cc10a56a","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class VnfBlockStorageTestToscaCreate(base.BaseTackerTest):"},{"line_number":30,"context_line":"    def _test_create_vnf(self, vnfd_file, vnf_name,"},{"line_number":31,"context_line":"                         template_source\u003d\"onboarded\"):"},{"line_number":32,"context_line":"        data \u003d dict()"},{"line_number":33,"context_line":"        values_str \u003d read_file(vnfd_file)"},{"line_number":34,"context_line":"        data[\u0027tosca\u0027] \u003d values_str"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_bd4a5152","line":31,"range":{"start_line":30,"start_character":4,"end_line":31,"end_character":54},"updated":"2017-07-03 03:01:44.000000000","message":"can you help to refactor this method with other test class to avoid duplicates?","commit_id":"be7b47f199a3a6c13ea0ec1b696b4f0166641b25"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b713e4034c109806862ce0badad1f793cc10a56a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                server_volumes \u003d self.novaclient().volumes\\"},{"line_number":124,"context_line":"                    .get_server_volumes(server_id)"},{"line_number":125,"context_line":"                self.assertTrue(len(server_volumes) \u003e 0)"},{"line_number":126,"context_line":"        port_list \u003d self.neutronclient().list_ports()[\u0027ports\u0027]"},{"line_number":127,"context_line":"        vdu_ports \u003d []"},{"line_number":128,"context_line":"        for port in port_list:"},{"line_number":129,"context_line":"            vdu_ports.append(port[\u0027name\u0027])"},{"line_number":130,"context_line":"        self.assertIn(\u0027test-cp\u0027, vdu_ports)"},{"line_number":131,"context_line":"        self._test_delete_vnf(vnf_id)"},{"line_number":132,"context_line":"        if template_source \u003d\u003d \"onboarded\":"},{"line_number":133,"context_line":"            self._test_cleanup_vnfd(vnfd_id, vnf_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_fd3b29ce","line":130,"range":{"start_line":126,"start_character":0,"end_line":130,"end_character":43},"updated":"2017-07-03 03:01:44.000000000","message":"no need to test the ports here.","commit_id":"be7b47f199a3a6c13ea0ec1b696b4f0166641b25"}],"tacker/tests/unit/vnfm/infra_drivers/openstack/data/tosca_block_storage.yaml":[{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"bfd6388e778059bbf9bbbd69426227b853dcd15e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"  node_templates:"},{"line_number":10,"context_line":"    VDU1:"},{"line_number":11,"context_line":"      type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":12,"context_line":"      #requirements:"},{"line_number":13,"context_line":"      #  - local_storage:"},{"line_number":14,"context_line":"      #      node: VB1"},{"line_number":15,"context_line":"      #      relationship:"},{"line_number":16,"context_line":"      #        type: tosca.relationships.AttachesTo"},{"line_number":17,"context_line":"      #        location: /dev/vdb"},{"line_number":18,"context_line":"      #        delete_on_termination: false"},{"line_number":19,"context_line":" "},{"line_number":20,"context_line":"      capabilities:"},{"line_number":21,"context_line":"        nfv_compute:"},{"line_number":22,"context_line":"          properties:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f1d235d_31d3bed7","line":19,"range":{"start_line":12,"start_character":0,"end_line":19,"end_character":1},"updated":"2017-07-05 11:14:11.000000000","message":"same","commit_id":"b6e3234c6c760543b1db4942959e060179d7ca0d"}],"tacker/tests/unit/vnfm/tosca/test_utils.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5f016055008d2e24e206e1bf6f6badfcd1724afc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def _get_template(name):"},{"line_number":26,"context_line":"    filename \u003d os.path.join("},{"line_number":27,"context_line":"        os.path.dirname(os.path.abspath(__file__)),"},{"line_number":28,"context_line":"        \"../infra_drivers/openstack/data/\", name)"},{"line_number":29,"context_line":"    f \u003d codecs.open(filename, encoding\u003d\u0027utf-8\u0027, errors\u003d\u0027strict\u0027)"},{"line_number":30,"context_line":"    return f.read()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_c5fe6804","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":42},"updated":"2017-07-10 22:10:28.000000000","message":"our unit tests on this file do work before?","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"769ddc508851a4d6b4bd00da19dc94027998fdf5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def _get_template(name):"},{"line_number":26,"context_line":"    filename \u003d os.path.join("},{"line_number":27,"context_line":"        os.path.dirname(os.path.abspath(__file__)),"},{"line_number":28,"context_line":"        \"../infra_drivers/openstack/data/\", name)"},{"line_number":29,"context_line":"    f \u003d codecs.open(filename, encoding\u003d\u0027utf-8\u0027, errors\u003d\u0027strict\u0027)"},{"line_number":30,"context_line":"    return f.read()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_d48398a8","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":42},"in_reply_to":"3f1d235d_c5fe6804","updated":"2017-07-11 17:55:09.000000000","message":"Yup, it wasn\u0027t working.","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"}],"tacker/tosca/utils.py":[{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"bfd6388e778059bbf9bbbd69426227b853dcd15e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        for prop_name, prop_value in block_properties.items():"},{"line_number":184,"context_line":"            if prop_name \u003d\u003d \u0027size\u0027:"},{"line_number":185,"context_line":"                prop_value \u003d \\"},{"line_number":186,"context_line":"                    re.compile(\u0027(\\d+)\\s*(\\w+)\u0027).match(prop_value).groups()[0]"},{"line_number":187,"context_line":"            volume_dict[node_name][prop_name] \u003d prop_value"},{"line_number":188,"context_line":"        del node_tpl[node_name]"},{"line_number":189,"context_line":"    return volume_dict"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f1d235d_7cc22d5b","line":186,"range":{"start_line":186,"start_character":20,"end_line":186,"end_character":77},"updated":"2017-07-05 11:14:11.000000000","message":"is the supported value GB only?\nif no, how to differenciate between \"size: 1 GB\" and \"size: 1024 MB\"","commit_id":"b6e3234c6c760543b1db4942959e060179d7ca0d"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"2e3d625e5cfc483c015f81ebe81cc33703a28066","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        for prop_name, prop_value in block_properties.items():"},{"line_number":184,"context_line":"            if prop_name \u003d\u003d \u0027size\u0027:"},{"line_number":185,"context_line":"                prop_value \u003d \\"},{"line_number":186,"context_line":"                    re.compile(\u0027(\\d+)\\s*(\\w+)\u0027).match(prop_value).groups()[0]"},{"line_number":187,"context_line":"            volume_dict[node_name][prop_name] \u003d prop_value"},{"line_number":188,"context_line":"        del node_tpl[node_name]"},{"line_number":189,"context_line":"    return volume_dict"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f1d235d_0a135668","line":186,"range":{"start_line":186,"start_character":20,"end_line":186,"end_character":77},"in_reply_to":"3f1d235d_7cc22d5b","updated":"2017-07-10 17:36:49.000000000","message":"It accepts only GB","commit_id":"b6e3234c6c760543b1db4942959e060179d7ca0d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5f016055008d2e24e206e1bf6f6badfcd1724afc","unresolved":false,"context_lines":[{"line_number":174,"context_line":"def get_volumes(template):"},{"line_number":175,"context_line":"    volume_dict \u003d dict()"},{"line_number":176,"context_line":"    node_tpl \u003d template[\u0027topology_template\u0027][\u0027node_templates\u0027]"},{"line_number":177,"context_line":"    for node_name in list(node_tpl.keys()):"},{"line_number":178,"context_line":"        node_value \u003d node_tpl[node_name]"},{"line_number":179,"context_line":"        if node_value[\u0027type\u0027] !\u003d BLOCKSTORAGE:"},{"line_number":180,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_a5780c8f","line":177,"range":{"start_line":177,"start_character":21,"end_line":177,"end_character":42},"updated":"2017-07-10 22:10:28.000000000","message":"why do this: list()","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5f016055008d2e24e206e1bf6f6badfcd1724afc","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                prop_value \u003d \\"},{"line_number":186,"context_line":"                    re.compile(\u0027(\\d+)\\s*(\\w+)\u0027).match(prop_value).groups()[0]"},{"line_number":187,"context_line":"            volume_dict[node_name][prop_name] \u003d prop_value"},{"line_number":188,"context_line":"        del node_tpl[node_name]"},{"line_number":189,"context_line":"    return volume_dict"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_6572f4af","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":31},"updated":"2017-07-10 22:10:28.000000000","message":"what is the main reason to delete the node_name during iteration?","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"769ddc508851a4d6b4bd00da19dc94027998fdf5","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                prop_value \u003d \\"},{"line_number":186,"context_line":"                    re.compile(\u0027(\\d+)\\s*(\\w+)\u0027).match(prop_value).groups()[0]"},{"line_number":187,"context_line":"            volume_dict[node_name][prop_name] \u003d prop_value"},{"line_number":188,"context_line":"        del node_tpl[node_name]"},{"line_number":189,"context_line":"    return volume_dict"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_b42edca2","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":31},"in_reply_to":"3f1d235d_6572f4af","updated":"2017-07-11 17:55:09.000000000","message":"To remove the block storage details from the template before it was translated. And here list(node_tpl.keys()) will return a copy of keys of node_tpl. So we are actually iterating through copy of keys() but not iterating through node_tpl.","commit_id":"ca9cc6441e5f90930ad97592acafa1f9a859eea2"}]}
