)]}'
{"keystoneauth/access.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"7eec3ecf02a3898479a3335b03d4a96a4d6eb17e","unresolved":false,"context_lines":[{"line_number":693,"context_line":""},{"line_number":694,"context_line":"    @missingproperty"},{"line_number":695,"context_line":"    def service_providers(self):"},{"line_number":696,"context_line":"        return self._data[\u0027token\u0027][\u0027service_providers\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_310a9e27","line":696,"updated":"2015-06-02 17:56:24.000000000","message":"there\u0027s no gaurantee service_providers will be there. How about this?\n\n    if self.Is_federated:\n        return self._data[\u0027token\u0027][\u0027service_providers\u0027]\n    else:\n        return None","commit_id":"f0a8bb6fd6a91704e7775d9731a18e5fee27f863"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"3714db1c3c17e3a1823711b73d5aa0f0cdac99c9","unresolved":false,"context_lines":[{"line_number":693,"context_line":""},{"line_number":694,"context_line":"    @missingproperty"},{"line_number":695,"context_line":"    def service_providers(self):"},{"line_number":696,"context_line":"        return self._data[\u0027token\u0027][\u0027service_providers\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_cc5e0de9","line":696,"in_reply_to":"5afe65bd_310a9e27","updated":"2015-06-02 17:59:09.000000000","message":"a) service_providers are not reserved for federated tokens\nb) if service_providers are not in the token a None will be returned. This is what @missingproperty handles and this is general logic FWIW.","commit_id":"f0a8bb6fd6a91704e7775d9731a18e5fee27f863"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3766c244bf75a37a72ba90e56c5a906c6e988f3f","unresolved":false,"context_lines":[{"line_number":693,"context_line":""},{"line_number":694,"context_line":"    @missingproperty"},{"line_number":695,"context_line":"    def service_providers(self):"},{"line_number":696,"context_line":"        return self._data[\u0027token\u0027][\u0027service_providers\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_cc316d0d","line":696,"in_reply_to":"5afe65bd_cc5e0de9","updated":"2015-06-02 18:15:46.000000000","message":"k, yeah, looks like the missingproperty decorator will handle it nicely","commit_id":"f0a8bb6fd6a91704e7775d9731a18e5fee27f863"}]}
