)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"c02b1b38e98833d4069bf030ee9364aad9cb5170","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This CR appends \u0027payload\u0027 to the path when sending a request to the"},{"line_number":10,"context_line":"server for decrypting a secret."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Blueprint api-change-get-secrets-decrypted"},{"line_number":13,"context_line":"APIImpact"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ibc06a0cd5a39a2beccac347f63f4460b944745e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_3ea1c6a9","line":12,"updated":"2015-03-12 04:19:00.000000000","message":"link doesn\u0027t work","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"dc72b6ec93ef944636e4dbf0e5edbf01ac4a4df7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This CR appends \u0027payload\u0027 to the path when sending a request to the"},{"line_number":10,"context_line":"server for decrypting a secret."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Blueprint api-change-get-secrets-decrypted"},{"line_number":13,"context_line":"APIImpact"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ibc06a0cd5a39a2beccac347f63f4460b944745e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_89e0a297","line":12,"in_reply_to":"9a80dd14_3ea1c6a9","updated":"2015-03-12 16:22:05.000000000","message":"The relevant BP doesn\u0027t show in the link because it\u0027s already been marked as completed [1]  So the blueprint name is correct, although not standard.  The standard way to link these is:\n\nImplements: blueprint api-change-get-secrets-decrypted\n\n[1] https://blueprints.launchpad.net/barbican/+spec/api-change-get-secrets-decrypted","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"7058a8a92a926871d7c917e3fd239106cdd99e17","unresolved":false,"context_lines":[{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Implements: blueprint api-change-get-secrets-decrypted"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://blueprints.launchpad.net/barbican/+spec/api-change-get-secrets-decrypted"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ibc06a0cd5a39a2beccac347f63f4460b944745e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a80dd14_1da74851","line":15,"updated":"2015-03-13 19:24:18.000000000","message":"Oh, this was part of my comment, not actually part of the standard. \u003e_\u003c","commit_id":"9a49414ee05c85fc25f551f7a372726a0474d97c"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"c96f93f52328d11c57a0988c01c3e1167063579a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Implements: blueprint api-change-get-secrets-decrypted"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://blueprints.launchpad.net/barbican/+spec/api-change-get-secrets-decrypted"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ibc06a0cd5a39a2beccac347f63f4460b944745e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a80dd14_f86fe28f","line":15,"in_reply_to":"9a80dd14_1da74851","updated":"2015-03-13 19:33:53.000000000","message":"ouh... uhh...should I take it off then? might as well be useful, since the link doesn\u0027t work.","commit_id":"9a49414ee05c85fc25f551f7a372726a0474d97c"}],"barbicanclient/secrets.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c6ed8c24aebbaf8c709b4c3f54c4f392e53a73e5","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def payload_content_encoding(self, value):"},{"line_number":218,"context_line":"        self._payload_content_encoding \u003d value"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _get_url_w_trailing_slash(self, url):"},{"line_number":221,"context_line":"        \"\"\"Returns the given URL with a trailing slash"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Given a URL, this function will return it with a trailing slash. If"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_5a03340d","line":220,"updated":"2015-03-10 18:05:04.000000000","message":"Does this really belong as an instance method of the Secret class? :/","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"c02b1b38e98833d4069bf030ee9364aad9cb5170","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def payload_content_encoding(self, value):"},{"line_number":218,"context_line":"        self._payload_content_encoding \u003d value"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _get_url_w_trailing_slash(self, url):"},{"line_number":221,"context_line":"        \"\"\"Returns the given URL with a trailing slash"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Given a URL, this function will return it with a trailing slash. If"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_5ee03acc","line":220,"in_reply_to":"9a80dd14_5a03340d","updated":"2015-03-12 04:19:00.000000000","message":"Agreed - can this be moved into a utils module?","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"dc72b6ec93ef944636e4dbf0e5edbf01ac4a4df7","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def payload_content_encoding(self, value):"},{"line_number":218,"context_line":"        self._payload_content_encoding \u003d value"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _get_url_w_trailing_slash(self, url):"},{"line_number":221,"context_line":"        \"\"\"Returns the given URL with a trailing slash"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Given a URL, this function will return it with a trailing slash. If"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_69936efa","line":220,"in_reply_to":"9a80dd14_5ee03acc","updated":"2015-03-12 16:22:05.000000000","message":"I disagree that this needs to be moved.  Currently it\u0027s a private method inside the only class that uses it, so it seems like good encapsulation to me.\n\nThat said, it is a little weird that this is the only class that needs this function.  I would prefer that it not be moved to a public namespace unless there is another class using it.","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"217e8a6dc05f7e7f75788be4810e9d3c8068f0da","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def payload_content_encoding(self, value):"},{"line_number":218,"context_line":"        self._payload_content_encoding \u003d value"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _get_url_w_trailing_slash(self, url):"},{"line_number":221,"context_line":"        \"\"\"Returns the given URL with a trailing slash"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Given a URL, this function will return it with a trailing slash. If"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_e7dd8771","line":220,"in_reply_to":"9a80dd14_69936efa","updated":"2015-03-13 18:30:30.000000000","message":"I\u0027ll move this function out of the class, but will keep it in a \"private\" namespace","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"9a2198e8a5d6cef93ec5a5b83bf594b0f0426800","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def payload_content_encoding(self, value):"},{"line_number":218,"context_line":"        self._payload_content_encoding \u003d value"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _get_url_w_trailing_slash(self, url):"},{"line_number":221,"context_line":"        \"\"\"Returns the given URL with a trailing slash"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Given a URL, this function will return it with a trailing slash. If"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_62d42520","line":220,"in_reply_to":"9a80dd14_e7dd8771","updated":"2015-03-13 18:52:21.000000000","message":"I think that would be double bad, since now you\u0027re reaching into another class\u0027 private methods :-\\","commit_id":"479848a0b39afdfd224e12ba588b03ebdce69808"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"ad630acbea1b9dd1520ca9d86d51f4aaa8f521ad","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    # a URL to another. If a URL, say http://localhost/v1 doesn\u0027t have a"},{"line_number":59,"context_line":"    # slash in the end, the last fragment will be replaced with the second"},{"line_number":60,"context_line":"    # parameter given to urljoin; Which is not what we want."},{"line_number":61,"context_line":"    if url[-1] !\u003d \"/\":"},{"line_number":62,"context_line":"        return url + \"/\""},{"line_number":63,"context_line":"    return url"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_7efaf075","line":61,"updated":"2015-03-14 03:42:01.000000000","message":"lets protect this with if url and url[-1] !\u003d \"/\"\n\notherwise you can get a ValueError if None gets passed in by mistake","commit_id":"0e23408256d2a9bc80c1833b6bc18c4dcda6d12c"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"ad630acbea1b9dd1520ca9d86d51f4aaa8f521ad","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        payload_url \u003d urllib.parse.urljoin("},{"line_number":260,"context_line":"            _get_url_w_trailing_slash(self._secret_ref),"},{"line_number":261,"context_line":"            \u0027payload\u0027)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        self._payload \u003d self._api._get_raw(payload_url, headers)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_de42fca9","line":261,"updated":"2015-03-14 03:42:01.000000000","message":"why can\u0027t we just concatenate the result from _get_url_w_trailing_slash and \u0027payload\u0027?  I don\u0027t think the urllib.parse.urljoin buys us anything here.","commit_id":"0e23408256d2a9bc80c1833b6bc18c4dcda6d12c"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d0b16b87194dc32d236c573a69844e18eb70017e","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        payload_url \u003d urllib.parse.urljoin("},{"line_number":260,"context_line":"            _get_url_w_trailing_slash(self._secret_ref),"},{"line_number":261,"context_line":"            \u0027payload\u0027)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        self._payload \u003d self._api._get_raw(payload_url, headers)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_cd497061","line":261,"in_reply_to":"9a80dd14_61b6d5fa","updated":"2015-03-14 14:05:17.000000000","message":"Good point AH.  if its only used once then probably easier and more readable to just put the code here rather than in a function","commit_id":"0e23408256d2a9bc80c1833b6bc18c4dcda6d12c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"295fe2a47f2d43acfd45d959d3da4a4ace9ee8bf","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        payload_url \u003d urllib.parse.urljoin("},{"line_number":260,"context_line":"            _get_url_w_trailing_slash(self._secret_ref),"},{"line_number":261,"context_line":"            \u0027payload\u0027)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        self._payload \u003d self._api._get_raw(payload_url, headers)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_61b6d5fa","line":261,"in_reply_to":"9a80dd14_de42fca9","updated":"2015-03-14 05:14:33.000000000","message":"Making a whole function for _get_url_w_trailing_slash seems like a bit much. I think Doug mentioned earlier that this is the only place where that function is used, and the entire thing is really only two lines! Couldn\u0027t we just do this here and get it over with? The docstring is longer than the code for the function. T_T","commit_id":"0e23408256d2a9bc80c1833b6bc18c4dcda6d12c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"a9d366c2652e4b0e5498eb0eddf1ec4fa5d47794","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_utils.timeutils import parse_isotime"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":"from six.moves import urllib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from barbicanclient import base"},{"line_number":24,"context_line":"from barbicanclient import formatter"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_a007dec8","line":21,"updated":"2015-03-15 05:17:29.000000000","message":"Nit: unused import.","commit_id":"f6c092a23527ed997545fb10f139524e44eafbb2"}]}
