)]}'
{"nova/notifications/objects/instance.py":[{"author":{"_account_id":20411,"name":"Julian","email":"julian.sy@att.com","username":"syjulian"},"change_message_id":"5a8ea57362c86e673eee0c86c021cdc7d1997e52","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.populate_schema(instance\u003dinstance)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"@base.notification_sample(\u0027instance-delete-start.json\u0027)"},{"line_number":153,"context_line":"@base.notification_sample(\u0027instance-delete-end.json\u0027)"},{"line_number":154,"context_line":"# @base.notification_sample(\u0027instance-pause-start.json\u0027)"},{"line_number":155,"context_line":"# @base.notification_sample(\u0027instance-pause-end.json\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_771af719","line":152,"updated":"2016-06-16 13:03:58.000000000","message":"maybe we should have a single decorator that does all of these. something that takes a list or a pattern maybe. what do you think?","commit_id":"8c53f0e3c99ff9f9b57303263c422fe028d4a6ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1d6f1858c98e258ca90922f31a14882ecff81221","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.populate_schema(instance\u003dinstance)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"@base.notification_sample(\u0027instance-delete-start.json\u0027)"},{"line_number":153,"context_line":"@base.notification_sample(\u0027instance-delete-end.json\u0027)"},{"line_number":154,"context_line":"# @base.notification_sample(\u0027instance-pause-start.json\u0027)"},{"line_number":155,"context_line":"# @base.notification_sample(\u0027instance-pause-end.json\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b2290d9e","line":152,"in_reply_to":"7aa08908_771af719","updated":"2016-06-16 13:24:40.000000000","message":"I share your pain that this code now looks ugly.\n\nHaving a single decorator with a list has the same merge conflict issue and it will look quite similar in the code, e.g. list of decorators vs a decorator with a list\n\nI don\u0027t see a good pattern. The problem is that the basic pattern \u0027instance-.*\u0027 won\u0027t be good for us. For example instance-create-start will have an extended payload class, while instance-create-end will use this payload. Or as another example instance-volume_swap-* will also use an extend payload see [1].\n\nWe can try to blacklist these exceptions but that is not really future proof as the blacklist needs to be updated whenever a new instance-* notification is added with an extended payload.\n\nI\u0027m open to suggestions. :)\n\n[1]https://review.openstack.org/#/c/328866/4/nova/notifications/objects/instance.py","commit_id":"8c53f0e3c99ff9f9b57303263c422fe028d4a6ef"},{"author":{"_account_id":14511,"name":"Maciej Szankin","email":"maciej+review@szankin.pl","username":"mszankin"},"change_message_id":"c456ed527f901339987d65b84615b97ac285803d","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        self.populate_schema(instance\u003dinstance)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"@base.notification_sample(\u0027instance-delete-start.json\u0027)"},{"line_number":153,"context_line":"@base.notification_sample(\u0027instance-delete-end.json\u0027)"},{"line_number":154,"context_line":"# @base.notification_sample(\u0027instance-pause-start.json\u0027)"},{"line_number":155,"context_line":"# @base.notification_sample(\u0027instance-pause-end.json\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_64034ab9","line":152,"in_reply_to":"7aa08908_b2290d9e","updated":"2016-06-16 19:28:01.000000000","message":"I guess this is what we have to stick with. Can\u0027t think of any alternative solutions.","commit_id":"8c53f0e3c99ff9f9b57303263c422fe028d4a6ef"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"6f7504ced5a4f8f7e201ecc9dec182e24258491f","unresolved":false,"context_lines":[{"line_number":176,"context_line":"# @base.notification_sample(\u0027instance-resume-start.json\u0027)"},{"line_number":177,"context_line":"# @base.notification_sample(\u0027instance-resume-end.json\u0027)"},{"line_number":178,"context_line":"# @base.notification_sample(\u0027instance-restore-start.json\u0027)"},{"line_number":179,"context_line":"# @base.notification_sample(\u0027instance-restore-end.json\u0027)"},{"line_number":180,"context_line":"@nova_base.NovaObjectRegistry.register_notification"},{"line_number":181,"context_line":"class InstanceActionNotification(base.NotificationBase):"},{"line_number":182,"context_line":"    # Version 1.0: Initial version"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_7b5e1dea","line":179,"updated":"2016-06-17 15:30:09.000000000","message":"Are we missing notification sample for volume_swap here?","commit_id":"5249e36df7b382b6754dd76a7cdcd38bd80dfdde"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7c9e63c95149cca323ab22af09abbe9c73718e95","unresolved":false,"context_lines":[{"line_number":176,"context_line":"# @base.notification_sample(\u0027instance-resume-start.json\u0027)"},{"line_number":177,"context_line":"# @base.notification_sample(\u0027instance-resume-end.json\u0027)"},{"line_number":178,"context_line":"# @base.notification_sample(\u0027instance-restore-start.json\u0027)"},{"line_number":179,"context_line":"# @base.notification_sample(\u0027instance-restore-end.json\u0027)"},{"line_number":180,"context_line":"@nova_base.NovaObjectRegistry.register_notification"},{"line_number":181,"context_line":"class InstanceActionNotification(base.NotificationBase):"},{"line_number":182,"context_line":"    # Version 1.0: Initial version"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a9d85d2_beaab717","line":179,"in_reply_to":"7aa08908_7b5e1dea","updated":"2016-06-20 07:25:34.000000000","message":"If you check Takashi\u0027s patches about swap volume (e.g. this https://review.openstack.org/#/c/328866/5/nova/notifications/objects/instance.py) then you will see that those notifications will use different payload therefore the sample will not be attached to this class but the extended payload class they are using.","commit_id":"5249e36df7b382b6754dd76a7cdcd38bd80dfdde"}],"nova/objects/fields.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"62659c42192eebbbc4e5fd083c3b25dcefd9e3ca","unresolved":false,"context_lines":[{"line_number":604,"context_line":"    RESIZE \u003d \u0027resize\u0027"},{"line_number":605,"context_line":"    VOLUME_SWAP \u003d \u0027volume_swap\u0027"},{"line_number":606,"context_line":"    SUSPEND \u003d \u0027suspend\u0027"},{"line_number":607,"context_line":"    POWER_ON \u003d \u0027power_on\u0027"},{"line_number":608,"context_line":"    POWER_OFF \u003d \u0027power_off\u0027"},{"line_number":609,"context_line":"    REBOOT \u003d \u0027reboot\u0027"},{"line_number":610,"context_line":"    SHUTDOWN \u003d \u0027shutdown\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_6498dc78","line":607,"range":{"start_line":607,"start_character":16,"end_line":607,"end_character":24},"updated":"2016-06-27 09:05:28.000000000","message":"So I think this is correct. I wondered about power-on here, but fields want \"_\" according to my reading of the API-WG notes on naming (because this doesn\u0027t go in a url, were \"-\" would be required).","commit_id":"c8d5501a2da3f68b0a4f373587ce09d7e7cc71b5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d179272a203a94cb7411541f78b3a46d15ab414","unresolved":false,"context_lines":[{"line_number":604,"context_line":"    RESIZE \u003d \u0027resize\u0027"},{"line_number":605,"context_line":"    VOLUME_SWAP \u003d \u0027volume_swap\u0027"},{"line_number":606,"context_line":"    SUSPEND \u003d \u0027suspend\u0027"},{"line_number":607,"context_line":"    POWER_ON \u003d \u0027power_on\u0027"},{"line_number":608,"context_line":"    POWER_OFF \u003d \u0027power_off\u0027"},{"line_number":609,"context_line":"    REBOOT \u003d \u0027reboot\u0027"},{"line_number":610,"context_line":"    SHUTDOWN \u003d \u0027shutdown\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_1faa0185","line":607,"range":{"start_line":607,"start_character":16,"end_line":607,"end_character":24},"in_reply_to":"3aaa91ec_6498dc78","updated":"2016-06-27 09:34:52.000000000","message":"No, it doesn\u0027t go to any url as far as I know and yes, I agree with your reading of the naming rules.","commit_id":"c8d5501a2da3f68b0a4f373587ce09d7e7cc71b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"62659c42192eebbbc4e5fd083c3b25dcefd9e3ca","unresolved":false,"context_lines":[{"line_number":609,"context_line":"    REBOOT \u003d \u0027reboot\u0027"},{"line_number":610,"context_line":"    SHUTDOWN \u003d \u0027shutdown\u0027"},{"line_number":611,"context_line":"    SNAPSHOT \u003d \u0027snapshot\u0027"},{"line_number":612,"context_line":"    CREATE_IP \u003d \u0027create_ip\u0027"},{"line_number":613,"context_line":"    SHELVE \u003d \u0027shelve\u0027"},{"line_number":614,"context_line":"    RESUME \u003d \u0027resume\u0027"},{"line_number":615,"context_line":"    RESTORE \u003d \u0027restore\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_84a7c8a5","line":612,"range":{"start_line":612,"start_character":17,"end_line":612,"end_character":26},"updated":"2016-06-27 09:05:28.000000000","message":"So this one should really be \"add_fixed_ip\", I think?\nhttps://github.com/openstack/nova/blob/997b63f740ad65aa59776213b6dc85658ee2da2e/nova/compute/manager.py#L3895","commit_id":"c8d5501a2da3f68b0a4f373587ce09d7e7cc71b5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d179272a203a94cb7411541f78b3a46d15ab414","unresolved":false,"context_lines":[{"line_number":609,"context_line":"    REBOOT \u003d \u0027reboot\u0027"},{"line_number":610,"context_line":"    SHUTDOWN \u003d \u0027shutdown\u0027"},{"line_number":611,"context_line":"    SNAPSHOT \u003d \u0027snapshot\u0027"},{"line_number":612,"context_line":"    CREATE_IP \u003d \u0027create_ip\u0027"},{"line_number":613,"context_line":"    SHELVE \u003d \u0027shelve\u0027"},{"line_number":614,"context_line":"    RESUME \u003d \u0027resume\u0027"},{"line_number":615,"context_line":"    RESTORE \u003d \u0027restore\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_ffb575ec","line":612,"range":{"start_line":612,"start_character":17,"end_line":612,"end_character":26},"in_reply_to":"3aaa91ec_84a7c8a5","updated":"2016-06-27 09:34:52.000000000","message":"legacy notification has the name \u0027create_ip\u0027 but I agree that add_fixed_ip is more precise. I think this is the good time to have a good name in the new versioned notification. So I\u0027m changing this and notifying the guy to do the change in the transformation patch as well.","commit_id":"c8d5501a2da3f68b0a4f373587ce09d7e7cc71b5"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"2a892682a597855bd99db55f019517a98b87db42","unresolved":false,"context_lines":[{"line_number":609,"context_line":"    REBOOT \u003d \u0027reboot\u0027"},{"line_number":610,"context_line":"    SHUTDOWN \u003d \u0027shutdown\u0027"},{"line_number":611,"context_line":"    SNAPSHOT \u003d \u0027snapshot\u0027"},{"line_number":612,"context_line":"    CREATE_IP \u003d \u0027add_fixed_ip\u0027"},{"line_number":613,"context_line":"    SHELVE \u003d \u0027shelve\u0027"},{"line_number":614,"context_line":"    RESUME \u003d \u0027resume\u0027"},{"line_number":615,"context_line":"    RESTORE \u003d \u0027restore\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_d8cebab6","line":612,"range":{"start_line":612,"start_character":4,"end_line":612,"end_character":30},"updated":"2016-06-27 15:42:17.000000000","message":"Changing create_ip to add_fixed_ip is a good idea. I think we should also rename the assigned constant to \"ADD_FIXED_IP\". Or why we can\u0027t do that if we can\u0027t do that?","commit_id":"aacf87902cf4751b16c981a00ee59d58b33bd699"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"291250f9e1ec6aa06df8a6c0143e3fe998d488c5","unresolved":false,"context_lines":[{"line_number":609,"context_line":"    REBOOT \u003d \u0027reboot\u0027"},{"line_number":610,"context_line":"    SHUTDOWN \u003d \u0027shutdown\u0027"},{"line_number":611,"context_line":"    SNAPSHOT \u003d \u0027snapshot\u0027"},{"line_number":612,"context_line":"    CREATE_IP \u003d \u0027add_fixed_ip\u0027"},{"line_number":613,"context_line":"    SHELVE \u003d \u0027shelve\u0027"},{"line_number":614,"context_line":"    RESUME \u003d \u0027resume\u0027"},{"line_number":615,"context_line":"    RESTORE \u003d \u0027restore\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_f8e0d6fc","line":612,"range":{"start_line":612,"start_character":4,"end_line":612,"end_character":30},"in_reply_to":"3aaa91ec_d8cebab6","updated":"2016-06-27 15:50:48.000000000","message":"Good point. Renamed it.","commit_id":"aacf87902cf4751b16c981a00ee59d58b33bd699"}]}
