)]}'
{"shade/__init__.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"962ad572dcfac6888d885946a646528cc0fd4919","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            cert \u003d (cert, key)"},{"line_number":142,"context_line":"        self.cert \u003d cert"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self._cache \u003d cache.make_region().configure("},{"line_number":145,"context_line":"            \u0027dogpile.cache.memory\u0027, expiration_time\u003dcache_interval)"},{"line_number":146,"context_line":"        self._container_cache \u003d dict()"},{"line_number":147,"context_line":"        self._file_hash_cache \u003d dict()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_6baf272c","line":144,"updated":"2015-02-27 19:01:20.000000000","message":"(unrelated to this review) FYI, memory doesn\u0027t actually clear anything out of the memory dict when it expires, so there is potential for long-running tasks to cause memory bloat.","commit_id":"cc8851475a84bde86520d302d4514fecc9aa3441"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fcc37daff02386c2b36a5905bad01140fe6fe057","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                self._keystone_client \u003d keystone_client.Client("},{"line_number":243,"context_line":"                    session\u003dself.keystone_session,"},{"line_number":244,"context_line":"                    endpoint\u003dendpoint,"},{"line_number":245,"context_line":"                    cert\u003dself.cert)"},{"line_number":246,"context_line":"            except Exception as e:"},{"line_number":247,"context_line":"                self.log.debug("},{"line_number":248,"context_line":"                    \"Couldn\u0027t construct keystone object\", exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_42531d6c","line":245,"updated":"2015-02-27 22:33:07.000000000","message":"cert is a part of session, think transport layer.\n\nI\u0027m not sure what endpoint\u003d is supposd to be here, but i think it wants endpoint_override? but why not just pass service_type\u003d\u0027identity\u0027 (the default for ksc) and let the client manage this for you?\n\nIf i could figure out how to fix all this in ksc without breaking existing i would have.","commit_id":"cc8851475a84bde86520d302d4514fecc9aa3441"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e43d6d4563bda1a0c68718a0a76769ff6b02597c","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                self._keystone_client \u003d keystone_client.Client("},{"line_number":243,"context_line":"                    session\u003dself.keystone_session,"},{"line_number":244,"context_line":"                    endpoint\u003dendpoint,"},{"line_number":245,"context_line":"                    cert\u003dself.cert)"},{"line_number":246,"context_line":"            except Exception as e:"},{"line_number":247,"context_line":"                self.log.debug("},{"line_number":248,"context_line":"                    \"Couldn\u0027t construct keystone object\", exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_b13410e0","line":245,"in_reply_to":"ba7be1f8_42531d6c","updated":"2015-03-01 15:58:21.000000000","message":"So I should only pass cert, verify and insecure to the keystone_session constructor and let it carry through from there? That\u0027s awesome. thanks!\n\nFor the other thing - I do not know how to get a Client given only a session. Without passing in an endpoint or something, it did not know what to give to the client. I\u0027m trying to work only with sessions, because due to auth plugins I may not personally have any information about any of the values other than what I can request from the session.\n\nSo - I\u0027d honestly love to know what the model for \"I want a Client and currently have a Session\" is - and I will do that here. :)","commit_id":"cc8851475a84bde86520d302d4514fecc9aa3441"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"962ad572dcfac6888d885946a646528cc0fd4919","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        \"\"\"Retrieve a project by name or id.\"\"\""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        for id, project in self.project_cache.items():"},{"line_number":284,"context_line":"            if name_or_id in (id, project.name):"},{"line_number":285,"context_line":"                return project"},{"line_number":286,"context_line":"        return None"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_ebc6b715","line":284,"updated":"2015-02-27 19:01:20.000000000","message":"If you\u0027re using V3, it is possible you\u0027ll only ever catch the first project named X.\n\nYou might need additional filters in the project_cache() or a way to isolate to a domain in _get_project.\n\nSee: https://github.com/openstack/python-keystoneclient/blob/3e2035bf8823f87cb736a526d4f084487066d33e/keystoneclient/v3/projects.py#L93-L94","commit_id":"cc8851475a84bde86520d302d4514fecc9aa3441"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"962ad572dcfac6888d885946a646528cc0fd4919","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                return project"},{"line_number":286,"context_line":"        return None"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def get_project(self, name_or_id):"},{"line_number":289,"context_line":"        \"\"\"Retrieve a project by name or id.\"\"\""},{"line_number":290,"context_line":"        project \u003d self._get_project(name_or_id)"},{"line_number":291,"context_line":"        if project:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_eb5f9773","line":288,"updated":"2015-02-27 19:01:20.000000000","message":"As an FYI, project names are not globally unique. They are unique within the scope of a domain. So you need the domain information (domain name or id) to uniquely identify a project.","commit_id":"cc8851475a84bde86520d302d4514fecc9aa3441"}]}
