)]}'
{"oslo_context/context.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"f0a4d1586d2d313c5b1e9abf68993d0add17b0f2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# Attributes that require a default, e.g. is_admin are not listed."},{"line_number":40,"context_line":"CONTEXT_ATTRS \u003d {"},{"line_number":41,"context_line":"    \u0027auth_token\u0027: \u0027HTTP_X_AUTH_TOKEN\u0027,"},{"line_number":42,"context_line":"    \u0027domain\u0027: \u0027\u0027,"},{"line_number":43,"context_line":"    \u0027domain_name\u0027: \u0027\u0027,"},{"line_number":44,"context_line":"    \u0027user\u0027: \u0027HTTP_X_USER_ID\u0027,"},{"line_number":45,"context_line":"    \u0027user_domain\u0027: \u0027HTTP_X_USER_DOMAIN_ID\u0027,"},{"line_number":46,"context_line":"    \u0027user_domain_name\u0027: \u0027HTTP_X_USER_DOMAIN_NAME\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_3e66f650","line":43,"range":{"start_line":42,"start_character":4,"end_line":43,"end_character":22},"updated":"2016-04-07 15:38:37.000000000","message":"there are env variables for these, so they could be set.","commit_id":"d1c02bccc8933cb37ff3204edf8a16da861659bc"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"f0a4d1586d2d313c5b1e9abf68993d0add17b0f2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \u0027project_domain\u0027: \u0027HTTP_X_PROJECT_DOMAIN_ID\u0027,"},{"line_number":49,"context_line":"    \u0027project_domain_name\u0027: \u0027HTTP_X_PROJECT_DOMAIN_NAME\u0027,"},{"line_number":50,"context_line":"    \u0027project_name\u0027: \u0027HTTP_X_PROJECT_NAME\u0027,"},{"line_number":51,"context_line":"    \u0027resource_uuid\u0027: \u0027\u0027,"},{"line_number":52,"context_line":"    \u0027request_id\u0027: \u0027\u0027,"},{"line_number":53,"context_line":"    \u0027tenant\u0027: \u0027HTTP_X_PROJECT_ID\u0027,"},{"line_number":54,"context_line":"}"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_3e9b9619","line":52,"range":{"start_line":51,"start_character":4,"end_line":52,"end_character":21},"updated":"2016-04-07 15:38:37.000000000","message":"my inclination would be to keep these as explicit parameters to __init__ and only list things here which we can extract from keystone.","commit_id":"d1c02bccc8933cb37ff3204edf8a16da861659bc"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"c938e5dba5ecfa924f4ac73468efde5f8433e053","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.read_only \u003d read_only"},{"line_number":104,"context_line":"        self.show_deleted \u003d show_deleted"},{"line_number":105,"context_line":"        self.resource_uuid \u003d resource_uuid"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # initialize requiring custom handling"},{"line_number":108,"context_line":"        if not request_id:"},{"line_number":109,"context_line":"            request_id \u003d generate_request_id()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_e8d83655","line":106,"updated":"2016-04-07 19:41:58.000000000","message":"we\u0027re going to need a:\n\n  self.roles \u003d self.roles or []\n\nBecause we need a type conversion if roles is sent as None, which used to turn it into an array.","commit_id":"9ab2c2264e41c21a69e4350befb207151d032749"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0345d99a6ac297b3af680cc2a1de30f664424160","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# The list of attributes in the context that can be set via a"},{"line_number":37,"context_line":"# keystone middleware env that contains the attribute value"},{"line_number":38,"context_line":"CONTEXT_ATTRS \u003d {"},{"line_number":39,"context_line":"    \u0027auth_token\u0027: \u0027HTTP_X_AUTH_TOKEN\u0027,"},{"line_number":40,"context_line":"    \u0027user\u0027: \u0027HTTP_X_USER_ID\u0027,"},{"line_number":41,"context_line":"    \u0027user_name\u0027: \u0027HTTP_X_USER_NAME\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_918be2c2","line":38,"updated":"2016-04-14 18:41:37.000000000","message":"This data structure should be marked private by prefixing the name with _.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d80618368304e6f9207c3a71f0f9a2187789c9f2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"# keystone middleware env that contains the attribute value"},{"line_number":38,"context_line":"CONTEXT_ATTRS \u003d {"},{"line_number":39,"context_line":"    \u0027auth_token\u0027: \u0027HTTP_X_AUTH_TOKEN\u0027,"},{"line_number":40,"context_line":"    \u0027user\u0027: \u0027HTTP_X_USER_ID\u0027,"},{"line_number":41,"context_line":"    \u0027user_name\u0027: \u0027HTTP_X_USER_NAME\u0027,"},{"line_number":42,"context_line":"    \u0027tenant\u0027: \u0027HTTP_X_PROJECT_ID\u0027,  # legacy attribute for project"},{"line_number":43,"context_line":"    \u0027project_name\u0027: \u0027HTTP_X_PROJECT_NAME\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_8ac87b76","line":40,"range":{"start_line":40,"start_character":13,"end_line":40,"end_character":27},"updated":"2016-04-11 00:30:44.000000000","message":"I\u0027d be careful about this assumption. I think it\u0027s correct but at least heat assumes these to be names not ids.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e3d1656efb0b6c146e7ffe83d50edf1066c98e0b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"# keystone middleware env that contains the attribute value"},{"line_number":38,"context_line":"CONTEXT_ATTRS \u003d {"},{"line_number":39,"context_line":"    \u0027auth_token\u0027: \u0027HTTP_X_AUTH_TOKEN\u0027,"},{"line_number":40,"context_line":"    \u0027user\u0027: \u0027HTTP_X_USER_ID\u0027,"},{"line_number":41,"context_line":"    \u0027user_name\u0027: \u0027HTTP_X_USER_NAME\u0027,"},{"line_number":42,"context_line":"    \u0027tenant\u0027: \u0027HTTP_X_PROJECT_ID\u0027,  # legacy attribute for project"},{"line_number":43,"context_line":"    \u0027project_name\u0027: \u0027HTTP_X_PROJECT_NAME\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_cb5f040d","line":40,"range":{"start_line":40,"start_character":13,"end_line":40,"end_character":27},"in_reply_to":"7a1b2928_8ac87b76","updated":"2016-04-11 11:39:20.000000000","message":"It assumes \u0027user\u0027 is a name? or that HTTP_X_USER_ID is a name?","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ef6fceed9efce332ce628f57cd509d0b9dfdfd58","unresolved":false,"context_lines":[{"line_number":37,"context_line":"# keystone middleware env that contains the attribute value"},{"line_number":38,"context_line":"CONTEXT_ATTRS \u003d {"},{"line_number":39,"context_line":"    \u0027auth_token\u0027: \u0027HTTP_X_AUTH_TOKEN\u0027,"},{"line_number":40,"context_line":"    \u0027user\u0027: \u0027HTTP_X_USER_ID\u0027,"},{"line_number":41,"context_line":"    \u0027user_name\u0027: \u0027HTTP_X_USER_NAME\u0027,"},{"line_number":42,"context_line":"    \u0027tenant\u0027: \u0027HTTP_X_PROJECT_ID\u0027,  # legacy attribute for project"},{"line_number":43,"context_line":"    \u0027project_name\u0027: \u0027HTTP_X_PROJECT_NAME\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_eac214e8","line":40,"range":{"start_line":40,"start_character":13,"end_line":40,"end_character":27},"in_reply_to":"7a1b2928_cb5f040d","updated":"2016-05-16 00:12:45.000000000","message":"context.user is/was a name in heat - i\u0027ve got a patch up to fix that [1] and other heat context weirdness.\n\n\n[1] https://review.openstack.org/#/c/268420/","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0345d99a6ac297b3af680cc2a1de30f664424160","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                 request_id\u003dNone,"},{"line_number":83,"context_line":"                 resource_uuid\u003dNone,"},{"line_number":84,"context_line":"                 overwrite\u003dTrue,"},{"line_number":85,"context_line":"                 environ\u003dNone,"},{"line_number":86,"context_line":"                 **kwargs):"},{"line_number":87,"context_line":"        \"\"\"Initialize the RequestContext"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_31700edc","line":85,"updated":"2016-04-14 18:41:37.000000000","message":"Rather than adding environ here, please make from_environ a class method for constructing instances that processes environ and have it call __init__ with the results.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"03399c264909b02778254628a11b622a76d4bf0c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                 request_id\u003dNone,"},{"line_number":83,"context_line":"                 resource_uuid\u003dNone,"},{"line_number":84,"context_line":"                 overwrite\u003dTrue,"},{"line_number":85,"context_line":"                 environ\u003dNone,"},{"line_number":86,"context_line":"                 **kwargs):"},{"line_number":87,"context_line":"        \"\"\"Initialize the RequestContext"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_e2c82177","line":85,"in_reply_to":"5a18252c_31700edc","updated":"2016-04-15 18:47:30.000000000","message":"That\u0027s the way it existed previously, and doesn\u0027t solve the problem of getting common elements in here because most server projects need to extend this. It seemed better to do it automatically during init if provided.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0345d99a6ac297b3af680cc2a1de30f664424160","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                 resource_uuid\u003dNone,"},{"line_number":84,"context_line":"                 overwrite\u003dTrue,"},{"line_number":85,"context_line":"                 environ\u003dNone,"},{"line_number":86,"context_line":"                 **kwargs):"},{"line_number":87,"context_line":"        \"\"\"Initialize the RequestContext"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        :param is_admin: Define if context is for admin purposes"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_d1a8ba22","line":86,"updated":"2016-04-14 18:41:37.000000000","message":"Please do not remove the explicitly named arguments from the API here. We are trying to be more explicit to improve the documentation of the APIs across all Oslo libraries.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"03399c264909b02778254628a11b622a76d4bf0c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                 resource_uuid\u003dNone,"},{"line_number":84,"context_line":"                 overwrite\u003dTrue,"},{"line_number":85,"context_line":"                 environ\u003dNone,"},{"line_number":86,"context_line":"                 **kwargs):"},{"line_number":87,"context_line":"        \"\"\"Initialize the RequestContext"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        :param is_admin: Define if context is for admin purposes"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_c29c056c","line":86,"in_reply_to":"5a18252c_d1a8ba22","updated":"2016-04-15 18:47:30.000000000","message":"That requires duplicating most of this list also in CONTEXT_ATTRS right? I guess it\u0027s fine to duplicate that, it seemed simpler to not.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"635d1679cfa431d16e3cc0f0e2b6b07c154e8d89","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # initialize all the things we know about"},{"line_number":112,"context_line":"        for attr in possible_kwargs:"},{"line_number":113,"context_line":"            if attr in kwargs:"},{"line_number":114,"context_line":"                setattr(self, attr, kwargs[attr])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # ensure roles is a list if not defined"},{"line_number":117,"context_line":"        self.roles \u003d self.roles or []"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a061dce_ca7c26ee","line":114,"updated":"2016-04-08 11:28:23.000000000","message":"as a follow up we should probably consider if there is a good way to raise an issue with kwargs if the called has an incorrect one in there.\n\nHowever the right level of warning / exception is complicated, and I\u0027d rather have the happy path out there before figuring out what level of enforcement we should put into place.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0345d99a6ac297b3af680cc2a1de30f664424160","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # initialize all the things we know about"},{"line_number":112,"context_line":"        for attr in possible_kwargs:"},{"line_number":113,"context_line":"            if attr in kwargs:"},{"line_number":114,"context_line":"                setattr(self, attr, kwargs[attr])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # ensure roles is a list if not defined"},{"line_number":117,"context_line":"        self.roles \u003d self.roles or []"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_d12d5aa9","line":114,"in_reply_to":"7a1b2928_8ac4fb40","updated":"2016-04-14 18:41:37.000000000","message":"See my earlier comment. Don\u0027t replace explicit arguments with **kwargs at all.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ec08b1e954f0d8152c1dbdc74e3a8f6d30e468a8","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # initialize all the things we know about"},{"line_number":112,"context_line":"        for attr in possible_kwargs:"},{"line_number":113,"context_line":"            if attr in kwargs:"},{"line_number":114,"context_line":"                setattr(self, attr, kwargs[attr])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # ensure roles is a list if not defined"},{"line_number":117,"context_line":"        self.roles \u003d self.roles or []"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_8ac4fb40","line":114,"in_reply_to":"9a061dce_ca7c26ee","updated":"2016-04-11 00:35:11.000000000","message":"++ \n\nWe\u0027ve been burnt before with clients about ignoring unknown kwargs and errors because people thought they set a value but it was silently ignored. We shouldn\u0027t do that here. \n\nThe easy way to handle this is: \n\nfor attr in possible_kwargs: \n   setattr(self, attr, kwargs.pop(attr, None))\n\nif kwargs: \n   raise AttributeError(\"Unknown arguments: %s\" % \", \".join(kwargs))","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d80618368304e6f9207c3a71f0f9a2187789c9f2","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \"\"\""},{"line_number":204,"context_line":"        return cls(**values)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def from_environ(self, environ):"},{"line_number":207,"context_line":"        \"\"\"Load a context object from a request environment."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        If arguments are provided they set the values in the request"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_eaaf6f92","line":206,"range":{"start_line":206,"start_character":27,"end_line":206,"end_character":34},"updated":"2016-04-11 00:30:44.000000000","message":"I know it\u0027s mostly unused but this is a compatibility break.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e3d1656efb0b6c146e7ffe83d50edf1066c98e0b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \"\"\""},{"line_number":204,"context_line":"        return cls(**values)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def from_environ(self, environ):"},{"line_number":207,"context_line":"        \"\"\"Load a context object from a request environment."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        If arguments are provided they set the values in the request"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_8bacecee","line":206,"range":{"start_line":206,"start_character":27,"end_line":206,"end_character":34},"in_reply_to":"7a1b2928_eaaf6f92","updated":"2016-04-11 11:39:20.000000000","message":"I couldn\u0027t find an instance of it being used in all of codesearch.openstack.org.","commit_id":"8cfe374ddba23ff250b46dce5140f6f380d7ed32"}]}
