)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6404e1859e8f42c6dadc2c9f8a17d15914e90e0e","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Tempest currently also has 3 different internal methods for providing"},{"line_number":66,"context_line":"authentication to tests. Dynamic credentials, locking test accounts, and"},{"line_number":67,"context_line":"non-locking test accounts. Depending on which one is in use the configuration"},{"line_number":68,"context_line":"of tempest is slightly different."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Dynamic Credentials"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da85f559_c48e0e27","line":67,"updated":"2015-11-13 16:52:35.000000000","message":"legacy","commit_id":"290b3e138317062bd165df9eeaf17495135dfcfe"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"35d66dac64057fad24724bf2bcf93a969dc055a4","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Tempest currently also has 3 different internal methods for providing"},{"line_number":66,"context_line":"authentication to tests. Dynamic credentials, locking test accounts, and"},{"line_number":67,"context_line":"non-locking test accounts. Depending on which one is in use the configuration"},{"line_number":68,"context_line":"of tempest is slightly different."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Dynamic Credentials"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba8a016a_b9c5f53c","line":67,"in_reply_to":"da85f559_c48e0e27","updated":"2015-11-18 02:05:32.000000000","message":"Yes, but let\u0027s not to block on this and can be done in follow up patch.","commit_id":"290b3e138317062bd165df9eeaf17495135dfcfe"}],"tempest/common/credentials.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\"\"\"This module providers factories of credential and credential providers"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Credentials providers and clients are (going to be) part of tempest-lib,"},{"line_number":32,"context_line":"and so they may not hold any dependency to tempest configuration."}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_c8191f8a","line":29,"updated":"2015-10-30 02:42:52.000000000","message":"Typo here","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"699cb913afd1dba95de7267a2b7a4c01f1b264c2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\"\"\"This module providers factories of credential and credential providers"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Credentials providers and clients are (going to be) part of tempest-lib,"},{"line_number":32,"context_line":"and so they may not hold any dependency to tempest configuration."}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_3446eabf","line":29,"in_reply_to":"1a26ad4f_c8191f8a","updated":"2015-10-30 06:42:57.000000000","message":"Done","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        if self._creds.get(\u0027primary\u0027):"},{"line_number":83,"context_line":"            return self._creds.get(\u0027primary\u0027)"},{"line_number":84,"context_line":"        primary_credential \u003d get_configured_credentials("},{"line_number":85,"context_line":"            fill_in\u003dFalse, credential_type\u003d\u0027user\u0027,"},{"line_number":86,"context_line":"            identity_version\u003dself.identity_version)"},{"line_number":87,"context_line":"        self._creds[\u0027primary\u0027] \u003d cred_provider.TestResources("},{"line_number":88,"context_line":"            primary_credential)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_d3d1d058","line":85,"updated":"2015-10-30 02:42:52.000000000","message":"Probably better to reverse the order of the argument here. credential_type should be first according to get_configured_credentials signature. i know it works in Python but this is not consistent with how you call get_configured_credentials in get_admin_creds()","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"699cb913afd1dba95de7267a2b7a4c01f1b264c2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        if self._creds.get(\u0027primary\u0027):"},{"line_number":83,"context_line":"            return self._creds.get(\u0027primary\u0027)"},{"line_number":84,"context_line":"        primary_credential \u003d get_configured_credentials("},{"line_number":85,"context_line":"            fill_in\u003dFalse, credential_type\u003d\u0027user\u0027,"},{"line_number":86,"context_line":"            identity_version\u003dself.identity_version)"},{"line_number":87,"context_line":"        self._creds[\u0027primary\u0027] \u003d cred_provider.TestResources("},{"line_number":88,"context_line":"            primary_credential)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_d413f6b6","line":85,"in_reply_to":"1a26ad4f_d3d1d058","updated":"2015-10-30 06:42:57.000000000","message":"yes, good idea","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self._creds \u003d {}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def get_admin_creds(self):"},{"line_number":105,"context_line":"        creds \u003d get_configured_credentials("},{"line_number":106,"context_line":"            \"identity_admin\", fill_in\u003dFalse)"},{"line_number":107,"context_line":"        self._creds[\u0027admin\u0027] \u003d cred_provider.TestResources(creds)"},{"line_number":108,"context_line":"        return self._creds[\u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_13c0a87a","line":105,"updated":"2015-10-30 02:42:52.000000000","message":"You don\"t have a \n\n        if self._creds.get(\u0027admin\u0027):\n            return self._creds.get(\u0027admin\u0027)\n\nhere. Why ?","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"699cb913afd1dba95de7267a2b7a4c01f1b264c2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self._creds \u003d {}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def get_admin_creds(self):"},{"line_number":105,"context_line":"        creds \u003d get_configured_credentials("},{"line_number":106,"context_line":"            \"identity_admin\", fill_in\u003dFalse)"},{"line_number":107,"context_line":"        self._creds[\u0027admin\u0027] \u003d cred_provider.TestResources(creds)"},{"line_number":108,"context_line":"        return self._creds[\u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_940d7e92","line":105,"in_reply_to":"1a26ad4f_13c0a87a","updated":"2015-10-30 06:42:57.000000000","message":"good catch, thanks","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    if credential_type not in CREDENTIAL_TYPES:"},{"line_number":238,"context_line":"        raise exceptions.InvalidCredentials()"},{"line_number":239,"context_line":"    conf_attributes \u003d [\u0027username\u0027, \u0027password\u0027, \u0027tenant_name\u0027]"},{"line_number":240,"context_line":"    if identity_version \u003d\u003d \u0027v3\u0027:"},{"line_number":241,"context_line":"        conf_attributes.append(\u0027domain_name\u0027)"},{"line_number":242,"context_line":"    # Read the parts of credentials from config"},{"line_number":243,"context_line":"    params \u003d DEFAULT_PARAMS.copy()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_13f3c8d7","line":240,"updated":"2015-10-30 02:42:52.000000000","message":"A blank/empty line before each previous \u0027if\u0027 statement would help here.","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"699cb913afd1dba95de7267a2b7a4c01f1b264c2","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    if credential_type not in CREDENTIAL_TYPES:"},{"line_number":238,"context_line":"        raise exceptions.InvalidCredentials()"},{"line_number":239,"context_line":"    conf_attributes \u003d [\u0027username\u0027, \u0027password\u0027, \u0027tenant_name\u0027]"},{"line_number":240,"context_line":"    if identity_version \u003d\u003d \u0027v3\u0027:"},{"line_number":241,"context_line":"        conf_attributes.append(\u0027domain_name\u0027)"},{"line_number":242,"context_line":"    # Read the parts of credentials from config"},{"line_number":243,"context_line":"    params \u003d DEFAULT_PARAMS.copy()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_542846e2","line":240,"in_reply_to":"1a26ad4f_13f3c8d7","updated":"2015-10-30 06:42:57.000000000","message":"ok","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bc228f9396b34da3bb0f7633eecf65e3d54c065c","unresolved":false,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"# Read credentials from configuration, builds a Credentials object"},{"line_number":232,"context_line":"# based on the specified or configured version"},{"line_number":233,"context_line":"def get_configured_credentials(credential_type, fill_in\u003dTrue,"},{"line_number":234,"context_line":"                               identity_version\u003dNone):"},{"line_number":235,"context_line":"    identity_version \u003d identity_version or CONF.identity.auth_version"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_ee60a637","line":233,"updated":"2015-11-05 09:11:40.000000000","message":"What does the \u0027fill_in\u0027 arg mean ?","commit_id":"103de70ede70bfcbe63d3b566be4e85fb13c974b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bc228f9396b34da3bb0f7633eecf65e3d54c065c","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"# Wrapper around auth.get_credentials to use the configured identity version"},{"line_number":270,"context_line":"# is none is specified"},{"line_number":271,"context_line":"def get_credentials(fill_in\u003dTrue, identity_version\u003dNone, **kwargs):"},{"line_number":272,"context_line":"    params \u003d dict(DEFAULT_PARAMS, **kwargs)"},{"line_number":273,"context_line":"    identity_version \u003d identity_version or CONF.identity.auth_version"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_ee12e6b3","line":270,"updated":"2015-11-05 09:11:40.000000000","message":"*if","commit_id":"103de70ede70bfcbe63d3b566be4e85fb13c974b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bc228f9396b34da3bb0f7633eecf65e3d54c065c","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    if identity_version \u003d\u003d \u0027v3\u0027:"},{"line_number":276,"context_line":"        domain_fields \u003d set(x for x in auth.KeystoneV3Credentials.ATTRIBUTES"},{"line_number":277,"context_line":"                            if \u0027domain\u0027 in x)"},{"line_number":278,"context_line":"        if not domain_fields.intersection(kwargs.keys()):"},{"line_number":279,"context_line":"            domain_name \u003d CONF.auth.default_credentials_domain_name"},{"line_number":280,"context_line":"            params[\u0027user_domain_name\u0027] \u003d domain_name"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_6e6ef630","line":278,"updated":"2015-11-05 09:11:40.000000000","message":"Could you add a line about what is the line supposed to mean, in english ? I.e what do we expect in \"kwargs\" ? What does it mean if the intersection is empty ?","commit_id":"103de70ede70bfcbe63d3b566be4e85fb13c974b"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"37ae74facfd0d3794cd9d03e308994ecdbaa4e9f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    See the License for the specific language governing permissions and"},{"line_number":12,"context_line":"#    limitations under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import os"},{"line_number":15,"context_line":"from oslo_log import log as logging"},{"line_number":16,"context_line":"from tempest_lib import auth"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_ef3819d5","line":14,"updated":"2015-11-12 13:05:26.000000000","message":"There should be a blank line here.","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"18dcd518bd74b3afc5b8bb7a71813a4ca44e648d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    See the License for the specific language governing permissions and"},{"line_number":12,"context_line":"#    limitations under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import os"},{"line_number":15,"context_line":"from oslo_log import log as logging"},{"line_number":16,"context_line":"from tempest_lib import auth"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_08b6aef8","line":14,"in_reply_to":"da85f559_ef3819d5","updated":"2015-11-12 14:33:38.000000000","message":"ok, I\u0027ll re-spin to fix this once I get more reviews.","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b28eab0e98b98c5b5c97498428c38107fc948e57","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\"\"\"This module provides factories of credential and credential providers"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_680950dd","line":27,"updated":"2015-11-13 08:04:14.000000000","message":"How about renaming this file to credentials_factory.py or credentials_utils.py etc..","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"277fa251b5e71905d91112f9a3b9ef3e1f36432c","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\"\"\"This module provides factories of credential and credential providers"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_6bc06ae1","line":27,"in_reply_to":"da85f559_680950dd","updated":"2015-11-13 08:44:38.000000000","message":"ok","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"}],"tempest/common/credentials_factory.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"19ea00db3e5758a53b3fea98804737b31d640606","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            identity_version\u003dself.identity_version)"},{"line_number":98,"context_line":"        self._creds[\u0027alt\u0027] \u003d cred_provider.TestResources("},{"line_number":99,"context_line":"            alt_credential)"},{"line_number":100,"context_line":"        return self._creds[\u0027alt\u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def clear_creds(self):"},{"line_number":103,"context_line":"        self._creds \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"da85f559_486e8397","line":100,"updated":"2015-11-16 06:18:51.000000000","message":"The code of get_primary_creds and get_alt_creds are almost same and it is easy to refactor by adding some internal method.\nbut it is fine to do that in the next step.","commit_id":"290b3e138317062bd165df9eeaf17495135dfcfe"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"3a7aa95b34622abf01c54a2e097893a880208b43","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            identity_version\u003dself.identity_version)"},{"line_number":98,"context_line":"        self._creds[\u0027alt\u0027] \u003d cred_provider.TestResources("},{"line_number":99,"context_line":"            alt_credential)"},{"line_number":100,"context_line":"        return self._creds[\u0027alt\u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def clear_creds(self):"},{"line_number":103,"context_line":"        self._creds \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_a55774c9","line":100,"in_reply_to":"da85f559_486e8397","updated":"2015-11-16 11:24:37.000000000","message":"Yes, we can do this in another patch :)","commit_id":"290b3e138317062bd165df9eeaf17495135dfcfe"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"19ea00db3e5758a53b3fea98804737b31d640606","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def get_creds_by_roles(self, roles, force_new\u003dFalse):"},{"line_number":114,"context_line":"        msg \u003d \"Credentials being specified through the config file can not be\"\\"},{"line_number":115,"context_line":"              \" used with tests that specify using credentials by roles. \"\\"},{"line_number":116,"context_line":"              \"Either exclude/skip the tests doing this or use either an \"\\"},{"line_number":117,"context_line":"              \"test_accounts_file or dynamic credentials.\""},{"line_number":118,"context_line":"        raise exceptions.InvalidConfiguration(msg)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da85f559_c82fd33c","line":116,"updated":"2015-11-16 06:18:51.000000000","message":"nit s/an/a/","commit_id":"290b3e138317062bd165df9eeaf17495135dfcfe"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"19ea00db3e5758a53b3fea98804737b31d640606","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    def is_role_available(self, role):"},{"line_number":121,"context_line":"        msg \u003d \"Credentials being specified through the config file can not be\"\\"},{"line_number":122,"context_line":"              \" used with tests that specify using credentials by roles. \"\\"},{"line_number":123,"context_line":"              \"Either exclude/skip the tests doing this or use either an \"\\"},{"line_number":124,"context_line":"              \"test_accounts_file or dynamic credentials.\""},{"line_number":125,"context_line":"        raise exceptions.InvalidConfiguration(msg)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da85f559_8829cb39","line":123,"updated":"2015-11-16 06:18:51.000000000","message":"ditto","commit_id":"290b3e138317062bd165df9eeaf17495135dfcfe"}],"tempest/common/dynamic_creds.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, identity_version, name\u003dNone, network_resources\u003dNone,"},{"line_number":34,"context_line":"                 credentials_domain\u003dNone, admin_role\u003dNone, admin_creds\u003dNone):"},{"line_number":35,"context_line":"        \"\"\"Creates credentials dynamically for tests"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        A credential provider that, based on an initial set of"},{"line_number":38,"context_line":"        admin credentials, creates new credentials on the fly for"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_b3ec5490","line":35,"updated":"2015-10-30 02:42:52.000000000","message":"Thanks a lot for this comprehensive doc string ! I love it.","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        :param str identity_version: identity API version to use `v2` or `v3`"},{"line_number":42,"context_line":"        :param str admin_role: name of the admin role added to admin users"},{"line_number":43,"context_line":"        :param str name: added to resource names when defined"},{"line_number":44,"context_line":"        :param str credentials_domain: name of the domain where the users"},{"line_number":45,"context_line":"                                       are created. If not defined, the project"},{"line_number":46,"context_line":"                                       domain from admin_credentials is used"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_538b80c3","line":43,"range":{"start_line":43,"start_character":27,"end_line":43,"end_character":60},"updated":"2015-10-30 02:42:52.000000000","message":"I don\"t understand this one.","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"}],"tempest/manager.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"458ab502cf86bc06645151cf81889784fd5458fe","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        Credentials to be used within the various client classes managed by the"},{"line_number":37,"context_line":"        Manager object must be defined."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param credentials: Credentials to be used"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        self.credentials \u003d credentials"},{"line_number":42,"context_line":"        # Check if passed or default credentials are valid"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_337e04af","line":39,"updated":"2015-10-30 02:42:52.000000000","message":"Could you add the type (or base class) of the object you expect here please.","commit_id":"e212469311e60e396f8978c9c527972c6446fcd7"}],"tempest/tests/common/test_cred_provider.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b28eab0e98b98c5b5c97498428c38107fc948e57","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ConfiguredV2CredentialsTests(base.TestCase):"},{"line_number":30,"context_line":"    attributes \u003d {"},{"line_number":31,"context_line":"        \u0027username\u0027: \u0027fake_username\u0027,"},{"line_number":32,"context_line":"        \u0027password\u0027: \u0027fake_password\u0027,"},{"line_number":33,"context_line":"        \u0027tenant_name\u0027: \u0027fake_tenant_name\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_c8ae3ce7","line":30,"updated":"2015-11-13 08:04:14.000000000","message":"How about moving these tests for configured cred also to test_credentials.py","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"277fa251b5e71905d91112f9a3b9ef3e1f36432c","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ConfiguredV2CredentialsTests(base.TestCase):"},{"line_number":30,"context_line":"    attributes \u003d {"},{"line_number":31,"context_line":"        \u0027username\u0027: \u0027fake_username\u0027,"},{"line_number":32,"context_line":"        \u0027password\u0027: \u0027fake_password\u0027,"},{"line_number":33,"context_line":"        \u0027tenant_name\u0027: \u0027fake_tenant_name\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_cb01563b","line":30,"in_reply_to":"da85f559_c8ae3ce7","updated":"2015-11-13 08:44:38.000000000","message":"Yes that would make sense. Or I could rename this to something more appropriate, as the only tests in here are about configured credentials in fact.","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"}],"tempest/tests/common/test_credentials.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b28eab0e98b98c5b5c97498428c38107fc948e57","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.useFixture(fake_config.ConfigFixture())"},{"line_number":29,"context_line":"        self.stubs.Set(config, \u0027TempestConfigPrivate\u0027, fake_config.FakePrivate)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_get_creds_roles_nonlocking_invalid(self):"},{"line_number":32,"context_line":"        test_accounts_class \u003d credentials.LegacyCredentialProvider("},{"line_number":33,"context_line":"            **self.fixed_params)"},{"line_number":34,"context_line":"        self.assertRaises(exceptions.InvalidConfiguration,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_34672827","line":31,"updated":"2015-11-13 08:04:14.000000000","message":"we cna remove nonlocking from here too- \ntest_get_creds_roles_nonlocking_invalid() -\u003e test_get_creds_roles_invalid() or something apprpriate","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"277fa251b5e71905d91112f9a3b9ef3e1f36432c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.useFixture(fake_config.ConfigFixture())"},{"line_number":29,"context_line":"        self.stubs.Set(config, \u0027TempestConfigPrivate\u0027, fake_config.FakePrivate)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_get_creds_roles_nonlocking_invalid(self):"},{"line_number":32,"context_line":"        test_accounts_class \u003d credentials.LegacyCredentialProvider("},{"line_number":33,"context_line":"            **self.fixed_params)"},{"line_number":34,"context_line":"        self.assertRaises(exceptions.InvalidConfiguration,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_cb53966b","line":31,"in_reply_to":"da85f559_34672827","updated":"2015-11-13 08:44:38.000000000","message":"good point, thanks","commit_id":"cd2ed6c606a40c454e7b01630a37bbab38d85cde"}]}
