)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-12-23 19:02:01 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Initial Climate client implementation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I7ac8aedf5b7504c63d12119e1ba0842e3ce01e63"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAUH%2F%2FoHI%3D","line":8,"updated":"2014-01-10 10:53:47.000000000","message":"please add a note that a Bug needs to be raised or put a TODO for missing unittests.","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"README.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7ff761b17c9ac07891e3342c79ede97fa0e1090","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Climate client"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"**Climate client** provides possibility to use *Climate* API."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAS3%2F%2FpNU%3D","line":5,"updated":"2013-09-23 14:25:50.000000000","message":"We should precise either if limitated to Lease API or say Climate API(s).","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"}],"climateclient/__init__.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Fofw%3D","line":1,"updated":"2014-01-10 10:53:47.000000000","message":"Please blank this file ;-)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/base.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7ff761b17c9ac07891e3342c79ede97fa0e1090","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :returns: Resource entity that was updated."},{"line_number":90,"context_line":"        :rtype: dict"},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        resp, body \u003d self.request(url, \u0027PUT\u0027, body\u003dbody)"},{"line_number":93,"context_line":"        return body[response_key]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def request(self, url, method, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FpNA%3D","line":92,"updated":"2013-09-23 14:25:50.000000000","message":"PUT or PATCH method ? I saw a thread on that.","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"6ae70e30740ff658cba0e86e5d7bdb6886d2ae71","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :returns: Resource entity that was updated."},{"line_number":90,"context_line":"        :rtype: dict"},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        resp, body \u003d self.request(url, \u0027PUT\u0027, body\u003dbody)"},{"line_number":93,"context_line":"        return body[response_key]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def request(self, url, method, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FpAI%3D","line":92,"in_reply_to":"AAAAS3%2F%2FpNA%3D","updated":"2013-09-23 15:10:51.000000000","message":"I think this moment is not the blocker here... Can you give a link to the thread for me to see all pros and cons there?","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"}],"climateclient/command.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"793b1dc035fe92313742f06ac1f210589221aead","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def __init__(self, app, app_args):"},{"line_number":65,"context_line":"        super(ClimateCommand, self).__init__(app, app_args)"},{"line_number":66,"context_line":"        if hasattr(self, \u0027formatters\u0027):"},{"line_number":67,"context_line":"            self.formatters[\u0027table\u0027] \u003d TableFormatter()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_client(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Fed8%3D","line":66,"updated":"2014-01-13 14:20:58.000000000","message":"See https://bugs.launchpad.net/python-neutronclient/+bug/1265926\n\nThere is a bug with cliff-1.5.2 which makes this code incompatible.","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b49de51f4ff2cfe57d93b4e533b00ece179d297b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        return parser"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def format_output_data(self, data):"},{"line_number":83,"context_line":"        for k, v in data.iteritems():"},{"line_number":84,"context_line":"            if isinstance(v, list):"},{"line_number":85,"context_line":"                value \u003d \u0027\\n\u0027.join(utils.dumps("},{"line_number":86,"context_line":"                    i, indent\u003dself.json_indent) if isinstance(i, dict)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FZMk%3D","line":83,"updated":"2014-01-14 08:48:22.000000000","message":"please use six instead.","commit_id":"b3f22b02179947d7e9d706b20a29f7821c6f1995"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b49de51f4ff2cfe57d93b4e533b00ece179d297b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        resource_manager \u003d getattr(climate_client, self.resource)"},{"line_number":114,"context_line":"        data \u003d resource_manager.create(**body)"},{"line_number":115,"context_line":"        self.format_output_data(data)"},{"line_number":116,"context_line":"        info \u003d self.resource in data and data[self.resource] or None"},{"line_number":117,"context_line":"        if info:"},{"line_number":118,"context_line":"            print(self.app.stdout, \u0027Created a new %s:\u0027 % self.resource)"},{"line_number":119,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FZMg%3D","line":116,"updated":"2014-01-14 08:48:22.000000000","message":"data is already containing dict from the resource, we only need to return data","commit_id":"b3f22b02179947d7e9d706b20a29f7821c6f1995"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b49de51f4ff2cfe57d93b4e533b00ece179d297b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            print(self.app.stdout, \u0027Created a new %s:\u0027 % self.resource)"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            info \u003d {\u0027\u0027: \u0027\u0027}"},{"line_number":121,"context_line":"        return zip(*sorted(info.iteritems()))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class UpdateCommand(ClimateCommand):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FZMU%3D","line":121,"updated":"2014-01-14 08:48:22.000000000","message":"please use six","commit_id":"b3f22b02179947d7e9d706b20a29f7821c6f1995"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b49de51f4ff2cfe57d93b4e533b00ece179d297b","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        resource_manager \u003d getattr(climate_client, self.resource)"},{"line_number":260,"context_line":"        data \u003d resource_manager.get(res_id)"},{"line_number":261,"context_line":"        self.format_output_data(data)"},{"line_number":262,"context_line":"        return zip(*sorted(data.iteritems()))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FZMQ%3D","line":262,"updated":"2014-01-14 08:48:22.000000000","message":"please use six","commit_id":"b3f22b02179947d7e9d706b20a29f7821c6f1995"}],"climateclient/exception.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class CommandError(ClimateClientException):"},{"line_number":38,"context_line":"    \"\"\"Occurs if not all authentication vital options are set.\"\"\""},{"line_number":39,"context_line":"    message \u003d \"You have to provide all options like user name or tenant id \" \\"},{"line_number":40,"context_line":"              \"to make authentication possible.\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Foek%3D","line":39,"updated":"2014-01-10 10:53:47.000000000","message":"a possible 401 code would be worth here","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    User have no enough rights to perform action."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    code \u003d 401"},{"line_number":49,"context_line":"    message \u003d \"Not authorized request.\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class NoClimateEndpoint(ClimateClientException):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoeU%3D","line":49,"updated":"2014-01-10 10:53:47.000000000","message":"think about wrapping all your messages with gettextutils so the i18n would be quick an easy thing if all strings are already handled","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class NoClimateEndpoint(ClimateClientException):"},{"line_number":53,"context_line":"    \"\"\"Occurs if no endpoint for Climate set in the Keystone.\"\"\""},{"line_number":54,"context_line":"    message \u003d \"No publicURL endpoint for Climate found. Set endpoint for \" \\"},{"line_number":55,"context_line":"              \"Climate in the Keystone\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Foeg%3D","line":54,"updated":"2014-01-10 10:53:47.000000000","message":"a possible 404 code would be worth here","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/shell.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from climateclient import exception"},{"line_number":31,"context_line":"from climateclient import utils"},{"line_number":32,"context_line":"from climateclient.openstack.common import strutils"},{"line_number":33,"context_line":"from climateclient.v1 import client as climate_client"},{"line_number":34,"context_line":"from climateclient.v1.shell_commands import leases"},{"line_number":35,"context_line":"from climateclient import version as base_version"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoZE%3D","line":33,"updated":"2014-01-10 10:53:47.000000000","message":"this is not really modular, if we want to upgrade the client, we need to impact this code.\n\nI would prefer having a simple proxy class climateclient.client which would map to either climateclient.v1.client or the next ones.\n\nSee Novaclient for example (no autodiscovery) and Keystoneclient (autodiscovery based on API)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from climateclient import utils"},{"line_number":32,"context_line":"from climateclient.openstack.common import strutils"},{"line_number":33,"context_line":"from climateclient.v1 import client as climate_client"},{"line_number":34,"context_line":"from climateclient.v1.shell_commands import leases"},{"line_number":35,"context_line":"from climateclient import version as base_version"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"COMMANDS_V1 \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoYo%3D","line":34,"updated":"2014-01-10 10:53:47.000000000","message":"Same remark as above","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/utils.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                              \"appropriate resources for the \""},{"line_number":129,"context_line":"                                              \"name \u0027%s\u0027 and type \u0027%s\u0027\" %"},{"line_number":130,"context_line":"                                              (name, resource))"},{"line_number":131,"context_line":"    elif len(named_resources) \u003d\u003d 0:"},{"line_number":132,"context_line":"        message \u003d \"Unable to find %s with name \u0027%s\u0027\" % (resource, name)"},{"line_number":133,"context_line":"        raise exception.ClimateClientException(message\u003dmessage,"},{"line_number":134,"context_line":"                                               status_code\u003d404)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoO0%3D","line":131,"updated":"2014-01-10 10:53:47.000000000","message":"I would prefer having the pattern :\nif named_resources:\n return named_resources[0]\nelse:\n (...)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ee362cdbb29d3cdf44c944b1f1b5d35e490db072","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                              \"appropriate resources for the \""},{"line_number":129,"context_line":"                                              \"name \u0027%s\u0027 and type \u0027%s\u0027\" %"},{"line_number":130,"context_line":"                                              (name, resource))"},{"line_number":131,"context_line":"    elif len(named_resources) \u003d\u003d 0:"},{"line_number":132,"context_line":"        message \u003d \"Unable to find %s with name \u0027%s\u0027\" % (resource, name)"},{"line_number":133,"context_line":"        raise exception.ClimateClientException(message\u003dmessage,"},{"line_number":134,"context_line":"                                               status_code\u003d404)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Ff3k%3D","line":131,"in_reply_to":"AAAAUH%2F%2Ff%2B4%3D","updated":"2014-01-13 10:09:09.000000000","message":"As said above:\n\nif len(named_resources) \u003e 1:\n raise Exception()\nif named_resources:\n (...)\nelse:\n (...)\n\nI\u0027m saying that because in case of future additions, it sounds to me better; and also because that\u0027s better in Python to not use len() if not necessary\n\nAnyway, this is not a blocking stuff, do it as you want.","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"f1afa1326eeef9ab9500d8931779a4019b439f62","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                              \"appropriate resources for the \""},{"line_number":129,"context_line":"                                              \"name \u0027%s\u0027 and type \u0027%s\u0027\" %"},{"line_number":130,"context_line":"                                              (name, resource))"},{"line_number":131,"context_line":"    elif len(named_resources) \u003d\u003d 0:"},{"line_number":132,"context_line":"        message \u003d \"Unable to find %s with name \u0027%s\u0027\" % (resource, name)"},{"line_number":133,"context_line":"        raise exception.ClimateClientException(message\u003dmessage,"},{"line_number":134,"context_line":"                                               status_code\u003d404)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FfuY%3D","line":131,"in_reply_to":"AAAAUH%2F%2Ff3k%3D","updated":"2014-01-13 10:27:43.000000000","message":"ok, got it :)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"1f8e684eadf0c41e8641ea25721136b067104bb9","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                              \"appropriate resources for the \""},{"line_number":129,"context_line":"                                              \"name \u0027%s\u0027 and type \u0027%s\u0027\" %"},{"line_number":130,"context_line":"                                              (name, resource))"},{"line_number":131,"context_line":"    elif len(named_resources) \u003d\u003d 0:"},{"line_number":132,"context_line":"        message \u003d \"Unable to find %s with name \u0027%s\u0027\" % (resource, name)"},{"line_number":133,"context_line":"        raise exception.ClimateClientException(message\u003dmessage,"},{"line_number":134,"context_line":"                                               status_code\u003d404)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Ff%2B4%3D","line":131,"in_reply_to":"AAAAUH%2F%2FoO0%3D","updated":"2014-01-13 09:45:23.000000000","message":"Sorry, but I can\u0027t get your thought.. here I\u0027ve got dependency on len(named_resources) - \n\nif len(named_resources) \u003e 1:\n\n...\n\nelif len(named_resources) \u003d\u003d 0:\n\n...\n\nelse:\n\n...\n\nHow do you propose to modify that?","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/v1/__init__.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoOU%3D","line":1,"updated":"2014-01-10 10:53:47.000000000","message":"please wipe this file ;)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/v1/leases.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2be361bae606d4d74bc392e0fff737c68e4f8702","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                raise exception.ClimateClientException(\"Unsupportable date \""},{"line_number":54,"context_line":"                                                       \"format for lease \""},{"line_number":55,"context_line":"                                                       \"prolonging.\")"},{"line_number":56,"context_line":"            values[\u0027prolong_for\u0027] \u003d int(prolong_for[:-1]) * coefficient"},{"line_number":57,"context_line":"        if not values:"},{"line_number":58,"context_line":"            return \u0027No values to update passed.\u0027"},{"line_number":59,"context_line":"        return self._update(\u0027/leases/%s\u0027 % lease_id, values,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8yac%3D","line":56,"updated":"2013-12-20 10:05:03.000000000","message":"I\u0027m OK for accepting prolong_for as param for the client but prolong_for has been removed from the API, we should calculate the new end_lease and pass it as values instead.","commit_id":"35c648fabe1615b2bec7335ad5fe62f2fba2f8f1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            elif prolong_for.endswith(\u0027d\u0027):"},{"line_number":51,"context_line":"                coefficient \u003d 24 * 60 * 60"},{"line_number":52,"context_line":"            else:"},{"line_number":53,"context_line":"                raise exception.ClimateClientException(\"Unsupportable date \""},{"line_number":54,"context_line":"                                                       \"format for lease \""},{"line_number":55,"context_line":"                                                       \"prolonging.\")"},{"line_number":56,"context_line":"            lease \u003d self.get(lease_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoNg%3D","line":53,"updated":"2014-01-10 10:53:47.000000000","message":"please use gettextutils\u0027 _() for i18n here","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                new_end_date, \u0027%Y-%m-%dT%H:%M:%S.%f\u0027"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"        if not values:"},{"line_number":66,"context_line":"            return \u0027No values to update passed.\u0027"},{"line_number":67,"context_line":"        return self._update(\u0027/leases/%s\u0027 % lease_id, values,"},{"line_number":68,"context_line":"                            response_key\u003d\u0027lease\u0027)"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoNE%3D","line":66,"updated":"2014-01-10 10:53:47.000000000","message":"same remark for i18n","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/v1/shell_commands/__init__.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoMs%3D","line":1,"updated":"2014-01-10 10:53:47.000000000","message":"cat /dev/null to this please :-)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"climateclient/v1/shell_commands/leases.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7ff761b17c9ac07891e3342c79ede97fa0e1090","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class CreateLease(command.CreateCommand):"},{"line_number":33,"context_line":"    \"\"\"Only services may create lease, not real user."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    It happens because we need id of the reserved resource to create lease."},{"line_number":36,"context_line":"    When service creates reserved resource (Nova-VM, Cinder-volume, etc.) it"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FpOE%3D","line":33,"updated":"2013-09-23 14:25:50.000000000","message":"Not true. User should be able to create a lease using JSON specs but only for Host Reservation.","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"6ae70e30740ff658cba0e86e5d7bdb6886d2ae71","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class CreateLease(command.CreateCommand):"},{"line_number":33,"context_line":"    \"\"\"Only services may create lease, not real user."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    It happens because we need id of the reserved resource to create lease."},{"line_number":36,"context_line":"    When service creates reserved resource (Nova-VM, Cinder-volume, etc.) it"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fo%2Fk%3D","line":33,"in_reply_to":"AAAAS3%2F%2FpOE%3D","updated":"2013-09-23 15:10:51.000000000","message":"I thought this moment will be done by Host Reservation API. Host reservation API will call lease API to create lease. For the user there will be hosts related CLI operations like \u0027climate reserve-host\u0027 or something like this, I suppose. What do you think about it?","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7ff761b17c9ac07891e3342c79ede97fa0e1090","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class DeleteLease(command.DeleteCommand):"},{"line_number":56,"context_line":"    resource \u003d \u0027lease\u0027"},{"line_number":57,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteLease\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FpNk%3D","line":57,"updated":"2013-09-23 14:25:50.000000000","message":"Missing something ?","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"6ae70e30740ff658cba0e86e5d7bdb6886d2ae71","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class DeleteLease(command.DeleteCommand):"},{"line_number":56,"context_line":"    resource \u003d \u0027lease\u0027"},{"line_number":57,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteLease\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fo%2FQ%3D","line":57,"in_reply_to":"AAAAS3%2F%2FpNk%3D","updated":"2013-09-23 15:10:51.000000000","message":"Sylvain, can you explain what do you mean here?","commit_id":"753eeb989c95fea7798a8115931a387fd28d9ae0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class CreateLease(command.CreateCommand):"},{"line_number":35,"context_line":"    \"\"\"Only services may create lease, not real user."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    It happens because we need id of the reserved resource to create lease."},{"line_number":38,"context_line":"    When service creates reserved resource (Nova-VM, Cinder-volume, etc.) it"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FoMA%3D","line":35,"updated":"2014-01-10 10:53:47.000000000","message":"not true with the physical host usecase, but I\u0027m OK leaving this comment as I will provide another change for supporting compute host reservations in which I will rewrite this class","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"requirements.txt":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"cliff\u003e\u003d1.4.3"},{"line_number":2,"context_line":"PrettyTable\u003e\u003d0.7,\u003c0.8"},{"line_number":3,"context_line":"python-keystoneclient\u003e\u003d0.4.1"},{"line_number":4,"context_line":"requests\u003e\u003d1.1"},{"line_number":5,"context_line":"six\u003e\u003d1.4.1"}],"source_content_type":"text/plain","patch_set":11,"id":"AAAAUH%2F%2Fofs%3D","line":2,"updated":"2014-01-10 10:53:47.000000000","message":"for making sure PrettyTable-0.8.0a won\u0027t be installed, please ask for \u003c0.8a","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ee362cdbb29d3cdf44c944b1f1b5d35e490db072","unresolved":false,"context_lines":[{"line_number":1,"context_line":"cliff\u003e\u003d1.4.3"},{"line_number":2,"context_line":"PrettyTable\u003e\u003d0.7,\u003c0.8"},{"line_number":3,"context_line":"python-keystoneclient\u003e\u003d0.4.1"},{"line_number":4,"context_line":"requests\u003e\u003d1.1"},{"line_number":5,"context_line":"six\u003e\u003d1.4.1"}],"source_content_type":"text/plain","patch_set":11,"id":"AAAAUH%2F%2Ff2I%3D","line":2,"in_reply_to":"AAAAUH%2F%2Ff44%3D","updated":"2014-01-13 10:09:09.000000000","message":"OK with that, good to know.","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"bfc918e93e6733a4f8725804bb0b68a74ab97d26","unresolved":false,"context_lines":[{"line_number":1,"context_line":"cliff\u003e\u003d1.4.3"},{"line_number":2,"context_line":"PrettyTable\u003e\u003d0.7,\u003c0.8"},{"line_number":3,"context_line":"python-keystoneclient\u003e\u003d0.4.1"},{"line_number":4,"context_line":"requests\u003e\u003d1.1"},{"line_number":5,"context_line":"six\u003e\u003d1.4.1"}],"source_content_type":"text/plain","patch_set":11,"id":"AAAAUH%2F%2Ff44%3D","line":2,"in_reply_to":"AAAAUH%2F%2Fofs%3D","updated":"2014-01-13 10:00:09.000000000","message":"As I mentioned here - https://review.openstack.org/#/c/56579/ - that\u0027s not really needed thing :)\n\n\u0027... removing of *a0 suffixes is nice mentioning https://review.openstack.org/#/c/56582/ review by Monty.\u0027\n\nThis moment has been already fixed, so we may have the same requirements, as in global ones. Btw, otherwise we\u0027ll have Jenkins error :)","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"setup.cfg":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[metadata]"},{"line_number":2,"context_line":"name \u003d python-climateclient"},{"line_number":3,"context_line":"version \u003d 2013.1"},{"line_number":4,"context_line":"summary \u003d Client for OpenStack Reservation Service"},{"line_number":5,"context_line":"description-file \u003d README.rst"},{"line_number":6,"context_line":"license \u003d Apache Software License"}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"AAAAUH%2F%2FoLQ%3D","line":3,"updated":"2014-01-10 10:53:47.000000000","message":"could we consider 2014.1a0 or 0.1 for the version ?","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}],"tox.ini":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b465701578d8301f5d679368327ad25000512ea8","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"[testenv:pep8]"},{"line_number":12,"context_line":"deps \u003d"},{"line_number":13,"context_line":"    pep8\u003d\u003d1.4.5"},{"line_number":14,"context_line":"    pyflakes\u003e\u003d0.7.2,\u003c0.7.4"},{"line_number":15,"context_line":"    flake8\u003d\u003d2.0"},{"line_number":16,"context_line":"    hacking\u003e\u003d0.5.6,\u003c0.8"}],"source_content_type":"text/x-properties","patch_set":11,"id":"AAAAUH%2F%2FoJo%3D","line":13,"updated":"2014-01-10 10:53:47.000000000","message":"test-requirements.txt please, rather than giving the deps in this file.","commit_id":"d83221eee0e5ac891e156eab9e9b381f9df0f3b9"}]}
