)]}'
{"etc/tempest.conf.sample":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"68c2c786746e953ab913dcfe619dde887171a388","unresolved":false,"context_lines":[{"line_number":116,"context_line":"# Roles to assign to all users created by tempest (list value)"},{"line_number":117,"context_line":"#tempest_roles \u003d"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"# Only applicable when identity.auth_version is v3.Domain within which"},{"line_number":120,"context_line":"# isolated credentials are provisioned.The default \"None\" means that"},{"line_number":121,"context_line":"# the domain from theadmin user is used instead. (string value)"},{"line_number":122,"context_line":"#tenant_isolation_domain_name \u003d \u003cNone\u003e"}],"source_content_type":"application/octet-stream","patch_set":33,"id":"1a6ced46_53bcde69","line":119,"updated":"2015-03-23 21:23:11.000000000","message":"nit: v3. Domain (missed space)","commit_id":"c3280150af14dba5e247c514e5ef47c636a200f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"68c2c786746e953ab913dcfe619dde887171a388","unresolved":false,"context_lines":[{"line_number":117,"context_line":"#tempest_roles \u003d"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"# Only applicable when identity.auth_version is v3.Domain within which"},{"line_number":120,"context_line":"# isolated credentials are provisioned.The default \"None\" means that"},{"line_number":121,"context_line":"# the domain from theadmin user is used instead. (string value)"},{"line_number":122,"context_line":"#tenant_isolation_domain_name \u003d \u003cNone\u003e"},{"line_number":123,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":33,"id":"1a6ced46_d3a7ee4d","line":120,"updated":"2015-03-23 21:23:11.000000000","message":"here too","commit_id":"c3280150af14dba5e247c514e5ef47c636a200f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"68c2c786746e953ab913dcfe619dde887171a388","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"# Only applicable when identity.auth_version is v3.Domain within which"},{"line_number":120,"context_line":"# isolated credentials are provisioned.The default \"None\" means that"},{"line_number":121,"context_line":"# the domain from theadmin user is used instead. (string value)"},{"line_number":122,"context_line":"#tenant_isolation_domain_name \u003d \u003cNone\u003e"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":33,"id":"1a6ced46_937496d0","line":121,"updated":"2015-03-23 21:23:11.000000000","message":"the admin","commit_id":"c3280150af14dba5e247c514e5ef47c636a200f5"}],"tempest/common/accounts.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"11a307cb0a81ed20b5bd3593e025c3ad2a4430dc","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            return self.isolated_creds.get(\u0027primary\u0027)"},{"line_number":125,"context_line":"        creds \u003d self._get_creds()"},{"line_number":126,"context_line":"        primary_credential \u003d cred_provider.get_credentials("},{"line_number":127,"context_line":"            identity_version\u003dself.identity_version, **creds)"},{"line_number":128,"context_line":"        self.isolated_creds[\u0027primary\u0027] \u003d primary_credential"},{"line_number":129,"context_line":"        return primary_credential"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_a79af66b","line":127,"updated":"2015-03-02 15:44:38.000000000","message":"Just curious what happens if there is a mismatch between the entry in the accounts file and the config option? (ie we don\u0027t have a domain but v3 is specified or something) I\u0027m wondering if maybe we should have a per cred set override in the yaml","commit_id":"bb4c094592e4187bf85ec279fecc2185a4847bc6"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b637ae27ec5c317a90678f378b9646b5a7245575","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            return self.isolated_creds.get(\u0027primary\u0027)"},{"line_number":125,"context_line":"        creds \u003d self._get_creds()"},{"line_number":126,"context_line":"        primary_credential \u003d cred_provider.get_credentials("},{"line_number":127,"context_line":"            identity_version\u003dself.identity_version, **creds)"},{"line_number":128,"context_line":"        self.isolated_creds[\u0027primary\u0027] \u003d primary_credential"},{"line_number":129,"context_line":"        return primary_credential"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_327722d6","line":127,"in_reply_to":"ba7be1f8_a79af66b","updated":"2015-03-02 16:06:40.000000000","message":"Well get_credentials will add the domain of the identity admin user from config if no domain is specified.","commit_id":"bb4c094592e4187bf85ec279fecc2185a4847bc6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"06634db13cf447bb957c2bf7ae436f727bba0822","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        elif exist_creds and force_new:"},{"line_number":227,"context_line":"            new_index \u003d str(roles) + \u0027-\u0027 + str(len(self.isolated_creds))"},{"line_number":228,"context_line":"            self.isolated_creds[new_index] \u003d exist_creds"},{"line_number":229,"context_line":"        creds \u003d self._get_creds(roles\u003droles)"},{"line_number":230,"context_line":"        role_credential \u003d cred_provider.get_credentials(**creds)"},{"line_number":231,"context_line":"        self.isolated_creds[str(roles)] \u003d role_credential"},{"line_number":232,"context_line":"        return role_credential"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_023364ab","line":229,"updated":"2015-03-09 09:13:06.000000000","message":"I think \"identity_version\" needs to be passed here.","commit_id":"e39a666d6c59b1bf7c4e4c278efed9a40adefeba"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f594cf0e7ee45ffaadfce74fc58427d4cec04a40","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        elif exist_creds and force_new:"},{"line_number":227,"context_line":"            new_index \u003d str(roles) + \u0027-\u0027 + str(len(self.isolated_creds))"},{"line_number":228,"context_line":"            self.isolated_creds[new_index] \u003d exist_creds"},{"line_number":229,"context_line":"        creds \u003d self._get_creds(roles\u003droles)"},{"line_number":230,"context_line":"        role_credential \u003d cred_provider.get_credentials(**creds)"},{"line_number":231,"context_line":"        self.isolated_creds[str(roles)] \u003d role_credential"},{"line_number":232,"context_line":"        return role_credential"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_b60e288a","line":229,"in_reply_to":"9a80dd14_023364ab","updated":"2015-03-10 10:02:43.000000000","message":"I guess you mean L230, good catch, thanks","commit_id":"e39a666d6c59b1bf7c4e4c278efed9a40adefeba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"efc9f32654edec2d9a5e9c77602cc6d87078dbc9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        elif exist_creds and force_new:"},{"line_number":227,"context_line":"            new_index \u003d str(roles) + \u0027-\u0027 + str(len(self.isolated_creds))"},{"line_number":228,"context_line":"            self.isolated_creds[new_index] \u003d exist_creds"},{"line_number":229,"context_line":"        creds \u003d self._get_creds(roles\u003droles)"},{"line_number":230,"context_line":"        role_credential \u003d cred_provider.get_credentials(**creds)"},{"line_number":231,"context_line":"        self.isolated_creds[str(roles)] \u003d role_credential"},{"line_number":232,"context_line":"        return role_credential"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_a15a64ef","line":229,"in_reply_to":"9a80dd14_b60e288a","updated":"2015-03-10 10:12:18.000000000","message":"ah ya, just misplaced the comment :)","commit_id":"e39a666d6c59b1bf7c4e4c278efed9a40adefeba"}],"tempest/common/cred_provider.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"11a307cb0a81ed20b5bd3593e025c3ad2a4430dc","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                        provisioned on the fly"},{"line_number":100,"context_line":"        :param network_resources Network resources required for the credentials"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        # TODO(andreaf) name and password are tenant isolation specific, and"},{"line_number":103,"context_line":"        # could be removed from this abstract class"},{"line_number":104,"context_line":"        self.name \u003d name or \"test_creds\""},{"line_number":105,"context_line":"        self.identity_version \u003d identity_version or CONF.identity.auth_version"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_a4711446","line":102,"updated":"2015-03-02 15:44:38.000000000","message":"Heh, I guess I\u0027ll have to rebase: https://review.openstack.org/#/c/159917/ to fix this comment :)","commit_id":"bb4c094592e4187bf85ec279fecc2185a4847bc6"}],"tempest/common/credentials.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"11a307cb0a81ed20b5bd3593e025c3ad2a4430dc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    else:"},{"line_number":37,"context_line":"        if CONF.auth.locking_credentials_provider:"},{"line_number":38,"context_line":"            # Most params are not relevant for pre-created accounts"},{"line_number":39,"context_line":"            return accounts.Accounts(name\u003dname)"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            return accounts.NotLockingAccounts(name\u003dname)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_04366052","side":"PARENT","line":39,"updated":"2015-03-02 15:44:38.000000000","message":"This will break the logging patch because name won\u0027t be passed through we\u0027ll just end up logging a bunch of \"test_creds\"","commit_id":"8d47b118a656ed80f587e289a71f31a7ddd5b63e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b637ae27ec5c317a90678f378b9646b5a7245575","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    else:"},{"line_number":37,"context_line":"        if CONF.auth.locking_credentials_provider:"},{"line_number":38,"context_line":"            # Most params are not relevant for pre-created accounts"},{"line_number":39,"context_line":"            return accounts.Accounts(name\u003dname)"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            return accounts.NotLockingAccounts(name\u003dname)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_12869e13","side":"PARENT","line":39,"in_reply_to":"ba7be1f8_04366052","updated":"2015-03-02 16:06:40.000000000","message":"upz indeed, nice catch","commit_id":"8d47b118a656ed80f587e289a71f31a7ddd5b63e"}],"tempest/common/isolated_creds.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"11a307cb0a81ed20b5bd3593e025c3ad2a4430dc","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            project_domain_name\u003dself.credentials.project_domain_name)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def delete_project(self, project_id):"},{"line_number":109,"context_line":"        self.identity_client.delete_project(project_id)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"def get_creds_client(identity_client):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_07a66210","line":109,"updated":"2015-03-02 15:44:38.000000000","message":"Heh, it\u0027ll always be tenant to me :)","commit_id":"bb4c094592e4187bf85ec279fecc2185a4847bc6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b9086b86355261fd7afa76fb07532997dc896aa8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from tempest import exceptions"},{"line_number":25,"context_line":"from tempest.openstack.common import log as logging"},{"line_number":26,"context_line":"from tempest.services.identity.json import identity_client as v2_identity"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d config.CONF"},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_0821489f","line":27,"updated":"2015-03-05 09:00:33.000000000","message":"Need to rebase due to https://review.openstack.org/#/c/158518/","commit_id":"5fc8c71fc5c1fbe73de620fd8b4f6818360e650c"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"bf0e8b5c6aedf52c830c6243dfc0e992911b057c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            self.creds_client.assign_user_role(user, project, role)"},{"line_number":187,"context_line":"        if roles:"},{"line_number":188,"context_line":"            for role in roles:"},{"line_number":189,"context_line":"                self.creds_client.assign_user_role(project, user, role)       "},{"line_number":190,"context_line":"        return self.creds_client.get_credentials(user, project, self.password)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _create_network_resources(self, tenant_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_0002bc6e","line":189,"updated":"2015-03-06 10:55:11.000000000","message":"red space","commit_id":"3dcb9891199cdafd7b7df8cd701eef120f748fca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"06634db13cf447bb957c2bf7ae436f727bba0822","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            domain_id\u003dself.credentials.project_domain_id)"},{"line_number":98,"context_line":"        return project"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_credentials(self, user, tenant, password):"},{"line_number":101,"context_line":"        return cred_provider.get_credentials("},{"line_number":102,"context_line":"            identity_version\u003d\u0027v3\u0027,"},{"line_number":103,"context_line":"            username\u003duser[\u0027name\u0027], user_id\u003duser[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_62fc20b9","line":100,"updated":"2015-03-09 09:13:06.000000000","message":"we can have arg name as \"project\" instead of \"tenant\" for consistency between v2 and v3 clients","commit_id":"e39a666d6c59b1bf7c4e4c278efed9a40adefeba"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f594cf0e7ee45ffaadfce74fc58427d4cec04a40","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            domain_id\u003dself.credentials.project_domain_id)"},{"line_number":98,"context_line":"        return project"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_credentials(self, user, tenant, password):"},{"line_number":101,"context_line":"        return cred_provider.get_credentials("},{"line_number":102,"context_line":"            identity_version\u003d\u0027v3\u0027,"},{"line_number":103,"context_line":"            username\u003duser[\u0027name\u0027], user_id\u003duser[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_f66a6018","line":100,"in_reply_to":"9a80dd14_62fc20b9","updated":"2015-03-10 10:02:43.000000000","message":"yes, indeed, I will fix this","commit_id":"e39a666d6c59b1bf7c4e4c278efed9a40adefeba"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6c8eee8f111dc5a964f40d9ef67ea19bb8fdd1b3","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tempest import clients"},{"line_number":22,"context_line":"from tempest.common import cred_provider"},{"line_number":23,"context_line":"from tempest.common.utils import data_utils"},{"line_number":24,"context_line":"from tempest import config"},{"line_number":25,"context_line":"from tempest import exceptions"},{"line_number":26,"context_line":"from tempest.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_8edc8948","line":23,"updated":"2015-03-10 21:41:57.000000000","message":"rebase issue","commit_id":"782d4ed8b599d25399ae81f7260b819c30492b79"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ceac47b1d70fd37209a489a01a6290d29af77b1d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        user \u003d self.identity_client.create_user("},{"line_number":47,"context_line":"            username, password, project[\u0027id\u0027], email)"},{"line_number":48,"context_line":"        return user"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def create_project(self, name, description):"},{"line_number":51,"context_line":"        pass"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_cdd84bf3","line":49,"updated":"2015-03-17 01:01:40.000000000","message":"@abc.abstractmethod","commit_id":"12188b148c735b4cf7ef91e4bd6e0a79e2c6892e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ceac47b1d70fd37209a489a01a6290d29af77b1d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            raise lib_exc.NotFound(msg)"},{"line_number":60,"context_line":"        self.identity_client.assign_user_role(project[\u0027id\u0027], user[\u0027id\u0027],"},{"line_number":61,"context_line":"                                              role[\u0027id\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def get_credentials(self, user, project, password):"},{"line_number":64,"context_line":"        pass"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_0de343a5","line":62,"updated":"2015-03-17 01:01:40.000000000","message":"@abc.abstractmethod","commit_id":"12188b148c735b4cf7ef91e4bd6e0a79e2c6892e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ceac47b1d70fd37209a489a01a6290d29af77b1d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def create_project(self, name, description):"},{"line_number":95,"context_line":"        project \u003d self.identity_client.create_project("},{"line_number":96,"context_line":"            name\u003dname, description\u003ddescription,"},{"line_number":97,"context_line":"            domain_id\u003dself.credentials.project_domain_id)"},{"line_number":98,"context_line":"        return project"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_credentials(self, user, project, password):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_cdff6b34","line":97,"updated":"2015-03-17 01:01:40.000000000","message":"do we want to rely on credentials for this? should there be a config option for like an operating domain where all things being created happen?","commit_id":"12188b148c735b4cf7ef91e4bd6e0a79e2c6892e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"0fd671496f215155e30cbf7a687fe8c06cd9466b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def create_project(self, name, description):"},{"line_number":95,"context_line":"        project \u003d self.identity_client.create_project("},{"line_number":96,"context_line":"            name\u003dname, description\u003ddescription,"},{"line_number":97,"context_line":"            domain_id\u003dself.credentials.project_domain_id)"},{"line_number":98,"context_line":"        return project"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_credentials(self, user, project, password):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_c9ad6d9d","line":97,"in_reply_to":"9a80dd14_cdff6b34","updated":"2015-03-17 20:30:39.000000000","message":"Good idea, we should use a fixed domain.\nI was thinking we could use the domain the admin user belongs to, however I could also add an extra configuration for a tenant isolation domain.","commit_id":"12188b148c735b4cf7ef91e4bd6e0a79e2c6892e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ceac47b1d70fd37209a489a01a6290d29af77b1d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            username\u003duser[\u0027name\u0027], user_id\u003duser[\u0027id\u0027],"},{"line_number":104,"context_line":"            project_name\u003dproject[\u0027name\u0027], project_id\u003dproject[\u0027id\u0027],"},{"line_number":105,"context_line":"            password\u003dpassword,"},{"line_number":106,"context_line":"            project_domain_name\u003dself.credentials.project_domain_name)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def delete_project(self, project_id):"},{"line_number":109,"context_line":"        self.identity_client.delete_project(project_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_8d9d730d","line":106,"updated":"2015-03-17 01:01:40.000000000","message":"same - also strange that you use project_domain_id above and project_domain_name here. Either could be passed.","commit_id":"12188b148c735b4cf7ef91e4bd6e0a79e2c6892e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"0fd671496f215155e30cbf7a687fe8c06cd9466b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            username\u003duser[\u0027name\u0027], user_id\u003duser[\u0027id\u0027],"},{"line_number":104,"context_line":"            project_name\u003dproject[\u0027name\u0027], project_id\u003dproject[\u0027id\u0027],"},{"line_number":105,"context_line":"            password\u003dpassword,"},{"line_number":106,"context_line":"            project_domain_name\u003dself.credentials.project_domain_name)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def delete_project(self, project_id):"},{"line_number":109,"context_line":"        self.identity_client.delete_project(project_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_098f852f","line":106,"in_reply_to":"9a80dd14_8d9d730d","updated":"2015-03-17 20:30:39.000000000","message":"I guess the name everywhere would be the easiest, as it\u0027s what we get from configuration.","commit_id":"12188b148c735b4cf7ef91e4bd6e0a79e2c6892e"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"b0f5fbeb8fdc952236afacfd58f93c542b990f77","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"This class is a wrapper around the identity clients, to provide a"},{"line_number":35,"context_line":"     single interface for managing credentials in both v2 and v3 cases."},{"line_number":36,"context_line":"     It\u0027s not bound to created credentials, only to a specific set of admin"},{"line_number":37,"context_line":"     credentials used for generating credentials."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, identity_client):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a80dd14_2ba03cf3","line":37,"updated":"2015-03-20 07:07:38.000000000","message":"Let\u0027s use the common rules for doc strings (need remove extra white spaces before each line):\n\nhttp://docs.openstack.org/developer/hacking/#docstrings","commit_id":"ab5df24ed47f1ca436f56014de393f40116e25a2"}],"tempest/services/identity/v3/json/identity_client.py":[{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"9ba0f6e3d96ae682a04a36d4f7b4d61f1426a873","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        url \u003d \u0027domains\u0027"},{"line_number":248,"context_line":"        if params:"},{"line_number":249,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":250,"context_line":"        resp, body \u003d self.get(\u0027domains\u0027)"},{"line_number":251,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":252,"context_line":"        body \u003d json.loads(body)"},{"line_number":253,"context_line":"        return service_client.ResponseBodyList(resp, body[\u0027domains\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a80dd14_74312cec","line":250,"updated":"2015-03-20 11:06:54.000000000","message":"Let\u0027s use \u0027url\u0027 here instead of \u0027domains\u0027 ;)\n\nAlso, please add unit tests which will check this new behaviour.","commit_id":"b97ee0c963e0c199b07fb96ae5e44d7f0778811a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f730840a66f9f726db56ae72aff8afce57c673ec","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        url \u003d \u0027domains\u0027"},{"line_number":248,"context_line":"        if params:"},{"line_number":249,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":250,"context_line":"        resp, body \u003d self.get(\u0027domains\u0027)"},{"line_number":251,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":252,"context_line":"        body \u003d json.loads(body)"},{"line_number":253,"context_line":"        return service_client.ResponseBodyList(resp, body[\u0027domains\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a80dd14_a4235f56","line":250,"in_reply_to":"9a80dd14_102626ce","updated":"2015-03-20 20:35:13.000000000","message":"In this case I\u0027m not sure what unit tests would buy us. The method here is fairly straightforward and just wrapping a rest api call. \n\nI get that there was a slight mistake here, and can understand the desire to automate testing that to ensure against it the future. But, I don\u0027t think that weighed against the overhead of adding the tests would have much benefit. Especially because the unit test would have to mock out most of the bits here we really wouldn\u0027t be testing much.","commit_id":"b97ee0c963e0c199b07fb96ae5e44d7f0778811a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d808254f50439120a7f03de7fbfa9469fb22712a","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        url \u003d \u0027domains\u0027"},{"line_number":248,"context_line":"        if params:"},{"line_number":249,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":250,"context_line":"        resp, body \u003d self.get(\u0027domains\u0027)"},{"line_number":251,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":252,"context_line":"        body \u003d json.loads(body)"},{"line_number":253,"context_line":"        return service_client.ResponseBodyList(resp, body[\u0027domains\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a80dd14_102626ce","line":250,"in_reply_to":"9a80dd14_74312cec","updated":"2015-03-20 20:22:18.000000000","message":"Good catch, thanks. Regarding unit tests, we do not tests the service clients now (not the various methods at least) .\nWe might do that, but I would like to hear the opinion of other folks on that.","commit_id":"b97ee0c963e0c199b07fb96ae5e44d7f0778811a"}],"tempest/tests/test_tenant_isolation.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"11a307cb0a81ed20b5bd3593e025c3ad2a4430dc","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                             group\u003d\u0027object-storage\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_tempest_client(self):"},{"line_number":45,"context_line":"        iso_creds \u003d isolated_creds.IsolatedCreds(name\u003d\u0027test class\u0027)"},{"line_number":46,"context_line":"        self.assertTrue(isinstance(iso_creds.identity_admin_client,"},{"line_number":47,"context_line":"                                   json_iden_client.IdentityClientJSON))"},{"line_number":48,"context_line":"        self.assertTrue(isinstance(iso_creds.network_admin_client,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_671b9e1c","line":45,"updated":"2015-03-02 15:44:38.000000000","message":"I was going to suggest we make name the first kwarg in the abstract class so we don\u0027t have to do this everywhere to avoid unnecessary churn in callers, but I forgot we only have 1 direct caller. But, I\u0027ll leave it up to you whether you think an interface change is really needed here.","commit_id":"bb4c094592e4187bf85ec279fecc2185a4847bc6"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b637ae27ec5c317a90678f378b9646b5a7245575","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                             group\u003d\u0027object-storage\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_tempest_client(self):"},{"line_number":45,"context_line":"        iso_creds \u003d isolated_creds.IsolatedCreds(name\u003d\u0027test class\u0027)"},{"line_number":46,"context_line":"        self.assertTrue(isinstance(iso_creds.identity_admin_client,"},{"line_number":47,"context_line":"                                   json_iden_client.IdentityClientJSON))"},{"line_number":48,"context_line":"        self.assertTrue(isinstance(iso_creds.network_admin_client,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_92e0ce97","line":45,"in_reply_to":"ba7be1f8_671b9e1c","updated":"2015-03-02 16:06:40.000000000","message":"I initially put identity version first because I planned to drop \"name\" completely. \nI won\u0027t do it know because it\u0027s used by both tenant isolation and accounts, but I\u0027d like to do so eventually - we can use for instance the util to discover the test calling us from the calls stack.","commit_id":"bb4c094592e4187bf85ec279fecc2185a4847bc6"}]}
