)]}'
{"heat/engine/resources/server.py":[{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"3855033fb05f640bcb6e74532f4e9c24b7a66efb","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                       status\u003dserver.status))"},{"line_number":342,"context_line":"            raise exc"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @classmethod"},{"line_number":345,"context_line":"    def _build_block_device_mapping(cls, bdm):"},{"line_number":346,"context_line":"        if not bdm:"},{"line_number":347,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9SAA%3D","line":344,"updated":"2013-12-13 04:03:01.000000000","message":"this doesn\u0027t seem to be a related change, and I am not sure of the reason for the change (in this case)\neven after reading: http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python\n\nUnless you just want to make sure which version of _build_xxx() is getting called (staticmethod is a bit class dumb)?","commit_id":"12d10ac72905cfd9c627501fb6c63071bfe2cb5e"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"3064b9c9719bfbaecdf0ca649ca4127d40afc702","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                       status\u003dserver.status))"},{"line_number":342,"context_line":"            raise exc"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @classmethod"},{"line_number":345,"context_line":"    def _build_block_device_mapping(cls, bdm):"},{"line_number":346,"context_line":"        if not bdm:"},{"line_number":347,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9Hyc%3D","line":344,"in_reply_to":"AAAATn%2F9LEI%3D","updated":"2013-12-16 16:06:23.000000000","message":"Yeah, exactly. The property names are defined in the context of the class, so we could refer to them all as Server.BLOCK_DEVICE_MAPPING_*, but that causes line wrapping issues ;) More importantly, it could potentially be the Wrong Thing for subclasses, so by making this a classmethod we get cls passed in and that always does the Right Thing.","commit_id":"12d10ac72905cfd9c627501fb6c63071bfe2cb5e"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"8592ca3a3117bfdc752683d13d9e8c4944337783","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                       status\u003dserver.status))"},{"line_number":342,"context_line":"            raise exc"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @classmethod"},{"line_number":345,"context_line":"    def _build_block_device_mapping(cls, bdm):"},{"line_number":346,"context_line":"        if not bdm:"},{"line_number":347,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9LEI%3D","line":344,"in_reply_to":"AAAATn%2F9SAA%3D","updated":"2013-12-15 23:42:02.000000000","message":"It looks like this was done to get a cls object to access the class constant property names, which seems reasonable.","commit_id":"12d10ac72905cfd9c627501fb6c63071bfe2cb5e"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"9035096b1eec2190d7b292b1d65eca60dc43a4c8","unresolved":false,"context_lines":[{"line_number":432,"context_line":"        if \u0027flavor\u0027 in prop_diff:"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"            flavor_update_policy \u003d ("},{"line_number":435,"context_line":"                prop_diff.get(\u0027flavor_update_policy\u0027) or"},{"line_number":436,"context_line":"                self.properties.get(self.FLAVOR_UPDATE_POLICY))"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"            if flavor_update_policy \u003d\u003d \u0027REPLACE\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9BZ0%3D","line":435,"updated":"2013-12-17 15:58:12.000000000","message":"Shouldn\u0027t this line be:\n\n prop_diff.get(self.FLAVOR_UPDATE_POLICY) or\n\n?","commit_id":"e7a12fce0dc8aee87cffe82b808c84a207b154bc"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"e11eda85aa142716b7e9ad47b830f0ef3b3768f1","unresolved":false,"context_lines":[{"line_number":432,"context_line":"        if \u0027flavor\u0027 in prop_diff:"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"            flavor_update_policy \u003d ("},{"line_number":435,"context_line":"                prop_diff.get(\u0027flavor_update_policy\u0027) or"},{"line_number":436,"context_line":"                self.properties.get(self.FLAVOR_UPDATE_POLICY))"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"            if flavor_update_policy \u003d\u003d \u0027REPLACE\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9AVQ%3D","line":435,"in_reply_to":"AAAATn%2F9BZ0%3D","updated":"2013-12-17 19:48:08.000000000","message":"Done\n\nWell spotted, thanks! On closer inspection, there turned out to be a bunch more in this method :)","commit_id":"e7a12fce0dc8aee87cffe82b808c84a207b154bc"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"9035096b1eec2190d7b292b1d65eca60dc43a4c8","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        if \u0027image\u0027 in prop_diff:"},{"line_number":450,"context_line":"            image_update_policy \u003d ("},{"line_number":451,"context_line":"                prop_diff.get(\u0027image_update_policy\u0027) or"},{"line_number":452,"context_line":"                self.properties.get(self.IMAGE_UPDATE_POLICY))"},{"line_number":453,"context_line":"            if image_update_policy \u003d\u003d \u0027REPLACE\u0027:"},{"line_number":454,"context_line":"                raise resource.UpdateReplace(self.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9BZo%3D","line":451,"updated":"2013-12-17 15:58:12.000000000","message":"Shouldn\u0027t this line be:\n\n prop_diff.get(self.IMAGE_UPDATE_POLICY) or\n\n?","commit_id":"e7a12fce0dc8aee87cffe82b808c84a207b154bc"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"e11eda85aa142716b7e9ad47b830f0ef3b3768f1","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        if \u0027image\u0027 in prop_diff:"},{"line_number":450,"context_line":"            image_update_policy \u003d ("},{"line_number":451,"context_line":"                prop_diff.get(\u0027image_update_policy\u0027) or"},{"line_number":452,"context_line":"                self.properties.get(self.IMAGE_UPDATE_POLICY))"},{"line_number":453,"context_line":"            if image_update_policy \u003d\u003d \u0027REPLACE\u0027:"},{"line_number":454,"context_line":"                raise resource.UpdateReplace(self.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9AVM%3D","line":451,"in_reply_to":"AAAATn%2F9BZo%3D","updated":"2013-12-17 19:48:08.000000000","message":"Done","commit_id":"e7a12fce0dc8aee87cffe82b808c84a207b154bc"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"5c3b33bf6f5e30edf357e9ea8b1dbd232abfbfeb","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        IMAGE_UPDATE_POLICY: properties.Schema("},{"line_number":133,"context_line":"            properties.Schema.STRING,"},{"line_number":134,"context_line":"            _(\u0027Policy on how to apply an image-id update; either by \u0027"},{"line_number":135,"context_line":"              \u0027requesting a server rebuild or by replacing the entire server\u0027),"},{"line_number":136,"context_line":"            default\u003d\u0027REPLACE\u0027,"},{"line_number":137,"context_line":"            constraints\u003d["},{"line_number":138,"context_line":"                constraints.AllowedValues([\u0027REBUILD\u0027, \u0027REPLACE\u0027]),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F84Xw%3D","line":135,"updated":"2013-12-19 08:35:45.000000000","message":"Let\u0027s add this missed early end of line.","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"5c3b33bf6f5e30edf357e9ea8b1dbd232abfbfeb","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        ADMIN_USER: properties.Schema("},{"line_number":147,"context_line":"            properties.Schema.STRING,"},{"line_number":148,"context_line":"            _(\u0027Name of the administrative user to use on the server.\u0027),"},{"line_number":149,"context_line":"            default\u003d\u0027ec2-user\u0027"},{"line_number":150,"context_line":"        ),"},{"line_number":151,"context_line":"        AVAILABILITY_ZONE: properties.Schema("},{"line_number":152,"context_line":"            properties.Schema.STRING,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F84WQ%3D","line":149,"updated":"2013-12-19 08:35:45.000000000","message":"Only question: It\u0027s really normal, that we use:\n\u0027ec2-user\u0027 instead cfg.CONF.instance_user.\nI have seen, that default value in configuration really same. In other side we will lose \nexisted functional.","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2950e9d22c0a34090c0afea517bccd98a250e06f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        ADMIN_USER: properties.Schema("},{"line_number":147,"context_line":"            properties.Schema.STRING,"},{"line_number":148,"context_line":"            _(\u0027Name of the administrative user to use on the server.\u0027),"},{"line_number":149,"context_line":"            default\u003d\u0027ec2-user\u0027"},{"line_number":150,"context_line":"        ),"},{"line_number":151,"context_line":"        AVAILABILITY_ZONE: properties.Schema("},{"line_number":152,"context_line":"            properties.Schema.STRING,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F80HQ%3D","line":149,"in_reply_to":"AAAATn%2F84WQ%3D","updated":"2013-12-20 01:53:08.000000000","message":"Agree, this is a regression. Well caught.","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"3075ae415c274e7c98d468d3bb5695040be0d2bf","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        ADMIN_USER: properties.Schema("},{"line_number":147,"context_line":"            properties.Schema.STRING,"},{"line_number":148,"context_line":"            _(\u0027Name of the administrative user to use on the server.\u0027),"},{"line_number":149,"context_line":"            default\u003d\u0027ec2-user\u0027"},{"line_number":150,"context_line":"        ),"},{"line_number":151,"context_line":"        AVAILABILITY_ZONE: properties.Schema("},{"line_number":152,"context_line":"            properties.Schema.STRING,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FqoY%3D","line":149,"in_reply_to":"AAAATn%2F84WQ%3D","updated":"2014-01-03 20:43:36.000000000","message":"Great work, thanks for catching this :)\n\n(The reason is that I used a script that actually executed the Python code to convert everything over, so references to objects did not survive the process.)","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"5c3b33bf6f5e30edf357e9ea8b1dbd232abfbfeb","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                        \u0027Use only \"%(id)s\" property.\u0027"},{"line_number":534,"context_line":"                        \u0027\u0027) % dict(uuid\u003dself.NETWORK_UUID,"},{"line_number":535,"context_line":"                                   id\u003dself.NETWORK_ID,"},{"line_number":536,"context_line":"                                   network\u003dnetwork[\u0027network\u0027],"},{"line_number":537,"context_line":"                                   server\u003dself.name)"},{"line_number":538,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":539,"context_line":"            elif network.get(self.NETWORK_UUID):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F84fk%3D","line":536,"updated":"2013-12-19 08:35:45.000000000","message":"may be make same changes for line:\n\nnetwork\u003dnetwork[\u0027network\u0027]","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2950e9d22c0a34090c0afea517bccd98a250e06f","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                        \u0027Use only \"%(id)s\" property.\u0027"},{"line_number":534,"context_line":"                        \u0027\u0027) % dict(uuid\u003dself.NETWORK_UUID,"},{"line_number":535,"context_line":"                                   id\u003dself.NETWORK_ID,"},{"line_number":536,"context_line":"                                   network\u003dnetwork[\u0027network\u0027],"},{"line_number":537,"context_line":"                                   server\u003dself.name)"},{"line_number":538,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":539,"context_line":"            elif network.get(self.NETWORK_UUID):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F80Gg%3D","line":536,"in_reply_to":"AAAATn%2F84fk%3D","updated":"2013-12-20 01:53:08.000000000","message":"network\u003dnetwork[self.NETWORK]","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"5c3b33bf6f5e30edf357e9ea8b1dbd232abfbfeb","unresolved":false,"context_lines":[{"line_number":543,"context_line":"                              \u0027\"%(id)s\"  property instead.\u0027"},{"line_number":544,"context_line":"                              \u0027\u0027) % dict(uuid\u003dself.NETWORK_UUID,"},{"line_number":545,"context_line":"                                         id\u003dself.NETWORK_ID,"},{"line_number":546,"context_line":"                                         network\u003dnetwork[\u0027network\u0027],"},{"line_number":547,"context_line":"                                         server\u003dself.name))"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def handle_delete(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F84fo%3D","line":546,"updated":"2013-12-19 08:35:45.000000000","message":"same changes","commit_id":"d91c33a4a024abf981893a159defc5499a2dd15d"}]}
