)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"f0bef40631fbe9076acb834d17de37bd68d55241","unresolved":false,"context_lines":[{"line_number":11,"context_line":"* Added Deployment.get_credentials_for method that extracts"},{"line_number":12,"context_line":"  credential from DB for specified platform."},{"line_number":13,"context_line":"* All deployment engines now return credentials in new format."},{"line_number":14,"context_line":"* Added credential schema."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I81905c2374a38c53d67786dd5b6d34af3925281e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da36d5c6_22315b0c","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":1},"updated":"2017-02-20 17:16:45.000000000","message":"Pls add spec info:)","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"8c2676e0956a84c778ebdf6a068b3055c829f189","unresolved":false,"context_lines":[{"line_number":11,"context_line":"* Added Deployment.get_credentials_for method that extracts"},{"line_number":12,"context_line":"  credential from DB for specified platform."},{"line_number":13,"context_line":"* All deployment engines now return credentials in new format."},{"line_number":14,"context_line":"* Added credential schema."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I81905c2374a38c53d67786dd5b6d34af3925281e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da36d5c6_e1e48f0e","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":1},"in_reply_to":"da36d5c6_22315b0c","updated":"2017-02-21 07:58:25.000000000","message":"Done","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"}],"rally/common/objects/deploy.py":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"f0bef40631fbe9076acb834d17de37bd68d55241","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._update({\"credentials\": credentials})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_credentials_for(self, namespace):"},{"line_number":88,"context_line":"        return self.deployment[\"credentials\"][namespace][0]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def set_started(self):"},{"line_number":91,"context_line":"        self._update({\"started_at\": dt.datetime.now(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_a26d4b34","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":59},"updated":"2017-02-20 17:16:45.000000000","message":"But it would return the first credential all the time.","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"c247e825ba5f4fc6f978664d5d655556621ca6de","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._update({\"credentials\": credentials})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_credentials_for(self, namespace):"},{"line_number":88,"context_line":"        return self.deployment[\"credentials\"][namespace][0]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def set_started(self):"},{"line_number":91,"context_line":"        self._update({\"started_at\": dt.datetime.now(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_015603d2","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":59},"in_reply_to":"da36d5c6_26607dce","updated":"2017-02-21 07:53:34.000000000","message":"ok, taking up your usage:)","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"ead5ddfc84974edb00e726040069308aedf6f9af","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._update({\"credentials\": credentials})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_credentials_for(self, namespace):"},{"line_number":88,"context_line":"        return self.deployment[\"credentials\"][namespace][0]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def set_started(self):"},{"line_number":91,"context_line":"        self._update({\"started_at\": dt.datetime.now(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_7c312ea2","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":59},"in_reply_to":"da36d5c6_3d689ef5","updated":"2017-02-21 01:01:23.000000000","message":"So get_credential_for() would be better.","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"c872f3e9080e07ce86e6ec2299d3296937ecd62d","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._update({\"credentials\": credentials})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_credentials_for(self, namespace):"},{"line_number":88,"context_line":"        return self.deployment[\"credentials\"][namespace][0]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def set_started(self):"},{"line_number":91,"context_line":"        self._update({\"started_at\": dt.datetime.now(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_26607dce","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":59},"in_reply_to":"da36d5c6_7c312ea2","updated":"2017-02-21 07:02:37.000000000","message":"It returns admin and users credentials, so there is more than one credential.","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"0bb0c5a2fe346a493f02f5df46baa121c8038d79","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._update({\"credentials\": credentials})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_credentials_for(self, namespace):"},{"line_number":88,"context_line":"        return self.deployment[\"credentials\"][namespace][0]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def set_started(self):"},{"line_number":91,"context_line":"        self._update({\"started_at\": dt.datetime.now(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_3d689ef5","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":59},"in_reply_to":"da36d5c6_a26d4b34","updated":"2017-02-20 17:55:05.000000000","message":"For now, we implement only one credential for each platform/namespace. But in future, we can add multiple credentials, because they are stored as a list.","commit_id":"2dbba895270e0afd497bc28ab130cee459b501b5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"368829d210f36debc923cb8e01623575ef45218c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            self.deployment \u003d db.deployment_create(attributes)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __getitem__(self, key):"},{"line_number":57,"context_line":"        return self.deployment[key]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @staticmethod"},{"line_number":60,"context_line":"    def get(deploy):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_470e61e6","line":57,"range":{"start_line":56,"start_character":4,"end_line":57,"end_character":35},"updated":"2017-02-28 12:48:47.000000000","message":"We need to support backward compatibility(unfortunately). Please, add a hack here, like:\n\n   if key \u003d\u003d \"admin\" or key \u003d\u003d \"users\":\n       LOG.waringn(\"deprecated thing\")\n       return self.get_credentials_for(\"openstack\")[key]","commit_id":"dca121444382b6574b93732006901f05aaf7d809"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"57acd751964f213be2a529f30ab8fce81079e8ca","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            self.deployment \u003d db.deployment_create(attributes)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __getitem__(self, key):"},{"line_number":57,"context_line":"        return self.deployment[key]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @staticmethod"},{"line_number":60,"context_line":"    def get(deploy):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_6bf99d4d","line":57,"range":{"start_line":56,"start_character":4,"end_line":57,"end_character":35},"in_reply_to":"da36d5c6_470e61e6","updated":"2017-03-01 10:30:58.000000000","message":"Done","commit_id":"dca121444382b6574b93732006901f05aaf7d809"}],"rally/deployment/engines/devstack.py":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"0f455aa4fca99771a7ebf43c43991a39aba44efe","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \"openstack\": ["},{"line_number":142,"context_line":"                {"},{"line_number":143,"context_line":"                    \"admin\": admin_credential.to_dict(include_permission\u003dTrue),"},{"line_number":144,"context_line":"                    \"users\": [],"},{"line_number":145,"context_line":"                }"},{"line_number":146,"context_line":"            ]}"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_60130bb9","line":144,"range":{"start_line":144,"start_character":31,"end_line":144,"end_character":32},"updated":"2017-02-22 11:15:05.000000000","message":"small wart, lets remove this comma. :)","commit_id":"dca121444382b6574b93732006901f05aaf7d809"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"57acd751964f213be2a529f30ab8fce81079e8ca","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            \"openstack\": ["},{"line_number":142,"context_line":"                {"},{"line_number":143,"context_line":"                    \"admin\": admin_credential.to_dict(include_permission\u003dTrue),"},{"line_number":144,"context_line":"                    \"users\": [],"},{"line_number":145,"context_line":"                }"},{"line_number":146,"context_line":"            ]}"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_ab99d521","line":144,"range":{"start_line":144,"start_character":31,"end_line":144,"end_character":32},"in_reply_to":"da36d5c6_60130bb9","updated":"2017-03-01 10:30:58.000000000","message":"Done","commit_id":"dca121444382b6574b93732006901f05aaf7d809"}],"rally/deployment/engines/lxc.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"368829d210f36debc923cb8e01623575ef45218c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            if network:"},{"line_number":151,"context_line":"                network +\u003d 1"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        admin \u003d objects.Credential(\"\", \"\", \"\", \"\").to_dict("},{"line_number":154,"context_line":"            include_permission\u003dTrue)"},{"line_number":155,"context_line":"        return {\"openstack\": [{\"admin\": admin, \"users\": []}]}"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_672a852e","line":153,"range":{"start_line":153,"start_character":34,"end_line":153,"end_character":50},"updated":"2017-02-28 12:48:47.000000000","message":"The question doesn\u0027t relate to your change, but anyway: wtf is it? :)\n\nnot sure that it is valid and even works.","commit_id":"dca121444382b6574b93732006901f05aaf7d809"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"57acd751964f213be2a529f30ab8fce81079e8ca","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            if network:"},{"line_number":151,"context_line":"                network +\u003d 1"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        admin \u003d objects.Credential(\"\", \"\", \"\", \"\").to_dict("},{"line_number":154,"context_line":"            include_permission\u003dTrue)"},{"line_number":155,"context_line":"        return {\"openstack\": [{\"admin\": admin, \"users\": []}]}"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_cbe7e9aa","line":153,"range":{"start_line":153,"start_character":34,"end_line":153,"end_character":50},"in_reply_to":"da36d5c6_672a852e","updated":"2017-03-01 10:30:58.000000000","message":"It looks like a placeholder that was supposed to be replaced someday :)","commit_id":"dca121444382b6574b93732006901f05aaf7d809"}],"rally/plugins/openstack/verification/tempest/context.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"368829d210f36debc923cb8e01623575ef45218c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def __init__(self, ctx):"},{"line_number":45,"context_line":"        super(TempestContext, self).__init__(ctx)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # TODO(astudenov): deployment should be instance of objects.Deployment,"},{"line_number":48,"context_line":"        #                  not just a dict"},{"line_number":49,"context_line":"        deployment_obj \u003d objects.Deployment.get("},{"line_number":50,"context_line":"            self.verifier.deployment[\"uuid\"])"},{"line_number":51,"context_line":"        creds \u003d deployment_obj.get_credentials_for(\"openstack\")"},{"line_number":52,"context_line":"        credential \u003d creds[\"admin\"]"},{"line_number":53,"context_line":"        self.clients \u003d osclients.Clients(objects.Credential(**credential))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_bdfe4e36","line":50,"range":{"start_line":47,"start_character":7,"end_line":50,"end_character":45},"updated":"2017-02-28 12:48:47.000000000","message":"it is better to fix https://github.com/openstack/rally/blob/master/rally/common/objects/verifier.py#L70-L71 by making a call to https://github.com/openstack/rally/blob/master/rally/common/objects/deploy.py#L35 instead of the direct call to DB.","commit_id":"dca121444382b6574b93732006901f05aaf7d809"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"57acd751964f213be2a529f30ab8fce81079e8ca","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def __init__(self, ctx):"},{"line_number":45,"context_line":"        super(TempestContext, self).__init__(ctx)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # TODO(astudenov): deployment should be instance of objects.Deployment,"},{"line_number":48,"context_line":"        #                  not just a dict"},{"line_number":49,"context_line":"        deployment_obj \u003d objects.Deployment.get("},{"line_number":50,"context_line":"            self.verifier.deployment[\"uuid\"])"},{"line_number":51,"context_line":"        creds \u003d deployment_obj.get_credentials_for(\"openstack\")"},{"line_number":52,"context_line":"        credential \u003d creds[\"admin\"]"},{"line_number":53,"context_line":"        self.clients \u003d osclients.Clients(objects.Credential(**credential))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_ee24bbb0","line":50,"range":{"start_line":47,"start_character":7,"end_line":50,"end_character":45},"in_reply_to":"da36d5c6_bdfe4e36","updated":"2017-03-01 10:30:58.000000000","message":"Done","commit_id":"dca121444382b6574b93732006901f05aaf7d809"}]}
