)]}'
{"heat/engine/resources/neutron/loadbalancer.py":[{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"bb6805c7bb74a01266c396db46375b0b2f203e7b","unresolved":false,"context_lines":[{"line_number":651,"context_line":"        client \u003d self.neutron()"},{"line_number":652,"context_line":"        protocol_port \u003d self.properties[self.PROTOCOL_PORT]"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        for member in self.properties[self.MEMBERS] or []:"},{"line_number":655,"context_line":"            address \u003d self.client_plugin(\u0027nova\u0027).server_to_ipaddress(member)"},{"line_number":656,"context_line":"            lb_member \u003d client.create_member({"},{"line_number":657,"context_line":"                \u0027member\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_4db9a3e8","line":654,"updated":"2014-10-11 02:36:31.000000000","message":"if without the key \u0027self.MEMBERS\u0027, here will raise keyError exception, right?","commit_id":"7506d2c22fcd3d6e825ee660a4b20c5947cc7e9a"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"ab5186ee21ec686828ff0844f19ac633ee45ad86","unresolved":false,"context_lines":[{"line_number":651,"context_line":"        client \u003d self.neutron()"},{"line_number":652,"context_line":"        protocol_port \u003d self.properties[self.PROTOCOL_PORT]"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        for member in self.properties[self.MEMBERS] or []:"},{"line_number":655,"context_line":"            address \u003d self.client_plugin(\u0027nova\u0027).server_to_ipaddress(member)"},{"line_number":656,"context_line":"            lb_member \u003d client.create_member({"},{"line_number":657,"context_line":"                \u0027member\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_cda67353","line":654,"in_reply_to":"baa201ad_4db0c3f4","updated":"2014-10-11 04:03:57.000000000","message":"MEMBERS is not required property, IMO it\u0027s better to use self.properties.get(self.MEMBERS) instead of self.properties[self.MEMBERS]","commit_id":"7506d2c22fcd3d6e825ee660a4b20c5947cc7e9a"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"65b93b0e950cac7e532b642fc33141280fb011ab","unresolved":false,"context_lines":[{"line_number":651,"context_line":"        client \u003d self.neutron()"},{"line_number":652,"context_line":"        protocol_port \u003d self.properties[self.PROTOCOL_PORT]"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        for member in self.properties[self.MEMBERS] or []:"},{"line_number":655,"context_line":"            address \u003d self.client_plugin(\u0027nova\u0027).server_to_ipaddress(member)"},{"line_number":656,"context_line":"            lb_member \u003d client.create_member({"},{"line_number":657,"context_line":"                \u0027member\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_4db0c3f4","line":654,"in_reply_to":"baa201ad_4db9a3e8","updated":"2014-10-11 02:41:03.000000000","message":"Nope, it\u0027s always present in the schema, so it always returns a value.","commit_id":"7506d2c22fcd3d6e825ee660a4b20c5947cc7e9a"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"b24be617f08b6ab7ef5e4ff6a73fb04127737787","unresolved":false,"context_lines":[{"line_number":651,"context_line":"        client \u003d self.neutron()"},{"line_number":652,"context_line":"        protocol_port \u003d self.properties[self.PROTOCOL_PORT]"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        for member in self.properties[self.MEMBERS] or []:"},{"line_number":655,"context_line":"            address \u003d self.client_plugin(\u0027nova\u0027).server_to_ipaddress(member)"},{"line_number":656,"context_line":"            lb_member \u003d client.create_member({"},{"line_number":657,"context_line":"                \u0027member\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_4334fddd","line":654,"in_reply_to":"baa201ad_cda67353","updated":"2014-10-13 12:00:48.000000000","message":"\u003e MEMBERS is not required property,\n\nThat isn\u0027t relevant. The only way the __getitem__ raises KeyError is if the key doesn\u0027t exist in the *schema*: http://git.openstack.org/cgit/openstack/heat/tree/heat/engine/properties.py#n380\n\n\u003e IMO it\u0027s better to use self.properties.get(self.MEMBERS) instead of self.properties[self.MEMBERS]\n\nThis isn\u0027t a question of opinion. There is objectively no difference, and the cargo-culted get() is misleading.","commit_id":"7506d2c22fcd3d6e825ee660a4b20c5947cc7e9a"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"bb6805c7bb74a01266c396db46375b0b2f203e7b","unresolved":false,"context_lines":[{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    def handle_delete(self):"},{"line_number":699,"context_line":"        client \u003d self.neutron()"},{"line_number":700,"context_line":"        for member in self.properties[self.MEMBERS] or []:"},{"line_number":701,"context_line":"            member_id \u003d self.data().get(member)"},{"line_number":702,"context_line":"            try:"},{"line_number":703,"context_line":"                client.delete_member(member_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_6dcd8786","line":700,"updated":"2014-10-11 02:36:31.000000000","message":"same","commit_id":"7506d2c22fcd3d6e825ee660a4b20c5947cc7e9a"}]}
