)]}'
{"doc/source/db.rst":[{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"2b6990148f49e1e439f65d33167d66298462c22b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"This will downgrade an existing database from the current version to the"},{"line_number":59,"context_line":"specified VERSION."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Exporting and Existing Database"},{"line_number":62,"context_line":"--------------------------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    glance-manage db_export_metadefs \u003cMETADEFS_DIRECTORY\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baa201ad_6c2b8294","line":61,"updated":"2014-10-03 10:39:17.000000000","message":"Exporting an existing database wouldn\u0027t be better?","commit_id":"f34be7a72f6d9595f661f2a6eb34cf99cf9dce46"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"2b6990148f49e1e439f65d33167d66298462c22b","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"This will dump an existing metadefs objects from current database to"},{"line_number":67,"context_line":"METADEFS_DIRECTORY as .json files."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"baa201ad_ec3f72d4","line":68,"updated":"2014-10-03 10:39:17.000000000","message":"remove one blank line","commit_id":"f34be7a72f6d9595f661f2a6eb34cf99cf9dce46"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"96f15726bd15339259fffd0390d7328608b3e6e9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    glance-manage db_export_metadefs \u003cMETADEFS_DIRECTORY\u003e"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"This will dump an existing metadefs objects from current database to"},{"line_number":68,"context_line":"METADEFS_DIRECTORY as .json files."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a8c0949_63475620","line":68,"updated":"2014-10-31 17:47:05.000000000","message":"How about:  \"This will export all existing metadata definitions in the database to METADEFS_DIRECTORY as .json files.\"","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8013306682bfb8e167d4fab7f16b16f408a362ec","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    glance-manage db_export_metadefs \u003cMETADEFS_DIRECTORY\u003e"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"This will dump an existing metadefs objects from current database to"},{"line_number":68,"context_line":"METADEFS_DIRECTORY as .json files."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a890539_60ad1384","line":68,"in_reply_to":"7a8c0949_63475620","updated":"2014-11-24 14:09:58.000000000","message":"Done","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"}],"doc/source/man/glancemanage.rst":[{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"46de2baa7811b565cf304b4ac1397fbdc6535b84","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  **db_version_control**"},{"line_number":58,"context_line":"        Place the database untder migration control."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"  **db_sync \u003cVERSION\u003e \u003cCURRENT_VERSION\u003e**"},{"line_number":61,"context_line":"        Place a database under migration control and upgrade, creating"},{"line_number":62,"context_line":"        it first if necessary."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"baa201ad_ace1ead1","side":"PARENT","line":60,"updated":"2014-10-03 10:19:38.000000000","message":"Why did you remove documentation for db_sync?","commit_id":"e588632f98510443b928c595eb4badf346f4be44"},{"author":{"_account_id":12814,"name":"Bartosz Fic","email":"bartosz.fic@intel.com","username":"bartosz-fic"},"change_message_id":"4d2bb9bcbad41004810998239a7fc2b38e089922","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"  **db_version_control**"},{"line_number":58,"context_line":"        Place the database untder migration control."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"  **db_export_metadefs \u003cMETADEFS_DIRECTORY\u003e**"},{"line_number":61,"context_line":"        Dump metadefs from database to .json files."},{"line_number":62,"context_line":"        METADEFS_DIRECTORY is mandatory."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baa201ad_ec02126e","line":59,"updated":"2014-10-03 10:21:20.000000000","message":"Why documentation for db_sync were removed ? You should add db_export_metadefs rather than replace it.","commit_id":"f34be7a72f6d9595f661f2a6eb34cf99cf9dce46"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"96f15726bd15339259fffd0390d7328608b3e6e9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        it first if necessary."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  **db_export_metadefs \u003cMETADEFS_DIRECTORY\u003e**"},{"line_number":65,"context_line":"        Dump metadefs from database to .json files."},{"line_number":66,"context_line":"        METADEFS_DIRECTORY is mandatory."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a8c0949_035f72e6","line":65,"updated":"2014-10-31 17:47:05.000000000","message":"\"Export metadata definitions from the database as .json files to the specified directory.\"","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8013306682bfb8e167d4fab7f16b16f408a362ec","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        it first if necessary."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  **db_export_metadefs \u003cMETADEFS_DIRECTORY\u003e**"},{"line_number":65,"context_line":"        Dump metadefs from database to .json files."},{"line_number":66,"context_line":"        METADEFS_DIRECTORY is mandatory."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a890539_a0ca9b4c","line":65,"in_reply_to":"7a8c0949_035f72e6","updated":"2014-11-24 14:09:58.000000000","message":"Done","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"}],"glance/common/exception.py":[{"author":{"_account_id":5347,"name":"Eddie Sheffield","email":"eddie.sheffield@rackspace.com","username":"eddie-sheffield"},"change_message_id":"2f72ce57b6b11d52e55c75e3ea7a01718234a542","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class MetadefDestPathNotProvided(NotFound):"},{"line_number":412,"context_line":"    message \u003d _(\"Path for metadata store is mandatory.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8c0949_b93b4aea","line":412,"updated":"2014-10-30 18:39:49.000000000","message":"\u0027store\u0027 is a little bit of an overloaded term in the glance world. Maybe something like \"Path for metadata export destination is mandatory\".","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"96f15726bd15339259fffd0390d7328608b3e6e9","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class MetadefDestPathNotProvided(NotFound):"},{"line_number":412,"context_line":"    message \u003d _(\"Path for metadata store is mandatory.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8c0949_c3900a98","line":412,"in_reply_to":"7a8c0949_b93b4aea","updated":"2014-10-31 17:47:05.000000000","message":"I agree with Eddie. This message is a little cryptic.  How about:\n\n\"The export destination path is mandatory.\"","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8013306682bfb8e167d4fab7f16b16f408a362ec","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class MetadefDestPathNotProvided(NotFound):"},{"line_number":412,"context_line":"    message \u003d _(\"Path for metadata store is mandatory.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_c0c7a743","line":412,"in_reply_to":"7a8c0949_c3900a98","updated":"2014-11-24 14:09:58.000000000","message":"Done","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"}],"glance/db/sqlalchemy/metadata.py":[{"author":{"_account_id":13024,"name":"dominik dobruchowski","email":"dominik.dobruchowski@intel.com","username":"ddobruch"},"change_message_id":"50b527a6903803a8cfb243353992ffb06bbf2c74","unresolved":false,"context_lines":[{"line_number":221,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Destination path for metadefs store is mandatory\"))"},{"line_number":224,"context_line":"        raise SystemExit"},{"line_number":225,"context_line":"    if not path[-1] \u003d\u003d \u0027/\u0027:"},{"line_number":226,"context_line":"                        path \u003d \"%s/\" % path"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_ff1446ea","line":224,"updated":"2014-09-26 14:37:32.000000000","message":"How about raising exception ValueError ?","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"7998544631afdd86f565287ef6c4126c54c3267d","unresolved":false,"context_lines":[{"line_number":221,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Destination path for metadefs store is mandatory\"))"},{"line_number":224,"context_line":"        raise SystemExit"},{"line_number":225,"context_line":"    if not path[-1] \u003d\u003d \u0027/\u0027:"},{"line_number":226,"context_line":"                        path \u003d \"%s/\" % path"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_3f896e75","line":224,"updated":"2014-09-26 14:28:13.000000000","message":"use class from glance.common.exception","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"3b8b2288a6be0e92de0bc049b933a383fe579f2a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Destination path for metadefs store is mandatory\"))"},{"line_number":224,"context_line":"        raise SystemExit"},{"line_number":225,"context_line":"    if not path[-1] \u003d\u003d \u0027/\u0027:"},{"line_number":226,"context_line":"                        path \u003d \"%s/\" % path"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_556a1a1b","line":224,"in_reply_to":"da9df570_ff1446ea","updated":"2014-09-30 07:29:47.000000000","message":"What if you use return instead of an exception? Do we need stack trace here?","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":13024,"name":"dominik dobruchowski","email":"dominik.dobruchowski@intel.com","username":"ddobruch"},"change_message_id":"50b527a6903803a8cfb243353992ffb06bbf2c74","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Destination path for metadefs store is mandatory\"))"},{"line_number":224,"context_line":"        raise SystemExit"},{"line_number":225,"context_line":"    if not path[-1] \u003d\u003d \u0027/\u0027:"},{"line_number":226,"context_line":"                        path \u003d \"%s/\" % path"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_df9ce26c","line":225,"updated":"2014-09-26 14:37:32.000000000","message":"how about using endswith() method easy to read","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"521c7407b98052d4bad543100a6b29ae12f6fcba","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Destination path for metadefs store is mandatory\"))"},{"line_number":224,"context_line":"        raise SystemExit"},{"line_number":225,"context_line":"    if not path[-1] \u003d\u003d \u0027/\u0027:"},{"line_number":226,"context_line":"                        path \u003d \"%s/\" % path"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_c4503e61","line":225,"in_reply_to":"da9df570_df9ce26c","updated":"2014-09-29 08:22:43.000000000","message":"Please use os.path.join instead.","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"7998544631afdd86f565287ef6c4126c54c3267d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        LOG.error(_LE(\"Destination path for metadefs store is mandatory\"))"},{"line_number":224,"context_line":"        raise SystemExit"},{"line_number":225,"context_line":"    if not path[-1] \u003d\u003d \u0027/\u0027:"},{"line_number":226,"context_line":"                        path \u003d \"%s/\" % path"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"},{"line_number":229,"context_line":"    namespaces \u003d namespace_table.select().execute().fetchall()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_9f141a45","line":226,"updated":"2014-09-26 14:28:13.000000000","message":"indention","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":12814,"name":"Bartosz Fic","email":"bartosz.fic@intel.com","username":"bartosz-fic"},"change_message_id":"abb7ac95e51c6003edccebd9d1f479f56d589298","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        try:"},{"line_number":288,"context_line":"            file_name \u003d \u0027\u0027.join([path, namespace_file_name, \u0027.json\u0027])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            with open(file_name, \u0027w\u0027) as json_file:"},{"line_number":291,"context_line":"                json_file.write(json.dumps(values))"},{"line_number":292,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_7c3b9eeb","line":289,"updated":"2014-09-29 15:05:22.000000000","message":"Why new line is added here ?","commit_id":"fcb08709e2dd41465172ab2f3520fb4cbfe45387"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"a804529078f0f1bbf44bf83ad732accceced905f","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.warning(_LW(\"Path for metadata store is mandatory.\"))"},{"line_number":224,"context_line":"        return"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_a2d30337","line":223,"updated":"2014-09-30 14:09:02.000000000","message":"imho this deserves ERROR log level, empty path breaks the operation.","commit_id":"f8640faca44c809a0debfff656d4999db654b386"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"935dcf7f961110a353a09d419e21cb9efe5b1ee6","unresolved":false,"context_lines":[{"line_number":221,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Path for metadata store is mandatory.\"))"},{"line_number":224,"context_line":"        return"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"},{"line_number":227,"context_line":"    namespaces \u003d namespace_table.select().execute().fetchall()"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa201ad_d2ebdcd9","line":224,"updated":"2014-10-07 15:33:10.000000000","message":"Why don\u0027t you raise an exception here?","commit_id":"f7aa4dbd41883a8d131253cf46f61031c9ba7ca3"},{"author":{"_account_id":12231,"name":"Pawel Skowron","email":"pawel.skowron@intel.com","username":"pawel-skowron"},"change_message_id":"85db4a48a53f3d095793e49c9e7320a4de5fb891","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    if not path:"},{"line_number":223,"context_line":"        LOG.error(_LE(\"Path for metadata store is mandatory.\"))"},{"line_number":224,"context_line":"        return"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"},{"line_number":227,"context_line":"    namespaces \u003d namespace_table.select().execute().fetchall()"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9aa7fdbe_7b7346e7","line":225,"updated":"2014-10-22 16:48:18.000000000","message":"I believe that the exception should be thrown here","commit_id":"f7aa4dbd41883a8d131253cf46f61031c9ba7ca3"},{"author":{"_account_id":5347,"name":"Eddie Sheffield","email":"eddie.sheffield@rackspace.com","username":"eddie-sheffield"},"change_message_id":"2f72ce57b6b11d52e55c75e3ea7a01718234a542","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":244,"context_line":"    if not path:"},{"line_number":245,"context_line":"        LOG.error(_LE(\"Path for metadata store is mandatory.\"))"},{"line_number":246,"context_line":"        raise exception.MetadefDestPathNotProvided()"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8c0949_19229eb9","line":245,"updated":"2014-10-30 18:39:49.000000000","message":"See comment on similar message in exception.py.","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"8013306682bfb8e167d4fab7f16b16f408a362ec","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def _export_data_to_file(meta, path):"},{"line_number":244,"context_line":"    if not path:"},{"line_number":245,"context_line":"        LOG.error(_LE(\"Path for metadata store is mandatory.\"))"},{"line_number":246,"context_line":"        raise exception.MetadefDestPathNotProvided()"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    namespace_table \u003d get_metadef_namespaces_table(meta)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_00be0fae","line":245,"in_reply_to":"7a8c0949_19229eb9","updated":"2014-11-24 14:09:58.000000000","message":"Done","commit_id":"5638fe13fb519fae3564041353967b1e5ef4dfa3"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"35a91c63a01262b680b50bdd89872f4ddc0004ce","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        try:"},{"line_number":308,"context_line":"            file_name \u003d os.path.join("},{"line_number":309,"context_line":"                path,"},{"line_number":310,"context_line":"                \u0027\u0027.join([namespace_file_name, \u0027.json\u0027])"},{"line_number":311,"context_line":"            )"},{"line_number":312,"context_line":"            with open(file_name, \u0027w\u0027) as json_file:"},{"line_number":313,"context_line":"                json_file.write(json.dumps(values))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_655217df","line":310,"updated":"2014-12-08 11:49:11.000000000","message":"Nit: \u0027\u0027.join([namespace, \u0027.json\u0027]) isn\u0027t as useful here as it was when 3 str values were joined, I\u0027d use plain string concatenation here.","commit_id":"79b6cce756ad7766902be27a5aee9e6c354f1987"}],"glance/tests/functional/test_glance_manage.py":[{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"34eb1120058c42200ab2e406bb7c92c65c53f220","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self._sync_db(True)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        (exitcode, out, err) \u003d self._export_metadefs(\u0027\u0027, False)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.assertTrue(\u0027The export destination path is mandatory.\u0027 in err)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_e04583b4","line":99,"updated":"2014-11-24 14:12:56.000000000","message":"Nit: two newlines for a test with 3 funccalls seems one line too many for me.","commit_id":"ab6f31bb68fef62bcabe1d1879fc4ea12ba0b82b"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"35a91c63a01262b680b50bdd89872f4ddc0004ce","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self._sync_db(True)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        (exitcode, out, err) \u003d self._export_metadefs(\u0027\u0027, False)"},{"line_number":99,"context_line":"        self.assertTrue(\u0027The export destination path is mandatory.\u0027 in err)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_f8214fb5","line":99,"updated":"2014-12-08 11:49:11.000000000","message":"I\u0027d use self.assertIn(\u0027The export destination path is mandatory\u0027, err), as it is more informative if case the test fails.","commit_id":"79b6cce756ad7766902be27a5aee9e6c354f1987"}]}
