)]}'
{"heat/engine/resources/server.py":[{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"1840ca9f0d218a8ac49f11f5ca3f4caf72a80476","unresolved":false,"context_lines":[{"line_number":235,"context_line":"              \u0027boot. Keys are file names and values are the \u0027"},{"line_number":236,"context_line":"              \u0027file contents (either as a string or as a \u0027"},{"line_number":237,"context_line":"              \u0027file-like object). A maximum of five entries is \u0027"},{"line_number":238,"context_line":"              \u0027allowed, and each file must be 10k or less.\u0027),"},{"line_number":239,"context_line":"            default\u003d{}"},{"line_number":240,"context_line":"        )"},{"line_number":241,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bjy0%3D","line":238,"updated":"2014-01-24 11:54:37.000000000","message":"The limits should be derived via absolute_limits in nova_utils.py not hard coded","commit_id":"0c66e909a66933e93f886f665078699ca1f84f69"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"737ff401024bec5557fb32bd22bcffe536320d1e","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        personality_files \u003d self._personality_files()"},{"line_number":585,"context_line":"        if personality_files is not None:"},{"line_number":586,"context_line":"            if len(personality_files) \u003e 5:"},{"line_number":587,"context_line":"                msg \u003d _(\"The personality_files property may not contain \""},{"line_number":588,"context_line":"                        \"greater than five entries.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bkl4%3D","line":585,"updated":"2014-01-24 09:25:12.000000000","message":"Why only 5 files? I could not find any constraints in nova.","commit_id":"0c66e909a66933e93f886f665078699ca1f84f69"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"1840ca9f0d218a8ac49f11f5ca3f4caf72a80476","unresolved":false,"context_lines":[{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        personality_files \u003d self._personality_files()"},{"line_number":585,"context_line":"        if personality_files is not None:"},{"line_number":586,"context_line":"            if len(personality_files) \u003e 5:"},{"line_number":587,"context_line":"                msg \u003d _(\"The personality_files property may not contain \""},{"line_number":588,"context_line":"                        \"greater than five entries.\")"},{"line_number":589,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bjyo%3D","line":586,"updated":"2014-01-24 11:54:37.000000000","message":"This limit should be derived from absolute_limits not hard coded","commit_id":"0c66e909a66933e93f886f665078699ca1f84f69"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"a2fe2d1b97c882e1cc414723ff23d8783238710e","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        return super(Server, self).physical_resource_name()"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def _personality_files(self):"},{"line_number":279,"context_line":"        return self.properties.get(\u0027personality_files\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def handle_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bg9I%3D","line":278,"updated":"2014-01-24 21:22:36.000000000","message":"With leading under score, this method seems to be a internal method, but derived class/resource is overriding this method. In future if some one changes this method name or signature, derived resources would break.\nI suggest you to add some comment, that says something like \u0027this method could be overriden in derived resource...\u0027","commit_id":"f545aea5b9728ce5626e114124fd3ef3f342cf8d"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"250c037090735755c0d14b27f205206536c13a49","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        return super(Server, self).physical_resource_name()"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def _personality_files(self):"},{"line_number":279,"context_line":"        return self.properties.get(\u0027personality_files\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def handle_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BWIE%3D","line":278,"in_reply_to":"AAAAUH%2F%2Bg9I%3D","updated":"2014-01-27 20:25:45.000000000","message":"Done","commit_id":"f545aea5b9728ce5626e114124fd3ef3f342cf8d"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"b4d965ea29b813a7cbdc5aa53d5b5f4234ecfaa8","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _personality(self):"},{"line_number":276,"context_line":"        # This method could be overridden derived resource"},{"line_number":277,"context_line":"        return self.properties.get(\u0027personality\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def handle_create(self):"},{"line_number":280,"context_line":"        security_groups \u003d self.properties.get(self.SECURITY_GROUPS)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BF2w%3D","line":277,"updated":"2014-01-30 08:00:40.000000000","message":"Please use self.PERSONALITY instead \u0027personality\u0027","commit_id":"9e0c02b7d43eb7a3712335748b604da6d5e12286"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"b4d965ea29b813a7cbdc5aa53d5b5f4234ecfaa8","unresolved":false,"context_lines":[{"line_number":568,"context_line":"                                         server\u003dself.name))"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"        # retrieve provider\u0027s absolute limits if it will be needed"},{"line_number":571,"context_line":"        metadata \u003d self.properties.get(\u0027metadata\u0027)"},{"line_number":572,"context_line":"        personality \u003d self._personality()"},{"line_number":573,"context_line":"        if metadata is not None or personality is not None:"},{"line_number":574,"context_line":"            limits \u003d nova_utils.absolute_limits(self.nova())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BF2M%3D","line":571,"updated":"2014-01-30 08:00:40.000000000","message":"self.METADATA intead \u0027metadata\u0027","commit_id":"9e0c02b7d43eb7a3712335748b604da6d5e12286"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"3887fb28d89fe08c48bbf1a16ff8c767d9bc0b86","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        return super(Server, self).physical_resource_name()"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _personality(self):"},{"line_number":278,"context_line":"        # This method could be overridden derived resource"},{"line_number":279,"context_line":"        return self.properties.get(self.PERSONALITY)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def handle_create(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9hdo%3D","line":278,"updated":"2014-02-06 10:26:25.000000000","message":"What\u0027s the use-case for this, and why can\u0027t the derived resource just specify the overridden value via the properties?  If there\u0027s no current use-case, I\u0027d rather just remove it.\n\nAlso the comment looks weird, should be something like \"This method can be overriden by derived resources\", but better would be \"This method is overridden by $resource\" so we know it\u0027s actually needed.","commit_id":"857a12727df65f5b155a432c59f5db726792a338"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"7c275451190d104146d48d0ee86d94ee72cebcba","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        return super(Server, self).physical_resource_name()"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _personality(self):"},{"line_number":278,"context_line":"        # This method could be overridden derived resource"},{"line_number":279,"context_line":"        return self.properties.get(self.PERSONALITY)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def handle_create(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9e%2Fg%3D","line":278,"in_reply_to":"AAAAUH%2F9hdo%3D","updated":"2014-02-06 15:57:07.000000000","message":"I tried to do it the way you suggested, but I get an error:\n\n\"TypeError: \u0027Properties\u0027 object does not support item assignment\"\n\nI think Properties would need to inherit from collections.MutableMapping to make that possible.\n\nI will update the comment.","commit_id":"857a12727df65f5b155a432c59f5db726792a338"}],"heat/tests/test_server.py":[{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"aea4337b874387eb20a0fa47133aa8588c51b463","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.fc \u003d fakes.FakeClient()"},{"line_number":65,"context_line":"        utils.setup_dummy_db()"},{"line_number":66,"context_line":"        self.limits \u003d self.m.CreateMockAnything()"},{"line_number":67,"context_line":"        self.limits.absolute \u003d self._limits_absolute()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _limits_absolute(self):"},{"line_number":70,"context_line":"        max_personality \u003d self.m.CreateMockAnything()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9rss%3D","line":67,"updated":"2014-02-05 01:17:33.000000000","message":"This is a bit weird -- since you\u0027re just assigning the generator object to self.limits.absolute, it will only allow iteration once, and no indexing operations. Since this is usually a list, I suggest making _limits_absolute return a list with the three items instead of yielding three items. You could also wrap a list() around the call to _limits_absolute.","commit_id":"857a12727df65f5b155a432c59f5db726792a338"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"6b663bc4983789c78b669dbcbf1e665f78633d3e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.fc \u003d fakes.FakeClient()"},{"line_number":65,"context_line":"        utils.setup_dummy_db()"},{"line_number":66,"context_line":"        self.limits \u003d self.m.CreateMockAnything()"},{"line_number":67,"context_line":"        self.limits.absolute \u003d self._limits_absolute()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _limits_absolute(self):"},{"line_number":70,"context_line":"        max_personality \u003d self.m.CreateMockAnything()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9nt4%3D","line":67,"in_reply_to":"AAAAUH%2F9oKI%3D","updated":"2014-02-05 15:58:56.000000000","message":"My bad! I\u0027m not sure where I thought I saw it as a list.","commit_id":"857a12727df65f5b155a432c59f5db726792a338"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"98bc4fda0204c5adc7b318c9fe446ed4d64686a4","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.fc \u003d fakes.FakeClient()"},{"line_number":65,"context_line":"        utils.setup_dummy_db()"},{"line_number":66,"context_line":"        self.limits \u003d self.m.CreateMockAnything()"},{"line_number":67,"context_line":"        self.limits.absolute \u003d self._limits_absolute()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _limits_absolute(self):"},{"line_number":70,"context_line":"        max_personality \u003d self.m.CreateMockAnything()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9oKI%3D","line":67,"in_reply_to":"AAAAUH%2F9rss%3D","updated":"2014-02-05 15:04:57.000000000","message":"novaclient.limits.get() returns an object whose \"absolute\" attribute is a generator that behaves exactly like the one here (except it has a few more limits that we don\u0027t need for these tests).","commit_id":"857a12727df65f5b155a432c59f5db726792a338"}]}
