)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"3115ca284d82fef1451b757cf8315a91eca01eee","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If deployment has wrong URL, the output of \u0027rally deployment show\u0027"},{"line_number":10,"context_line":"was traced. Changed to catch a connection refused exception and not"},{"line_number":11,"context_line":"to trace. Print user friendly message instead of trace message."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I4e5e75f73f1e408a3568b3800f6ce076c59cf2ba"},{"line_number":14,"context_line":"Closes-Bug: #1407824"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ba7be1f8_e963ee3e","line":12,"updated":"2015-03-02 12:54:58.000000000","message":"I believe you should mention in the commit message that you are adding new methods to API as well, this is important.","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If deployment has wrong URL, the output of \u0027rally deployment show\u0027"},{"line_number":10,"context_line":"was traced. Changed to catch a connection refused exception and not"},{"line_number":11,"context_line":"to trace. Print user friendly message instead of trace message."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I4e5e75f73f1e408a3568b3800f6ce076c59cf2ba"},{"line_number":14,"context_line":"Closes-Bug: #1407824"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a80dd14_42c18a2d","line":12,"in_reply_to":"ba7be1f8_e963ee3e","updated":"2015-03-04 15:00:17.000000000","message":"Done","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"}],"rally/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"75baa67f8b2e343d20a72c18b223212b55626ec7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        headers \u003d [\"services\", \"type\", \"status\"]"},{"line_number":51,"context_line":"        table_rows \u003d []"},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            admin \u003d db.deployment_get(deployment)[\"admin\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_84d43e48","line":50,"updated":"2015-02-22 23:56:08.000000000","message":"Thank you for work but when I said that logic should be moved into rally.api I didn\u0027t think to move whole code as is...\n\nrally.api is the common part between 3 modes of Rally: \n\n  - rally as a lib\n  - rally as a service (deamon)\n  - rally as a cli tool (only one fully supported mode)\n\n\nIt means: \n\n  1) return(1) - doesn\u0027t mean anything here. In cmd.commoands.deployment it has a meaning of exit code of APP. \n\n  2) We shouldn\u0027t print anything here (because such information in case of rally as a service and rally as a lib is useless) \n\n  3) We shouldn\u0027t format output. We should just return service.list() as a python dict or list or something list \n\n  4) method name doesn\u0027t describe what this method does, it should be something like \"service_list\"\n\n\n\n So let\u0027s do next things:\n\n  1) Introduce new method Deployment.get (that will execute db.deployment_get) and raise NotFound exception if there is no such deployment\n\n  2) try to get verified kesytone client and  get service list \n\n  3) In case of bad credentials or non admin users raise corresponding exceptions \n\n 4) In rally.commands.deployment we will call this moment and process all exceptions and print all messages that we are printing.","commit_id":"0f0c96b863b1f694b50d9fd0e48118e275db449b"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"90ea8eeb9c470b62a3cca196c39040738a3b4e7f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        headers \u003d [\"services\", \"type\", \"status\"]"},{"line_number":51,"context_line":"        table_rows \u003d []"},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            admin \u003d db.deployment_get(deployment)[\"admin\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_50a8cb76","line":50,"in_reply_to":"ba7be1f8_84d43e48","updated":"2015-02-25 13:29:36.000000000","message":"Sorry for taking your time for this review. I just started contribution recently.\nThank you so much for your kindly support. it\u0027s very helpful for me. I will upload next patch.","commit_id":"0f0c96b863b1f694b50d9fd0e48118e275db449b"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"1dfd6d27dba04bb22b111ebc5544de1c35637297","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            for endpoint_dict in [admin]:"},{"line_number":51,"context_line":"                clients \u003d osclients.Clients(objects.Endpoint(**endpoint_dict))"},{"line_number":52,"context_line":"                client \u003d clients.verified_keystone()"},{"line_number":53,"context_line":"        except exceptions.InvalidArgumentsException:"},{"line_number":54,"context_line":"            raise"},{"line_number":55,"context_line":"        except keystone_exceptions.ConnectionRefused:"},{"line_number":56,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_d015094a","line":53,"updated":"2015-02-28 13:31:13.000000000","message":"What is the purpose of try-except here? \n\nCode of this method is absolutely equal to: \n\n\n   clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))\t\n   client \u003d clients.verified_keystone()\n   return client.services.list()\n\n3 lines vs 11","commit_id":"236232fab4035c35180f1008730fe8e941779d6a"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"276ab8b6b4d63dbf407dc8692f0b790d8284bb48","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            for endpoint_dict in [admin]:"},{"line_number":51,"context_line":"                clients \u003d osclients.Clients(objects.Endpoint(**endpoint_dict))"},{"line_number":52,"context_line":"                client \u003d clients.verified_keystone()"},{"line_number":53,"context_line":"        except exceptions.InvalidArgumentsException:"},{"line_number":54,"context_line":"            raise"},{"line_number":55,"context_line":"        except keystone_exceptions.ConnectionRefused:"},{"line_number":56,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_e8fb0145","line":53,"in_reply_to":"ba7be1f8_d015094a","updated":"2015-03-01 09:20:11.000000000","message":"Quite right. Done.","commit_id":"236232fab4035c35180f1008730fe8e941779d6a"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"f263c0b6e5088b535e9ac8608c6a52bc99924ec7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class Deployment(object):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def check(cls, deployment):"},{"line_number":42,"context_line":"        \"\"\"Check the deployment."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        :param deployment: UUID or name of the deployment"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_f5182686","line":41,"updated":"2015-03-02 10:23:15.000000000","message":"This method is not just \"check\", this method is returning services list.","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class Deployment(object):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def check(cls, deployment):"},{"line_number":42,"context_line":"        \"\"\"Check the deployment."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        :param deployment: UUID or name of the deployment"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_02f5d282","line":41,"in_reply_to":"ba7be1f8_f5182686","updated":"2015-03-04 15:00:17.000000000","message":"changed to \"service_list\".","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"3115ca284d82fef1451b757cf8315a91eca01eee","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def get(cls, deployment):"},{"line_number":103,"context_line":"        \"\"\"Get the deployment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_8920b2f8","line":105,"updated":"2015-03-02 12:54:58.000000000","message":"You should add here a line:\n    :returns: Deployment object","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def get(cls, deployment):"},{"line_number":103,"context_line":"        \"\"\"Get the deployment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_8230e257","line":105,"in_reply_to":"ba7be1f8_8920b2f8","updated":"2015-03-04 15:00:17.000000000","message":"Done","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"f263c0b6e5088b535e9ac8608c6a52bc99924ec7","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"},{"line_number":109,"context_line":"            deployment \u003d db.deployment_get(deployment)"},{"line_number":110,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":111,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_80ddea72","line":108,"updated":"2015-03-02 10:23:15.000000000","message":"this try/except block does nothing","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"},{"line_number":109,"context_line":"            deployment \u003d db.deployment_get(deployment)"},{"line_number":110,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":111,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_a235e647","line":108,"in_reply_to":"ba7be1f8_80ddea72","updated":"2015-03-04 15:00:17.000000000","message":"Done","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"258c6ab8bcb5fb41c6cdade0941bfc891293e27f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":119,"context_line":"        :returns: Service list"},{"line_number":120,"context_line":"        \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"},{"line_number":123,"context_line":"        client \u003d clients.verified_keystone()"},{"line_number":124,"context_line":"        return client.services.list()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_a497df38","line":121,"updated":"2015-03-16 09:27:54.000000000","message":"Could you add the TODO here removed from https://review.openstack.org/#/c/157659/11/rally/cmd/commands/deployment.py line 241","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"ffd6e80f9081f8f0e0762112c5e85939cf02b575","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":119,"context_line":"        :returns: Service list"},{"line_number":120,"context_line":"        \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"},{"line_number":123,"context_line":"        client \u003d clients.verified_keystone()"},{"line_number":124,"context_line":"        return client.services.list()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_15c08edf","line":121,"in_reply_to":"9a80dd14_a497df38","updated":"2015-03-17 14:47:50.000000000","message":"Done","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"34803a1284aafa32f09b22e05830b97a1747c7e9","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # TODO(boris-42): make this work for users in future"},{"line_number":123,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"},{"line_number":124,"context_line":"        client \u003d clients.verified_keystone()"},{"line_number":125,"context_line":"        return client.services.list()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class Task(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_b9db107c","line":125,"updated":"2015-03-18 10:46:10.000000000","message":"does services.list() except kwargs? if so, can we please add it method arguments for future use?\nIf it\u0027s too much trouble, don\u0027t worry about it now","commit_id":"3166bb8a38669ec0b49d9fb809f094680dbaae86"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"59909cbb2fc593de89680a081cdd59d008adce54","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # TODO(boris-42): make this work for users in future"},{"line_number":123,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"},{"line_number":124,"context_line":"        client \u003d clients.verified_keystone()"},{"line_number":125,"context_line":"        return client.services.list()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class Task(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da9b358b_b070b8dd","line":125,"in_reply_to":"9a80dd14_b9db107c","updated":"2015-03-31 12:29:22.000000000","message":"Sorry let me release this for now.","commit_id":"3166bb8a38669ec0b49d9fb809f094680dbaae86"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"b2ba4b58cfa2ca4024f7bf5f9f65933f2e23c7c7","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        :returns: Deployment object"},{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        return db.deployment_get(deployment)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def recreate(cls, deployment):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a0c5dc1_e4468abe","line":98,"updated":"2015-05-13 01:06:37.000000000","message":"You can use objects.Deployment.get(deployment) instead, so you don\u0027t need to import db in this module.","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"f6276225cd6b6377bb0cf7bb7d600c3c931ab35c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        :returns: Deployment object"},{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        return db.deployment_get(deployment)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def recreate(cls, deployment):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_33d30862","line":98,"in_reply_to":"9a0c5dc1_e4468abe","updated":"2015-05-24 09:33:07.000000000","message":"Done","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"b2ba4b58cfa2ca4024f7bf5f9f65933f2e23c7c7","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @classmethod"},{"line_number":115,"context_line":"    def service_list(cls, deployment):"},{"line_number":116,"context_line":"        \"\"\"Check the deployment."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":119,"context_line":"        :returns: Service list"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a0c5dc1_09309700","line":116,"updated":"2015-05-13 01:06:37.000000000","message":"S/Check the deployment/Get the services list/","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"f6276225cd6b6377bb0cf7bb7d600c3c931ab35c","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @classmethod"},{"line_number":115,"context_line":"    def service_list(cls, deployment):"},{"line_number":116,"context_line":"        \"\"\"Check the deployment."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":119,"context_line":"        :returns: Service list"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_13d6cc4e","line":116,"in_reply_to":"9a0c5dc1_09309700","updated":"2015-05-24 09:33:07.000000000","message":"Done","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"55f6f94877f7511c136601155c94582b9f493126","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\"Get the deployment."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":109,"context_line":"        :returns: Deployment object"},{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        return db.deployment_get(deployment)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_e41b32c9","line":109,"updated":"2015-06-26 12:27:52.000000000","message":":returns: Deployment instance","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"55f6f94877f7511c136601155c94582b9f493126","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":109,"context_line":"        :returns: Deployment object"},{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        return db.deployment_get(deployment)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @classmethod"},{"line_number":114,"context_line":"    def service_list(cls, deployment):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_847266af","line":111,"updated":"2015-06-26 12:27:52.000000000","message":"Why not `return objects.Deployment.get(deployment)\u0027 ?\n\nI think we do not need `db\u0027 module here, as well as raw `deployment\u0027 results - db.deployment_get() does not return Deployment instace","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"432effb471b4b08b15f5afc56d41131d6efa1113","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":109,"context_line":"        :returns: Deployment object"},{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        return db.deployment_get(deployment)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @classmethod"},{"line_number":114,"context_line":"    def service_list(cls, deployment):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_3d911347","line":111,"in_reply_to":"fa32b979_847266af","updated":"2015-06-27 02:12:32.000000000","message":"got it","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"55f6f94877f7511c136601155c94582b9f493126","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        return db.deployment_get(deployment)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @classmethod"},{"line_number":114,"context_line":"    def service_list(cls, deployment):"},{"line_number":115,"context_line":"        \"\"\"Get the services list."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param deployment: UUID or name of the deployment"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_4439bef1","line":114,"updated":"2015-06-26 12:27:52.000000000","message":"1) I recommend https://github.com/openstack/rally/blob/master/rally/osclients.py#L440-L450\n\n2) Why not put this method to objects.Deployment?","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"432effb471b4b08b15f5afc56d41131d6efa1113","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        return db.deployment_get(deployment)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @classmethod"},{"line_number":114,"context_line":"    def service_list(cls, deployment):"},{"line_number":115,"context_line":"        \"\"\"Get the services list."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param deployment: UUID or name of the deployment"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_1d8e8f27","line":114,"in_reply_to":"fa32b979_4439bef1","updated":"2015-06-27 02:12:32.000000000","message":"copy from yusuke\u0027s work, but yours is a good idea","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"55f6f94877f7511c136601155c94582b9f493126","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def service_list(cls, deployment):"},{"line_number":115,"context_line":"        \"\"\"Get the services list."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":118,"context_line":"        :returns: Service list"},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_84026671","line":117,"updated":"2015-06-26 12:27:52.000000000","message":":param deployment: Deployment instance","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2b6cfb99f593687f403ad07e28a2aa0cfa410151","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":117,"context_line":"        :returns: Service list"},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        # TODO(kun): put this work into objects.Deployment"},{"line_number":120,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"},{"line_number":121,"context_line":"        return clients.services()"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_4ccd8e64","line":119,"updated":"2015-07-03 15:03:07.000000000","message":"Do you make it by yourself?","commit_id":"5a5f5b3d8836bda8c365f787dfa2345bdc9abf17"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"057e854bc36ba3a18d84bae47da0e1b63d8d1558","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":117,"context_line":"        :returns: Service list"},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        # TODO(kun): put this work into objects.Deployment"},{"line_number":120,"context_line":"        clients \u003d osclients.Clients(objects.Endpoint(**deployment[\"admin\"]))"},{"line_number":121,"context_line":"        return clients.services()"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_a7d0daf8","line":119,"in_reply_to":"ba3cc151_4ccd8e64","updated":"2015-07-06 03:56:10.000000000","message":"This TODO work? I will","commit_id":"5a5f5b3d8836bda8c365f787dfa2345bdc9abf17"}],"rally/cli/commands/deployment.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"55f6f94877f7511c136601155c94582b9f493126","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        table_rows \u003d []"},{"line_number":228,"context_line":"        try:"},{"line_number":229,"context_line":"            deployment \u003d api.Deployment.get(deployment)"},{"line_number":230,"context_line":"            services \u003d api.Deployment.service_list(deployment)"},{"line_number":231,"context_line":"            for service in services:"},{"line_number":232,"context_line":"                data \u003d [service.name, service.type, \"Available\"]"},{"line_number":233,"context_line":"                table_rows.append(utils.Struct(**dict(zip(headers, data))))"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_67ae449a","line":230,"updated":"2015-06-26 12:27:52.000000000","message":"According to my comments in rally.api, this can be look like this:\n\n deployment_ins \u003d api.Deployment.get(deployment)\n for service in deployment_ins.services():\n     ...","commit_id":"27a8b017a7b3c8856ef88434d2bb983eb304ac55"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"60b681d3f9b7106a69fec0c0e2efe4fadf5b15bd","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                osclients.Clients(objects.Endpoint(**endpoint_dict)).keystone()"},{"line_number":237,"context_line":"            print(_(\"keystone endpoints are valid and following\""},{"line_number":238,"context_line":"                  \" services are available:\"))"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        except keystone_exceptions.ConnectionRefused:"},{"line_number":241,"context_line":"            print(_(\"Unable to connect %s.\") % deployment[\"admin\"][\"auth_url\"])"},{"line_number":242,"context_line":"            return(1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_9c572826","line":239,"updated":"2015-07-06 06:49:23.000000000","message":"try/except should attempt to enclose only the problematic logic.\nI\u0027m guessing this is either L230 or L236. Please change it so it is clear.\nRight now you have ~10 lines of code that could raise various exceptions. It is unclear which call might raise which exception.","commit_id":"5a5f5b3d8836bda8c365f787dfa2345bdc9abf17"}],"rally/cmd/commands/deployment.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"ff09fbd14b3ce9bae5601798a83a20046fe9cd89","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from rally.openstack.common import cliutils as common_cliutils"},{"line_number":37,"context_line":"from rally import osclients"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"from keystoneclient import exceptions as keystoneclient_exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class DeploymentCommands(object):"},{"line_number":42,"context_line":"    \"\"\"Set of commands that allow you to manage deployments.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_1d1d3567","line":39,"updated":"2015-02-20 09:25:30.000000000","message":"As it\u0027s a third party library we need to import it it second block out of three. See for example http://docs.openstack.org/developer/hacking/ and https://github.com/stackforge/rally/blob/master/rally/osclients.py#L23 Just move it right after jsonschema.","commit_id":"e05c11a12adee3fd62f37480ce0666ca861532cf"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"4f8be03f8c58b333010c0ccd7c1969cad112a39b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from rally.openstack.common import cliutils as common_cliutils"},{"line_number":37,"context_line":"from rally import osclients"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"from keystoneclient import exceptions as keystoneclient_exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class DeploymentCommands(object):"},{"line_number":42,"context_line":"    \"\"\"Set of commands that allow you to manage deployments.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_ce712579","line":39,"in_reply_to":"ba7be1f8_1d1d3567","updated":"2015-02-20 11:27:38.000000000","message":"Thanks for the advice. Done.","commit_id":"e05c11a12adee3fd62f37480ce0666ca861532cf"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"e617d5081c76129165f6be732b4a612e9fcbb76b","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        headers \u003d [\"services\", \"type\", \"status\"]"},{"line_number":241,"context_line":"        table_rows \u003d []"},{"line_number":242,"context_line":"        try:"},{"line_number":243,"context_line":"            admin \u003d db.deployment_get(deployment)[\"admin\"]"},{"line_number":244,"context_line":"            # TODO(boris-42): make this work for users in future"},{"line_number":245,"context_line":"            for endpoint_dict in [admin]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_21480f2d","line":242,"updated":"2015-02-20 13:15:18.000000000","message":"As far as you are refactoring this method. I would like to move it fully to \n\n\nrally.api.Deployment class here https://github.com/stackforge/rally/blob/master/rally/api.py#L36 \n\n\nSo it will be called: \n\n  rally.api.Deployment.check() \n\nAnd it will raise some well formatted rally exception.\nLike InvalidDeploymentCredentials with full information. Or DeploymentNotFound if uuid or name of deployment is not specified","commit_id":"596545bd49e7aa646debf2a68ea63ca838ca6d92"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"f263c0b6e5088b535e9ac8608c6a52bc99924ec7","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":242,"context_line":"            cliutils.print_list(table_rows, headers)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            deploy \u003d api.Deployment.get(deployment)"},{"line_number":246,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":247,"context_line":"            print(_(\"DeploymentNotFound: %s.\") % sys.exc_info()[1])"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_95c52a3f","line":244,"updated":"2015-03-02 10:23:15.000000000","message":"Two try/except blocks is not necessary. One block is enough.","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":242,"context_line":"            cliutils.print_list(table_rows, headers)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            deploy \u003d api.Deployment.get(deployment)"},{"line_number":246,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":247,"context_line":"            print(_(\"DeploymentNotFound: %s.\") % sys.exc_info()[1])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_4246eac0","line":244,"in_reply_to":"ba7be1f8_95c52a3f","updated":"2015-03-04 15:00:17.000000000","message":"Done","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"3115ca284d82fef1451b757cf8315a91eca01eee","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            cliutils.print_list(table_rows, headers)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            deploy \u003d api.Deployment.get(deployment)"},{"line_number":246,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":247,"context_line":"            print(_(\"DeploymentNotFound: %s.\") % sys.exc_info()[1])"},{"line_number":248,"context_line":"            _keystone_error()"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_8977d201","line":245,"updated":"2015-03-02 12:54:58.000000000","message":"Could you please name this variable \u0027deployment\u0027 instead of \u0027deploy\u0027? \u0027deploy\u0027 is not correct","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            cliutils.print_list(table_rows, headers)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            deploy \u003d api.Deployment.get(deployment)"},{"line_number":246,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":247,"context_line":"            print(_(\"DeploymentNotFound: %s.\") % sys.exc_info()[1])"},{"line_number":248,"context_line":"            _keystone_error()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_a20c0696","line":245,"in_reply_to":"ba7be1f8_8977d201","updated":"2015-03-04 15:00:17.000000000","message":"Done","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"f263c0b6e5088b535e9ac8608c6a52bc99924ec7","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            deploy \u003d api.Deployment.get(deployment)"},{"line_number":246,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":247,"context_line":"            print(_(\"DeploymentNotFound: %s.\") % sys.exc_info()[1])"},{"line_number":248,"context_line":"            _keystone_error()"},{"line_number":249,"context_line":"            return(1)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_d5a5e247","line":246,"updated":"2015-03-02 10:23:15.000000000","message":"It would be much better to have one except block catching all exceptions, and one \"print\" statement. Also it would be nice to see traceback if \"debug\" is on.","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"54c6a6a78cb4e62dc4e568b0c3daaa5f87ffa1f4","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            deploy \u003d api.Deployment.get(deployment)"},{"line_number":246,"context_line":"        except exceptions.DeploymentNotFound:"},{"line_number":247,"context_line":"            print(_(\"DeploymentNotFound: %s.\") % sys.exc_info()[1])"},{"line_number":248,"context_line":"            _keystone_error()"},{"line_number":249,"context_line":"            return(1)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_c211faad","line":246,"in_reply_to":"ba7be1f8_d5a5e247","updated":"2015-03-04 15:00:17.000000000","message":"changed one except block to catch all exceptions and added traceback if \"debug\" is on.","commit_id":"74ccaf0d55532de1fdd6aec5e8edf645ced18c2f"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"291ec04b64f6ce0667d3d16b18672dcebdded9bf","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        except (exceptions.DeploymentNotFound,"},{"line_number":248,"context_line":"                exceptions.InvalidArgumentsException,"},{"line_number":249,"context_line":"                keystone_exceptions.ConnectionRefused):"},{"line_number":250,"context_line":"            print(_(\"DeploymentCheck: %s\") % sys.exc_info()[1])"},{"line_number":251,"context_line":"            data \u003d [\"keystone\", \"identity\", \"Error\"]"},{"line_number":252,"context_line":"            table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":253,"context_line":"            cliutils.print_list(table_rows, headers)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_7b6c5937","line":250,"updated":"2015-03-11 12:32:33.000000000","message":"Please correct \"DeploymentCheck: %s\" -\u003e \"Deployment check: %s\"","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"ffd6e80f9081f8f0e0762112c5e85939cf02b575","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        except (exceptions.DeploymentNotFound,"},{"line_number":248,"context_line":"                exceptions.InvalidArgumentsException,"},{"line_number":249,"context_line":"                keystone_exceptions.ConnectionRefused):"},{"line_number":250,"context_line":"            print(_(\"DeploymentCheck: %s\") % sys.exc_info()[1])"},{"line_number":251,"context_line":"            data \u003d [\"keystone\", \"identity\", \"Error\"]"},{"line_number":252,"context_line":"            table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":253,"context_line":"            cliutils.print_list(table_rows, headers)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_9572bee1","line":250,"in_reply_to":"9a80dd14_7b6c5937","updated":"2015-03-17 14:47:50.000000000","message":"Done","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"291ec04b64f6ce0667d3d16b18672dcebdded9bf","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            print(_(\"DeploymentCheck: %s\") % sys.exc_info()[1])"},{"line_number":251,"context_line":"            data \u003d [\"keystone\", \"identity\", \"Error\"]"},{"line_number":252,"context_line":"            table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":253,"context_line":"            cliutils.print_list(table_rows, headers)"},{"line_number":254,"context_line":"            if logging.is_debug():"},{"line_number":255,"context_line":"                print(traceback.format_exc())"},{"line_number":256,"context_line":"            return(1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_9ecadb6c","line":253,"updated":"2015-03-11 12:32:33.000000000","message":"I am pretty sure we should not print this table when there is exceptions.DeploymentNotFound. The error is then just because of an invalid deployment uuid, not because of keystone. So there should be perhaps multiple except ... branches here that would handle different exceptions.","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"ffd6e80f9081f8f0e0762112c5e85939cf02b575","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            print(_(\"DeploymentCheck: %s\") % sys.exc_info()[1])"},{"line_number":251,"context_line":"            data \u003d [\"keystone\", \"identity\", \"Error\"]"},{"line_number":252,"context_line":"            table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":253,"context_line":"            cliutils.print_list(table_rows, headers)"},{"line_number":254,"context_line":"            if logging.is_debug():"},{"line_number":255,"context_line":"                print(traceback.format_exc())"},{"line_number":256,"context_line":"            return(1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_d5535637","line":253,"in_reply_to":"9a80dd14_9ecadb6c","updated":"2015-03-17 14:47:50.000000000","message":"Done","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"6684acc3cdff729bb167db0ec3ea94e43c0fb30a","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                print(traceback.format_exc())"},{"line_number":256,"context_line":"            return(1)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        print(\"keystone endpoints are valid and following \""},{"line_number":259,"context_line":"              \"services are available:\")"},{"line_number":260,"context_line":"        cliutils.print_list(table_rows, headers)"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_58d6bbc6","line":258,"updated":"2015-03-11 12:01:58.000000000","message":"we use \"from rally.common.i18n import _\" for internationalization, so please wrap this message like print(_(\"keystone endpoint ...\"))","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"ffd6e80f9081f8f0e0762112c5e85939cf02b575","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                print(traceback.format_exc())"},{"line_number":256,"context_line":"            return(1)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        print(\"keystone endpoints are valid and following \""},{"line_number":259,"context_line":"              \"services are available:\")"},{"line_number":260,"context_line":"        cliutils.print_list(table_rows, headers)"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_9520feb1","line":258,"in_reply_to":"9a80dd14_58d6bbc6","updated":"2015-03-17 14:47:50.000000000","message":"Done","commit_id":"e4da1850353d962ee915aab48bae7842de7d0508"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"7b298202c04d8a3eeb54fd0c9521ac26121aa758","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            for service in services:"},{"line_number":244,"context_line":"                data \u003d [service.name, service.type, \"Available\"]"},{"line_number":245,"context_line":"                table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":246,"context_line":"        except (exceptions.InvalidArgumentsException,"},{"line_number":247,"context_line":"                keystone_exceptions.ConnectionRefused):"},{"line_number":248,"context_line":"            print(_(\"Deployment check: %s\") % sys.exc_info()[1])"},{"line_number":249,"context_line":"            data \u003d [\"keystone\", \"identity\", \"Error\"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a0c5dc1_ece4430e","line":246,"updated":"2015-05-12 16:55:28.000000000","message":"Do we need InvalidArgumentException? From where we can catch it?","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"f6276225cd6b6377bb0cf7bb7d600c3c931ab35c","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            for service in services:"},{"line_number":244,"context_line":"                data \u003d [service.name, service.type, \"Available\"]"},{"line_number":245,"context_line":"                table_rows.append(utils.Struct(**dict(zip(headers, data))))"},{"line_number":246,"context_line":"        except (exceptions.InvalidArgumentsException,"},{"line_number":247,"context_line":"                keystone_exceptions.ConnectionRefused):"},{"line_number":248,"context_line":"            print(_(\"Deployment check: %s\") % sys.exc_info()[1])"},{"line_number":249,"context_line":"            data \u003d [\"keystone\", \"identity\", \"Error\"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_133dac8e","line":246,"in_reply_to":"9a0c5dc1_ece4430e","updated":"2015-05-24 09:33:07.000000000","message":"There was in original source code...","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"}],"tests/unit/cmd/commands/test_deployment.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"7b298202c04d8a3eeb54fd0c9521ac26121aa758","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                                               admin\u003dmock.MagicMock())"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        mock_service.side_effect \u003d keystone_exceptions.ConnectionRefused"},{"line_number":327,"context_line":"        self.assertRaises(keystone_exceptions.ConnectionRefused,"},{"line_number":328,"context_line":"                          api.Deployment.service_list(fake_deployment))"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a0c5dc1_6c63b3b2","line":327,"updated":"2015-05-12 16:55:28.000000000","message":"Exception here is - keystoneclient.openstack.common.apiclient.exceptions.ConnectionRefused","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"},{"author":{"_account_id":13525,"name":"Yusuke Ide","email":"idzzyzzbi@gmail.com","username":"idzzy"},"change_message_id":"f6276225cd6b6377bb0cf7bb7d600c3c931ab35c","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                                               admin\u003dmock.MagicMock())"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        mock_service.side_effect \u003d keystone_exceptions.ConnectionRefused"},{"line_number":327,"context_line":"        self.assertRaises(keystone_exceptions.ConnectionRefused,"},{"line_number":328,"context_line":"                          api.Deployment.service_list(fake_deployment))"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_b3c7f894","line":327,"in_reply_to":"9a0c5dc1_6c63b3b2","updated":"2015-05-24 09:33:07.000000000","message":"Done","commit_id":"1b5510daa3ff516fe3aef54c631ba08388c6d359"}]}
