)]}'
{"nova/objects/aggregate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"940a93b7aed082d561477161ed93b98f25e36bc7","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        compute_utils.notify_about_aggregate_action("},{"line_number":361,"context_line":"            context\u003dself._context,"},{"line_number":362,"context_line":"            aggregate\u003dself,"},{"line_number":363,"context_line":"            action\u003dfields.NotificationAction.UPDATE_METADATA,"},{"line_number":364,"context_line":"            phase\u003dfields.NotificationPhase.START)"},{"line_number":365,"context_line":"        to_add \u003d {}"},{"line_number":366,"context_line":"        for key, value in updates.items():"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_fac1cf31","line":363,"range":{"start_line":363,"start_character":45,"end_line":363,"end_character":60},"updated":"2018-07-13 20:31:47.000000000","message":"OK I see we have a separate notification for aggregate metadata updates vs property updates.","commit_id":"4d977c41695331ea77d191d093833d2253d7725a"}],"nova/objects/fields.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"2e3301183c348ef3d060f3be2cf285f31c07cbe2","unresolved":false,"context_lines":[{"line_number":822,"context_line":"    UNSHELVE \u003d \u0027unshelve\u0027"},{"line_number":823,"context_line":"    ADD_HOST \u003d \u0027add_host\u0027"},{"line_number":824,"context_line":"    REMOVE_HOST \u003d \u0027remove_host\u0027"},{"line_number":825,"context_line":"    UPDATE_PROP \u003d \u0027updateprop\u0027"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":"    ALL \u003d (UPDATE, EXCEPTION, DELETE, PAUSE, UNPAUSE, RESIZE, VOLUME_SWAP,"},{"line_number":828,"context_line":"           SUSPEND, POWER_ON, REBOOT, SHUTDOWN, SNAPSHOT, ADD_FIXED_IP,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_2c12990a","line":825,"range":{"start_line":825,"start_character":19,"end_line":825,"end_character":29},"updated":"2017-06-13 09:29:48.000000000","message":"IMO, \u0027update_prop\u0027 is better. See https://review.openstack.org/#/c/460625/13/nova/objects/fields.py .","commit_id":"3595d9abeff1c8abb8bae490f941d339a6d9dbff"}],"nova/tests/functional/api/client.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"2e3301183c348ef3d060f3be2cf285f31c07cbe2","unresolved":false,"context_lines":[{"line_number":424,"context_line":"    def get_services(self):"},{"line_number":425,"context_line":"        return self.api_get(\u0027/os-services\u0027).body[\u0027services\u0027]"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def post_aggregate_update(self, aggregate_id, body):"},{"line_number":428,"context_line":"        return self.api_put("},{"line_number":429,"context_line":"            \u0027/os-aggregates/%s\u0027 % aggregate_id, body).body[\u0027aggregate\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_4c41550b","line":427,"range":{"start_line":427,"start_character":8,"end_line":427,"end_character":12},"updated":"2017-06-13 09:29:48.000000000","message":"s/post/put/","commit_id":"3595d9abeff1c8abb8bae490f941d339a6d9dbff"}],"nova/tests/functional/notification_sample_tests/test_aggregate.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f01d290b0b7c5ba96663a0b06b454172b0839d07","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                \u0027id\u0027: aggregate[\u0027id\u0027]},"},{"line_number":54,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[3])"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_aggregate_updatepropes(self):"},{"line_number":57,"context_line":"        aggregate_req \u003d {"},{"line_number":58,"context_line":"            \"aggregate\": {"},{"line_number":59,"context_line":"                \"name\": \"my-aggregate\","}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_7012e35a","line":56,"range":{"start_line":56,"start_character":29,"end_line":56,"end_character":35},"updated":"2017-05-29 12:42:46.000000000","message":"prop?","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"84e6279ce02406060d693e5d0db1e59a672442a6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                \u0027id\u0027: aggregate[\u0027id\u0027]},"},{"line_number":54,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[3])"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_aggregate_updatepropes(self):"},{"line_number":57,"context_line":"        aggregate_req \u003d {"},{"line_number":58,"context_line":"            \"aggregate\": {"},{"line_number":59,"context_line":"                \"name\": \"my-aggregate\","}],"source_content_type":"text/x-python","patch_set":3,"id":"9f0e0f27_1924fec5","line":56,"range":{"start_line":56,"start_character":29,"end_line":56,"end_character":35},"in_reply_to":"df140735_7012e35a","updated":"2017-06-09 14:22:57.000000000","message":"Done","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"649e21a93a1a04f92d9567ea586880721d614b3d","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # 0. aggregate-create-start"},{"line_number":74,"context_line":"        # 1. aggregate-create-end"},{"line_number":75,"context_line":"        print(fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":76,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":77,"context_line":"        # The uuid hasn\u0027t been exposed on the REST API yet so we have no way to"},{"line_number":78,"context_line":"        # match it here, now."}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_189505e5","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":52},"updated":"2017-05-29 23:15:42.000000000","message":"It should be removed.","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"84e6279ce02406060d693e5d0db1e59a672442a6","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # 0. aggregate-create-start"},{"line_number":74,"context_line":"        # 1. aggregate-create-end"},{"line_number":75,"context_line":"        print(fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":76,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":77,"context_line":"        # The uuid hasn\u0027t been exposed on the REST API yet so we have no way to"},{"line_number":78,"context_line":"        # match it here, now."}],"source_content_type":"text/x-python","patch_set":3,"id":"9f0e0f27_f9202ab3","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":52},"in_reply_to":"df140735_189505e5","updated":"2017-06-09 14:22:57.000000000","message":"Done","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"649e21a93a1a04f92d9567ea586880721d614b3d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        # 1. aggregate-create-end"},{"line_number":75,"context_line":"        print(fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":76,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":77,"context_line":"        # The uuid hasn\u0027t been exposed on the REST API yet so we have no way to"},{"line_number":78,"context_line":"        # match it here, now."},{"line_number":79,"context_line":"        self._verify_notification("},{"line_number":80,"context_line":"            \u0027aggregate-updateprop-start\u0027,"},{"line_number":81,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_b84a997d","line":78,"range":{"start_line":77,"start_character":8,"end_line":78,"end_character":29},"updated":"2017-05-29 23:15:42.000000000","message":"An aggregate uuid is returned since microverion 2.41 in os-aggregates API.\nSo this comment should be removed.","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f01d290b0b7c5ba96663a0b06b454172b0839d07","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        # 1. aggregate-create-end"},{"line_number":75,"context_line":"        print(fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":76,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":77,"context_line":"        # The uuid hasn\u0027t been exposed on the REST API yet so we have no way to"},{"line_number":78,"context_line":"        # match it here, now."},{"line_number":79,"context_line":"        self._verify_notification("},{"line_number":80,"context_line":"            \u0027aggregate-updateprop-start\u0027,"},{"line_number":81,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_b0219ba2","line":78,"range":{"start_line":77,"start_character":8,"end_line":78,"end_character":29},"updated":"2017-05-29 12:42:46.000000000","message":"Is this a TODO?","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"84e6279ce02406060d693e5d0db1e59a672442a6","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        # 1. aggregate-create-end"},{"line_number":75,"context_line":"        print(fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":76,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":77,"context_line":"        # The uuid hasn\u0027t been exposed on the REST API yet so we have no way to"},{"line_number":78,"context_line":"        # match it here, now."},{"line_number":79,"context_line":"        self._verify_notification("},{"line_number":80,"context_line":"            \u0027aggregate-updateprop-start\u0027,"},{"line_number":81,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f0e0f27_99192e8a","line":78,"range":{"start_line":77,"start_character":8,"end_line":78,"end_character":29},"in_reply_to":"df140735_b84a997d","updated":"2017-06-09 14:22:57.000000000","message":"Done","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"649e21a93a1a04f92d9567ea586880721d614b3d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self._verify_notification("},{"line_number":80,"context_line":"            \u0027aggregate-updateprop-start\u0027,"},{"line_number":81,"context_line":"            replacements\u003d{"},{"line_number":82,"context_line":"                \u0027uuid\u0027: self.ANY},"},{"line_number":83,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[2])"},{"line_number":84,"context_line":"        self._verify_notification("},{"line_number":85,"context_line":"            \u0027aggregate-updateprop-end\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_58593d58","line":82,"range":{"start_line":82,"start_character":24,"end_line":82,"end_character":32},"updated":"2017-05-29 23:15:42.000000000","message":"It should be \"aggregate[\u0027uuid\u0027]\".\n(Because an aggregate uuid is returned since microverion 2.41 in os-aggregates API.)","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"84e6279ce02406060d693e5d0db1e59a672442a6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self._verify_notification("},{"line_number":80,"context_line":"            \u0027aggregate-updateprop-start\u0027,"},{"line_number":81,"context_line":"            replacements\u003d{"},{"line_number":82,"context_line":"                \u0027uuid\u0027: self.ANY},"},{"line_number":83,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[2])"},{"line_number":84,"context_line":"        self._verify_notification("},{"line_number":85,"context_line":"            \u0027aggregate-updateprop-end\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f0e0f27_190d1e3e","line":82,"range":{"start_line":82,"start_character":24,"end_line":82,"end_character":32},"in_reply_to":"df140735_58593d58","updated":"2017-06-09 14:22:57.000000000","message":"Done","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"649e21a93a1a04f92d9567ea586880721d614b3d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self._verify_notification("},{"line_number":85,"context_line":"            \u0027aggregate-updateprop-end\u0027,"},{"line_number":86,"context_line":"            replacements\u003d{"},{"line_number":87,"context_line":"                \u0027uuid\u0027: self.ANY,"},{"line_number":88,"context_line":"                \u0027id\u0027: aggregate[\u0027id\u0027]},"},{"line_number":89,"context_line":"                actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[3])"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_3856892b","line":87,"range":{"start_line":87,"start_character":24,"end_line":87,"end_character":32},"updated":"2017-05-29 23:15:42.000000000","message":"ditto","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"84e6279ce02406060d693e5d0db1e59a672442a6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self._verify_notification("},{"line_number":85,"context_line":"            \u0027aggregate-updateprop-end\u0027,"},{"line_number":86,"context_line":"            replacements\u003d{"},{"line_number":87,"context_line":"                \u0027uuid\u0027: self.ANY,"},{"line_number":88,"context_line":"                \u0027id\u0027: aggregate[\u0027id\u0027]},"},{"line_number":89,"context_line":"                actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[3])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f0e0f27_59139667","line":87,"range":{"start_line":87,"start_character":24,"end_line":87,"end_character":32},"in_reply_to":"df140735_3856892b","updated":"2017-06-09 14:22:57.000000000","message":"Done","commit_id":"7a8dfe8faca8aec742d240c13e97e079678952f2"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"8baf360d34bd98e2b182dc31594f5e6dc1ae53f0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":78,"context_line":"        self._verify_notification("},{"line_number":79,"context_line":"            \u0027aggregate-update_prop-start\u0027,"},{"line_number":80,"context_line":"            replacements\u003d{"},{"line_number":81,"context_line":"                \u0027uuid\u0027: aggregate[\u0027uuid\u0027]},"},{"line_number":82,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[2])"},{"line_number":83,"context_line":"        self._verify_notification("},{"line_number":84,"context_line":"            \u0027aggregate-update_prop-end\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_56448974","line":81,"range":{"start_line":80,"start_character":12,"end_line":81,"end_character":42},"updated":"2017-06-20 01:53:26.000000000","message":"\"\u0027id\u0027: aggregate[\u0027id\u0027]\" should be added.","commit_id":"98f6a3967784ad3568f19c297e9184f7f4193ba7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"940a93b7aed082d561477161ed93b98f25e36bc7","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            \"aggregate\": {"},{"line_number":149,"context_line":"                \"name\": \"my-new-aggregate\"}}"},{"line_number":150,"context_line":"        self.admin_api.put_aggregate(aggregate[\u0027id\u0027], update_req)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        # 0. aggregate-create-start"},{"line_number":153,"context_line":"        # 1. aggregate-create-end"},{"line_number":154,"context_line":"        # 2. aggregate-update_prop-start"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_fa98ef67","line":151,"updated":"2018-07-13 20:31:47.000000000","message":"Would this versioned notification also apply to setting metadata on the aggregate?\n\nhttps://developer.openstack.org/api-ref/compute/#create-or-update-aggregate-metadata\n\nThe name change confused me a bit, and figured \u0027update property\u0027 meant more like updating the aggregate metadata but we don\u0027t see that in this test.\n\n(later)\n\nNevermind I see we have UPDATE_METADATA for metadata updates and they are intentionally different notifications.","commit_id":"4d977c41695331ea77d191d093833d2253d7725a"}]}
