)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"052b79d3ca95d7458421faf5d4436f99c2b6c6ac","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix host multi availability zone issue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova default support single availability zone of"},{"line_number":10,"context_line":"a host, but aggregate-add-host function mislead"},{"line_number":11,"context_line":"Openstack user, the aggregate API  should limit"},{"line_number":12,"context_line":"the operation to avoid confusion and meet current"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAP3%2F%2Fh8E%3D","line":9,"updated":"2013-07-16 22:13:17.000000000","message":"\"nova default support\"?","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"a484bfae4938796d440882b29c4a1f26ce2a313d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix host multi availability zone issue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova default support single availability zone of"},{"line_number":10,"context_line":"a host, but aggregate-add-host function mislead"},{"line_number":11,"context_line":"Openstack user, the aggregate API  should limit"},{"line_number":12,"context_line":"the operation to avoid confusion and meet current"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAP3%2F%2FhP4%3D","line":9,"in_reply_to":"AAAAP3%2F%2Fh8E%3D","updated":"2013-07-17 02:34:51.000000000","message":"According to get_host_availability_zone function in the link:\nhttps://github.com/openstack/nova/blob/master/nova/availability_zones.py#L91\nnova only use az which is assigned at first time, except that, in CONF, user only can \nconfigure one az, not multi az.\nSo nova actually use single az, api bug mislead user to think that nova use multi\naz against a host, except az assigned at first time, other az aren\u0027t used","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4e36941b28d3f78ab94d277ca3cdda767d3a0d08","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a host, but aggregate-add-host function mislead"},{"line_number":11,"context_line":"Openstack user, the aggregate API  should limit"},{"line_number":12,"context_line":"the operation to avoid confusion and meet current"},{"line_number":13,"context_line":"design.So we should forbid user to assign host to"},{"line_number":14,"context_line":"multi availability zones."},{"line_number":15,"context_line":"Here is another code review for other aggregate"},{"line_number":16,"context_line":"api fixing:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAAQn%2F%2F7bs%3D","line":13,"updated":"2013-07-18 23:14:13.000000000","message":"The wording here  is a little confusing, can you please clean it up.","commit_id":"10d338468268838b526308296d0c5c1dbfb62262"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"d52b7f54e24206857c5b6dce1a4dc505afcdedc0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a host, but aggregate-add-host function mislead"},{"line_number":11,"context_line":"Openstack user, the aggregate API  should limit"},{"line_number":12,"context_line":"the operation to avoid confusion and meet current"},{"line_number":13,"context_line":"design.So we should forbid user to assign host to"},{"line_number":14,"context_line":"multi availability zones."},{"line_number":15,"context_line":"Here is another code review for other aggregate"},{"line_number":16,"context_line":"api fixing:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAAQn%2F%2F7GE%3D","line":13,"in_reply_to":"AAAAQn%2F%2F7bs%3D","updated":"2013-07-19 02:27:58.000000000","message":"sure","commit_id":"10d338468268838b526308296d0c5c1dbfb62262"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4e36941b28d3f78ab94d277ca3cdda767d3a0d08","unresolved":false,"context_lines":[{"line_number":14,"context_line":"multi availability zones."},{"line_number":15,"context_line":"Here is another code review for other aggregate"},{"line_number":16,"context_line":"api fixing:"},{"line_number":17,"context_line":"https://review.openstack.org/#/c/36786/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Fixes: bug #1196893"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAAQn%2F%2F7bo%3D","line":17,"updated":"2013-07-18 23:14:13.000000000","message":"Just here is another one?","commit_id":"10d338468268838b526308296d0c5c1dbfb62262"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"d52b7f54e24206857c5b6dce1a4dc505afcdedc0","unresolved":false,"context_lines":[{"line_number":14,"context_line":"multi availability zones."},{"line_number":15,"context_line":"Here is another code review for other aggregate"},{"line_number":16,"context_line":"api fixing:"},{"line_number":17,"context_line":"https://review.openstack.org/#/c/36786/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Fixes: bug #1196893"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAAQn%2F%2F7GA%3D","line":17,"in_reply_to":"AAAAQn%2F%2F7bo%3D","updated":"2013-07-19 02:27:58.000000000","message":"I\u0027ll modify the message to avoid confusion","commit_id":"10d338468268838b526308296d0c5c1dbfb62262"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0a95fdd17206b57882a9dec516a4c6803d127c6b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix multi availability zone issue part 1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Current aggregate APIs allow user to add multi"},{"line_number":10,"context_line":"AZs to a host, but Openstack default support"},{"line_number":11,"context_line":"single AZ of a host. When booting an instance,"},{"line_number":12,"context_line":"nova default use the first AZ assigned to a host,"},{"line_number":13,"context_line":"even if user assigned multi AZs to the host and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAQn%2F%2Fypk%3D","line":10,"updated":"2013-07-23 06:54:42.000000000","message":"nit: the word default isn\u0027t needed here","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"17edfb29596af74ff99d6dd66f4cb61aa5f45fcd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix multi availability zone issue part 1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Current aggregate APIs allow user to add multi"},{"line_number":10,"context_line":"AZs to a host, but Openstack default support"},{"line_number":11,"context_line":"single AZ of a host. When booting an instance,"},{"line_number":12,"context_line":"nova default use the first AZ assigned to a host,"},{"line_number":13,"context_line":"even if user assigned multi AZs to the host and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAQn%2F%2Fyk0%3D","line":10,"in_reply_to":"AAAAQn%2F%2Fypk%3D","updated":"2013-07-23 08:00:34.000000000","message":"Ok, I\u0027ll remove it","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0a95fdd17206b57882a9dec516a4c6803d127c6b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Current aggregate APIs allow user to add multi"},{"line_number":10,"context_line":"AZs to a host, but Openstack default support"},{"line_number":11,"context_line":"single AZ of a host. When booting an instance,"},{"line_number":12,"context_line":"nova default use the first AZ assigned to a host,"},{"line_number":13,"context_line":"even if user assigned multi AZs to the host and"},{"line_number":14,"context_line":"user chose the second AZ to boot an instance. So"},{"line_number":15,"context_line":"multi AZs aren\u0027t supported by current Openstack"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAQn%2F%2Fypc%3D","line":12,"updated":"2013-07-23 06:54:42.000000000","message":"ditto","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"26abf32a89cf6c7814e84be7b04565ffcba9b6c4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Current aggregate APIs allow user to add multi"},{"line_number":10,"context_line":"AZs to a host, but Openstack support single AZ"},{"line_number":11,"context_line":"of a host. When booting an instance,nova use"},{"line_number":12,"context_line":"the first AZ assigned to a host,even if user"},{"line_number":13,"context_line":"assigned multi AZs to the host and user chose"},{"line_number":14,"context_line":"the second AZ to boot an instance. So multi AZs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAAQn%2F%2FhVM%3D","line":11,"updated":"2013-07-29 21:56:15.000000000","message":"femtonit: missing space instance, nova\n\nfemtonit: nova use\u0027s the first ...","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c4d8f0f29bdabc9b6181b8b470210c008130fe0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Current aggregate APIs allow user to add multi"},{"line_number":10,"context_line":"AZs to a host, but Openstack support single AZ"},{"line_number":11,"context_line":"of a host. When booting an instance,nova use"},{"line_number":12,"context_line":"the first AZ assigned to a host,even if user"},{"line_number":13,"context_line":"assigned multi AZs to the host and user chose"},{"line_number":14,"context_line":"the second AZ to boot an instance. So multi AZs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAAQn%2F%2Fbow%3D","line":11,"in_reply_to":"AAAAQn%2F%2FhVM%3D","updated":"2013-07-31 09:51:39.000000000","message":"Thanks for your comments, I\u0027ll correct it","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"26abf32a89cf6c7814e84be7b04565ffcba9b6c4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The part 2 limits user to add multi AZs using aggregate"},{"line_number":21,"context_line":"update and aggregate metadata update API, here is the"},{"line_number":22,"context_line":"link:"},{"line_number":23,"context_line":"https://review.openstack.org/#/c/36786/"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Fixes: bug #1196893"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAAQn%2F%2FhUg%3D","line":23,"updated":"2013-07-29 21:56:15.000000000","message":"nit: can you use the  Change-ID here.   As that will be turned into a link on review.openstack.org and is usable offline when everything is merged (via git log)","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c4d8f0f29bdabc9b6181b8b470210c008130fe0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The part 2 limits user to add multi AZs using aggregate"},{"line_number":21,"context_line":"update and aggregate metadata update API, here is the"},{"line_number":22,"context_line":"link:"},{"line_number":23,"context_line":"https://review.openstack.org/#/c/36786/"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Fixes: bug #1196893"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAAQn%2F%2Fbos%3D","line":23,"in_reply_to":"AAAAQn%2F%2FhUg%3D","updated":"2013-07-31 09:51:39.000000000","message":"Thanks for your comments, I\u0027ll use Change-ID to replace the link","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5e2dd0994db6cce83464edb8cfdcea417975ec16","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Current aggregate APIs allow user to add multi"},{"line_number":10,"context_line":"AZs to a host, but Openstack support single AZ"},{"line_number":11,"context_line":"of a host. When booting an instance, nova use\u0027s"},{"line_number":12,"context_line":"the first AZ assigned to a host,even if user"},{"line_number":13,"context_line":"assigned multi AZs to the host and user chose"},{"line_number":14,"context_line":"the second AZ to boot an instance. So multi AZs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"AAAAQn%2F%2FabY%3D","line":11,"updated":"2013-07-31 15:47:07.000000000","message":"I\u0027m not sure why Joe wrote \"use\u0027s\"; an apostrophe shouldn\u0027t appear in that context.  \"uses\" would be more appropriate.  (femtonit)","commit_id":"673119adfc2459cbd483403fce1628aca3938345"}],"nova/api/openstack/compute/contrib/aggregates.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"d4aa4b0aed1186ac2605ceac5641ca933ad152a5","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        authorize(context)"},{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            aggregate \u003d self.api.add_host_to_aggregate(context, id, host)"},{"line_number":152,"context_line":"        except (exception.AggregateError) as e:"},{"line_number":153,"context_line":"            LOG.info(e.message)"},{"line_number":154,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":155,"context_line":"        except (exception.AggregateNotFound, exception.ComputeHostNotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2FyfY%3D","line":152,"updated":"2013-07-11 13:23:39.000000000","message":"Too general of an error","commit_id":"ebca931dab5034f50df9cd23576ea11f7340e024"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce9ec420714fd38c590a829e31aa5001eb3deab9","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        authorize(context)"},{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            aggregate \u003d self.api.add_host_to_aggregate(context, id, host)"},{"line_number":152,"context_line":"        except (exception.AggregateError) as e:"},{"line_number":153,"context_line":"            LOG.info(e.message)"},{"line_number":154,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":155,"context_line":"        except (exception.AggregateNotFound, exception.ComputeHostNotFound):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FiAo%3D","line":152,"updated":"2013-07-16 21:55:00.000000000","message":"The parentheses are unnecessary for this except clause.","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"a484bfae4938796d440882b29c4a1f26ce2a313d","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        authorize(context)"},{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            aggregate \u003d self.api.add_host_to_aggregate(context, id, host)"},{"line_number":152,"context_line":"        except (exception.AggregateError) as e:"},{"line_number":153,"context_line":"            LOG.info(e.message)"},{"line_number":154,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":155,"context_line":"        except (exception.AggregateNotFound, exception.ComputeHostNotFound):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FhPc%3D","line":152,"in_reply_to":"AAAAP3%2F%2FiAo%3D","updated":"2013-07-17 02:34:51.000000000","message":"I\u0027ll remove the parentheses","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ce9ec420714fd38c590a829e31aa5001eb3deab9","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            aggregate \u003d self.api.add_host_to_aggregate(context, id, host)"},{"line_number":152,"context_line":"        except (exception.AggregateError) as e:"},{"line_number":153,"context_line":"            LOG.info(e.message)"},{"line_number":154,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":155,"context_line":"        except (exception.AggregateNotFound, exception.ComputeHostNotFound):"},{"line_number":156,"context_line":"            LOG.info(_(\u0027Cannot add host %(host)s in aggregate %(id)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FiAc%3D","line":153,"updated":"2013-07-16 21:55:00.000000000","message":"Use e.format_message() instead.","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"a484bfae4938796d440882b29c4a1f26ce2a313d","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            aggregate \u003d self.api.add_host_to_aggregate(context, id, host)"},{"line_number":152,"context_line":"        except (exception.AggregateError) as e:"},{"line_number":153,"context_line":"            LOG.info(e.message)"},{"line_number":154,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":155,"context_line":"        except (exception.AggregateNotFound, exception.ComputeHostNotFound):"},{"line_number":156,"context_line":"            LOG.info(_(\u0027Cannot add host %(host)s in aggregate %(id)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FhPU%3D","line":153,"in_reply_to":"AAAAP3%2F%2FiAc%3D","updated":"2013-07-17 02:34:51.000000000","message":"Thanks for your comments to let me know the function, I\u0027ll use it in my new patch","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4e36941b28d3f78ab94d277ca3cdda767d3a0d08","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                     {\u0027host\u0027: host, \u0027id\u0027: id})"},{"line_number":162,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":163,"context_line":"        except (exception.AggregateHostExists,"},{"line_number":164,"context_line":"                exception.InvalidAggregateAction):"},{"line_number":165,"context_line":"            LOG.info(_(\u0027Cannot add host %(host)s in aggregate %(id)s\u0027),"},{"line_number":166,"context_line":"                     {\u0027host\u0027: host, \u0027id\u0027: id})"},{"line_number":167,"context_line":"            raise exc.HTTPConflict()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAQn%2F%2F7bU%3D","line":164,"updated":"2013-07-18 23:14:13.000000000","message":"InvalidAggregateAction is already caught here","commit_id":"10d338468268838b526308296d0c5c1dbfb62262"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"d52b7f54e24206857c5b6dce1a4dc505afcdedc0","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                     {\u0027host\u0027: host, \u0027id\u0027: id})"},{"line_number":162,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":163,"context_line":"        except (exception.AggregateHostExists,"},{"line_number":164,"context_line":"                exception.InvalidAggregateAction):"},{"line_number":165,"context_line":"            LOG.info(_(\u0027Cannot add host %(host)s in aggregate %(id)s\u0027),"},{"line_number":166,"context_line":"                     {\u0027host\u0027: host, \u0027id\u0027: id})"},{"line_number":167,"context_line":"            raise exc.HTTPConflict()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAQn%2F%2F7GM%3D","line":164,"in_reply_to":"AAAAQn%2F%2F7bU%3D","updated":"2013-07-19 02:27:58.000000000","message":"I\u0027ll remove duplicate","commit_id":"10d338468268838b526308296d0c5c1dbfb62262"}],"nova/compute/api.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"d4aa4b0aed1186ac2605ceac5641ca933ad152a5","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    \u0027this option to \"%(name)s\".  Valid keys for the \u0027"},{"line_number":106,"context_line":"                    \u0027template are: name, uuid, count.\u0027),"},{"line_number":107,"context_line":"    cfg.StrOpt(\u0027default_availability_zone\u0027,"},{"line_number":108,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":109,"context_line":"               help\u003d\u0027default compute node availability_zone\u0027),"},{"line_number":110,"context_line":"]"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2Fyfg%3D","line":108,"updated":"2013-07-11 13:23:39.000000000","message":"there is a option for this already...","commit_id":"ebca931dab5034f50df9cd23576ea11f7340e024"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"73855a7d0e933f4ff4b80d25b85bd4dde4b69d3f","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    \u0027this option to \"%(name)s\".  Valid keys for the \u0027"},{"line_number":106,"context_line":"                    \u0027template are: name, uuid, count.\u0027),"},{"line_number":107,"context_line":"    cfg.StrOpt(\u0027default_availability_zone\u0027,"},{"line_number":108,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":109,"context_line":"               help\u003d\u0027default compute node availability_zone\u0027),"},{"line_number":110,"context_line":"]"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2Fvuc%3D","line":108,"in_reply_to":"AAAAP3%2F%2Fyfg%3D","updated":"2013-07-12 01:53:33.000000000","message":"you are right, I\u0027ll remove it","commit_id":"ebca931dab5034f50df9cd23576ea11f7340e024"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"d4aa4b0aed1186ac2605ceac5641ca933ad152a5","unresolved":false,"context_lines":[{"line_number":2862,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2863,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2864,"context_line":"                msg \u003d \"Host in availiblitiy zone: %s already.\" % host_az"},{"line_number":2865,"context_line":"                raise exception.AggregateError(message\u003dmsg)"},{"line_number":2866,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2867,"context_line":"        self.db.aggregate_host_add(context, aggregate_id, host_name)"},{"line_number":2868,"context_line":"        #NOTE(jogo): Send message to host to support resource pools"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2Fyfc%3D","line":2865,"updated":"2013-07-11 13:23:39.000000000","message":"Can we use a more specific error","commit_id":"ebca931dab5034f50df9cd23576ea11f7340e024"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"73855a7d0e933f4ff4b80d25b85bd4dde4b69d3f","unresolved":false,"context_lines":[{"line_number":2862,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2863,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2864,"context_line":"                msg \u003d \"Host in availiblitiy zone: %s already.\" % host_az"},{"line_number":2865,"context_line":"                raise exception.AggregateError(message\u003dmsg)"},{"line_number":2866,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2867,"context_line":"        self.db.aggregate_host_add(context, aggregate_id, host_name)"},{"line_number":2868,"context_line":"        #NOTE(jogo): Send message to host to support resource pools"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2FvuY%3D","line":2865,"in_reply_to":"AAAAP3%2F%2Fyfc%3D","updated":"2013-07-12 01:53:33.000000000","message":"I\u0027m afraid that there isn\u0027t a perfect error can be raised, so I chose this general error and return specific error message to clarify the problem","commit_id":"ebca931dab5034f50df9cd23576ea11f7340e024"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d612e9715f96a01c6bca3e66d90ce331573cd22b","unresolved":false,"context_lines":[{"line_number":2855,"context_line":"                                                             aggregate_id)"},{"line_number":2856,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2857,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2858,"context_line":"                msg \u003d \"Host in availiblitiy zone: %s already.\" % host_az"},{"line_number":2859,"context_line":"                raise exception.AggregateError(message\u003dmsg)"},{"line_number":2860,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2861,"context_line":"        self.db.aggregate_host_add(context, aggregate_id, host_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Fu5s%3D","line":2858,"updated":"2013-07-12 08:25:19.000000000","message":"please use i18n format","commit_id":"33d8ed328829dc5583ef98e5954e91b12eaed635"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"31eb1fffaaf229637ca39fdc208797705a5d0f5f","unresolved":false,"context_lines":[{"line_number":2855,"context_line":"                                                             aggregate_id)"},{"line_number":2856,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2857,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2858,"context_line":"                msg \u003d \"Host in availiblitiy zone: %s already.\" % host_az"},{"line_number":2859,"context_line":"                raise exception.AggregateError(message\u003dmsg)"},{"line_number":2860,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2861,"context_line":"        self.db.aggregate_host_add(context, aggregate_id, host_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Fu4I%3D","line":2858,"in_reply_to":"AAAAP3%2F%2Fu5s%3D","updated":"2013-07-12 08:33:46.000000000","message":"sure","commit_id":"33d8ed328829dc5583ef98e5954e91b12eaed635"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"052b79d3ca95d7458421faf5d4436f99c2b6c6ac","unresolved":false,"context_lines":[{"line_number":2855,"context_line":"                                                             aggregate_id)"},{"line_number":2856,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2857,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2858,"context_line":"                msg \u003d _(\"Host in availiblitiy zone: %s already.\") % host_az"},{"line_number":2859,"context_line":"                raise exception.AggregateError(message\u003dmsg)"},{"line_number":2860,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2861,"context_line":"        self.db.aggregate_host_add(context, aggregate_id, host_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2Fh7w%3D","line":2858,"updated":"2013-07-16 22:13:17.000000000","message":"typo\n\nDoesn\u0027t this need gettext   \u0027_\u0027 for translation","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"a484bfae4938796d440882b29c4a1f26ce2a313d","unresolved":false,"context_lines":[{"line_number":2855,"context_line":"                                                             aggregate_id)"},{"line_number":2856,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2857,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2858,"context_line":"                msg \u003d _(\"Host in availiblitiy zone: %s already.\") % host_az"},{"line_number":2859,"context_line":"                raise exception.AggregateError(message\u003dmsg)"},{"line_number":2860,"context_line":"        aggregate \u003d self.db.aggregate_get(context, aggregate_id)"},{"line_number":2861,"context_line":"        self.db.aggregate_host_add(context, aggregate_id, host_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FhPE%3D","line":2858,"in_reply_to":"AAAAP3%2F%2Fh7w%3D","updated":"2013-07-17 02:34:51.000000000","message":"according to other reviewer\u0027s comments, I add \"_\" to translate the message, is there any standard of message translation?","commit_id":"a029b2e3e3708a99e08442ac0c9efa58866208e3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"536b4a85fb553a1158954d72cc3604f1fc7c96e5","unresolved":false,"context_lines":[{"line_number":2975,"context_line":"                                                             aggregate_id)"},{"line_number":2976,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2977,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2978,"context_line":"                msg \u003d _(\"Host in availiblitiy zone: %s already.\") % host_az"},{"line_number":2979,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":2980,"context_line":"                id \u003d aggregate_id"},{"line_number":2981,"context_line":"                raise exception.InvalidAggregateAction(action\u003daction_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2F%2BsE%3D","line":2978,"updated":"2013-07-18 04:00:14.000000000","message":"availiblitiy \u003d\u003e availablitiy","commit_id":"d53373759056a7693d47fb33ec80cfac071cffe1"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c1efe2fc4452f744e63ec7dd677e039a331b58b","unresolved":false,"context_lines":[{"line_number":2975,"context_line":"                                                             aggregate_id)"},{"line_number":2976,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2977,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2978,"context_line":"                msg \u003d _(\"Host in availiblitiy zone: %s already.\") % host_az"},{"line_number":2979,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":2980,"context_line":"                id \u003d aggregate_id"},{"line_number":2981,"context_line":"                raise exception.InvalidAggregateAction(action\u003daction_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2F%2Big%3D","line":2978,"in_reply_to":"AAAAQn%2F%2F%2BsE%3D","updated":"2013-07-18 05:21:13.000000000","message":"sorry for careless typing, thanks for your comments","commit_id":"d53373759056a7693d47fb33ec80cfac071cffe1"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0a95fdd17206b57882a9dec516a4c6803d127c6b","unresolved":false,"context_lines":[{"line_number":3010,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3011,"context_line":"                                                                host_name)"},{"line_number":3012,"context_line":"        if host_az and cmp(host_az, CONF.default_availability_zone) !\u003d 0:"},{"line_number":3013,"context_line":"            aggregate_meta \u003d []"},{"line_number":3014,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3015,"context_line":"                                                             aggregate_id)"},{"line_number":3016,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FypM%3D","line":3013,"updated":"2013-07-23 06:54:42.000000000","message":"this line doesn\u0027t do anything does it?","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"17edfb29596af74ff99d6dd66f4cb61aa5f45fcd","unresolved":false,"context_lines":[{"line_number":3010,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3011,"context_line":"                                                                host_name)"},{"line_number":3012,"context_line":"        if host_az and cmp(host_az, CONF.default_availability_zone) !\u003d 0:"},{"line_number":3013,"context_line":"            aggregate_meta \u003d []"},{"line_number":3014,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3015,"context_line":"                                                             aggregate_id)"},{"line_number":3016,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2Fykk%3D","line":3013,"in_reply_to":"AAAAQn%2F%2FypM%3D","updated":"2013-07-23 08:00:34.000000000","message":"Thanks for your comments, you are right, I\u0027ll use\naggregate_meta \u003d self.db.aggregate_metadata_get(context,\naggregate_id) to replace it","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0a95fdd17206b57882a9dec516a4c6803d127c6b","unresolved":false,"context_lines":[{"line_number":3011,"context_line":"                                                                host_name)"},{"line_number":3012,"context_line":"        if host_az and cmp(host_az, CONF.default_availability_zone) !\u003d 0:"},{"line_number":3013,"context_line":"            aggregate_meta \u003d []"},{"line_number":3014,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3015,"context_line":"                                                             aggregate_id)"},{"line_number":3016,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3017,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2Fyn4%3D","line":3014,"updated":"2013-07-23 06:54:42.000000000","message":"We should update the db api to support key filtering in aggregate_metedata_get so we don\u0027t have to return the entire list of metadata just for this.","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"17edfb29596af74ff99d6dd66f4cb61aa5f45fcd","unresolved":false,"context_lines":[{"line_number":3011,"context_line":"                                                                host_name)"},{"line_number":3012,"context_line":"        if host_az and cmp(host_az, CONF.default_availability_zone) !\u003d 0:"},{"line_number":3013,"context_line":"            aggregate_meta \u003d []"},{"line_number":3014,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3015,"context_line":"                                                             aggregate_id)"},{"line_number":3016,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3017,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FyfY%3D","line":3014,"in_reply_to":"AAAAQn%2F%2Fyn4%3D","updated":"2013-07-23 08:00:34.000000000","message":"I don\u0027t think that we should modify db api for this specific issue\nfixing, db api change will leads to additional code change which\nmay impact other function, except that, returning entire\naggregate metadata list doesn\u0027t cause performance problem,\nsince aggregate metadata aren\u0027t a big data.\nSo I think fixing the issue using current openstack APIs is\nreasonable, there isn\u0027t a strong reason for db api changing.\nI\u0027d like to ask other reviewers to validate my statements. Thanks!","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0a95fdd17206b57882a9dec516a4c6803d127c6b","unresolved":false,"context_lines":[{"line_number":3014,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3015,"context_line":"                                                             aggregate_id)"},{"line_number":3016,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3017,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":3018,"context_line":"                msg \u003d _(\"Host in availability zone: %s already.\") % host_az"},{"line_number":3019,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":3020,"context_line":"                id \u003d aggregate_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2Fyos%3D","line":3017,"updated":"2013-07-23 06:54:42.000000000","message":"why -1, what about 1? why not check if !\u003d0?","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"17edfb29596af74ff99d6dd66f4cb61aa5f45fcd","unresolved":false,"context_lines":[{"line_number":3014,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3015,"context_line":"                                                             aggregate_id)"},{"line_number":3016,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3017,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":3018,"context_line":"                msg \u003d _(\"Host in availability zone: %s already.\") % host_az"},{"line_number":3019,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":3020,"context_line":"                id \u003d aggregate_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2Fyi8%3D","line":3017,"in_reply_to":"AAAAQn%2F%2Fyos%3D","updated":"2013-07-23 08:00:34.000000000","message":"cmp(arg1, arg2) return 1 when arg1\u0027s data type is different from \narg2\u0027s, I don\u0027t think availability zone names will be \ndifferent data type, -1 means equal,  that\u0027s why I only check -1","commit_id":"3a825084df5ec805970e6fd6623087376cb200c4"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"19e4a3322cbc88976d3e26519fd2b60cca1af4a4","unresolved":false,"context_lines":[{"line_number":2989,"context_line":"        self.db.service_get_by_compute_host(context, host_name)"},{"line_number":2990,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":2991,"context_line":"                                                                host_name)"},{"line_number":2992,"context_line":"        if host_az and cmp(host_az, CONF.default_availability_zone) !\u003d 0:"},{"line_number":2993,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":2994,"context_line":"                                                            aggregate_id)"},{"line_number":2995,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2Fl%2Fo%3D","line":2992,"updated":"2013-07-26 22:18:53.000000000","message":"Why use cmp() here?  Why not just use \"host_az !\u003d CONF.default_availability_zone\"?","commit_id":"efd7a6525e0bfa75625f82c69f03e4d155624490"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"19e4a3322cbc88976d3e26519fd2b60cca1af4a4","unresolved":false,"context_lines":[{"line_number":2993,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":2994,"context_line":"                                                            aggregate_id)"},{"line_number":2995,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2996,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2997,"context_line":"                msg \u003d _(\"Host in availability zone: %s already.\") % host_az"},{"line_number":2998,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":2999,"context_line":"                id \u003d aggregate_id"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2Fl%2Fc%3D","line":2996,"updated":"2013-07-26 22:18:53.000000000","message":"Why are we concerned about the ordering of aggregate_az relative to host_az at all?  Also, cmp() is not guaranteed to return -1; all its help says is that it \"[r]eturn[s] negative if x\u003cy\".  Do you instead mean to have \"aggregate_az !\u003d host_az\", which would seem more appropriate to me?","commit_id":"efd7a6525e0bfa75625f82c69f03e4d155624490"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"3dbee509a178b0ec6c9f862dc674aa1da3db5e2c","unresolved":false,"context_lines":[{"line_number":2993,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":2994,"context_line":"                                                            aggregate_id)"},{"line_number":2995,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":2996,"context_line":"            if cmp(aggregate_az, host_az) \u003d\u003d -1:"},{"line_number":2997,"context_line":"                msg \u003d _(\"Host in availability zone: %s already.\") % host_az"},{"line_number":2998,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":2999,"context_line":"                id \u003d aggregate_id"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2FkKg%3D","line":2996,"in_reply_to":"AAAAQn%2F%2Fl%2Fc%3D","updated":"2013-07-29 02:31:03.000000000","message":"I rechecked cmp function, I agree that we\u0027d better use \"!\u003d\" and \"\u003d\u003d\" to do checking, it\u0027s a more safe way, thanks for your comments!","commit_id":"efd7a6525e0bfa75625f82c69f03e4d155624490"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22ace112a22ae0e09ad87ac1d05f551aa4a3822b","unresolved":false,"context_lines":[{"line_number":3051,"context_line":"        self.db.service_get_by_compute_host(context, host_name)"},{"line_number":3052,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3053,"context_line":"                                                                host_name)"},{"line_number":3054,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3055,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2FidQ%3D","line":3054,"updated":"2013-07-29 15:54:28.000000000","message":"FTR, the parentheses are unneeded here.","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c4d8f0f29bdabc9b6181b8b470210c008130fe0","unresolved":false,"context_lines":[{"line_number":3051,"context_line":"        self.db.service_get_by_compute_host(context, host_name)"},{"line_number":3052,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3053,"context_line":"                                                                host_name)"},{"line_number":3054,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3055,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2FbrE%3D","line":3054,"in_reply_to":"AAAAQn%2F%2FidQ%3D","updated":"2013-07-31 09:51:39.000000000","message":"Thanks for your comments, I\u0027ll remove the parentheses","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"26abf32a89cf6c7814e84be7b04565ffcba9b6c4","unresolved":false,"context_lines":[{"line_number":3052,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3053,"context_line":"                                                                host_name)"},{"line_number":3054,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3055,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3058,"context_line":"            if aggregate_az !\u003d host_az:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2FhTU%3D","line":3055,"updated":"2013-07-29 21:56:15.000000000","message":"I still would prefer to not get all the metadata.  As  there are no limits no how much metadata can be associated with an aggregate.   Perhaps that should be a separate dependent patch.  That logic will also be useful for other cases going forward.\n\nSee nova.db.sqlalchemy.aggregate_metadata_get_by_host as an example","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"a0c52e7a7a0b529ff2a5f60430bdb97892eabf47","unresolved":false,"context_lines":[{"line_number":3052,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3053,"context_line":"                                                                host_name)"},{"line_number":3054,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3055,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3058,"context_line":"            if aggregate_az !\u003d host_az:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2FbfE%3D","line":3055,"in_reply_to":"AAAAQn%2F%2FbpE%3D","updated":"2013-07-31 10:39:35.000000000","message":"I\u0027d like to correct a statements in my previous reply, I don\u0027t need to add api in nova conduct, since I just need to fix the issue in compute api","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c4d8f0f29bdabc9b6181b8b470210c008130fe0","unresolved":false,"context_lines":[{"line_number":3052,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3053,"context_line":"                                                                host_name)"},{"line_number":3054,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3055,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get(context,"},{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3058,"context_line":"            if aggregate_az !\u003d host_az:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2FbpE%3D","line":3055,"in_reply_to":"AAAAQn%2F%2FhTU%3D","updated":"2013-07-31 09:51:39.000000000","message":"Thanks for your comments, I agree that there is a chance for openstack user to add hug metadata, since there isn\u0027t any limits. But I think that kind of behavior only can happen when user doesn\u0027t understand openstack and do it with a big mistake.\n\nI can add a function to only return availability zone value, but new api in nova conduct need be added too, I\u0027ll upload a new patch later.","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22ace112a22ae0e09ad87ac1d05f551aa4a3822b","unresolved":false,"context_lines":[{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3058,"context_line":"            if aggregate_az !\u003d host_az:"},{"line_number":3059,"context_line":"                msg \u003d _(\"Host in availability zone: %s already.\") % host_az"},{"line_number":3060,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":3061,"context_line":"                id \u003d aggregate_id"},{"line_number":3062,"context_line":"                raise exception.InvalidAggregateAction(action\u003daction_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2Fic0%3D","line":3059,"updated":"2013-07-29 15:54:28.000000000","message":"femtonit: This could be phrased as \"Host already in availability zone %s\"…","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c4d8f0f29bdabc9b6181b8b470210c008130fe0","unresolved":false,"context_lines":[{"line_number":3056,"context_line":"                                                            aggregate_id)"},{"line_number":3057,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"},{"line_number":3058,"context_line":"            if aggregate_az !\u003d host_az:"},{"line_number":3059,"context_line":"                msg \u003d _(\"Host in availability zone: %s already.\") % host_az"},{"line_number":3060,"context_line":"                action_name \u003d \"add_host_to_aggregate\""},{"line_number":3061,"context_line":"                id \u003d aggregate_id"},{"line_number":3062,"context_line":"                raise exception.InvalidAggregateAction(action\u003daction_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2Fbo0%3D","line":3059,"in_reply_to":"AAAAQn%2F%2Fic0%3D","updated":"2013-07-31 09:51:39.000000000","message":"Thanks for your comments, I\u0027ll change the msg content","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5e2dd0994db6cce83464edb8cfdcea417975ec16","unresolved":false,"context_lines":[{"line_number":3060,"context_line":"        self.db.service_get_by_compute_host(context, host_name)"},{"line_number":3061,"context_line":"        host_az \u003d availability_zones.get_host_availability_zone(context,"},{"line_number":3062,"context_line":"                                                                host_name)"},{"line_number":3063,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3064,"context_line":"            aggregate_meta \u003d self.db.\\"},{"line_number":3065,"context_line":"            aggregate_metadata_get_by_metatdata_key(context,"},{"line_number":3066,"context_line":"                                                    aggregate_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAQn%2F%2Facs%3D","line":3063,"updated":"2013-07-31 15:47:07.000000000","message":"You didn\u0027t remove the parentheses, but this is just a femtonit, so no worries…","commit_id":"673119adfc2459cbd483403fce1628aca3938345"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5e2dd0994db6cce83464edb8cfdcea417975ec16","unresolved":false,"context_lines":[{"line_number":3062,"context_line":"                                                                host_name)"},{"line_number":3063,"context_line":"        if host_az and (host_az !\u003d CONF.default_availability_zone):"},{"line_number":3064,"context_line":"            aggregate_meta \u003d self.db.\\"},{"line_number":3065,"context_line":"            aggregate_metadata_get_by_metatdata_key(context,"},{"line_number":3066,"context_line":"                                                    aggregate_id,"},{"line_number":3067,"context_line":"                                                    \u0027availability_zone\u0027)"},{"line_number":3068,"context_line":"            aggregate_az \u003d aggregate_meta[\"availability_zone\"]"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAQn%2F%2FadA%3D","line":3065,"updated":"2013-07-31 15:47:07.000000000","message":"This line needs to be indented to distinguish it from the preceding line.  That would make this:\n\n    aggregate_meta \u003d self.db.\\\n        aggregate_metadata_get_by_metadata_key(…)\n\nAs an alternative, you can do the following, which eliminates the backslash continuation:\n\n    aggregate_meta \u003d self.db.aggregate_metadata_get_by_metadata_key(\n        context, aggregate_id, \u0027availability_zone\u0027)\n\nI have confirmed that the first line of this construction would be only 77 characters long, which is fine.\n\n(Incidentally, you also have a misspelling in the function name: an extra \u0027t\u0027 in the second \"metadata\".)","commit_id":"673119adfc2459cbd483403fce1628aca3938345"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8744520cd141d52701dab3faedb027be861630df","unresolved":false,"context_lines":[{"line_number":3046,"context_line":"        if host_az and host_az !\u003d CONF.default_availability_zone:"},{"line_number":3047,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get_by_metadata_key("},{"line_number":3048,"context_line":"                context, aggregate_id, \u0027availability_zone\u0027)"},{"line_number":3049,"context_line":"            aggregate_az \u003d list(aggregate_meta[\"availability_zone\"])[0]"},{"line_number":3050,"context_line":"            if aggregate_az !\u003d host_az:"},{"line_number":3051,"context_line":"                msg \u003d _(\"Host already in availability zone %s.\") % host_az"},{"line_number":3052,"context_line":"                action_name \u003d \"add_host_to_aggregate\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAQn%2F%2FWaE%3D","line":3049,"updated":"2013-08-01 15:56:59.000000000","message":"OK, so this line confused me.  I see that this value will end up being a set, and you seem to be trying to retrieve *an* item from that set; let me suggest using the set\u0027s pop() method, which returns an arbitrary set element.","commit_id":"af50a800143a2766173a2d17ffba26e31695b20d"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"4bc331ce8dc10ed5bca20766f1b55fd5c8df1855","unresolved":false,"context_lines":[{"line_number":3046,"context_line":"        if host_az and host_az !\u003d CONF.default_availability_zone:"},{"line_number":3047,"context_line":"            aggregate_meta \u003d self.db.aggregate_metadata_get_by_metadata_key("},{"line_number":3048,"context_line":"                context, aggregate_id, \u0027availability_zone\u0027)"},{"line_number":3049,"context_line":"            aggregate_az \u003d list(aggregate_meta[\"availability_zone\"])[0]"},{"line_number":3050,"context_line":"            if aggregate_az !\u003d host_az:"},{"line_number":3051,"context_line":"                msg \u003d _(\"Host already in availability zone %s.\") % host_az"},{"line_number":3052,"context_line":"                action_name \u003d \"add_host_to_aggregate\""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAQn%2F%2FT1A%3D","line":3049,"in_reply_to":"AAAAQn%2F%2FWaE%3D","updated":"2013-08-02 05:29:06.000000000","message":"I need to convert a set into string via list(), then the follow up code line \"if aggregate_az !\u003d host_az\" can work.\nYes, set.pop() function is better choice, I\u0027ll replace the current code line by it, thanks for your comments","commit_id":"af50a800143a2766173a2d17ffba26e31695b20d"}],"nova/db/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5e2dd0994db6cce83464edb8cfdcea417975ec16","unresolved":false,"context_lines":[{"line_number":1654,"context_line":"    return IMPL.aggregate_metadata_get_by_host(context, host, key)"},{"line_number":1655,"context_line":""},{"line_number":1656,"context_line":""},{"line_number":1657,"context_line":"def aggregate_metadata_get_by_metatdata_key(context, aggregate_id, key):"},{"line_number":1658,"context_line":"    \"\"\"Get metadata for an aggregate by metadata key.\"\"\""},{"line_number":1659,"context_line":"    return IMPL.aggregate_metadata_get_by_metatdata_key(context, aggregate_id,"},{"line_number":1660,"context_line":"                                                        key)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAQn%2F%2FacU%3D","line":1657,"updated":"2013-07-31 15:47:07.000000000","message":"You have an extra \u0027t\u0027 in the function name; also in the implementation function that\u0027s called…","commit_id":"673119adfc2459cbd483403fce1628aca3938345"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5e2dd0994db6cce83464edb8cfdcea417975ec16","unresolved":false,"context_lines":[{"line_number":4843,"context_line":""},{"line_number":4844,"context_line":""},{"line_number":4845,"context_line":"@require_admin_context"},{"line_number":4846,"context_line":"def aggregate_metadata_get_by_metatdata_key(context, aggregate_id, key):"},{"line_number":4847,"context_line":"    query \u003d model_query(context, models.Aggregate)"},{"line_number":4848,"context_line":"    query \u003d query.join(\"_metadata\")"},{"line_number":4849,"context_line":"    query \u003d query.filter(models.Aggregate.id \u003d\u003d aggregate_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAQn%2F%2FacQ%3D","line":4846,"updated":"2013-07-31 15:47:07.000000000","message":"There\u0027s an extra \u0027t\u0027 in the function name…","commit_id":"673119adfc2459cbd483403fce1628aca3938345"}],"nova/tests/compute/test_compute.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22ace112a22ae0e09ad87ac1d05f551aa4a3822b","unresolved":false,"context_lines":[{"line_number":8156,"context_line":"        self.assertEqual(len(aggr[\u0027hosts\u0027]), 1)"},{"line_number":8157,"context_line":""},{"line_number":8158,"context_line":"    def test_add_host_to_multi_az(self):"},{"line_number":8159,"context_line":"        #Ensure we can\u0027t add a host to different availability zone"},{"line_number":8160,"context_line":"        values \u003d _create_service_entries(self.context)"},{"line_number":8161,"context_line":"        fake_zone \u003d values.keys()[0]"},{"line_number":8162,"context_line":"        fake_host \u003d values[fake_zone][0]"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2Ficw%3D","line":8159,"updated":"2013-07-29 15:54:28.000000000","message":"femtonit: I like to have a space after the \u0027#\u0027","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"},{"author":{"_account_id":7138,"name":"David Jia","email":"jiataotj@cn.ibm.com","username":"jiataotj"},"change_message_id":"6c4d8f0f29bdabc9b6181b8b470210c008130fe0","unresolved":false,"context_lines":[{"line_number":8156,"context_line":"        self.assertEqual(len(aggr[\u0027hosts\u0027]), 1)"},{"line_number":8157,"context_line":""},{"line_number":8158,"context_line":"    def test_add_host_to_multi_az(self):"},{"line_number":8159,"context_line":"        #Ensure we can\u0027t add a host to different availability zone"},{"line_number":8160,"context_line":"        values \u003d _create_service_entries(self.context)"},{"line_number":8161,"context_line":"        fake_zone \u003d values.keys()[0]"},{"line_number":8162,"context_line":"        fake_host \u003d values[fake_zone][0]"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2Fboc%3D","line":8159,"in_reply_to":"AAAAQn%2F%2Ficw%3D","updated":"2013-07-31 09:51:39.000000000","message":"Thanks for your comments, I\u0027ll add a space after the \u0027#\u0027","commit_id":"d3d627c6b9ddcbd1248de646889dfe6c8dd292c7"}],"nova/tests/db/test_db_api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5e2dd0994db6cce83464edb8cfdcea417975ec16","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        self.assertEqual(r1[\u0027fake_key1\u0027], set([\u0027fake_value1\u0027]))"},{"line_number":351,"context_line":"        self.assertFalse(\u0027badkey\u0027 in r1)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def test_aggregate_metadata_get_by_metatdata_key(self):"},{"line_number":354,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":355,"context_line":"        values \u003d {\u0027aggregate_id\u0027: \u0027fake_id\u0027,"},{"line_number":356,"context_line":"                  \u0027name\u0027: \u0027fake_aggregate\u0027}"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAQn%2F%2FacA%3D","line":353,"updated":"2013-07-31 15:47:07.000000000","message":"And again, there\u0027s an extra \u0027t\u0027…","commit_id":"673119adfc2459cbd483403fce1628aca3938345"}]}
