)]}'
{"nova/objects/cell_mapping.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b38c163770955e9c0ceb70742bbb5a64971af37","unresolved":false,"context_lines":[{"line_number":130,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":131,"context_line":"class CellMappingList(base.ObjectListBase, base.NovaObject):"},{"line_number":132,"context_line":"    # Version 1.0: Initial version"},{"line_number":133,"context_line":"    # Version 1.1: CellMapping version 1.1"},{"line_number":134,"context_line":"    # Version 1.2: Add get_all_enabled()"},{"line_number":135,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    fields \u003d {"},{"line_number":138,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027CellMapping\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_17799492","line":135,"range":{"start_line":133,"start_character":4,"end_line":135,"end_character":19},"updated":"2018-03-14 22:05:49.000000000","message":"This would be 1.1, we don\u0027t need to bump the version manually for changes to the container objects.","commit_id":"9c3ab63a6da0b621614f807ceb001e96d90d0e14"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b38c163770955e9c0ceb70742bbb5a64971af37","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    @db_api.api_context_manager.reader"},{"line_number":154,"context_line":"    def _get_all_enabled_from_db(context):"},{"line_number":155,"context_line":"        return context.session.query(api_models.CellMapping).filter_by("},{"line_number":156,"context_line":"            disabled\u003d0).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    @base.remotable_classmethod"},{"line_number":159,"context_line":"    def get_all_enabled(cls, context):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_377cd881","line":156,"range":{"start_line":156,"start_character":21,"end_line":156,"end_character":22},"updated":"2018-03-14 22:05:49.000000000","message":"False (or however we check false() using a sqla statement, since not all databases use booleans).","commit_id":"9c3ab63a6da0b621614f807ceb001e96d90d0e14"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4c4e9f8188fb6d00a23a3816ee771e82b4b9eb7","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    @db_api.api_context_manager.reader"},{"line_number":153,"context_line":"    def _get_all_enabled_from_db(context):"},{"line_number":154,"context_line":"        return context.session.query(api_models.CellMapping).filter_by("},{"line_number":155,"context_line":"            disabled\u003dFalse).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @base.remotable_classmethod"},{"line_number":158,"context_line":"    def get_all_enabled(cls, context):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_6498dc69","line":155,"range":{"start_line":155,"start_character":21,"end_line":155,"end_character":26},"updated":"2018-03-20 14:48:22.000000000","message":"There is a sqlalchemy construct for filtering on boolean columns, which is backend dependent, so we should use that. Some DBs use 1 and 0 for True and False for boolean columns (mysql doesn\u0027t, but mysql isn\u0027t the only DB that people use).\n\nHere is an example:\n\nhttps://github.com/openstack/nova/blob/f80b4e50093002f84b43ff245a605fbe44d34711/nova/db/sqlalchemy/api.py#L743","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9f6eed9d5ab965205424b4190f6d8fb24e084a7","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    @db_api.api_context_manager.reader"},{"line_number":153,"context_line":"    def _get_all_enabled_from_db(context):"},{"line_number":154,"context_line":"        return context.session.query(api_models.CellMapping).filter_by("},{"line_number":155,"context_line":"            disabled\u003dFalse).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @base.remotable_classmethod"},{"line_number":158,"context_line":"    def get_all_enabled(cls, context):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_b58e2025","line":155,"range":{"start_line":155,"start_character":21,"end_line":155,"end_character":26},"in_reply_to":"df7087c5_6498dc69","updated":"2018-03-20 17:32:49.000000000","message":"Ah, yes thanks for the link, sorry I did not address this in the previous versions itself when you pointed it out amongst the int and boolean confusions; The reason being in most of nova it is being done like this - https://github.com/openstack/nova/blob/b38a33025695d4fecd681546a0261086ece3a203/nova/db/sqlalchemy/api.py#L457 so I did not know what construct to use. But thanks for the link, fixed it up now.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4c4e9f8188fb6d00a23a3816ee771e82b4b9eb7","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            disabled\u003dFalse).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @base.remotable_classmethod"},{"line_number":158,"context_line":"    def get_all_enabled(cls, context):"},{"line_number":159,"context_line":"        db_mappings \u003d cls._get_all_enabled_from_db(context)"},{"line_number":160,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_a4dcb418","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":23},"updated":"2018-03-20 14:48:22.000000000","message":"I almost wonder if we should make this a bit more future proof by allowing the caller to pass in the disabled value filter, so they can easily get all disabled or enabled cells, not just enabled cells. What is here is OK for the intent we\u0027ll use it for in the scheduler. Given that, we could always change later, it would just be unfortunate to need to add another \u0027get_all_disabled\u0027 method later or something. Not a big deal though, we can cross that bridge if it comes.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9f6eed9d5ab965205424b4190f6d8fb24e084a7","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            disabled\u003dFalse).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @base.remotable_classmethod"},{"line_number":158,"context_line":"    def get_all_enabled(cls, context):"},{"line_number":159,"context_line":"        db_mappings \u003d cls._get_all_enabled_from_db(context)"},{"line_number":160,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_b0dcee18","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":23},"in_reply_to":"df7087c5_a4dcb418","updated":"2018-03-20 17:32:49.000000000","message":"Good idea, I guess Dan has also suggested that I should do this at some point in the spec. Done.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd69db5a2e489a4905a4178d90011ce130320ea1","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    api_models.CellMapping.id)).all()"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def get_enabled_or_disabled(cls, context, disabled\u003dFalse):"},{"line_number":166,"context_line":"        db_mappings \u003d cls._get_enabled_or_disabled_from_db(context, disabled)"},{"line_number":167,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_d1c5c88f","line":165,"range":{"start_line":165,"start_character":46,"end_line":165,"end_character":60},"updated":"2018-03-21 14:55:40.000000000","message":"If we did go with this name, I think we might want to make this not a default value, so the caller has to know which thing they are asking for rather than rely on a default behavior since \u0027enabled or disabled\u0027 (but with a default) is confusing.","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"18536372ba8deb198232f3e4aab1a502bd5fe12f","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    api_models.CellMapping.id)).all()"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def get_enabled_or_disabled(cls, context, disabled\u003dFalse):"},{"line_number":166,"context_line":"        db_mappings \u003d cls._get_enabled_or_disabled_from_db(context, disabled)"},{"line_number":167,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_3521a2a0","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":31},"updated":"2018-03-21 01:07:15.000000000","message":"Kind of an awkward name but I don\u0027t have better ideas really, maybe get_all_by_disabled_filter?","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"0d7e034e0de54a7b7d236ccbdbd17834f5fe6f72","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    api_models.CellMapping.id)).all()"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def get_enabled_or_disabled(cls, context, disabled\u003dFalse):"},{"line_number":166,"context_line":"        db_mappings \u003d cls._get_enabled_or_disabled_from_db(context, disabled)"},{"line_number":167,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_37ed148b","line":165,"range":{"start_line":165,"start_character":46,"end_line":165,"end_character":60},"in_reply_to":"df7087c5_115a60f2","updated":"2018-03-21 16:05:58.000000000","message":"Done","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a578c5d9e3202787b0392d724d30aa9f4718cb44","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    api_models.CellMapping.id)).all()"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def get_enabled_or_disabled(cls, context, disabled\u003dFalse):"},{"line_number":166,"context_line":"        db_mappings \u003d cls._get_enabled_or_disabled_from_db(context, disabled)"},{"line_number":167,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_11cca0ba","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":31},"in_reply_to":"df7087c5_3521a2a0","updated":"2018-03-21 14:55:37.000000000","message":"We don\u0027t generally use \"all\" except for the one actual get_all thing above since these are scoped to CellMappingList (so it\u0027s clear you\u0027re getting more than one).\n\nI would just do get_by_disabled() personally, as \"filters\" implies a dict-like bunch of filters in all our other commands.","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f32fbad81f14d746e24b17b81440bf914d0935c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    api_models.CellMapping.id)).all()"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def get_enabled_or_disabled(cls, context, disabled\u003dFalse):"},{"line_number":166,"context_line":"        db_mappings \u003d cls._get_enabled_or_disabled_from_db(context, disabled)"},{"line_number":167,"context_line":"        return base.obj_make_list(context, cls(), CellMapping, db_mappings)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_115a60f2","line":165,"range":{"start_line":165,"start_character":46,"end_line":165,"end_character":60},"in_reply_to":"df7087c5_d1c5c88f","updated":"2018-03-21 14:57:06.000000000","message":"I\u0027m OK with get_by_disabled(context, disabled) with no default on the \u0027disabled\u0027 param so the caller has to know what they are asking for.","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a382134854f65c423484c21fb20392cc9bbd48e5","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def _get_by_disabled_from_db(context, disabled):"},{"line_number":156,"context_line":"        if disabled:"},{"line_number":157,"context_line":"            return context.session.query(api_models.CellMapping).filter_by("},{"line_number":158,"context_line":"                disabled\u003dtrue()).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":159,"context_line":"        else:"},{"line_number":160,"context_line":"            return context.session.query(api_models.CellMapping).filter_by("},{"line_number":161,"context_line":"                disabled\u003dfalse()).order_by(asc("}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_8104b54b","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":31},"updated":"2018-03-22 20:04:50.000000000","message":"I\u0027m pretty sure you can just say disabled\u003ddisabled here...","commit_id":"a26ad9f9a82dfb5210e4a979e67e000989d7ff91"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29167353230cbca01abfa9978b958c6187142be5","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def _get_by_disabled_from_db(context, disabled):"},{"line_number":156,"context_line":"        if disabled:"},{"line_number":157,"context_line":"            return context.session.query(api_models.CellMapping).filter_by("},{"line_number":158,"context_line":"                disabled\u003dtrue()).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":159,"context_line":"        else:"},{"line_number":160,"context_line":"            return context.session.query(api_models.CellMapping).filter_by("},{"line_number":161,"context_line":"                disabled\u003dfalse()).order_by(asc("}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_ced3a300","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":31},"in_reply_to":"df7087c5_8104b54b","updated":"2018-03-23 13:05:59.000000000","message":"I asked to use the sqla functions specifically since not all backends use booleans the same way.","commit_id":"a26ad9f9a82dfb5210e4a979e67e000989d7ff91"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9c58dd6bfa1404d1986c640e3e8b130d2e356389","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def _get_by_disabled_from_db(context, disabled):"},{"line_number":156,"context_line":"        if disabled:"},{"line_number":157,"context_line":"            return context.session.query(api_models.CellMapping).filter_by("},{"line_number":158,"context_line":"                disabled\u003dtrue()).order_by(asc(api_models.CellMapping.id)).all()"},{"line_number":159,"context_line":"        else:"},{"line_number":160,"context_line":"            return context.session.query(api_models.CellMapping).filter_by("},{"line_number":161,"context_line":"                disabled\u003dfalse()).order_by(asc("}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_f94af324","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":31},"in_reply_to":"df7087c5_ced3a300","updated":"2018-03-23 13:31:13.000000000","message":"Okay, I see like three total uses of true() or false() in our DB API, so it seems less common to me. I\u0027d rather do it some other way that repeating the whole query here, but it\u0027s a minor thing.","commit_id":"a26ad9f9a82dfb5210e4a979e67e000989d7ff91"}],"nova/tests/functional/db/test_cell_mapping.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d93757ff7f9b52387e7a8ed9e47bd444e190b367","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        mappings \u003d {}"},{"line_number":109,"context_line":"        mapping \u003d create_mapping()"},{"line_number":110,"context_line":"        mappings[mapping[\u0027uuid\u0027]] \u003d mapping"},{"line_number":111,"context_line":"        mapping \u003d create_mapping(disabled\u003dTrue)"},{"line_number":112,"context_line":"        mappings[mapping[\u0027uuid\u0027]] \u003d mapping"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        ctxt \u003d context.RequestContext()"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_58a7dd50","line":111,"updated":"2018-03-19 14:43:44.000000000","message":"Nit: I would go for enabled_mapping and disabled_mapping here, to make the later on bit of the test easier...","commit_id":"493cbd03e5437d4601133578fd705358bab8cc53"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d7c10ddb8c560717408bd8e0ddcc27a5706340a1","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        mappings \u003d {}"},{"line_number":109,"context_line":"        mapping \u003d create_mapping()"},{"line_number":110,"context_line":"        mappings[mapping[\u0027uuid\u0027]] \u003d mapping"},{"line_number":111,"context_line":"        mapping \u003d create_mapping(disabled\u003dTrue)"},{"line_number":112,"context_line":"        mappings[mapping[\u0027uuid\u0027]] \u003d mapping"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        ctxt \u003d context.RequestContext()"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_714bc1af","line":111,"in_reply_to":"df7087c5_58a7dd50","updated":"2018-03-20 13:03:49.000000000","message":"Done","commit_id":"493cbd03e5437d4601133578fd705358bab8cc53"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d93757ff7f9b52387e7a8ed9e47bd444e190b367","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":117,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList._get_all_enabled_from_db("},{"line_number":118,"context_line":"                                                                        ctxt)"},{"line_number":119,"context_line":"        self.assertEqual(1, len(db_mappings))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        for db_mapping in db_mappings:"},{"line_number":122,"context_line":"            mapping \u003d mappings[db_mapping.uuid]"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_7802e140","line":119,"updated":"2018-03-19 14:43:44.000000000","message":"I feel like we should check that we get back mappings with the correct uuid here.","commit_id":"493cbd03e5437d4601133578fd705358bab8cc53"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d7c10ddb8c560717408bd8e0ddcc27a5706340a1","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":117,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList._get_all_enabled_from_db("},{"line_number":118,"context_line":"                                                                        ctxt)"},{"line_number":119,"context_line":"        self.assertEqual(1, len(db_mappings))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        for db_mapping in db_mappings:"},{"line_number":122,"context_line":"            mapping \u003d mappings[db_mapping.uuid]"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_d1cf2d27","line":119,"in_reply_to":"df7087c5_7802e140","updated":"2018-03-20 13:03:49.000000000","message":"Done","commit_id":"493cbd03e5437d4601133578fd705358bab8cc53"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d93757ff7f9b52387e7a8ed9e47bd444e190b367","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                                                        ctxt)"},{"line_number":119,"context_line":"        self.assertEqual(1, len(db_mappings))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        for db_mapping in db_mappings:"},{"line_number":122,"context_line":"            mapping \u003d mappings[db_mapping.uuid]"},{"line_number":123,"context_line":"            for key in cell_mapping.CellMapping.fields.keys():"},{"line_number":124,"context_line":"                self.assertEqual(db_mapping[key], mapping[key])"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_987255e3","line":121,"updated":"2018-03-19 14:43:44.000000000","message":"Nit: This is only checking the one disabled mapping, and its not really checking it is the disabled one. I would change this to check only the expected disabled mapping.","commit_id":"493cbd03e5437d4601133578fd705358bab8cc53"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d7c10ddb8c560717408bd8e0ddcc27a5706340a1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                                                        ctxt)"},{"line_number":119,"context_line":"        self.assertEqual(1, len(db_mappings))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        for db_mapping in db_mappings:"},{"line_number":122,"context_line":"            mapping \u003d mappings[db_mapping.uuid]"},{"line_number":123,"context_line":"            for key in cell_mapping.CellMapping.fields.keys():"},{"line_number":124,"context_line":"                self.assertEqual(db_mapping[key], mapping[key])"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_b1d639c3","line":121,"in_reply_to":"df7087c5_987255e3","updated":"2018-03-20 13:03:49.000000000","message":"Done","commit_id":"493cbd03e5437d4601133578fd705358bab8cc53"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"82d2caef47a30f3ad1b51261a20855a8d2188869","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    args \u003d SAMPLE_MAPPING.copy()"},{"line_number":31,"context_line":"    if \u0027uuid\u0027 not in kwargs:"},{"line_number":32,"context_line":"        args[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":33,"context_line":"    if \u0027disabled\u0027 in kwargs:"},{"line_number":34,"context_line":"        args[\u0027disabled\u0027] \u003d True"},{"line_number":35,"context_line":"    args.update(kwargs)"},{"line_number":36,"context_line":"    ctxt \u003d context.RequestContext()"},{"line_number":37,"context_line":"    return cell_mapping.CellMapping._create_in_db(ctxt, args)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_76b41736","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":31},"updated":"2018-03-20 12:02:20.000000000","message":"What is the consideration here to add this?","commit_id":"4ab55296fe365f6deb987deeb81925737e9ac49e"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"addc68bc6bde45eee4e14a992924c5b6ad68d0fd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    args \u003d SAMPLE_MAPPING.copy()"},{"line_number":31,"context_line":"    if \u0027uuid\u0027 not in kwargs:"},{"line_number":32,"context_line":"        args[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":33,"context_line":"    if \u0027disabled\u0027 in kwargs:"},{"line_number":34,"context_line":"        args[\u0027disabled\u0027] \u003d True"},{"line_number":35,"context_line":"    args.update(kwargs)"},{"line_number":36,"context_line":"    ctxt \u003d context.RequestContext()"},{"line_number":37,"context_line":"    return cell_mapping.CellMapping._create_in_db(ctxt, args)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_a1a026a7","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":31},"in_reply_to":"df7087c5_76b41736","updated":"2018-03-20 13:29:43.000000000","message":"Thanks for the review, sorry this was not needed, I ended up modifying the test.","commit_id":"4ab55296fe365f6deb987deeb81925737e9ac49e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4c4e9f8188fb6d00a23a3816ee771e82b4b9eb7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        disabled_mapping \u003d create_mapping(disabled\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":109,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList._get_all_from_db(ctxt)"},{"line_number":110,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":111,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"},{"line_number":112,"context_line":"        self.assertEqual(disabled_mapping[\u0027uuid\u0027], db_mappings[1].uuid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_24d0a4f7","line":109,"range":{"start_line":109,"start_character":51,"end_line":109,"end_character":67},"updated":"2018-03-20 14:48:22.000000000","message":"This is a bit weird, not just use CellMappingList.get_all()? I see that\u0027s what the test above does, but we should use the public methods unless there is a good reason not to.\n\nMaybe the point of this is just hitting the DB API interfaces, but the test_get_all_enabled unit test is going to do that implicitly also, so really this functional test is redundant with the unit test. Might as well drop the functional test.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9f6eed9d5ab965205424b4190f6d8fb24e084a7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        disabled_mapping \u003d create_mapping(disabled\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":109,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList._get_all_from_db(ctxt)"},{"line_number":110,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":111,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"},{"line_number":112,"context_line":"        self.assertEqual(disabled_mapping[\u0027uuid\u0027], db_mappings[1].uuid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_95b8bce5","line":109,"range":{"start_line":109,"start_character":51,"end_line":109,"end_character":67},"in_reply_to":"df7087c5_24d0a4f7","updated":"2018-03-20 17:32:49.000000000","message":"Yea, I guess I kind off did the same as in test_get_all(), however changed this to using get_all() now.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4c4e9f8188fb6d00a23a3816ee771e82b4b9eb7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":111,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"},{"line_number":112,"context_line":"        self.assertEqual(disabled_mapping[\u0027uuid\u0027], db_mappings[1].uuid)"},{"line_number":113,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList._get_all_enabled_from_db("},{"line_number":114,"context_line":"                                                                        ctxt)"},{"line_number":115,"context_line":"        self.assertEqual(1, len(db_mappings))"},{"line_number":116,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_64ff7c67","line":113,"range":{"start_line":113,"start_character":51,"end_line":113,"end_character":75},"updated":"2018-03-20 14:48:22.000000000","message":"Please use the public method instead.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9f6eed9d5ab965205424b4190f6d8fb24e084a7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":111,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"},{"line_number":112,"context_line":"        self.assertEqual(disabled_mapping[\u0027uuid\u0027], db_mappings[1].uuid)"},{"line_number":113,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList._get_all_enabled_from_db("},{"line_number":114,"context_line":"                                                                        ctxt)"},{"line_number":115,"context_line":"        self.assertEqual(1, len(db_mappings))"},{"line_number":116,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_f5efb8e6","line":113,"range":{"start_line":113,"start_character":51,"end_line":113,"end_character":75},"in_reply_to":"df7087c5_64ff7c67","updated":"2018-03-20 17:32:49.000000000","message":"Done","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"18536372ba8deb198232f3e4aab1a502bd5fe12f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        disabled_mapping \u003d create_mapping(disabled\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":109,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList.get_all(ctxt)"},{"line_number":110,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":111,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"},{"line_number":112,"context_line":"        self.assertEqual(disabled_mapping[\u0027uuid\u0027], db_mappings[1].uuid)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_552456af","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":19},"updated":"2018-03-21 01:07:15.000000000","message":"nit: rename to \u0027mappings\u0027 since these are objects now.","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"0d7e034e0de54a7b7d236ccbdbd17834f5fe6f72","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        disabled_mapping \u003d create_mapping(disabled\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        ctxt \u003d context.RequestContext()"},{"line_number":109,"context_line":"        db_mappings \u003d cell_mapping.CellMappingList.get_all(ctxt)"},{"line_number":110,"context_line":"        self.assertEqual(2, len(db_mappings))"},{"line_number":111,"context_line":"        self.assertEqual(enabled_mapping[\u0027uuid\u0027], db_mappings[0].uuid)"},{"line_number":112,"context_line":"        self.assertEqual(disabled_mapping[\u0027uuid\u0027], db_mappings[1].uuid)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df7087c5_5179b8f9","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":19},"in_reply_to":"df7087c5_552456af","updated":"2018-03-21 16:05:58.000000000","message":"Done","commit_id":"d8d30900824191212c83140b26e7af47adc2336a"}],"nova/tests/unit/objects/test_cell_mapping.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4c4e9f8188fb6d00a23a3816ee771e82b4b9eb7","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.assertEqual([1, 2, 3, 10], ids)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test_get_all_enabled(self):"},{"line_number":164,"context_line":"        for ident in (4, 3):"},{"line_number":165,"context_line":"            cm \u003d objects.CellMapping(context\u003dself.context,"},{"line_number":166,"context_line":"                                     id\u003dident,"},{"line_number":167,"context_line":"                                     uuid\u003dgetattr(uuids, \u0027cell%i\u0027 % ident),"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_64345c4b","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":28},"updated":"2018-03-20 14:48:22.000000000","message":"Could you add a comment here about why we start with these values? Is it because we already have a few enabled cell mappings in the database from the base test case setup?","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"d9f6eed9d5ab965205424b4190f6d8fb24e084a7","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.assertEqual([1, 2, 3, 10], ids)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test_get_all_enabled(self):"},{"line_number":164,"context_line":"        for ident in (4, 3):"},{"line_number":165,"context_line":"            cm \u003d objects.CellMapping(context\u003dself.context,"},{"line_number":166,"context_line":"                                     id\u003dident,"},{"line_number":167,"context_line":"                                     uuid\u003dgetattr(uuids, \u0027cell%i\u0027 % ident),"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_db8c2337","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":28},"in_reply_to":"df7087c5_64345c4b","updated":"2018-03-20 17:32:49.000000000","message":"Yes.\nDone.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4c4e9f8188fb6d00a23a3816ee771e82b4b9eb7","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        obj \u003d objects.CellMappingList.get_all(self.context)"},{"line_number":173,"context_line":"        ids \u003d [c.id for c in obj]"},{"line_number":174,"context_line":"        # Returns all the cells"},{"line_number":175,"context_line":"        self.assertEqual([1, 2, 3, 4], ids)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        obj \u003d objects.CellMappingList.get_all_enabled(self.context)"},{"line_number":178,"context_line":"        ids \u003d [c.id for c in obj]"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_044320b1","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":43},"updated":"2018-03-20 14:48:22.000000000","message":"OK this works because get_all orders by id ascending.","commit_id":"05c81c8764c642d11e48e4d0669875a8d09abaa7"}]}
