)]}'
{"rally/cli/commands/deployment.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                               credential[\"region_name\"])"},{"line_number":264,"context_line":"            if credential.get(\"tenant_name\"):"},{"line_number":265,"context_line":"                env_file.write(\"export OS_TENANT_NAME\u003d\u0027%s\u0027\\n\" %"},{"line_number":266,"context_line":"                               credential[\"tenant_name\"])"},{"line_number":267,"context_line":"            if credential.get(\"endpoint_type\"):"},{"line_number":268,"context_line":"                env_file.write(\"export OS_ENDPOINT_TYPE\u003d\u0027%sURL\u0027\\n\" %"},{"line_number":269,"context_line":"                               credential[\"endpoint_type\"])"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_5c87a4b4","line":266,"updated":"2016-08-05 16:12:33.000000000","message":"This is LGTM too","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                               credential[\"region_name\"])"},{"line_number":264,"context_line":"            if credential.get(\"tenant_name\"):"},{"line_number":265,"context_line":"                env_file.write(\"export OS_TENANT_NAME\u003d\u0027%s\u0027\\n\" %"},{"line_number":266,"context_line":"                               credential[\"tenant_name\"])"},{"line_number":267,"context_line":"            if credential.get(\"endpoint_type\"):"},{"line_number":268,"context_line":"                env_file.write(\"export OS_ENDPOINT_TYPE\u003d\u0027%sURL\u0027\\n\" %"},{"line_number":269,"context_line":"                               credential[\"endpoint_type\"])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_aa2b792f","line":266,"in_reply_to":"bacf61ea_5c87a4b4","updated":"2016-08-09 07:30:42.000000000","message":"Thanks.","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                                credential[\"project_domain_name\"]))"},{"line_number":284,"context_line":"                if credential.get(\"domain_name\"):"},{"line_number":285,"context_line":"                    env_file.write(\"export OS_DOMAIN_NAME\u003d\u0027%s\u0027\\n\" %"},{"line_number":286,"context_line":"                                   credential[\"domain_name\"])"},{"line_number":287,"context_line":"        expanded_path \u003d os.path.expanduser(\"~/.rally/openrc\")"},{"line_number":288,"context_line":"        if os.path.exists(expanded_path):"},{"line_number":289,"context_line":"            os.remove(expanded_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_1cb88c74","line":286,"updated":"2016-08-05 16:12:33.000000000","message":"as well as 266","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                                credential[\"project_domain_name\"]))"},{"line_number":284,"context_line":"                if credential.get(\"domain_name\"):"},{"line_number":285,"context_line":"                    env_file.write(\"export OS_DOMAIN_NAME\u003d\u0027%s\u0027\\n\" %"},{"line_number":286,"context_line":"                                   credential[\"domain_name\"])"},{"line_number":287,"context_line":"        expanded_path \u003d os.path.expanduser(\"~/.rally/openrc\")"},{"line_number":288,"context_line":"        if os.path.exists(expanded_path):"},{"line_number":289,"context_line":"            os.remove(expanded_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_ea1d7110","line":286,"in_reply_to":"bacf61ea_1cb88c74","updated":"2016-08-09 07:30:42.000000000","message":"thanks.","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"}],"rally/cli/envutils.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    else:"},{"line_number":115,"context_line":"        # Authentication cannot be scoped to both domain and project."},{"line_number":116,"context_line":"        # inf both are given domain name gets the preference"},{"line_number":117,"context_line":"        creds[\"admin\"][\"domain_name\"] \u003d domain_name"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    return creds"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_06b31699","line":117,"updated":"2016-08-05 16:12:33.000000000","message":"We should not to hide potential issue and better to guaranty the same behaviour as in Keystone. Raise an error","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    else:"},{"line_number":115,"context_line":"        # Authentication cannot be scoped to both domain and project."},{"line_number":116,"context_line":"        # inf both are given domain name gets the preference"},{"line_number":117,"context_line":"        creds[\"admin\"][\"domain_name\"] \u003d domain_name"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    return creds"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_0fe8d7e1","line":117,"in_reply_to":"bacf61ea_06b31699","updated":"2016-08-09 07:30:42.000000000","message":"AFIK, this is already supported in keystone.","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"a6f12710253cbea51266ac4f9feb9f57e4c782d1","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            # tenant_name or project name is set only when domain_name is"},{"line_number":122,"context_line":"            # not set. if both are given, then domain_name gets the"},{"line_number":123,"context_line":"            # preference."},{"line_number":124,"context_line":"            creds[\"admin\"][\"domain_name\"] \u003d domain_name"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        creds[\"admin\"][\"user_domain_name\"] \u003d user_domain_name or \"\""},{"line_number":127,"context_line":"        creds[\"admin\"][\"project_domain_name\"] \u003d project_domain_name or \"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_e8f6fc8d","line":124,"updated":"2016-09-06 15:19:43.000000000","message":"Raise already supported in keystone and they show an error[1] in that situation. But user shouldn\u0027t see traces, better to show him just a friendly message \n[1] https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/auth/identity/v3/base.py#L160","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            # tenant_name or project name is set only when domain_name is"},{"line_number":122,"context_line":"            # not set. if both are given, then domain_name gets the"},{"line_number":123,"context_line":"            # preference."},{"line_number":124,"context_line":"            creds[\"admin\"][\"domain_name\"] \u003d domain_name"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        creds[\"admin\"][\"user_domain_name\"] \u003d user_domain_name or \"\""},{"line_number":127,"context_line":"        creds[\"admin\"][\"project_domain_name\"] \u003d project_domain_name or \"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_5a9516e2","line":124,"in_reply_to":"fa7ab95a_e8f6fc8d","updated":"2016-09-21 03:49:26.000000000","message":"ok. will implement in next patch set.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"}],"rally/common/objects/credential.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if tenant_name:"},{"line_number":45,"context_line":"            self.auth_scope \u003d consts.AuthScope.PROJECT"},{"line_number":46,"context_line":"        elif domain_name:"},{"line_number":47,"context_line":"            self.auth_scope \u003d consts.AuthScope.DOMAIN"},{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            self.auth_scope \u003d None"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_3b8d88d6","line":47,"updated":"2016-08-05 16:12:33.000000000","message":"Previously you\u0027ve wrote that domain should be preferable, then we should change the order her:\n  if domain_name:\n      self.auth_scope \u003d consts.AuthScope.DOMAIN\n  elif tenant_name:\n      self.auth_scope \u003d consts.AuthScope.PROJECT","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if tenant_name:"},{"line_number":45,"context_line":"            self.auth_scope \u003d consts.AuthScope.PROJECT"},{"line_number":46,"context_line":"        elif domain_name:"},{"line_number":47,"context_line":"            self.auth_scope \u003d consts.AuthScope.DOMAIN"},{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            self.auth_scope \u003d None"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_6f7eb3e5","line":47,"in_reply_to":"bacf61ea_3b8d88d6","updated":"2016-08-09 07:30:42.000000000","message":"Done","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if self.tenant_name is not None:"},{"line_number":54,"context_line":"            return self"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if tenant_name is None and self.tenant_name is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_2c171049","line":53,"updated":"2016-08-05 16:12:33.000000000","message":"if self.tenant_name:","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if self.tenant_name is not None:"},{"line_number":54,"context_line":"            return self"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if tenant_name is None and self.tenant_name is None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_af88abe8","line":53,"in_reply_to":"bacf61ea_2c171049","updated":"2016-08-09 07:30:42.000000000","message":"Done","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        if self.tenant_name is not None:"},{"line_number":54,"context_line":"            return self"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if tenant_name is None and self.tenant_name is None:"},{"line_number":57,"context_line":"            raise exceptions.InvalidEndpointsException("},{"line_number":58,"context_line":"                \"Attempted to project scope a token without providing \""},{"line_number":59,"context_line":"                \"a \u0027tenant_name\u0027.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_6c3468dd","line":56,"updated":"2016-08-05 16:12:33.000000000","message":"self.tenant_name is None we check it in 53 line. Here its redundant","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        if self.tenant_name is not None:"},{"line_number":54,"context_line":"            return self"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if tenant_name is None and self.tenant_name is None:"},{"line_number":57,"context_line":"            raise exceptions.InvalidEndpointsException("},{"line_number":58,"context_line":"                \"Attempted to project scope a token without providing \""},{"line_number":59,"context_line":"                \"a \u0027tenant_name\u0027.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_ef6aa319","line":56,"in_reply_to":"bacf61ea_6c3468dd","updated":"2016-08-09 07:30:42.000000000","message":"Done","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"49fca86fa0b5ca2789d163e1bd6aa4aa513d85fa","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            self.auth_scope \u003d None"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_db7534cb","line":52,"updated":"2016-09-08 11:34:05.000000000","message":"I can\u0027t get why we have this function. Domain or project scope have a bit different set of parameters[0] and all of them should be passed into Credential object. If we have set of parameters for Domain scoped token, then we create it. The same is for project scoped token. If we have both then we should raise an error as it is in Keystone. Otherwise it would be unscoped. We don\u0027t need to convert one set of parameters to another what this function actually do. \n\n[0] http://docs.openstack.org/developer/keystone/configuration.html#operation_create_project_scoped_token","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            self.auth_scope \u003d None"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_7574a39b","line":52,"in_reply_to":"9a89bdaa_db7534cb","updated":"2016-09-21 03:49:26.000000000","message":"When we have a domain scoped rally deployments, to discover endpoints we need project scoped tokens as endpoints for services like nova, cinder, etc, needs project-id to return the endpoint detail. With the domain name, the admin project name is fetched and the scope is changed from domain to project.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"a6f12710253cbea51266ac4f9feb9f57e4c782d1","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if tenant_name is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_d5149345","line":54,"updated":"2016-09-06 15:19:43.000000000","message":"In 9th patch set you wrote that its done. But I don;t see any change regarding to this line","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if tenant_name is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_fa7262e2","line":54,"in_reply_to":"9a89bdaa_d5149345","updated":"2016-09-21 03:49:26.000000000","message":"Sorry about the miss. Will take care in next patch set.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"a6f12710253cbea51266ac4f9feb9f57e4c782d1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if tenant_name is None:"},{"line_number":58,"context_line":"            raise exceptions.InvalidEndpointsException("},{"line_number":59,"context_line":"                \"Attempted to project scope a token without providing \""},{"line_number":60,"context_line":"                \"a \u0027tenant_name\u0027.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_b539cf43","line":57,"updated":"2016-09-06 15:19:43.000000000","message":"those if statement is redundant because we check tenant_name in 54th line","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if tenant_name is None:"},{"line_number":58,"context_line":"            raise exceptions.InvalidEndpointsException("},{"line_number":59,"context_line":"                \"Attempted to project scope a token without providing \""},{"line_number":60,"context_line":"                \"a \u0027tenant_name\u0027.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_5a31960a","line":57,"in_reply_to":"9a89bdaa_b539cf43","updated":"2016-09-21 03:49:26.000000000","message":"in #54 we check the object\u0027s tenant name. This is to check the input parameter.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"a6f12710253cbea51266ac4f9feb9f57e4c782d1","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        kwargs \u003d self.to_dict()"},{"line_number":67,"context_line":"        kwargs.update(new_kw)"},{"line_number":68,"context_line":"        return Credential(**kwargs)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def to_dict(self, include_permission\u003dFalse):"},{"line_number":71,"context_line":"        dct \u003d {\"auth_url\": self.auth_url, \"username\": self.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_9584cbd4","line":68,"updated":"2016-09-06 15:19:43.000000000","message":"In what case 62th line will execute? We will return at 55th or at 58th line because tenant_name value is None or not None. There is only two cases\u003d)","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"57214bd4ee7bf4f3c6c36798d1cba939790bf059","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            self.auth_scope \u003d consts.AuthScope.PROJECT"},{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            self.auth_scope \u003d None"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if tenant_name is None:"},{"line_number":58,"context_line":"            raise exceptions.InvalidEndpointsException("},{"line_number":59,"context_line":"                \"Attempted to project scope a token without providing \""},{"line_number":60,"context_line":"                \"a \u0027tenant_name\u0027.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        new_kw \u003d {\"domain_name\": None,"},{"line_number":63,"context_line":"                  \"tenant_name\": tenant_name or self.tenant_name,"},{"line_number":64,"context_line":"                  \"project_domain_name\": self.domain_name}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        kwargs \u003d self.to_dict()"},{"line_number":67,"context_line":"        kwargs.update(new_kw)"},{"line_number":68,"context_line":"        return Credential(**kwargs)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def to_dict(self, include_permission\u003dFalse):"},{"line_number":71,"context_line":"        dct \u003d {\"auth_url\": self.auth_url, \"username\": self.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_70a2f5af","line":68,"range":{"start_line":51,"start_character":0,"end_line":68,"end_character":35},"updated":"2016-09-06 14:51:57.000000000","message":"let\u0027s remove this code at all and decide what arguments can be used in osclients while creating keystone session object.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            self.auth_scope \u003d consts.AuthScope.PROJECT"},{"line_number":49,"context_line":"        else:"},{"line_number":50,"context_line":"            self.auth_scope \u003d None"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def to_project_scope(self, tenant_name\u003dNone):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if self.tenant_name is not None:"},{"line_number":55,"context_line":"            return self"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if tenant_name is None:"},{"line_number":58,"context_line":"            raise exceptions.InvalidEndpointsException("},{"line_number":59,"context_line":"                \"Attempted to project scope a token without providing \""},{"line_number":60,"context_line":"                \"a \u0027tenant_name\u0027.\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        new_kw \u003d {\"domain_name\": None,"},{"line_number":63,"context_line":"                  \"tenant_name\": tenant_name or self.tenant_name,"},{"line_number":64,"context_line":"                  \"project_domain_name\": self.domain_name}"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        kwargs \u003d self.to_dict()"},{"line_number":67,"context_line":"        kwargs.update(new_kw)"},{"line_number":68,"context_line":"        return Credential(**kwargs)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def to_dict(self, include_permission\u003dFalse):"},{"line_number":71,"context_line":"        dct \u003d {\"auth_url\": self.auth_url, \"username\": self.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_f568b3bc","line":68,"range":{"start_line":51,"start_character":0,"end_line":68,"end_character":35},"in_reply_to":"9a89bdaa_70a2f5af","updated":"2016-09-21 03:49:26.000000000","message":"ok. I will remove this and identify the parameter in osclients.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        kwargs \u003d self.to_dict()"},{"line_number":67,"context_line":"        kwargs.update(new_kw)"},{"line_number":68,"context_line":"        return Credential(**kwargs)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def to_dict(self, include_permission\u003dFalse):"},{"line_number":71,"context_line":"        dct \u003d {\"auth_url\": self.auth_url, \"username\": self.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_f5c43393","line":68,"in_reply_to":"9a89bdaa_9584cbd4","updated":"2016-09-21 03:49:26.000000000","message":"In case of domain-scoped deployments, self.tenant_name @54 is None and this function is called to project-scope to discover the endpoints. tenant_name #57 is the admin tenant name fetched using the domain name.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"}],"rally/consts.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class _AuthScope(utils.ImmutableMixin, utils.EnumMixin):"},{"line_number":185,"context_line":"    PROJECT \u003d \"project\""},{"line_number":186,"context_line":"    DOMAIN \u003d \"domain\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"TaskStatus \u003d _TaskStatus()"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_d5107e5b","line":186,"updated":"2016-08-05 16:12:33.000000000","message":"I don\u0027t understand why we need them. What the scope we could get from whether we have tenant_name or domain_name","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class _AuthScope(utils.ImmutableMixin, utils.EnumMixin):"},{"line_number":185,"context_line":"    PROJECT \u003d \"project\""},{"line_number":186,"context_line":"    DOMAIN \u003d \"domain\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"TaskStatus \u003d _TaskStatus()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_21a84f1f","line":186,"in_reply_to":"bacf61ea_d5107e5b","updated":"2016-08-09 07:30:42.000000000","message":"same as rally/osclients.py Line 332:","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"}],"rally/deployment/engines/existing.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                        },"},{"line_number":89,"context_line":"                        \"required\": [\"username\", \"password\", \"project_name\"],"},{"line_number":90,"context_line":"                    },"},{"line_number":91,"context_line":"                    {"},{"line_number":92,"context_line":"                        # v3.0 authentication in domain scope"},{"line_number":93,"context_line":"                        \"properties\": {"},{"line_number":94,"context_line":"                            \"domain_name\": {\"type\": \"string\"},"},{"line_number":95,"context_line":"                            \"user_domain_name\": {\"type\": \"string\"},"},{"line_number":96,"context_line":"                            \"project_domain_name\": {\"type\": \"string\"},"},{"line_number":97,"context_line":"                        },"},{"line_number":98,"context_line":"                        \"required\": [\"username\", \"password\", \"domain_name\"],"},{"line_number":99,"context_line":"                    }"},{"line_number":100,"context_line":"                ]"},{"line_number":101,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_817897c5","line":98,"range":{"start_line":91,"start_character":6,"end_line":98,"end_character":76},"updated":"2016-08-05 16:12:33.000000000","message":"This part is really needed","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                        },"},{"line_number":89,"context_line":"                        \"required\": [\"username\", \"password\", \"project_name\"],"},{"line_number":90,"context_line":"                    },"},{"line_number":91,"context_line":"                    {"},{"line_number":92,"context_line":"                        # v3.0 authentication in domain scope"},{"line_number":93,"context_line":"                        \"properties\": {"},{"line_number":94,"context_line":"                            \"domain_name\": {\"type\": \"string\"},"},{"line_number":95,"context_line":"                            \"user_domain_name\": {\"type\": \"string\"},"},{"line_number":96,"context_line":"                            \"project_domain_name\": {\"type\": \"string\"},"},{"line_number":97,"context_line":"                        },"},{"line_number":98,"context_line":"                        \"required\": [\"username\", \"password\", \"domain_name\"],"},{"line_number":99,"context_line":"                    }"},{"line_number":100,"context_line":"                ]"},{"line_number":101,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_2a04a915","line":98,"range":{"start_line":91,"start_character":6,"end_line":98,"end_character":76},"in_reply_to":"bacf61ea_817897c5","updated":"2016-08-09 07:30:42.000000000","message":"This is the actual fix for the defect. Do you mean that to be combined with the previous loop (V3.0 Authentication in project scope)","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"57214bd4ee7bf4f3c6c36798d1cba939790bf059","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                        },"},{"line_number":78,"context_line":"                        \"required\": [\"username\", \"password\", \"tenant_name\"],"},{"line_number":79,"context_line":"                        \"additionalProperties\": False"},{"line_number":80,"context_line":"                    },"},{"line_number":81,"context_line":"                    {"},{"line_number":82,"context_line":"                        # Authentication in project scope"},{"line_number":83,"context_line":"                        \"properties\": {"},{"line_number":84,"context_line":"                            \"username\": {\"type\": \"string\"},"},{"line_number":85,"context_line":"                            \"password\": {\"type\": \"string\"},"},{"line_number":86,"context_line":"                            \"user_domain_name\": {\"type\": \"string\"},"},{"line_number":87,"context_line":"                            \"admin_domain_name\": {\"type\": \"string\"},"},{"line_number":88,"context_line":"                            \"project_name\": {\"type\": \"string\"},"},{"line_number":89,"context_line":"                            \"project_domain_name\": {\"type\": \"string\"},"},{"line_number":90,"context_line":"                        },"},{"line_number":91,"context_line":"                        \"required\": [\"username\", \"password\", \"project_name\"],"},{"line_number":92,"context_line":"                        \"additionalProperties\": False"},{"line_number":93,"context_line":"                    },"},{"line_number":94,"context_line":"                    {"},{"line_number":95,"context_line":"                        # Authentication in Domain scope"},{"line_number":96,"context_line":"                        \"properties\": {"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_b0271d63","line":93,"range":{"start_line":80,"start_character":20,"end_line":93,"end_character":22},"updated":"2016-09-06 14:51:57.000000000","message":"Unfortunately, while implementing strict validation of json-schema I found that domain_name variable was used (https://github.com/openstack/rally/blob/0.6.0/rally/osclients.py#L270), so I added it to schema - https://github.com/openstack/rally/blob/0.6.0/rally/deployment/engines/existing.py#L105\n\nSo at current point we need to write a dm migration to remove domain_name from old deployments. It should be simple(an example of migration https://github.com/openstack/rally/blob/master/rally/common/db/sqlalchemy/migrations/versions/54e844ebfbc3_update_deployment_configs.py ). upgrade method should look like:\n\n    connection \u003d op.get_bind()\n    for deployment in connection.execute(deployments_helper.select()):\n        conf \u003d deployment.config\n        if conf[\"type\"] !\u003d \"ExistingCloud\":\n            continue\n\n        should_update \u003d False\n\n        if \"domain_name\" in conf[\"admin\"]:\n            del conf[\"admin\"][\"domain_name\"]\n            should_update \u003d True\n        if \"users\" in conf:\n            for user in conf[\"users\"]:\n                if \"domain_name\" in user:\n                    del user[\"domain_nmae\"]\n\n        if should_update:\n            connection.execute(\n                deployments_helper.update().where(\n                    deployments_helper.c.id \u003d\u003d deployment.id).values(\nconfig\u003dconf))","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"}],"rally/osclients.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"86d8ea667d5b3e064639f2c9ed5a166fbb4a1efc","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"@plugin.base()"},{"line_number":70,"context_line":"class OSClient(plugin.Plugin):"},{"line_number":71,"context_line":"    def __init__(self, credential, api_info, cache_obj, auth_scope):"},{"line_number":72,"context_line":"        self.credential \u003d credential"},{"line_number":73,"context_line":"        self.api_info \u003d api_info"},{"line_number":74,"context_line":"        self.cache \u003d cache_obj"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_9b9ed252","line":71,"updated":"2016-07-14 12:17:18.000000000","message":"This breaks OSClient plugin compatibility since OSClient is a Rally plugin and users can create custom clients which are not a part of Rally distribution.\n\nCan we obtain auth scope from credential?","commit_id":"b6663cc35e12dee4d710ce042d32f12274c28b04"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"be3f6f35dafb0d2cbdebb77f6b1e58aceb9f9868","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"@plugin.base()"},{"line_number":70,"context_line":"class OSClient(plugin.Plugin):"},{"line_number":71,"context_line":"    def __init__(self, credential, api_info, cache_obj, auth_scope):"},{"line_number":72,"context_line":"        self.credential \u003d credential"},{"line_number":73,"context_line":"        self.api_info \u003d api_info"},{"line_number":74,"context_line":"        self.cache \u003d cache_obj"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_d1bf9ba8","line":71,"in_reply_to":"1aa78d24_9b9ed252","updated":"2016-07-14 12:25:11.000000000","message":"+1 to extend credentials object","commit_id":"b6663cc35e12dee4d710ce042d32f12274c28b04"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"86d8ea667d5b3e064639f2c9ed5a166fbb4a1efc","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                    break"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"            # The name of the project for the user."},{"line_number":341,"context_line":"            project_name \u003d client.projects.get(project_id).name"},{"line_number":342,"context_line":"            # Change it to project scope"},{"line_number":343,"context_line":"            self.credential \u003d self.credential.to_project_scope("},{"line_number":344,"context_line":"                tenant_name\u003dproject_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_0e50e209","line":341,"updated":"2016-07-14 12:17:18.000000000","message":"Potential bug: NameError for `project_id\u0027 if L328 never matches.","commit_id":"b6663cc35e12dee4d710ce042d32f12274c28b04"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            auth_url \u003d self._remove_url_version()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        if (self.credential.auth_scope is consts.AuthScope.PROJECT and"},{"line_number":329,"context_line":"                self.credential.tenant_name is None):"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"            # We need project scoped tokens, but don\u0027t have the project"},{"line_number":332,"context_line":"            # details. Using the domain-scope, we get the users list"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_07e5cd07","line":329,"updated":"2016-08-05 16:12:33.000000000","message":"How does it possible? We have assigned self.credential.auth_scope according to:\nif tenant_name:\n ...\nin credetial object","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            auth_url \u003d self._remove_url_version()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        if (self.credential.auth_scope is consts.AuthScope.PROJECT and"},{"line_number":329,"context_line":"                self.credential.tenant_name is None):"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"            # We need project scoped tokens, but don\u0027t have the project"},{"line_number":332,"context_line":"            # details. Using the domain-scope, we get the users list"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_e18637b8","line":329,"in_reply_to":"bacf61ea_07e5cd07","updated":"2016-08-09 07:30:42.000000000","message":"same as rally/osclients.py Line 332:","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f3b4b357347fe6d95c435260bb03fe4c309837df","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if (self.credential.auth_scope is consts.AuthScope.PROJECT and"},{"line_number":329,"context_line":"                self.credential.tenant_name is None):"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"            # We need project scoped tokens, but don\u0027t have the project"},{"line_number":332,"context_line":"            # details. Using the domain-scope, we get the users list"},{"line_number":333,"context_line":"            # for that domain and check the user name with the"},{"line_number":334,"context_line":"            # retrieved list. If the user name is found, get the"},{"line_number":335,"context_line":"            # project id of admin user. Get the project name for the"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_ea1e805d","line":332,"range":{"start_line":331,"start_character":14,"end_line":332,"end_character":21},"updated":"2016-08-05 16:12:33.000000000","message":"Why does this really need? If we use domain scope then we\u0027ve specified domain_name in credetial object.If we want to use project token let us specify it in credential.","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"0cdf4118d0e3e3722ca004a99c53943c0aebd8b5","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if (self.credential.auth_scope is consts.AuthScope.PROJECT and"},{"line_number":329,"context_line":"                self.credential.tenant_name is None):"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"            # We need project scoped tokens, but don\u0027t have the project"},{"line_number":332,"context_line":"            # details. Using the domain-scope, we get the users list"},{"line_number":333,"context_line":"            # for that domain and check the user name with the"},{"line_number":334,"context_line":"            # retrieved list. If the user name is found, get the"},{"line_number":335,"context_line":"            # project id of admin user. Get the project name for the"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_e1511764","line":332,"range":{"start_line":331,"start_character":14,"end_line":332,"end_character":21},"in_reply_to":"bacf61ea_ea1e805d","updated":"2016-08-09 07:30:42.000000000","message":"Actually this patch addresses 2 issues.\n1. To support domain-scoped rally deployment. \n    With this fix, new projects and users for the same can\n    be created within the domain.\n    The defect captures only this issue.\n2. With the domain-scoped deployments, some component\u0027s test\n   cases will fail with the error \"internal endpoint for   \n   compute service not found\".(nova error)\n   Why this fails: Many openstack components don’t register\n   endpoints for domain-scoped tokens. The service catalog \n   returned from a domain-scoped request contains all \n   endpoints EXCLUDING ones that require a project ID as \n   part of their URL. ie, if the endpoint contains \n   PROJECT_ID as part of the URL, we get an empty list with \n   the domain-scoped tokens.\n   We can not authenticate to multiple targets, it has  \n   to be either project or domain. So we can not specify  \n   both project-name and domain-name during deployment. It\n   will fail as mentioned in the defect. \n   So to address the endpoint URL issue, I have explicitly \n   project-scoped the “admin” token for components facing\n   the above mentioned problem. In the patch, I have \n   generalized this change to avoid changes everywhere. \n\n   This is not captured in the defect. I didn\u0027t want to \n   create a new defect as this defect can\u0027t be closed \n   without addressing this issue. That\u0027s why I have added\n   all these details in the commit message. Please, let me  \n   know if you need more info..\n\nThank you so much for your time in reviewing this patch:)","commit_id":"8af324b474e9a9c982bc06ac9cb11b621ab62790"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"49fca86fa0b5ca2789d163e1bd6aa4aa513d85fa","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \"domain_name\": self.credential.domain_name,"},{"line_number":182,"context_line":"                \"project_domain_name\": self.credential.project_domain_name,"},{"line_number":183,"context_line":"            })"},{"line_number":184,"context_line":"        identity_plugin \u003d identity.Password(**password_args)"},{"line_number":185,"context_line":"        sess \u003d session.Session("},{"line_number":186,"context_line":"            auth\u003didentity_plugin, verify\u003d("},{"line_number":187,"context_line":"                self.credential.cacert or not self.credential.insecure),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_161bf3ca","line":184,"updated":"2016-09-08 11:34:05.000000000","message":"Those domain or project scope token will be created inside Passsword() implicitly. We don\u0027t need to construct it by hand. All that we need is to pass right args into Passsword() with domain info(to say keystoneauth to create Password obj based on domain scoped token) or project related info(to say keystoneauth to create Password obj based on project scoped token).\nAnd..., those info(for domain or project scope token) we specify by hand through the deployment config. As I see in http://docs.openstack.org/developer/keystone/configuration.html#operation_create_project_scoped_token\nwe proceed all needed arguments from deployment config into credential. So I don\u0027t understand why we change something except deployment schema(and possibly a few related places) and adding friendly msg when both project and domain scoped info is available","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \"domain_name\": self.credential.domain_name,"},{"line_number":182,"context_line":"                \"project_domain_name\": self.credential.project_domain_name,"},{"line_number":183,"context_line":"            })"},{"line_number":184,"context_line":"        identity_plugin \u003d identity.Password(**password_args)"},{"line_number":185,"context_line":"        sess \u003d session.Session("},{"line_number":186,"context_line":"            auth\u003didentity_plugin, verify\u003d("},{"line_number":187,"context_line":"                self.credential.cacert or not self.credential.insecure),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_d5ae5797","line":184,"in_reply_to":"9a89bdaa_161bf3ca","updated":"2016-09-21 03:49:26.000000000","message":"Yes, you are right. But in case of domain scoped deployments discovering endpoints is not possible without project ids. Hence, we need project id\u0027s (in this case I have used admin project id) and have to switch to project scope for discovering the endpoints.","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"425cabf7f2b961c38d691a78979ec4b952b66d09","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            auth_url \u003d self._remove_url_version()"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        if (self.credential.auth_scope is consts.AuthScope.PROJECT and"},{"line_number":340,"context_line":"                self.credential.tenant_name is None):"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            # We need project scoped tokens, but don\u0027t have the project"},{"line_number":343,"context_line":"            # details. Using the domain-scope, we get the users list"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_c15bf52c","line":340,"updated":"2016-09-06 15:37:35.000000000","message":"We\u0027ve set PROJECT scope in credential object if tenant_name is not None","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"},{"author":{"_account_id":20302,"name":"Kavitha Subramaniam","email":"kavitha.subramaniam@in.ibm.com","username":"kavitha"},"change_message_id":"910b1f87c191c08e7d994aef76739e5d52250d54","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            auth_url \u003d self._remove_url_version()"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        if (self.credential.auth_scope is consts.AuthScope.PROJECT and"},{"line_number":340,"context_line":"                self.credential.tenant_name is None):"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            # We need project scoped tokens, but don\u0027t have the project"},{"line_number":343,"context_line":"            # details. Using the domain-scope, we get the users list"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_75d3c338","line":340,"in_reply_to":"9a89bdaa_c15bf52c","updated":"2016-09-21 03:49:26.000000000","message":"In case of domain scoped deployments, it is changed to PROJECT\n\nrally/plugins/openstack/context/keystone/users.py @349","commit_id":"9ded2a5ba2aea5534505ccf4c6bbebaacf84a6e0"}],"rally/plugins/openstack/context/keystone/users.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"86d8ea667d5b3e064639f2c9ed5a166fbb4a1efc","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            LOG.debug(\"Security group context is disabled: %s\" % msg)"},{"line_number":160,"context_line":"            return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        for user, tenant_id in rutils.iterate_per_tenants("},{"line_number":163,"context_line":"                self.context[\"users\"]):"},{"line_number":164,"context_line":"            with logging.ExceptionLogger("},{"line_number":165,"context_line":"                    LOG, _(\"Unable to delete default security group\")):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_910eb330","side":"PARENT","line":162,"updated":"2016-07-14 12:17:18.000000000","message":"Why rutils.iterate_per_tenants() is removed? This may cause to remove same security group several times within the each tenant (in case if there are more than one user per tenant)","commit_id":"7777eebfdf48547600183c5186f7867a55d802d9"}]}
