)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"129853640c29c1ce0c35ec7b9978bbed6338f7d1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Begin low-level API for Image v1 and v2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"api.image.APIv2 starts with image_list().  api.image.APIv3 works"},{"line_number":10,"context_line":"out one multi-version design by subclassing APIv2 for methods"},{"line_number":11,"context_line":"that essentially do not change."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_05abcf1d","line":9,"updated":"2014-10-22 06:40:08.000000000","message":"typo at v3?","commit_id":"a5df0d9238106bc935ab4bd3cd724993bb2d06aa"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"c357c502076e18287d89d38402ae68d049e0ed11","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Begin low-level API for Image v1 and v2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"api.image.APIv2 starts with image_list().  api.image.APIv3 works"},{"line_number":10,"context_line":"out one multi-version design by subclassing APIv2 for methods"},{"line_number":11,"context_line":"that essentially do not change."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_c4aedb2d","line":9,"in_reply_to":"9aa7fdbe_05abcf1d","updated":"2014-10-24 14:58:32.000000000","message":"ugh... must have had Identity on my mind...  v1 and v2 obviously","commit_id":"a5df0d9238106bc935ab4bd3cd724993bb2d06aa"}],"doc/source/command-objects/image.rst":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"864a2ed46603d64c2691397aefa77eb8e7176077","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    os image list"},{"line_number":141,"context_line":"        [--page-size \u003csize\u003e]"},{"line_number":142,"context_line":"        [--public|--private]"},{"line_number":143,"context_line":"        [--long]"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. option:: --page-size \u003csize\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_c8392eda","line":142,"updated":"2015-01-21 05:33:58.000000000","message":"[--public | --private] - add space before and after \"|\" to be consistent with docs. See line 187-188","commit_id":"1ecf1bee2d5c1566533cdd8fad99733ea8336aa8"}],"openstackclient/api/api.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e3c8699874c96a6e8756972f2df158890b9a1e21","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        session\u003dNone,"},{"line_number":158,"context_line":"        body\u003dNone,"},{"line_number":159,"context_line":"        detailed\u003dFalse,"},{"line_number":160,"context_line":"        headers\u003d{},"},{"line_number":161,"context_line":"        **params"},{"line_number":162,"context_line":"    ):"},{"line_number":163,"context_line":"        \"\"\"Return a list of resources"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_89a9c027","line":160,"updated":"2015-01-20 17:46:21.000000000","message":"this is a no-no, default it to None and in the body of the function check if it\u0027s None and init a new dict.\n\nhttp://stackoverflow.com/questions/5712904/empty-dictionary-as-default-value-for-keyword-argument-in-python-function-dicti","commit_id":"307a4fcdc141661659d7af5c9a3534efaa0616e0"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"112c2bf8ad2ce053e90381494500a5b93b3f60a2","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        session\u003dNone,"},{"line_number":158,"context_line":"        body\u003dNone,"},{"line_number":159,"context_line":"        detailed\u003dFalse,"},{"line_number":160,"context_line":"        headers\u003d{},"},{"line_number":161,"context_line":"        **params"},{"line_number":162,"context_line":"    ):"},{"line_number":163,"context_line":"        \"\"\"Return a list of resources"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_f1ed00f1","line":160,"in_reply_to":"3a961159_89a9c027","updated":"2015-01-20 20:51:49.000000000","message":"ya, damn, I thought empty might be ok ;)  I\u0027m still unsure if this is how I should do it, I managed to make the reason for adding it moot so I may just pull it for now","commit_id":"307a4fcdc141661659d7af5c9a3534efaa0616e0"}],"openstackclient/api/image_v1.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"597944fa2518ad83d8ebed336a2e35be8491a831","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def image_list("},{"line_number":29,"context_line":"        self,"},{"line_number":30,"context_line":"        detailed\u003dTrue,"},{"line_number":31,"context_line":"        public\u003dTrue,"},{"line_number":32,"context_line":"    ):"},{"line_number":33,"context_line":"        \"\"\"Get available images"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_13f3879f","line":31,"updated":"2015-01-17 02:31:26.000000000","message":"just checking that these should be enabled by default","commit_id":"671fcdfaedc3e338efc46b60f636402a1258702d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f95caa8953768403ff3bbdce631b602ec0815d18","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def image_list("},{"line_number":29,"context_line":"        self,"},{"line_number":30,"context_line":"        detailed\u003dTrue,"},{"line_number":31,"context_line":"        public\u003dTrue,"},{"line_number":32,"context_line":"    ):"},{"line_number":33,"context_line":"        \"\"\"Get available images"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_8ebd90d9","line":31,"in_reply_to":"3a961159_13f3879f","updated":"2015-01-17 05:15:35.000000000","message":"These are policy decisions for us...\n\ndetailed is True to support --long because the command isn\u0027t wired up for that option yet and is false in the superclass method. This will eventually change to False, maybe even tonight yet if I don\u0027t get too tired...\n\npublic is True because that appears to be the server default (today anyway) and I don\u0027t like having things change out from under us when server defaults change, bad UX.  FWIW, I plan to do this sort of thing with sort order too.","commit_id":"671fcdfaedc3e338efc46b60f636402a1258702d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"597944fa2518ad83d8ebed336a2e35be8491a831","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        url \u003d \"/images\""},{"line_number":49,"context_line":"        if detailed:"},{"line_number":50,"context_line":"            url +\u003d \"/detail\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        return self.list(url, **params)[\u0027images\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_f3f7db89","line":50,"updated":"2015-01-17 02:31:26.000000000","message":"wow that is weird, why not a query parameter","commit_id":"671fcdfaedc3e338efc46b60f636402a1258702d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f95caa8953768403ff3bbdce631b602ec0815d18","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        url \u003d \"/images\""},{"line_number":49,"context_line":"        if detailed:"},{"line_number":50,"context_line":"            url +\u003d \"/detail\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        return self.list(url, **params)[\u0027images\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_2e165cf2","line":50,"in_reply_to":"3a961159_f3f7db89","updated":"2015-01-17 05:15:35.000000000","message":"I know, right?","commit_id":"671fcdfaedc3e338efc46b60f636402a1258702d"}],"openstackclient/image/client.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"129853640c29c1ce0c35ec7b9978bbed6338f7d1","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \"1\": \"openstackclient.image.client.Client_v1\","},{"line_number":31,"context_line":"    \"2\": \"glanceclient.v2.client.Client\","},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":"API_VERSIONS_2 \u003d {"},{"line_number":34,"context_line":"    \u00271\u0027: \u0027openstackclient.api.image_v1.APIv1\u0027,"},{"line_number":35,"context_line":"    \u00272\u0027: \u0027openstackclient.api.image_v2.APIv2\u0027,"},{"line_number":36,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_a5ba036c","line":33,"updated":"2014-10-22 06:40:08.000000000","message":"can we use:\n\nOSC_API_VERSIONS instead? the _2 is hurting me","commit_id":"a5df0d9238106bc935ab4bd3cd724993bb2d06aa"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"c357c502076e18287d89d38402ae68d049e0ed11","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \"1\": \"openstackclient.image.client.Client_v1\","},{"line_number":31,"context_line":"    \"2\": \"glanceclient.v2.client.Client\","},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":"API_VERSIONS_2 \u003d {"},{"line_number":34,"context_line":"    \u00271\u0027: \u0027openstackclient.api.image_v1.APIv1\u0027,"},{"line_number":35,"context_line":"    \u00272\u0027: \u0027openstackclient.api.image_v2.APIv2\u0027,"},{"line_number":36,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_84b9337b","line":33,"in_reply_to":"9aa7fdbe_a5ba036c","updated":"2014-10-24 14:58:32.000000000","message":"Sure.  The original goes away eventually but OSC_API_VERSIONS wouldn\u0027t change later then.","commit_id":"a5df0d9238106bc935ab4bd3cd724993bb2d06aa"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"597944fa2518ad83d8ebed336a2e35be8491a831","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    client.api \u003d image_api("},{"line_number":66,"context_line":"        session\u003dinstance.session,"},{"line_number":67,"context_line":"        service_type\u003d\"image\","},{"line_number":68,"context_line":"        endpoint\u003dinstance.get_endpoint_for_service_type("},{"line_number":69,"context_line":"            API_NAME,"},{"line_number":70,"context_line":"            region_name\u003dinstance._region_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_93077780","line":67,"updated":"2015-01-17 02:31:26.000000000","message":"could use API_NAME here instead of \"image\"","commit_id":"671fcdfaedc3e338efc46b60f636402a1258702d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f95caa8953768403ff3bbdce631b602ec0815d18","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    client.api \u003d image_api("},{"line_number":66,"context_line":"        session\u003dinstance.session,"},{"line_number":67,"context_line":"        service_type\u003d\"image\","},{"line_number":68,"context_line":"        endpoint\u003dinstance.get_endpoint_for_service_type("},{"line_number":69,"context_line":"            API_NAME,"},{"line_number":70,"context_line":"            region_name\u003dinstance._region_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_aeb08cfd","line":67,"in_reply_to":"3a961159_93077780","updated":"2015-01-17 05:15:35.000000000","message":"sure...I didn\u0027t because the pattern established in object/v1/client.py is that the API name and the type name are not necessarily the same thing (\u0027-\u0027 vs \u0027_\u0027 there) and I kept the pattern.  network is this way too.\n\nI suppose they could all be updated to use API_TYPE.","commit_id":"671fcdfaedc3e338efc46b60f636402a1258702d"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"864a2ed46603d64c2691397aefa77eb8e7176077","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    )"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    # Create the low-level API"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    image_api \u003d utils.get_client_class("},{"line_number":64,"context_line":"        API_NAME,"},{"line_number":65,"context_line":"        instance._api_version[API_NAME],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_c8ae8ee7","line":62,"updated":"2015-01-21 05:33:58.000000000","message":"unnecessary space","commit_id":"1ecf1bee2d5c1566533cdd8fad99733ea8336aa8"}]}
