)]}'
{"tempest/common/credentials_factory.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ad9d698a4a11162ee045a818835edb44c436db10","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    This helper depends on identity_version as there may be admin credentials"},{"line_number":159,"context_line":"    available for v2 but not for v3."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    :param identity_version: \u0027v2\u0027 or \u0027v3\u0027"},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    def _check_configured_cred():"},{"line_number":164,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_0d791781","line":161,"updated":"2018-07-12 14:38:25.000000000","message":"I guess you would need to add the new parameter here and also extend the help text with a description of the changed behaviour.","commit_id":"6113af2073839e3c2fe3b640be042988d4cd3f37"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a841c16b5380013fb2200c42188608bdb805aa94","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    This helper depends on identity_version as there may be admin credentials"},{"line_number":159,"context_line":"    available for v2 but not for v3."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    :param identity_version: \u0027v2\u0027 or \u0027v3\u0027"},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    def _check_configured_cred():"},{"line_number":164,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_77a088f4","line":161,"in_reply_to":"5f7c97a3_0d791781","updated":"2018-07-13 07:40:42.000000000","message":"done","commit_id":"6113af2073839e3c2fe3b640be042988d4cd3f37"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ad9d698a4a11162ee045a818835edb44c436db10","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # If dynamic credentials is enabled admin will be available"},{"line_number":173,"context_line":"    if CONF.auth.use_dynamic_credentials:"},{"line_number":174,"context_line":"        return is_admin"},{"line_number":175,"context_line":"    # This is explicit check of admin cred in config file for"},{"line_number":176,"context_line":"    # \u0027force_tenant_isolation\u0027 case. Only checking"},{"line_number":177,"context_line":"    # CONF.auth.use_dynamic_credentials is not enough here because with"},{"line_number":178,"context_line":"    # use_dynamic_credentials\u003dFalse (means with pre-provisioned account)"},{"line_number":179,"context_line":"    # if we have admin cread in config then force_tenant_isolation tests"},{"line_number":180,"context_line":"    # should run without any issue."},{"line_number":181,"context_line":"    elif force_tenant_isolation:"},{"line_number":182,"context_line":"        is_admin \u003d _check_configured_cred()"},{"line_number":183,"context_line":"    # Check whether test accounts file has the admin specified or not"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_6d768ba6","line":180,"range":{"start_line":175,"start_character":3,"end_line":180,"end_character":35},"updated":"2018-07-12 14:38:25.000000000","message":"I\u0027m not sure whether this is correct. In my interpretation, setting use_dynamic_credentials\u003dFalse forbids tempest from creating dynamic credentials, even if admin creds are available in the config.","commit_id":"6113af2073839e3c2fe3b640be042988d4cd3f37"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a841c16b5380013fb2200c42188608bdb805aa94","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # If dynamic credentials is enabled admin will be available"},{"line_number":173,"context_line":"    if CONF.auth.use_dynamic_credentials:"},{"line_number":174,"context_line":"        return is_admin"},{"line_number":175,"context_line":"    # This is explicit check of admin cred in config file for"},{"line_number":176,"context_line":"    # \u0027force_tenant_isolation\u0027 case. Only checking"},{"line_number":177,"context_line":"    # CONF.auth.use_dynamic_credentials is not enough here because with"},{"line_number":178,"context_line":"    # use_dynamic_credentials\u003dFalse (means with pre-provisioned account)"},{"line_number":179,"context_line":"    # if we have admin cread in config then force_tenant_isolation tests"},{"line_number":180,"context_line":"    # should run without any issue."},{"line_number":181,"context_line":"    elif force_tenant_isolation:"},{"line_number":182,"context_line":"        is_admin \u003d _check_configured_cred()"},{"line_number":183,"context_line":"    # Check whether test accounts file has the admin specified or not"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_57d30c64","line":180,"range":{"start_line":175,"start_character":3,"end_line":180,"end_character":35},"in_reply_to":"5f7c97a3_6d768ba6","updated":"2018-07-13 07:40:42.000000000","message":"no it\u0027s not restricted with use_dynamic_credentials flag, for force_tenant_isolation case also we allow the dynamic cred to process.[1]  \n\nthat;s the main reason of bug, we allowed to get the cred for force_tenant_isolation tests but do not correctly tell them the admin cred presence in config (which is this check doing). So now force_tenant_isolation tests can get the correct info of admin cred they need to skip or run the tests. \n\n\n[1] https://github.com/openstack/tempest/blob/8626ab7d476efac8ead2c09be0bffd240db1d289/tempest/common/credentials_factory.py#L137","commit_id":"6113af2073839e3c2fe3b640be042988d4cd3f37"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"fcc8734dcb20e13ee011d403782b1c5b13741609","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    can do a single call from skip_checks."},{"line_number":158,"context_line":"    This helper depends on identity_version as there may be admin credentials"},{"line_number":159,"context_line":"    available for v2 but not for v3 and force_tenant_isolation flag which"},{"line_number":160,"context_line":"    explicitly check the admin cred in config file."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    :param identity_version: \u0027v2\u0027 or \u0027v3\u0027"},{"line_number":163,"context_line":"    :param force_tenant_isolation: True or False"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_09a2bead","line":160,"range":{"start_line":160,"start_character":15,"end_line":160,"end_character":20},"updated":"2018-07-20 01:16:13.000000000","message":"checks","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a63ecc7a6deac3b56f881c742f7462651a307248","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    can do a single call from skip_checks."},{"line_number":158,"context_line":"    This helper depends on identity_version as there may be admin credentials"},{"line_number":159,"context_line":"    available for v2 but not for v3 and force_tenant_isolation flag which"},{"line_number":160,"context_line":"    explicitly check the admin cred in config file."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    :param identity_version: \u0027v2\u0027 or \u0027v3\u0027"},{"line_number":163,"context_line":"    :param force_tenant_isolation: True or False"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_55c2a655","line":160,"range":{"start_line":160,"start_character":15,"end_line":160,"end_character":20},"in_reply_to":"5f7c97a3_09a2bead","updated":"2018-10-26 01:49:01.000000000","message":"Done","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"fcc8734dcb20e13ee011d403782b1c5b13741609","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    def _check_configured_cred():"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            get_configured_admin_credentials(fill_in\u003dFalse,"},{"line_number":168,"context_line":"                                             identity_version\u003didentity_version)"},{"line_number":169,"context_line":"            return True"},{"line_number":170,"context_line":"        except exceptions.InvalidConfiguration:"},{"line_number":171,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_e9dae21a","line":168,"range":{"start_line":167,"start_character":12,"end_line":168,"end_character":79},"updated":"2018-07-20 01:16:13.000000000","message":"One thing I noticed with current implementation is that this does an important v2/v3 check on identity_version: https://github.com/openstack/tempest/blob/8626ab7d476efac8ead2c09be0bffd240db1d289/tempest/common/credentials_factory.py#L239\n\nBut then in test.py it will be suppressed here: https://github.com/openstack/tempest/blob/8626ab7d476efac8ead2c09be0bffd240db1d289/tempest/test.py#L286\n\nMeaning if identity_version \u003d\u003d \u0027foo\u0027 (for example) then skipException is raised with unrelated error: \"Missing Identity Admin API credentials in configuration.\"\n\nBut this is unrelated to change.","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a63ecc7a6deac3b56f881c742f7462651a307248","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    def _check_configured_cred():"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            get_configured_admin_credentials(fill_in\u003dFalse,"},{"line_number":168,"context_line":"                                             identity_version\u003didentity_version)"},{"line_number":169,"context_line":"            return True"},{"line_number":170,"context_line":"        except exceptions.InvalidConfiguration:"},{"line_number":171,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_f5b17201","line":168,"range":{"start_line":167,"start_character":12,"end_line":168,"end_character":79},"in_reply_to":"5f7c97a3_e9dae21a","updated":"2018-10-26 01:49:01.000000000","message":"nice catch. i do not know best way to handle that. one way is to return the exception msg to caller and caller use that msg for skip or raise error etc. \n\nBut yeah this is unrelated to this patch, we can fix it in separate.","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"fcc8734dcb20e13ee011d403782b1c5b13741609","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    # \u0027force_tenant_isolation\u0027 case. Only checking"},{"line_number":179,"context_line":"    # CONF.auth.use_dynamic_credentials is not enough here because with"},{"line_number":180,"context_line":"    # use_dynamic_credentials\u003dFalse (means with pre-provisioned account)"},{"line_number":181,"context_line":"    # if we have admin cread in config then force_tenant_isolation tests"},{"line_number":182,"context_line":"    # should run without any issue."},{"line_number":183,"context_line":"    elif force_tenant_isolation:"},{"line_number":184,"context_line":"        is_admin \u003d _check_configured_cred()"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_e99e6267","line":181,"range":{"start_line":181,"start_character":23,"end_line":181,"end_character":28},"updated":"2018-07-20 01:16:13.000000000","message":"cred","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a63ecc7a6deac3b56f881c742f7462651a307248","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    # \u0027force_tenant_isolation\u0027 case. Only checking"},{"line_number":179,"context_line":"    # CONF.auth.use_dynamic_credentials is not enough here because with"},{"line_number":180,"context_line":"    # use_dynamic_credentials\u003dFalse (means with pre-provisioned account)"},{"line_number":181,"context_line":"    # if we have admin cread in config then force_tenant_isolation tests"},{"line_number":182,"context_line":"    # should run without any issue."},{"line_number":183,"context_line":"    elif force_tenant_isolation:"},{"line_number":184,"context_line":"        is_admin \u003d _check_configured_cred()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_159e6e68","line":181,"range":{"start_line":181,"start_character":23,"end_line":181,"end_character":28},"in_reply_to":"5f7c97a3_e99e6267","updated":"2018-10-26 01:49:01.000000000","message":"Done","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c1a8208ba8c083396a4726fe5e72c7d8eccd380f","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    # use_dynamic_credentials\u003dFalse (means with pre-provisioned account)"},{"line_number":181,"context_line":"    # if we have admin cread in config then force_tenant_isolation tests"},{"line_number":182,"context_line":"    # should run without any issue."},{"line_number":183,"context_line":"    elif force_tenant_isolation:"},{"line_number":184,"context_line":"        is_admin \u003d _check_configured_cred()"},{"line_number":185,"context_line":"    # Check whether test accounts file has the admin specified or not"},{"line_number":186,"context_line":"    elif CONF.auth.test_accounts_file:"},{"line_number":187,"context_line":"        check_accounts \u003d preprov_creds.PreProvisionedCredentialProvider("},{"line_number":188,"context_line":"            name\u003d\u0027check_admin\u0027,"},{"line_number":189,"context_line":"            **get_preprov_provider_params(identity_version))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_2b6209a8","line":186,"range":{"start_line":183,"start_character":0,"end_line":186,"end_character":38},"updated":"2018-07-20 08:12:13.000000000","message":"How about\nelif CONF.auth.test_accounts_file and not force_tenant_isolation:","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a63ecc7a6deac3b56f881c742f7462651a307248","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    # use_dynamic_credentials\u003dFalse (means with pre-provisioned account)"},{"line_number":181,"context_line":"    # if we have admin cread in config then force_tenant_isolation tests"},{"line_number":182,"context_line":"    # should run without any issue."},{"line_number":183,"context_line":"    elif force_tenant_isolation:"},{"line_number":184,"context_line":"        is_admin \u003d _check_configured_cred()"},{"line_number":185,"context_line":"    # Check whether test accounts file has the admin specified or not"},{"line_number":186,"context_line":"    elif CONF.auth.test_accounts_file:"},{"line_number":187,"context_line":"        check_accounts \u003d preprov_creds.PreProvisionedCredentialProvider("},{"line_number":188,"context_line":"            name\u003d\u0027check_admin\u0027,"},{"line_number":189,"context_line":"            **get_preprov_provider_params(identity_version))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b59a1a5d","line":186,"range":{"start_line":183,"start_character":0,"end_line":186,"end_character":38},"in_reply_to":"5f7c97a3_2b6209a8","updated":"2018-10-26 01:49:01.000000000","message":"but force_tenant_isolation True is handled in previous elif condition. i mean  elif CONF.auth.test_accounts_file: will be executed only if \u0027not force_tenant_isolation\u0027 case","commit_id":"2a2faea056603fdceb2cd5d8051a8a30aab209f6"}],"tempest/test.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c01fc511caf5df7145d6ebd73771ddc18f64ae2f","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        # setting force_tenant_isolation to True also needs admin credentials."},{"line_number":282,"context_line":"        force_tenant_isolation \u003d getattr(cls, \u0027force_tenant_isolation\u0027, False)"},{"line_number":283,"context_line":"        if (\u0027admin\u0027 in cls.credentials or force_tenant_isolation):"},{"line_number":284,"context_line":"            if (force_tenant_isolation and"},{"line_number":285,"context_line":"                not CONF.auth.use_dynamic_credentials):"},{"line_number":286,"context_line":"                raise cls.skipException("},{"line_number":287,"context_line":"                    \"force_tenant_isolation requires dynamic credentials.\")"},{"line_number":288,"context_line":"            if not credentials.is_admin_available("}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_77349efa","line":285,"range":{"start_line":284,"start_character":16,"end_line":285,"end_character":55},"updated":"2018-07-06 00:39:40.000000000","message":"this is not always true, even with use_dynamic_credentials\u003dFalse (means with pre-provisioned account) if we have admin cread in config then force_tenant_isolation tests should run without any issue (like we have configured the current account job - legacy-tempest-dsvm-full-test-accounts)\n\nalso we should move this logic to credentials.is_admin_available() so that single interface can be used across to take decision about whether propoer admin cred are available or not.\n\nin is_admin_available(), in case of force_tenant_isolation(which can be passed as arg to this fun)) we should check presence of admin cred in config file like  - https://github.com/openstack/tempest/blob/2d6bcaa7e55be9fd070bade12824709ac848f8fe/tempest/common/credentials_factory.py#L175-L179","commit_id":"139dfe02945c1e826e3fd5be5bfe3f26122aa1fe"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3f55ed069f068043a2bbd416b15d304b6023b920","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        cls.__skip_checks_called \u003d True"},{"line_number":280,"context_line":"        identity_version \u003d cls.get_identity_version()"},{"line_number":281,"context_line":"        # setting force_tenant_isolation to True also needs admin credentials."},{"line_number":282,"context_line":"        force_tenant_isolation \u003d getattr(cls, \u0027force_tenant_isolation\u0027, False)"},{"line_number":283,"context_line":"        if (\u0027admin\u0027 in cls.credentials or force_tenant_isolation):"},{"line_number":284,"context_line":"            if (force_tenant_isolation and"},{"line_number":285,"context_line":"                not CONF.auth.use_dynamic_credentials):"},{"line_number":286,"context_line":"                raise cls.skipException("},{"line_number":287,"context_line":"                    \"force_tenant_isolation requires dynamic credentials.\")"},{"line_number":288,"context_line":"            if not credentials.is_admin_available("},{"line_number":289,"context_line":"                    identity_version\u003didentity_version):"},{"line_number":290,"context_line":"                raise cls.skipException("}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_832ee6a8","line":287,"range":{"start_line":282,"start_character":0,"end_line":287,"end_character":75},"updated":"2018-07-05 15:16:38.000000000","message":"What tests does this fail for? It seems like, with this change, some tests will be skipped with this like http://git.openstack.org/cgit/openstack/tempest/tree/tempest/api/compute/admin/test_quotas.py#n64 which should work with pre-provisioned credentials, but maybe tests like that should be moved into a separate class.\n\nAlso unit tests here https://github.com/openstack/tempest/blob/f5b034da57b1fc531269e07ea7bc11247f624de4/tempest/tests/test_test.py#L429 would be nice.","commit_id":"139dfe02945c1e826e3fd5be5bfe3f26122aa1fe"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c01fc511caf5df7145d6ebd73771ddc18f64ae2f","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        cls.__skip_checks_called \u003d True"},{"line_number":280,"context_line":"        identity_version \u003d cls.get_identity_version()"},{"line_number":281,"context_line":"        # setting force_tenant_isolation to True also needs admin credentials."},{"line_number":282,"context_line":"        force_tenant_isolation \u003d getattr(cls, \u0027force_tenant_isolation\u0027, False)"},{"line_number":283,"context_line":"        if (\u0027admin\u0027 in cls.credentials or force_tenant_isolation):"},{"line_number":284,"context_line":"            if (force_tenant_isolation and"},{"line_number":285,"context_line":"                not CONF.auth.use_dynamic_credentials):"},{"line_number":286,"context_line":"                raise cls.skipException("},{"line_number":287,"context_line":"                    \"force_tenant_isolation requires dynamic credentials.\")"},{"line_number":288,"context_line":"            if not credentials.is_admin_available("},{"line_number":289,"context_line":"                    identity_version\u003didentity_version):"},{"line_number":290,"context_line":"                raise cls.skipException("}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f71aeec4","line":287,"range":{"start_line":282,"start_character":0,"end_line":287,"end_character":75},"in_reply_to":"5f7c97a3_832ee6a8","updated":"2018-07-06 00:39:40.000000000","message":"+1 for unit test.\n\ni do not think it will skip more tests, it will skip tests instead of failing them with complain of no admin cred in config.\n\nforce_tenant_isolation\u003dTrue always need the dynamic cred provider and so does need admin cred in config\n\n1. https://github.com/openstack/tempest/blob/f5b034da57b1fc531269e07ea7bc11247f624de4/tempest/common/credentials_factory.py#L137\n\n2. https://github.com/openstack/tempest/blob/f5b034da57b1fc531269e07ea7bc11247f624de4/tempest/common/credentials_factory.py#L72","commit_id":"139dfe02945c1e826e3fd5be5bfe3f26122aa1fe"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"46aeb91b08d6a5dd2f222a27c3eae431569a3b41","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        cls.__skip_checks_called \u003d True"},{"line_number":280,"context_line":"        identity_version \u003d cls.get_identity_version()"},{"line_number":281,"context_line":"        # setting force_tenant_isolation to True also needs admin credentials."},{"line_number":282,"context_line":"        force_tenant_isolation \u003d getattr(cls, \u0027force_tenant_isolation\u0027, False)"},{"line_number":283,"context_line":"        if (\u0027admin\u0027 in cls.credentials or force_tenant_isolation):"},{"line_number":284,"context_line":"            if (force_tenant_isolation and"},{"line_number":285,"context_line":"                not CONF.auth.use_dynamic_credentials):"},{"line_number":286,"context_line":"                raise cls.skipException("},{"line_number":287,"context_line":"                    \"force_tenant_isolation requires dynamic credentials.\")"},{"line_number":288,"context_line":"            if not credentials.is_admin_available("},{"line_number":289,"context_line":"                    identity_version\u003didentity_version):"},{"line_number":290,"context_line":"                raise cls.skipException("}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_48178655","line":287,"range":{"start_line":282,"start_character":0,"end_line":287,"end_character":75},"in_reply_to":"5f7c97a3_832ee6a8","updated":"2018-07-05 17:47:32.000000000","message":"I\u0027ll create a bug report to show the specifics of this issue, I think that\u0027ll be easier.\n\nAck for the unit test.","commit_id":"139dfe02945c1e826e3fd5be5bfe3f26122aa1fe"}]}
