)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d4b450c94ed87747917b0ac2cf7c5111557792","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create instance_extra entry if it doesn\u0027t update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When updating an instance, if there is no instace_extra, for older"},{"line_number":10,"context_line":"instances, we make sure we create one if there is not one already."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This keeps flavor data migrations (ie system_metadata -\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a016987_aaa7e7a5","line":9,"range":{"start_line":9,"start_character":42,"end_line":9,"end_character":55},"updated":"2015-05-28 17:26:35.000000000","message":"Should be \"instance_extra\"","commit_id":"2ef4af12e892ae732a043151c82bc2c6352fbd8c"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba91a5d60ca75879675b8e3c4d588781becc335e","unresolved":false,"context_lines":[{"line_number":2641,"context_line":"    rows_updated \u003d model_query(context, models.InstanceExtra).\\"},{"line_number":2642,"context_line":"        filter_by(instance_uuid\u003dinstance_uuid).\\"},{"line_number":2643,"context_line":"        update(values)"},{"line_number":2644,"context_line":"    if not rows_updated:"},{"line_number":2645,"context_line":"        LOG.debug(\"Created instance_extra for %s\" % instance_uuid)"},{"line_number":2646,"context_line":"        create_values \u003d copy.copy(values)"},{"line_number":2647,"context_line":"        create_values[\"instance_uuid\"] \u003d instance_uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_25f568ec","line":2644,"updated":"2015-05-28 17:41:08.000000000","message":"nit: might be helpful for posterity to have a NOTE here on why we\u0027re doing this check in the update method.","commit_id":"909c36da1b6f08c8304b628348698f6d2f22dd5a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"033f29d622625aab1e181467917eb6331adc481a","unresolved":false,"context_lines":[{"line_number":2641,"context_line":"    rows_updated \u003d model_query(context, models.InstanceExtra).\\"},{"line_number":2642,"context_line":"        filter_by(instance_uuid\u003dinstance_uuid).\\"},{"line_number":2643,"context_line":"        update(values)"},{"line_number":2644,"context_line":"    if not rows_updated:"},{"line_number":2645,"context_line":"        LOG.debug(\"Created instance_extra for %s\" % instance_uuid)"},{"line_number":2646,"context_line":"        create_values \u003d copy.copy(values)"},{"line_number":2647,"context_line":"        create_values[\"instance_uuid\"] \u003d instance_uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_653da08e","line":2644,"in_reply_to":"7a016987_25f568ec","updated":"2015-05-28 17:42:41.000000000","message":"its actually following a pattern in other update methods in here, although that could be useful.","commit_id":"909c36da1b6f08c8304b628348698f6d2f22dd5a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"275f1e36ba72099fc84aec9a5bcab1fc45a72f64","unresolved":false,"context_lines":[{"line_number":2641,"context_line":"    rows_updated \u003d model_query(context, models.InstanceExtra).\\"},{"line_number":2642,"context_line":"        filter_by(instance_uuid\u003dinstance_uuid).\\"},{"line_number":2643,"context_line":"        update(values)"},{"line_number":2644,"context_line":"    if not rows_updated:"},{"line_number":2645,"context_line":"        LOG.debug(\"Created instance_extra for %s\" % instance_uuid)"},{"line_number":2646,"context_line":"        create_values \u003d copy.copy(values)"},{"line_number":2647,"context_line":"        create_values[\"instance_uuid\"] \u003d instance_uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_a514b8e8","line":2644,"in_reply_to":"7a016987_653da08e","updated":"2015-05-28 17:47:06.000000000","message":"Yeah, we do this elsewhere so it\u0027s fine IMHO.","commit_id":"909c36da1b6f08c8304b628348698f6d2f22dd5a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba91a5d60ca75879675b8e3c4d588781becc335e","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"        filter_by(instance_uuid\u003dinstance_uuid).\\"},{"line_number":2643,"context_line":"        update(values)"},{"line_number":2644,"context_line":"    if not rows_updated:"},{"line_number":2645,"context_line":"        LOG.debug(\"Created instance_extra for %s\" % instance_uuid)"},{"line_number":2646,"context_line":"        create_values \u003d copy.copy(values)"},{"line_number":2647,"context_line":"        create_values[\"instance_uuid\"] \u003d instance_uuid"},{"line_number":2648,"context_line":"        _instance_extra_create(context, create_values)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_25a7a80c","line":2645,"updated":"2015-05-28 17:41:08.000000000","message":"I always wonder about logging in the DB API because of eventlet issues, I thought logging in the DB API used to be a no-no.  I know we do it in other places though.","commit_id":"909c36da1b6f08c8304b628348698f6d2f22dd5a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"033f29d622625aab1e181467917eb6331adc481a","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"        filter_by(instance_uuid\u003dinstance_uuid).\\"},{"line_number":2643,"context_line":"        update(values)"},{"line_number":2644,"context_line":"    if not rows_updated:"},{"line_number":2645,"context_line":"        LOG.debug(\"Created instance_extra for %s\" % instance_uuid)"},{"line_number":2646,"context_line":"        create_values \u003d copy.copy(values)"},{"line_number":2647,"context_line":"        create_values[\"instance_uuid\"] \u003d instance_uuid"},{"line_number":2648,"context_line":"        _instance_extra_create(context, create_values)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_c5bb340e","line":2645,"in_reply_to":"7a016987_25a7a80c","updated":"2015-05-28 17:42:41.000000000","message":"hmmm, thats news to me, interesting.","commit_id":"909c36da1b6f08c8304b628348698f6d2f22dd5a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"275f1e36ba72099fc84aec9a5bcab1fc45a72f64","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"        filter_by(instance_uuid\u003dinstance_uuid).\\"},{"line_number":2643,"context_line":"        update(values)"},{"line_number":2644,"context_line":"    if not rows_updated:"},{"line_number":2645,"context_line":"        LOG.debug(\"Created instance_extra for %s\" % instance_uuid)"},{"line_number":2646,"context_line":"        create_values \u003d copy.copy(values)"},{"line_number":2647,"context_line":"        create_values[\"instance_uuid\"] \u003d instance_uuid"},{"line_number":2648,"context_line":"        _instance_extra_create(context, create_values)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_e51e300b","line":2645,"in_reply_to":"7a016987_c5bb340e","updated":"2015-05-28 17:47:06.000000000","message":"It\u0027s fine here because it\u0027s not in a transaction, as I understand it, and it\u0027s not doing any translation which makes it even less impactful.\n\nI\u0027m also not sure it\u0027s really required, so if you want to remove it that\u0027d be fine with me too. We could always return -1 to indicate that we *created* one row and log in the object if you think it\u0027s really necessary.\n\nHowever, I\u0027d just leave it as it is for now, IMHO.","commit_id":"909c36da1b6f08c8304b628348698f6d2f22dd5a"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d4b450c94ed87747917b0ac2cf7c5111557792","unresolved":false,"context_lines":[{"line_number":2737,"context_line":"            self.ctxt, self.instance[\u0027uuid\u0027])"},{"line_number":2738,"context_line":"        self.assertEqual(\u0027changed\u0027, inst_extra.numa_topology)"},{"line_number":2739,"context_line":""},{"line_number":2740,"context_line":"    # RAX(coreywright): verify \"updating\" a instance\u0027s non-existant entry in"},{"line_number":2741,"context_line":"    # instance_extra creates the entry"},{"line_number":2742,"context_line":"    def test_instance_extra_update_by_uuid_and_create(self):"},{"line_number":2743,"context_line":"        # delete instance\u0027s instance_extra entry"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_aac24751","line":2740,"updated":"2015-05-28 17:26:35.000000000","message":"This should probably be a #NOTE, or just removed.","commit_id":"2ef4af12e892ae732a043151c82bc2c6352fbd8c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d4b450c94ed87747917b0ac2cf7c5111557792","unresolved":false,"context_lines":[{"line_number":2749,"context_line":"        inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":2750,"context_line":"            self.ctxt, self.instance[\u0027uuid\u0027])"},{"line_number":2751,"context_line":"        self.assertIsNone(inst_extra)"},{"line_number":2752,"context_line":"        # try to \"update\" instance\u0027s instance_extra entry through it doesn\u0027t"},{"line_number":2753,"context_line":"        # exist to update"},{"line_number":2754,"context_line":"        db.instance_extra_update_by_uuid(self.ctxt, self.instance[\u0027uuid\u0027],"},{"line_number":2755,"context_line":"                                         {\u0027numa_topology\u0027: \u0027changed\u0027})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_6a956f31","line":2752,"range":{"start_line":2752,"start_character":58,"end_line":2752,"end_character":65},"updated":"2015-05-28 17:26:35.000000000","message":"should be \"even though\" or something?","commit_id":"2ef4af12e892ae732a043151c82bc2c6352fbd8c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6eb38e8f53f9e43318190e53a1f71b83f63772a6","unresolved":false,"context_lines":[{"line_number":2745,"context_line":"            self.ctxt, self.instance[\u0027uuid\u0027])"},{"line_number":2746,"context_line":"        self.assertIsNone(inst_extra)"},{"line_number":2747,"context_line":""},{"line_number":2748,"context_line":"        db.instance_extra_update_by_uuid(self.ctxt, self.instance[\u0027uuid\u0027],"},{"line_number":2749,"context_line":"                                         {\u0027numa_topology\u0027: \u0027changed\u0027})"},{"line_number":2750,"context_line":""},{"line_number":2751,"context_line":"        inst_extra \u003d db.instance_extra_get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_45e4e4de","line":2748,"updated":"2015-05-28 17:51:36.000000000","message":"nit: could assert that 1 was returned","commit_id":"e776d6fddf047ff5dc77420263bd60756ba6a988"}]}
