)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"of the fields defined in the schema."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"There are two problematic cases:"},{"line_number":14,"context_line":"1) no load tirggered for lazy loaded fields. If the field was not loaded"},{"line_number":15,"context_line":"   it is not added to the payload."},{"line_number":16,"context_line":"2) uninitialized, not lazy loadable fields are not added to the payload."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da36d5c6_e98f7f72","line":14,"updated":"2017-02-24 19:25:35.000000000","message":"s/tirgerred/triggered/","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"the extra_specs field from the Flavor object to the FlavorPayload."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The projects field of the Flavor object is lazy loaded but when the Flavor"},{"line_number":38,"context_line":"object is loaded as part of an Instance object then the created Falvor object"},{"line_number":39,"context_line":"is orphaned. In these case the projects field of the FlavorPayload will be"},{"line_number":40,"context_line":"set to None to signal that the information is not available."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da36d5c6_69254f5a","line":38,"updated":"2017-02-24 19:25:35.000000000","message":"s/Falvor/Flavor/","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ca3453cf3f328b4ca14351eaf4b91b6bb4d939b1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"notification missing some of the fields defined in the schema."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"There are two problematic cases:"},{"line_number":14,"context_line":"1) no load tirggered for lazy loaded fields. If the field was not"},{"line_number":15,"context_line":"   loaded it is not added to the payload."},{"line_number":16,"context_line":"2) uninitialized, not lazy loadable fields are not added to the"},{"line_number":17,"context_line":"   payload."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"9a30ddce_f3cdc066","line":14,"updated":"2017-03-10 18:30:36.000000000","message":"s/tirgerred/triggered/","commit_id":"655942069aa77abad90a742cd47690a81987e9d7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ca3453cf3f328b4ca14351eaf4b91b6bb4d939b1","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The hosts and id fields of the Aggregate object is not initialized"},{"line_number":46,"context_line":"during the create of the Aggregate before the aggregate.create.start"},{"line_number":47,"context_line":"needs to be sent. Therefore these fields needs to be nullable."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Closes-Bug: #1653221"},{"line_number":50,"context_line":"Change-Id: Ib122cd98ee0cc31938d5ff1d5c753053267a3bd4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"9a30ddce_74637642","line":47,"updated":"2017-03-10 18:30:36.000000000","message":"s/fields needs/fields need/","commit_id":"655942069aa77abad90a742cd47690a81987e9d7"}],"doc/notification_samples/flavor-create.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            \"vcpu_weight\": 0,"},{"line_number":18,"context_line":"            \"flavorid\": \"a22d5517-147c-4147-a0d1-e698df5cd4e3\","},{"line_number":19,"context_line":"            \"extra_specs\": {},"},{"line_number":20,"context_line":"            \"projects\": []"},{"line_number":21,"context_line":"        }"},{"line_number":22,"context_line":"    },"},{"line_number":23,"context_line":"    \"event_type\": \"flavor.create\","}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_e9acdf8d","line":20,"updated":"2017-02-24 19:25:35.000000000","message":"I would expect these fields to have some values in them?","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"014f6d1102cb58c4cd497615077b31b5fc99ef11","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            \"vcpu_weight\": 0,"},{"line_number":18,"context_line":"            \"flavorid\": \"a22d5517-147c-4147-a0d1-e698df5cd4e3\","},{"line_number":19,"context_line":"            \"extra_specs\": {},"},{"line_number":20,"context_line":"            \"projects\": []"},{"line_number":21,"context_line":"        }"},{"line_number":22,"context_line":"    },"},{"line_number":23,"context_line":"    \"event_type\": \"flavor.create\","}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_b8b6b2f6","line":20,"in_reply_to":"da36d5c6_e9acdf8d","updated":"2017-02-24 20:57:09.000000000","message":"A freshly created flavor has empty extra_specs and projects as setting extra_specs and projects needs separate API calls.  If you look at the flavor.update sample you will see extra data in these fields","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8d085ca21080758c57fe96bb117bc21f9b061ed5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            \"vcpu_weight\": 0,"},{"line_number":18,"context_line":"            \"flavorid\": \"a22d5517-147c-4147-a0d1-e698df5cd4e3\","},{"line_number":19,"context_line":"            \"extra_specs\": null,"},{"line_number":20,"context_line":"            \"projects\": []"},{"line_number":21,"context_line":"        }"},{"line_number":22,"context_line":"    },"},{"line_number":23,"context_line":"    \"event_type\": \"flavor.create\","}],"source_content_type":"application/json","patch_set":22,"id":"9a30ddce_1146c24e","line":20,"range":{"start_line":20,"start_character":24,"end_line":20,"end_character":26},"updated":"2017-03-10 23:23:15.000000000","message":"Should this be \"null\" since you made project nullable too?","commit_id":"655942069aa77abad90a742cd47690a81987e9d7"}],"doc/notification_samples/flavor-delete.json":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8d085ca21080758c57fe96bb117bc21f9b061ed5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            \"vcpu_weight\": 0,"},{"line_number":18,"context_line":"            \"flavorid\": \"a22d5517-147c-4147-a0d1-e698df5cd4e3\","},{"line_number":19,"context_line":"            \"extra_specs\": null,"},{"line_number":20,"context_line":"            \"projects\": []"},{"line_number":21,"context_line":"        }"},{"line_number":22,"context_line":"    },"},{"line_number":23,"context_line":"    \"event_type\": \"flavor.delete\","}],"source_content_type":"application/json","patch_set":22,"id":"9a30ddce_517afa88","line":20,"range":{"start_line":20,"start_character":24,"end_line":20,"end_character":26},"updated":"2017-03-10 23:23:15.000000000","message":"Should this be \"null\" since you made project nullable too?","commit_id":"655942069aa77abad90a742cd47690a81987e9d7"}],"doc/notification_samples/instance-create-end.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_c9cf1b54","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"and this should be \"projects\": null, right?","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-create-error.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                    \"extra_specs\": {"},{"line_number":52,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":53,"context_line":"                    },"},{"line_number":54,"context_line":"                    \"projects\": [],"},{"line_number":55,"context_line":"                    \"swap\": 0,"},{"line_number":56,"context_line":"                    \"is_public\": true,"},{"line_number":57,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_e9da1f16","line":54,"updated":"2017-02-24 19:25:35.000000000","message":"\"projects\": null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-create-start.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \"extra_specs\": {"},{"line_number":42,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":43,"context_line":"                    },"},{"line_number":44,"context_line":"                    \"projects\": [],"},{"line_number":45,"context_line":"                    \"swap\": 0,"},{"line_number":46,"context_line":"                    \"is_public\": true,"},{"line_number":47,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_2907d782","line":44,"updated":"2017-02-24 19:25:35.000000000","message":"\"projects\": null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-delete-end.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \"extra_specs\": {"},{"line_number":42,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":43,"context_line":"                    },"},{"line_number":44,"context_line":"                    \"projects\": [],"},{"line_number":45,"context_line":"                    \"swap\": 0,"},{"line_number":46,"context_line":"                    \"is_public\": true,"},{"line_number":47,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_8900c367","line":44,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-delete-start.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_e9f13f96","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-pause-end.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_09edb3b6","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-pause-start.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_292ef7fa","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-power_off-end.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_c93d5b2c","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-power_off-start.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_e9485fce","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/instance-power_on-end.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \"extra_specs\": {"},{"line_number":55,"context_line":"                        \"hw:watchdog_action\": \"disabled\""},{"line_number":56,"context_line":"                    },"},{"line_number":57,"context_line":"                    \"projects\": [],"},{"line_number":58,"context_line":"                    \"swap\": 0,"},{"line_number":59,"context_line":"                    \"is_public\": true,"},{"line_number":60,"context_line":"                    \"vcpu_weight\": 0"}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_0944d3b4","line":57,"updated":"2017-02-24 19:25:35.000000000","message":"null","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"doc/notification_samples/service-update.json":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"            \"report_count\": 1,"},{"line_number":15,"context_line":"            \"forced_down\": false,"},{"line_number":16,"context_line":"            \"version\": 16,"},{"line_number":17,"context_line":"            \"availability_zone\": null"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"event_type\": \"service.update\","}],"source_content_type":"application/json","patch_set":15,"id":"da36d5c6_297c37eb","line":17,"updated":"2017-02-24 19:25:35.000000000","message":"++","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"nova/notifications/objects/aggregate.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3fbe67a50419d03b1bef1e07e5220faf629a9688","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    #         1.1: Making the id field nullable"},{"line_number":29,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        # Note(gibi): id is nullable as aggregate.create.start is sent before"},{"line_number":32,"context_line":"        # the id is generated by the db"},{"line_number":33,"context_line":"        \u0027id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027uuid\u0027: fields.UUIDField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_c470e274","line":31,"range":{"start_line":31,"start_character":10,"end_line":31,"end_character":14},"updated":"2017-02-24 19:41:38.000000000","message":"NOTE","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17da33cb7223fe17fa15c3f0e9da06a44690b4d6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    #         1.1: Making the id field nullable"},{"line_number":29,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        # Note(gibi): id is nullable as aggregate.create.start is sent before"},{"line_number":32,"context_line":"        # the id is generated by the db"},{"line_number":33,"context_line":"        \u0027id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027uuid\u0027: fields.UUIDField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_9bb3a809","line":31,"range":{"start_line":31,"start_character":10,"end_line":31,"end_character":14},"in_reply_to":"da36d5c6_c470e274","updated":"2017-02-24 20:58:47.000000000","message":"Done","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3fbe67a50419d03b1bef1e07e5220faf629a9688","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        # Note(gibi): id is nullable as aggregate.create.start is sent before"},{"line_number":32,"context_line":"        # the id is generated by the db"},{"line_number":33,"context_line":"        \u0027id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027uuid\u0027: fields.UUIDField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027name\u0027: fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_a970270c","line":32,"updated":"2017-02-24 19:41:38.000000000","message":"Is sending aggregate.create.start after creating the object a possbility? Does it need to be sent before creation?","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"790e97c5c36691453769034fe9b982b4ecf5c592","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        # Note(gibi): id is nullable as aggregate.create.start is sent before"},{"line_number":32,"context_line":"        # the id is generated by the db"},{"line_number":33,"context_line":"        \u0027id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027uuid\u0027: fields.UUIDField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027name\u0027: fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_2498de1b","line":32,"in_reply_to":"da36d5c6_a970270c","updated":"2017-02-24 20:19:31.000000000","message":"In general during the notification transformation I try to not change the behavior of the notification transformed.\n\nThe legacy create.start is also sent before the aggregate object was fully created[1]. If we move the create.start notification after the object is created then the create.start and create.end will happen at the same place so it would be meaningless to send both.\n\n[1] https://github.com/openstack/nova/blob/master/nova/objects/aggregate.py#L367","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ca3453cf3f328b4ca14351eaf4b91b6bb4d939b1","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    fields \u003d {"},{"line_number":31,"context_line":"        # NOTE(gibi): id is nullable as aggregate.create.start is sent before"},{"line_number":32,"context_line":"        # the id is generated by the db"},{"line_number":33,"context_line":"        \u0027id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027uuid\u0027: fields.UUIDField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027name\u0027: fields.StringField(),"},{"line_number":36,"context_line":"        \u0027hosts\u0027: fields.ListOfStringsField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_548e72d0","line":33,"updated":"2017-03-10 18:30:36.000000000","message":"Frankly, the id field for aggregates should just be removed from the notification object payload. The ID is autoincrement field that can be duplicated within cell databases. So, this is fine to make it nullable for now, with an eye to remove it in the future at 2.0 object version.","commit_id":"655942069aa77abad90a742cd47690a81987e9d7"}],"nova/notifications/objects/base.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c493a8f890f7ba18d77be8d983c9aaafdbe849cf","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            # NotImplementedError - obj_load_attr() is not even defined"},{"line_number":105,"context_line":"            except (exception.ObjectActionError,"},{"line_number":106,"context_line":"                    NotImplementedError):"},{"line_number":107,"context_line":"                # Note(gibi): This fill fail if the payload field is not"},{"line_number":108,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":109,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":110,"context_line":"                # as nullable"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_93299ef5","line":107,"range":{"start_line":107,"start_character":35,"end_line":107,"end_character":39},"updated":"2017-01-09 09:48:47.000000000","message":"typo: s/fill/will/","commit_id":"09ececc7c655b3746c6bec9877d311875be3f8ce"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0838244668015fa0dbca87e14e9434ea190c7a9f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            # NotImplementedError - obj_load_attr() is not even defined"},{"line_number":105,"context_line":"            except (exception.ObjectActionError,"},{"line_number":106,"context_line":"                    NotImplementedError):"},{"line_number":107,"context_line":"                # Note(gibi): This fill fail if the payload field is not"},{"line_number":108,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":109,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":110,"context_line":"                # as nullable"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_b315c29c","line":107,"range":{"start_line":107,"start_character":35,"end_line":107,"end_character":39},"in_reply_to":"ba5201f7_93299ef5","updated":"2017-01-09 09:49:27.000000000","message":"Done","commit_id":"09ececc7c655b3746c6bec9877d311875be3f8ce"},{"author":{"_account_id":20217,"name":"Anusha Unnam","email":"anusha.unnam25@gmail.com","username":"aunnam"},"change_message_id":"82b615aaac9e0f9f65a9affd68eb312bd56eda98","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            source \u003d kwargs[obj]"},{"line_number":100,"context_line":"            # trigger lazy-load if possible"},{"line_number":101,"context_line":"            try:"},{"line_number":102,"context_line":"                setattr(self, key, getattr(source, field))"},{"line_number":103,"context_line":"            # ObjectActionError - not lazy loadable field"},{"line_number":104,"context_line":"            # NotImplementedError - obj_load_attr() is not even defined"},{"line_number":105,"context_line":"            except (exception.ObjectActionError,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a461143_13530718","line":102,"range":{"start_line":102,"start_character":16,"end_line":102,"end_character":58},"updated":"2017-01-31 23:05:44.000000000","message":"with this change, if there is a lazy-load field in InstancePayload, then every instance.\u003caction\u003e notification will lazy-load the field. So wouldn\u0027t it be an extra DB load?","commit_id":"bf8c59ca73d0ac4e22c5211faf524a9cd1fcbee2"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3fbe67a50419d03b1bef1e07e5220faf629a9688","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                    NotImplementedError,"},{"line_number":109,"context_line":"                    exception.OrphanedObjectError,"},{"line_number":110,"context_line":"                    ovo_exception.OrphanedObjectError):"},{"line_number":111,"context_line":"                # Note(gibi): This will fail if the payload field is not"},{"line_number":112,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":113,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":114,"context_line":"                # as nullable"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_a9058746","line":111,"range":{"start_line":111,"start_character":18,"end_line":111,"end_character":22},"updated":"2017-02-24 19:41:38.000000000","message":"Nit: this should be NOTE all caps","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17da33cb7223fe17fa15c3f0e9da06a44690b4d6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                    NotImplementedError,"},{"line_number":109,"context_line":"                    exception.OrphanedObjectError,"},{"line_number":110,"context_line":"                    ovo_exception.OrphanedObjectError):"},{"line_number":111,"context_line":"                # Note(gibi): This will fail if the payload field is not"},{"line_number":112,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":113,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":114,"context_line":"                # as nullable"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_5ba4d0b8","line":111,"range":{"start_line":111,"start_character":18,"end_line":111,"end_character":22},"in_reply_to":"da36d5c6_a9058746","updated":"2017-02-24 20:58:47.000000000","message":"Done","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9d911f7d21412a8316d2e38d01af20cbb443a7ea","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                # NOTE(gibi): This will fail if the payload field is not"},{"line_number":120,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":121,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":122,"context_line":"                # as nullable"},{"line_number":123,"context_line":"                setattr(self, key, None)"},{"line_number":124,"context_line":"        self.populated \u003d True"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"ba2be162_3f9d98bc","line":122,"updated":"2017-03-02 18:41:59.000000000","message":"So you\u0027re saying you want that failure to not be caught, right?","commit_id":"60303eb49ea931f2c4efb8bca362bc77c9bee265"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"67f4c1fb20b16dcba72029239ee8bad36c105690","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                # NOTE(gibi): This will fail if the payload field is not"},{"line_number":120,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":121,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":122,"context_line":"                # as nullable"},{"line_number":123,"context_line":"                setattr(self, key, None)"},{"line_number":124,"context_line":"        self.populated \u003d True"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"ba2be162_89438b41","line":122,"in_reply_to":"ba2be162_3f9d98bc","updated":"2017-03-03 14:38:09.000000000","message":"Yes, I want that problem to cause unit/functional test to fail so that we can fix it. The only other option here would be not to add the given field to the generated payload but that breaks the notification API contract.","commit_id":"60303eb49ea931f2c4efb8bca362bc77c9bee265"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ca3453cf3f328b4ca14351eaf4b91b6bb4d939b1","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                # nullable, but that means that either the source object is not"},{"line_number":121,"context_line":"                # properly initialized or the payload field needs to be defined"},{"line_number":122,"context_line":"                # as nullable"},{"line_number":123,"context_line":"                setattr(self, key, None)"},{"line_number":124,"context_line":"        self.populated \u003d True"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        # the schema population will create changed fields but we don\u0027t need"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_b4b5ee7e","line":123,"updated":"2017-03-10 18:30:36.000000000","message":"++ good.","commit_id":"655942069aa77abad90a742cd47690a81987e9d7"}],"nova/notifications/objects/flavor.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9d911f7d21412a8316d2e38d01af20cbb443a7ea","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    # Version 1.1: Add other fields for Flavor"},{"line_number":37,"context_line":"    # Version 1.2: Add extra_specs and projects fields"},{"line_number":38,"context_line":"    # Version 1.3: Make projects and extra_specs field nullable as they are"},{"line_number":39,"context_line":"    # not always available when an notification is emitted."},{"line_number":40,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # NOTE: if we\u0027d want to rename some fields(memory_mb-\u003eram, root_gb-\u003edisk,"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba2be162_bf98a8c1","line":39,"updated":"2017-03-02 18:41:59.000000000","message":"a notification","commit_id":"60303eb49ea931f2c4efb8bca362bc77c9bee265"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"67f4c1fb20b16dcba72029239ee8bad36c105690","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    # Version 1.1: Add other fields for Flavor"},{"line_number":37,"context_line":"    # Version 1.2: Add extra_specs and projects fields"},{"line_number":38,"context_line":"    # Version 1.3: Make projects and extra_specs field nullable as they are"},{"line_number":39,"context_line":"    # not always available when an notification is emitted."},{"line_number":40,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # NOTE: if we\u0027d want to rename some fields(memory_mb-\u003eram, root_gb-\u003edisk,"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba2be162_69f657fa","line":39,"in_reply_to":"ba2be162_bf98a8c1","updated":"2017-03-03 14:38:09.000000000","message":"Done","commit_id":"60303eb49ea931f2c4efb8bca362bc77c9bee265"}],"nova/objects/flavor.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3fbe67a50419d03b1bef1e07e5220faf629a9688","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                                                 flavorid\u003dself.flavorid)"},{"line_number":607,"context_line":"            self._from_db_object(self._context, self, db_flavor)"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            # Note(gibi): We have to make sure that every field is initialized"},{"line_number":610,"context_line":"            # so that notification can be sent."},{"line_number":611,"context_line":"            if not self.obj_attr_is_set(\u0027extra_specs\u0027):"},{"line_number":612,"context_line":"                self.extra_specs \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_242ffe3f","line":609,"range":{"start_line":609,"start_character":14,"end_line":609,"end_character":18},"updated":"2017-02-24 19:41:38.000000000","message":"NOTE","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17da33cb7223fe17fa15c3f0e9da06a44690b4d6","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                                                 flavorid\u003dself.flavorid)"},{"line_number":607,"context_line":"            self._from_db_object(self._context, self, db_flavor)"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            # Note(gibi): We have to make sure that every field is initialized"},{"line_number":610,"context_line":"            # so that notification can be sent."},{"line_number":611,"context_line":"            if not self.obj_attr_is_set(\u0027extra_specs\u0027):"},{"line_number":612,"context_line":"                self.extra_specs \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_bbadcc9c","line":609,"range":{"start_line":609,"start_character":14,"end_line":609,"end_character":18},"in_reply_to":"da36d5c6_242ffe3f","updated":"2017-02-24 20:58:47.000000000","message":"Done","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3fbe67a50419d03b1bef1e07e5220faf629a9688","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # Note(gibi): We have to make sure that every field is initialized"},{"line_number":610,"context_line":"            # so that notification can be sent."},{"line_number":611,"context_line":"            if not self.obj_attr_is_set(\u0027extra_specs\u0027):"},{"line_number":612,"context_line":"                self.extra_specs \u003d {}"},{"line_number":613,"context_line":"            self._send_notification(fields.NotificationAction.DELETE)"},{"line_number":614,"context_line":"        except exception.FlavorNotFound:"},{"line_number":615,"context_line":"            db.flavor_destroy(self._context, self.flavorid)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_a4c76e94","line":612,"updated":"2017-02-24 19:41:38.000000000","message":"Why do this instead of making the FlavorPayload extra_specs field nullable? I don\u0027t understand how the decision is made to make the field nullable vs making sure it\u0027s always set?","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17da33cb7223fe17fa15c3f0e9da06a44690b4d6","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # Note(gibi): We have to make sure that every field is initialized"},{"line_number":610,"context_line":"            # so that notification can be sent."},{"line_number":611,"context_line":"            if not self.obj_attr_is_set(\u0027extra_specs\u0027):"},{"line_number":612,"context_line":"                self.extra_specs \u003d {}"},{"line_number":613,"context_line":"            self._send_notification(fields.NotificationAction.DELETE)"},{"line_number":614,"context_line":"        except exception.FlavorNotFound:"},{"line_number":615,"context_line":"            db.flavor_destroy(self._context, self.flavorid)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_db98c07a","line":612,"in_reply_to":"da36d5c6_643ad6e8","updated":"2017-02-24 20:58:47.000000000","message":"DONE","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"790e97c5c36691453769034fe9b982b4ecf5c592","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # Note(gibi): We have to make sure that every field is initialized"},{"line_number":610,"context_line":"            # so that notification can be sent."},{"line_number":611,"context_line":"            if not self.obj_attr_is_set(\u0027extra_specs\u0027):"},{"line_number":612,"context_line":"                self.extra_specs \u003d {}"},{"line_number":613,"context_line":"            self._send_notification(fields.NotificationAction.DELETE)"},{"line_number":614,"context_line":"        except exception.FlavorNotFound:"},{"line_number":615,"context_line":"            db.flavor_destroy(self._context, self.flavorid)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da36d5c6_643ad6e8","line":612,"in_reply_to":"da36d5c6_a4c76e94","updated":"2017-02-24 20:19:31.000000000","message":"Good point. When we decided with Jay that FlavorPayload.projects should be nullable then I should have made this nullable too and remove this initialization. \n\nThe general rule I want to follow: Include every data that is available even if it needs to be lazy loaded. Use None to signal that some data is not available / loadable.","commit_id":"333f0236d03c3bd1c72aeb22aadde14d7fccb166"}],"nova/objects/instance.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6796a565b843fa2d61aa0e0855847162c015bd74","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        flavor_info \u003d jsonutils.loads(db_flavor)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.flavor \u003d objects.Flavor.obj_from_primitive(flavor_info[\u0027cur\u0027])"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        # Note(gibi): avoid having an orphaned context to support lazy-load on"},{"line_number":323,"context_line":"        # flavor fields. This applied for old_flavor and new_flavor as well."},{"line_number":324,"context_line":"        self.flavor._context \u003d self._context"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        if flavor_info[\u0027old\u0027]:"},{"line_number":327,"context_line":"            self.old_flavor \u003d objects.Flavor.obj_from_primitive("},{"line_number":328,"context_line":"                flavor_info[\u0027old\u0027])"},{"line_number":329,"context_line":"            self.old_flavor._context \u003d self._context"}],"source_content_type":"text/x-python","patch_set":14,"id":"da36d5c6_9200f467","line":326,"range":{"start_line":321,"start_character":0,"end_line":326,"end_character":1},"updated":"2017-02-24 17:02:47.000000000","message":"After discussion with jaypipes we agreed to keep the flavor orphaned in the Instance object. So this patch needs to be adapted.","commit_id":"531b62526f4236a55de3bcfbd4122aa83a1f3dea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"25006336cd527d2090a82e913090a6a63475ed54","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        flavor_info \u003d jsonutils.loads(db_flavor)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.flavor \u003d objects.Flavor.obj_from_primitive(flavor_info[\u0027cur\u0027])"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        # Note(gibi): avoid having an orphaned context to support lazy-load on"},{"line_number":323,"context_line":"        # flavor fields. This applied for old_flavor and new_flavor as well."},{"line_number":324,"context_line":"        self.flavor._context \u003d self._context"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        if flavor_info[\u0027old\u0027]:"},{"line_number":327,"context_line":"            self.old_flavor \u003d objects.Flavor.obj_from_primitive("},{"line_number":328,"context_line":"                flavor_info[\u0027old\u0027])"},{"line_number":329,"context_line":"            self.old_flavor._context \u003d self._context"}],"source_content_type":"text/x-python","patch_set":14,"id":"da36d5c6_69570fca","line":326,"range":{"start_line":321,"start_character":0,"end_line":326,"end_character":1},"in_reply_to":"da36d5c6_9200f467","updated":"2017-02-24 19:14:45.000000000","message":"Done","commit_id":"531b62526f4236a55de3bcfbd4122aa83a1f3dea"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        flavor_info \u003d jsonutils.loads(db_flavor)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.flavor \u003d objects.Flavor.obj_from_primitive(flavor_info[\u0027cur\u0027])"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        if flavor_info[\u0027old\u0027]:"},{"line_number":323,"context_line":"            self.old_flavor \u003d objects.Flavor.obj_from_primitive("},{"line_number":324,"context_line":"                flavor_info[\u0027old\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_49f40b5a","line":321,"updated":"2017-02-24 19:25:35.000000000","message":"hmm? :)","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"014f6d1102cb58c4cd497615077b31b5fc99ef11","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        flavor_info \u003d jsonutils.loads(db_flavor)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.flavor \u003d objects.Flavor.obj_from_primitive(flavor_info[\u0027cur\u0027])"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        if flavor_info[\u0027old\u0027]:"},{"line_number":323,"context_line":"            self.old_flavor \u003d objects.Flavor.obj_from_primitive("},{"line_number":324,"context_line":"                flavor_info[\u0027old\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_189fbe5f","line":321,"in_reply_to":"da36d5c6_49f40b5a","updated":"2017-02-24 20:57:09.000000000","message":"Done","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}],"nova/objects/service.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45b6ae7bef91a641f4cd90bf90557fb6faf1988b","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        allow_missing \u003d (\u0027availability_zone\u0027,)"},{"line_number":195,"context_line":"        for key in service.fields:"},{"line_number":196,"context_line":"            if key in allow_missing and key not in db_service:"},{"line_number":197,"context_line":"                service[key] \u003d None"},{"line_number":198,"context_line":"                continue"},{"line_number":199,"context_line":"            if key \u003d\u003d \u0027compute_node\u0027:"},{"line_number":200,"context_line":"                #  NOTE(sbauza); We want to only lazy-load compute_node"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_74fa15bf","line":197,"updated":"2017-01-03 17:18:18.000000000","message":"We might need to move it to obj_load_attr","commit_id":"cad99aef424c323344d2558fdf721e7853503933"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f5281588d1c6f82f672bb32d7a74db468ca147a5","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        allow_missing \u003d (\u0027availability_zone\u0027,)"},{"line_number":195,"context_line":"        for key in service.fields:"},{"line_number":196,"context_line":"            if key in allow_missing and key not in db_service:"},{"line_number":197,"context_line":"                service[key] \u003d None"},{"line_number":198,"context_line":"                continue"},{"line_number":199,"context_line":"            if key \u003d\u003d \u0027compute_node\u0027:"},{"line_number":200,"context_line":"                #  NOTE(sbauza); We want to only lazy-load compute_node"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_1ed198fa","line":197,"in_reply_to":"ba5201f7_74fa15bf","updated":"2017-01-05 12:17:40.000000000","message":"Done","commit_id":"cad99aef424c323344d2558fdf721e7853503933"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"577f52e27139731593b43d1260bd5ed57c25c14a","unresolved":false,"context_lines":[{"line_number":180,"context_line":"             \u0027state_update.new_task_state\u0027: None,"},{"line_number":181,"context_line":"             \u0027state_update.old_task_state\u0027: \u0027scheduling\u0027,"},{"line_number":182,"context_line":"             \u0027task_state\u0027: None,"},{"line_number":183,"context_line":"             \u0027flavor.projects\u0027: []},"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"            # scheduled"},{"line_number":186,"context_line":"            {\u0027host\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"da36d5c6_2998b71b","line":183,"updated":"2017-02-24 19:25:35.000000000","message":"should be null, not [], right? anything in *instance* notifications should have flavor.projects set to null, right? At least, any notification \u003e\u003d 1.3 version...","commit_id":"c62b3db3c908c2ecea6c03b52ebff0b2a088fda4"}]}
