)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Bug #1001053"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implement new commands interface, ready for v2.0. adopt cliff arch. new"},{"line_number":13,"context_line":"client binary is quantumv2. After it is stable, we will remove quantum"},{"line_number":14,"context_line":"binary. Httplibs2 is used."},{"line_number":15,"context_line":"Change-Id: Ibbbdd834371c6a023b31e4797718fc0fe9786d89"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAHX%2F%2F55U%3D","line":13,"updated":"2012-05-20 05:07:35.000000000","message":"Can you please clarify why there is a new name for the binary. From the command line flags it is possible to use older versions. Should this not suffice?","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Bug #1001053"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implement new commands interface, ready for v2.0. adopt cliff arch. new"},{"line_number":13,"context_line":"client binary is quantumv2. After it is stable, we will remove quantum"},{"line_number":14,"context_line":"binary. Httplibs2 is used."},{"line_number":15,"context_line":"Change-Id: Ibbbdd834371c6a023b31e4797718fc0fe9786d89"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAHX%2F%2F53A%3D","line":13,"in_reply_to":"AAAAHX%2F%2F55U%3D","updated":"2012-05-20 13:17:42.000000000","message":"old one and new one have different options totally. New quantumv2 will be changed into quantum after we modify other things for example devstack and it is stable","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"}],"quantumclient/__init__.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"net_filters \u003d [\"name\", \"op-status\", \"port-op-status\", \"port-state\","},{"line_number":35,"context_line":"               \"has-attachment\", \"attachment\", \"port\", ]"},{"line_number":36,"context_line":"port_filters \u003d [\"name\", \"op-status\", \"has-attachment\", \"attachment\", ]"},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(\u0027quantumclient\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FYE%3D","line":36,"updated":"2012-06-10 00:26:31.000000000","message":"these filters are v1.x specific... should probably indicate that in some way.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"net_filters \u003d [\"name\", \"op-status\", \"port-op-status\", \"port-state\","},{"line_number":35,"context_line":"               \"has-attachment\", \"attachment\", \"port\", ]"},{"line_number":36,"context_line":"port_filters \u003d [\"name\", \"op-status\", \"has-attachment\", \"attachment\", ]"},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(\u0027quantumclient\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FTo%3D","line":36,"in_reply_to":"AAAAIX%2F%2F%2FYE%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            if \u0027format\u0027 in kwargs:"},{"line_number":176,"context_line":"                instance.format \u003d kwargs[\u0027format\u0027]"},{"line_number":177,"context_line":"                if \u0027format\u0027 not in port_filters:"},{"line_number":178,"context_line":"                    del kwargs[\u0027format\u0027]"},{"line_number":179,"context_line":"            if \u0027tenant\u0027 in kwargs:"},{"line_number":180,"context_line":"                instance.tenant \u003d kwargs[\u0027tenant\u0027]"},{"line_number":181,"context_line":"                if \u0027tenant\u0027 not in port_filters:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FYA%3D","line":178,"updated":"2012-06-10 00:26:31.000000000","message":"when would \u0027format\u0027 be in port_filters?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            if \u0027format\u0027 in kwargs:"},{"line_number":176,"context_line":"                instance.format \u003d kwargs[\u0027format\u0027]"},{"line_number":177,"context_line":"                if \u0027format\u0027 not in port_filters:"},{"line_number":178,"context_line":"                    del kwargs[\u0027format\u0027]"},{"line_number":179,"context_line":"            if \u0027tenant\u0027 in kwargs:"},{"line_number":180,"context_line":"                instance.tenant \u003d kwargs[\u0027tenant\u0027]"},{"line_number":181,"context_line":"                if \u0027tenant\u0027 not in port_filters:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BFI%3D","line":178,"in_reply_to":"AAAAIX%2F%2F%2BF0%3D","updated":"2012-06-13 03:26:00.000000000","message":"sometimes, user will change the format for a given api call, But the format is a filter needed by plugin, so we need to remove it from kwargs so that it will not go into request body or url query string","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            if \u0027format\u0027 in kwargs:"},{"line_number":176,"context_line":"                instance.format \u003d kwargs[\u0027format\u0027]"},{"line_number":177,"context_line":"                if \u0027format\u0027 not in port_filters:"},{"line_number":178,"context_line":"                    del kwargs[\u0027format\u0027]"},{"line_number":179,"context_line":"            if \u0027tenant\u0027 in kwargs:"},{"line_number":180,"context_line":"                instance.tenant \u003d kwargs[\u0027tenant\u0027]"},{"line_number":181,"context_line":"                if \u0027tenant\u0027 not in port_filters:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BF0%3D","line":178,"in_reply_to":"AAAAIX%2F%2F%2FYA%3D","updated":"2012-06-13 01:47:14.000000000","message":"still don\u0027t understand this...","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":186,"context_line":"        return with_params"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class APINetFilterCall(object):"},{"line_number":190,"context_line":"    \"\"\"A Decorator to add support for format and tenant overriding"},{"line_number":191,"context_line":"    and filters"},{"line_number":192,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FX8%3D","line":189,"updated":"2012-06-10 00:26:31.000000000","message":"Is there a good way to avoid duplicated logic between these two filtering Decorators?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        return with_params"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class APINetFilterCall(object):"},{"line_number":190,"context_line":"    \"\"\"A Decorator to add support for format and tenant overriding"},{"line_number":191,"context_line":"    and filters"},{"line_number":192,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BFE%3D","line":189,"in_reply_to":"AAAAIX%2F%2F%2FX8%3D","updated":"2012-06-13 03:26:00.000000000","message":"Yes. we have. Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/cli.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":132,"context_line":"    \"list_ports_detail\": {"},{"line_number":133,"context_line":"        \"func\": cli_lib.list_ports_detail_v11,"},{"line_number":134,"context_line":"        \"args\": [\"tenant-id\", \"net-id\"],"},{"line_number":135,"context_line":"        \"filters\": port_filters,"},{"line_number":136,"context_line":"        },"},{"line_number":137,"context_line":"    })"},{"line_number":138,"context_line":"commands \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FX4%3D","line":135,"updated":"2012-06-10 00:26:31.000000000","message":"yes, should probably reference port_filters_v11","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    \"list_ports_detail\": {"},{"line_number":133,"context_line":"        \"func\": cli_lib.list_ports_detail_v11,"},{"line_number":134,"context_line":"        \"args\": [\"tenant-id\", \"net-id\"],"},{"line_number":135,"context_line":"        \"filters\": port_filters,"},{"line_number":136,"context_line":"        },"},{"line_number":137,"context_line":"    })"},{"line_number":138,"context_line":"commands \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FTk%3D","line":135,"in_reply_to":"AAAAIX%2F%2F%2FX4%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/client.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 16, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: Yong Sheng Gong"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55Q%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    import json"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXw%3D","line":16,"updated":"2012-06-10 00:26:31.000000000","message":"It looks like this file is copied from somewhere.  It would be good to indicate where it was copied from, so we can be aware that issues or fixes with the original code should be made here as well.  Ideally either openstack common or the openstack client work will eliminate the need for any copied client code.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    import json"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FTw%3D","line":16,"in_reply_to":"AAAAIX%2F%2F%2FXw%3D","updated":"2012-06-10 09:58:25.000000000","message":"Not completely same.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    import json"},{"line_number":20,"context_line":"except ImportError:"},{"line_number":21,"context_line":"    import simplejson as json"},{"line_number":22,"context_line":"import logging"},{"line_number":23,"context_line":"import urlparse"},{"line_number":24,"context_line":"# Python 2.5 compat fix"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FX0%3D","line":21,"updated":"2012-06-10 00:26:31.000000000","message":"server codebase is now using openstack common for json, we likely should on the client as well.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    import json"},{"line_number":20,"context_line":"except ImportError:"},{"line_number":21,"context_line":"    import simplejson as json"},{"line_number":22,"context_line":"import logging"},{"line_number":23,"context_line":"import urlparse"},{"line_number":24,"context_line":"# Python 2.5 compat fix"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FT0%3D","line":21,"in_reply_to":"AAAAIX%2F%2F%2FX0%3D","updated":"2012-06-10 09:58:25.000000000","message":"Yes. I will import openstack common in another change. This change is focus on API V2.0 support","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/common/exceptions.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":79,"context_line":"    pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class PortInUseClient(QuantumClientException):"},{"line_number":83,"context_line":"    pass"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXo%3D","line":82,"updated":"2012-06-10 00:26:31.000000000","message":"This file used to have both the client and the server exceptions,and in some cases we had different variants of a single exception for server \u0026 client (hence the practice of appending \"Client\" to the end of class names like PortInUseClient.  Now that server code is separated out, we could rename them to drop the client.  \n\nAlso, the \"common\" directory was for code used by both client and server, and since this code is all client now, we can could choose to eliminate the directory.   \n\nBoth of these items are really just cleanup though.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class PortInUseClient(QuantumClientException):"},{"line_number":83,"context_line":"    pass"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FT4%3D","line":82,"in_reply_to":"AAAAIX%2F%2F%2FXo%3D","updated":"2012-06-10 09:58:25.000000000","message":"Ok, do it in another change","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/common/utils.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    mod_str, _sep, class_str \u003d import_str.rpartition(\u0027.\u0027)"},{"line_number":83,"context_line":"    __import__(mod_str)"},{"line_number":84,"context_line":"    return getattr(sys.modules[mod_str], class_str)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_client_class(api_name, version, version_map):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXk%3D","line":84,"updated":"2012-06-10 00:26:31.000000000","message":"There are openstack common options for both the \"import_class\" and json logic now.  Using them is preferred.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    mod_str, _sep, class_str \u003d import_str.rpartition(\u0027.\u0027)"},{"line_number":83,"context_line":"    __import__(mod_str)"},{"line_number":84,"context_line":"    return getattr(sys.modules[mod_str], class_str)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_client_class(api_name, version, version_map):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGo%3D","line":84,"in_reply_to":"AAAAIX%2F%2F%2FT8%3D","updated":"2012-06-13 01:47:14.000000000","message":"ok, no problem.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    mod_str, _sep, class_str \u003d import_str.rpartition(\u0027.\u0027)"},{"line_number":83,"context_line":"    __import__(mod_str)"},{"line_number":84,"context_line":"    return getattr(sys.modules[mod_str], class_str)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_client_class(api_name, version, version_map):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FT8%3D","line":84,"in_reply_to":"AAAAIX%2F%2F%2FXk%3D","updated":"2012-06-10 09:58:25.000000000","message":"I prefer to do it in another change. This change is too big to import openstack common here.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v1_1/__init__.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"import logging"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from quantumclient.common import command"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55M%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"from quantumclient.common import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"net_filters \u003d []"},{"line_number":25,"context_line":"net_filters.append({\u0027--name\u0027: {"},{"line_number":26,"context_line":"                               \u0027help\u0027: _(\u0027name filter\u0027),"},{"line_number":27,"context_line":"                               },"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXc%3D","line":24,"updated":"2012-06-10 00:26:31.000000000","message":"how does this net_filters object compare to the one defined previously quantumclient/__init__.py?  \n\nThey both seem to apply to v1.1","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from quantumclient.common import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"net_filters \u003d []"},{"line_number":25,"context_line":"net_filters.append({\u0027--name\u0027: {"},{"line_number":26,"context_line":"                               \u0027help\u0027: _(\u0027name filter\u0027),"},{"line_number":27,"context_line":"                               },"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BFA%3D","line":24,"in_reply_to":"AAAAIX%2F%2F%2FXc%3D","updated":"2012-06-13 03:26:00.000000000","message":"Yes. quantumclient/__init__.py is for old quantum client command definition, This is for new command. There there are no help str. I will merge them into one","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":99,"context_line":"        parser \u003d super(QuantumPortCommand, self).get_parser(prog_name)"},{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027net_id\u0027, metavar\u003d\u0027net-id\u0027,"},{"line_number":102,"context_line":"            help\u003d_(\u0027the owner network ID\u0027),"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        return parser"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXY%3D","line":102,"updated":"2012-06-10 00:26:31.000000000","message":"Great, it will be very nice to have sane formatting :)","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v1_1/interface.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 18, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: root"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55I%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"class PlugInterface(QuantumInterfaceCommand):"},{"line_number":26,"context_line":"    \"\"\"Plug interface to a given port\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":29,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.PlugInterface\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXQ%3D","line":28,"updated":"2012-06-10 00:26:31.000000000","message":"not sure why this is set here...","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.log.debug(\u0027run(%s)\u0027 % parsed_args)"},{"line_number":65,"context_line":"        quantum_client \u003d self.app.client_manager.quantum"},{"line_number":66,"context_line":"        quantum_client.tenant \u003d parsed_args.tenant_id"},{"line_number":67,"context_line":"        quantum_client.format \u003d parsed_args.request_format"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        quantum_client.detach_resource(parsed_args.net_id, parsed_args.port_id)"},{"line_number":70,"context_line":"        print \u003e\u003eself.app.stdout, ("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXU%3D","line":67,"updated":"2012-06-10 00:26:31.000000000","message":"these 4 lines are repeated for each command... perhaps create a helper method in the base class to call?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v1_1/network.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 17, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55E%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":107,"context_line":"        parser \u003d super(ShowNetwork, self).get_parser(prog_name)"},{"line_number":108,"context_line":"        parser.add_argument("},{"line_number":109,"context_line":"            \u0027net_id\u0027, metavar\u003d\u0027net-id\u0027,"},{"line_number":110,"context_line":"            help\u003d\u0027ID of network to display\u0027)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        parser.add_argument("},{"line_number":113,"context_line":"            \u0027--show-details\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXM%3D","line":110,"updated":"2012-06-10 00:26:31.000000000","message":"would be really nice to also support having them specify a network label, which we look up to find the ID.  This","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        parser \u003d super(ShowNetwork, self).get_parser(prog_name)"},{"line_number":108,"context_line":"        parser.add_argument("},{"line_number":109,"context_line":"            \u0027net_id\u0027, metavar\u003d\u0027net-id\u0027,"},{"line_number":110,"context_line":"            help\u003d\u0027ID of network to display\u0027)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        parser.add_argument("},{"line_number":113,"context_line":"            \u0027--show-details\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BEY%3D","line":110,"in_reply_to":"AAAAIX%2F%2F%2BGk%3D","updated":"2012-06-13 03:26:00.000000000","message":"I add it into the BP","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":107,"context_line":"        parser \u003d super(ShowNetwork, self).get_parser(prog_name)"},{"line_number":108,"context_line":"        parser.add_argument("},{"line_number":109,"context_line":"            \u0027net_id\u0027, metavar\u003d\u0027net-id\u0027,"},{"line_number":110,"context_line":"            help\u003d\u0027ID of network to display\u0027)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        parser.add_argument("},{"line_number":113,"context_line":"            \u0027--show-details\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGk%3D","line":110,"in_reply_to":"AAAAIX%2F%2F%2FUE%3D","updated":"2012-06-13 01:47:14.000000000","message":"sure, its just much easier to say: \n\nlist-ports net1\n\nthan to list-nets, then copy-paste a uuid from a list into the list-ports command.  \n\nNove does the same thing with VMs.  We can add this later though.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        parser \u003d super(ShowNetwork, self).get_parser(prog_name)"},{"line_number":108,"context_line":"        parser.add_argument("},{"line_number":109,"context_line":"            \u0027net_id\u0027, metavar\u003d\u0027net-id\u0027,"},{"line_number":110,"context_line":"            help\u003d\u0027ID of network to display\u0027)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        parser.add_argument("},{"line_number":113,"context_line":"            \u0027--show-details\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUE%3D","line":110,"in_reply_to":"AAAAIX%2F%2F%2FXM%3D","updated":"2012-06-10 09:58:25.000000000","message":"User can find net_id from list_nets command, which supports extra tag and keys features.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":269,"context_line":"                data[\u0027network\u0027][k] \u003d v"},{"line_number":270,"context_line":"            except ValueError:"},{"line_number":271,"context_line":"                raise exceptions.CommandError("},{"line_number":272,"context_line":"                        \"malformed new values (field\u003dnewvalue): %s\" % kv)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        data[\u0027network\u0027][\u0027id\u0027] \u003d parsed_args.net_id"},{"line_number":275,"context_line":"        quantum_client.update_network(parsed_args.net_id, data)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXI%3D","line":272,"updated":"2012-06-10 00:26:31.000000000","message":"this logic is probably similar for all update_* methods, could we separate it out into a helper so others don\u0027t need to rewrite it?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                data[\u0027network\u0027][k] \u003d v"},{"line_number":270,"context_line":"            except ValueError:"},{"line_number":271,"context_line":"                raise exceptions.CommandError("},{"line_number":272,"context_line":"                        \"malformed new values (field\u003dnewvalue): %s\" % kv)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        data[\u0027network\u0027][\u0027id\u0027] \u003d parsed_args.net_id"},{"line_number":275,"context_line":"        quantum_client.update_network(parsed_args.net_id, data)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUA%3D","line":272,"in_reply_to":"AAAAIX%2F%2F%2FXI%3D","updated":"2012-06-10 09:58:25.000000000","message":"I will clean up commands for 1.1, 2.0 api\u0027s commands are clearer and cleaner.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v1_1/port.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 17, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: root"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55A%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"}],"quantumclient/quantum/v2_0/__init__.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"    if strbool is None:"},{"line_number":31,"context_line":"        return None"},{"line_number":32,"context_line":"    else:"},{"line_number":33,"context_line":"        return strbool.lower() \u003d\u003d \u0027true\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def add_show_list_common_argument(parser):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXE%3D","line":33,"updated":"2012-06-10 00:26:31.000000000","message":"maybe put this in existing utils file?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    if strbool is None:"},{"line_number":31,"context_line":"        return None"},{"line_number":32,"context_line":"    else:"},{"line_number":33,"context_line":"        return strbool.lower() \u003d\u003d \u0027true\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def add_show_list_common_argument(parser):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUU%3D","line":33,"in_reply_to":"AAAAIX%2F%2F%2FXE%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def add_show_list_common_argument(parser):"},{"line_number":37,"context_line":"    parser.add_argument("},{"line_number":38,"context_line":"        \u0027-D\u0027, \u0027--show-details\u0027,"},{"line_number":39,"context_line":"        help\u003d\u0027show detailed info\u0027,"},{"line_number":40,"context_line":"        action\u003d\u0027store_true\u0027,"},{"line_number":41,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FXA%3D","line":38,"updated":"2012-06-10 00:26:31.000000000","message":"v2 api doesn\u0027t have \"details\" views like 1.1.  It has \"verbose\" mode, which means that, for example, if you query a network, the subnets belonging to that network will be populated.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"        _value \u003d getattr(_args, _opt.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":122,"context_line":"        if _value is not None:"},{"line_number":123,"context_line":"            result_dict.update({_opt: _value})"},{"line_number":124,"context_line":"    return result_dict"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class QuantumCommand(command.OpenStackCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FW8%3D","line":124,"updated":"2012-06-10 00:26:31.000000000","message":"seems like this too could go in a utils.py file.\n\ncan you add a doc string describing what this method does?  Its much less obvious than the rest of the code here :)","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"        _value \u003d getattr(_args, _opt.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":122,"context_line":"        if _value is not None:"},{"line_number":123,"context_line":"            result_dict.update({_opt: _value})"},{"line_number":124,"context_line":"    return result_dict"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class QuantumCommand(command.OpenStackCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGg%3D","line":124,"in_reply_to":"AAAAIX%2F%2F%2FUY%3D","updated":"2012-06-13 01:47:14.000000000","message":"I was thinking people adding their own commands (e.g., security groups) or another version in the future might use it, but I\u0027m ok keeping it here if you think that\u0027s fine.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        _value \u003d getattr(_args, _opt.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":122,"context_line":"        if _value is not None:"},{"line_number":123,"context_line":"            result_dict.update({_opt: _value})"},{"line_number":124,"context_line":"    return result_dict"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class QuantumCommand(command.OpenStackCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUY%3D","line":124,"in_reply_to":"AAAAIX%2F%2F%2FW8%3D","updated":"2012-06-10 09:58:25.000000000","message":"It is used to analyse the extra command option to command.\nOur command has known options and arguments. we also support user to put more options to the end of command line. This function should not be used by others, so I think no need to put it into utils.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":137,"context_line":"            choices\u003d[\u0027json\u0027, \u0027xml\u0027, ],"},{"line_number":138,"context_line":"            )"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return parser"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class CreateCommand(QuantumCommand, show.ShowOne):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FW4%3D","line":140,"updated":"2012-06-10 00:26:31.000000000","message":"Is this class duplicated from the v1 code?  Ideally, we\u0027d only have it in one place.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            choices\u003d[\u0027json\u0027, \u0027xml\u0027, ],"},{"line_number":138,"context_line":"            )"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return parser"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class CreateCommand(QuantumCommand, show.ShowOne):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUQ%3D","line":140,"in_reply_to":"AAAAIX%2F%2F%2FW4%3D","updated":"2012-06-10 09:58:25.000000000","message":"Part of it. In addition, I want to isolate the 1.1 and 2.0 commands. command.OpenStackCommand is one borrowed from python-openstackclient because someday, we will put these commands there.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    \"\"\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":149,"context_line":"    resource \u003d None"},{"line_number":150,"context_line":"    log \u003d None"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWw%3D","line":148,"updated":"2012-06-10 00:26:31.000000000","message":"I like that these are generic methods for network/subnet/port... but i\u0027m curious why \u0027api\u0027 is always \u0027network\u0027?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    \"\"\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":149,"context_line":"    resource \u003d None"},{"line_number":150,"context_line":"    log \u003d None"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGc%3D","line":148,"in_reply_to":"AAAAIX%2F%2F%2FUM%3D","updated":"2012-06-13 01:47:14.000000000","message":"ok, that explains why it is \u0027network\u0027 even when we\u0027re dealing with \u0027ports\u0027 or subnets :)","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    \"\"\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":149,"context_line":"    resource \u003d None"},{"line_number":150,"context_line":"    log \u003d None"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUM%3D","line":148,"in_reply_to":"AAAAIX%2F%2F%2FWw%3D","updated":"2012-06-10 09:58:25.000000000","message":"This is to be compatible with python-openstackclient, where we have identity and compute apis and so on.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":153,"context_line":"        parser \u003d super(CreateCommand, self).get_parser(prog_name)"},{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027--tenant-id\u0027, metavar\u003d\u0027tenant-id\u0027,"},{"line_number":156,"context_line":"            help\u003d_(\u0027the owner tenant ID\u0027),"},{"line_number":157,"context_line":"            )"},{"line_number":158,"context_line":"        self.add_known_arguments(parser)"},{"line_number":159,"context_line":"        add_extra_argument(parser, \u0027value_specs\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FW0%3D","line":156,"updated":"2012-06-10 00:26:31.000000000","message":"note: in v2, the common case is that the tenant-id of a resource will be the tenant-id from keystone.  Only admin users will be able to specify a tenant-id with a request.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":153,"context_line":"        parser \u003d super(CreateCommand, self).get_parser(prog_name)"},{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027--tenant-id\u0027, metavar\u003d\u0027tenant-id\u0027,"},{"line_number":156,"context_line":"            help\u003d_(\u0027the owner tenant ID\u0027),"},{"line_number":157,"context_line":"            )"},{"line_number":158,"context_line":"        self.add_known_arguments(parser)"},{"line_number":159,"context_line":"        add_extra_argument(parser, \u0027value_specs\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGY%3D","line":156,"in_reply_to":"AAAAIX%2F%2F%2FUI%3D","updated":"2012-06-13 01:47:14.000000000","message":"agreed.  I thought that not specifying a default meant it was required, but I guess not.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        parser \u003d super(CreateCommand, self).get_parser(prog_name)"},{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027--tenant-id\u0027, metavar\u003d\u0027tenant-id\u0027,"},{"line_number":156,"context_line":"            help\u003d_(\u0027the owner tenant ID\u0027),"},{"line_number":157,"context_line":"            )"},{"line_number":158,"context_line":"        self.add_known_arguments(parser)"},{"line_number":159,"context_line":"        add_extra_argument(parser, \u0027value_specs\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUI%3D","line":156,"in_reply_to":"AAAAIX%2F%2F%2FW0%3D","updated":"2012-06-10 09:58:25.000000000","message":"Yes. So I put it as an optional argument. Admin user can use this argument to create network belonging to others.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v2_0/network.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":"class ListNetwork(ListCommand):"},{"line_number":35,"context_line":"    \"\"\"List networks that belong to a given tenant"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    Sample: list_nets -D -- --name\u003dtest4 --tag a b"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWs%3D","line":37,"updated":"2012-06-10 00:26:31.000000000","message":"I prefer dashes over underscores.  It is also more consistent with nova and other openstack CLIs. \n\nWe should also figure out whether verb-noun (list-net) or noun-verb (net-list) is more consist with the other projects (I believe nova is noun-verb, for example, \"nova image-list\"), though the existing CLI is somewhat inconsistent.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":"class ListNetwork(ListCommand):"},{"line_number":35,"context_line":"    \"\"\"List networks that belong to a given tenant"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    Sample: list_nets -D -- --name\u003dtest4 --tag a b"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGQ%3D","line":37,"in_reply_to":"AAAAIX%2F%2F%2FUw%3D","updated":"2012-06-13 01:47:14.000000000","message":"I\u0027m fine with whatever we think will be most consistent with other projects moving forward.  If the CLI style gods for openstack have said \"verb-noun\", let\u0027s go with that.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class ListNetwork(ListCommand):"},{"line_number":35,"context_line":"    \"\"\"List networks that belong to a given tenant"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    Sample: list_nets -D -- --name\u003dtest4 --tag a b"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUw%3D","line":37,"in_reply_to":"AAAAIX%2F%2F%2FWs%3D","updated":"2012-06-10 09:58:25.000000000","message":"ok. I am just using the name convention of  1.1. Do you thing we should use noun-verb version? python-openstackclient is adopting verb-noun format.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":93,"context_line":"class UpdateNetwork(UpdateCommand):"},{"line_number":94,"context_line":"    \"\"\"Update network\u0027s information"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Sample: update_net \u003cnetwork_id\u003e --name\u003dtest --admin_state_up type\u003dbool True"},{"line_number":97,"context_line":"    \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UpdateNetwork\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWk%3D","line":96,"updated":"2012-06-10 00:26:31.000000000","message":"is this example out of date? I don\u0027t see --admin_state_up as a defined argument anymore.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":93,"context_line":"class UpdateNetwork(UpdateCommand):"},{"line_number":94,"context_line":"    \"\"\"Update network\u0027s information"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Sample: update_net \u003cnetwork_id\u003e --name\u003dtest --admin_state_up type\u003dbool True"},{"line_number":97,"context_line":"    \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UpdateNetwork\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGE%3D","line":96,"in_reply_to":"AAAAIX%2F%2F%2FU4%3D","updated":"2012-06-13 01:47:14.000000000","message":"I see, that\u0027s cool.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"class UpdateNetwork(UpdateCommand):"},{"line_number":94,"context_line":"    \"\"\"Update network\u0027s information"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Sample: update_net \u003cnetwork_id\u003e --name\u003dtest --admin_state_up type\u003dbool True"},{"line_number":97,"context_line":"    \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UpdateNetwork\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FU4%3D","line":96,"in_reply_to":"AAAAIX%2F%2F%2FWk%3D","updated":"2012-06-10 09:58:25.000000000","message":"As cli, we can put any information into the request body. It is up to server side to get needed value from it.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \"\"\"Update network\u0027s information"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Sample: update_net \u003cnetwork_id\u003e --name\u003dtest --admin_state_up type\u003dbool True"},{"line_number":97,"context_line":"    \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UpdateNetwork\u0027)"},{"line_number":100,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWg%3D","line":97,"updated":"2012-06-10 00:26:31.000000000","message":"also, we\u0027re removing tags from the v2 draft.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \"\"\"Update network\u0027s information"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Sample: update_net \u003cnetwork_id\u003e --name\u003dtest --admin_state_up type\u003dbool True"},{"line_number":97,"context_line":"    \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UpdateNetwork\u0027)"},{"line_number":100,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGI%3D","line":97,"in_reply_to":"AAAAIX%2F%2F%2FU0%3D","updated":"2012-06-13 01:47:14.000000000","message":"sorry, I must have been tired.  Perhaps I was referring to the tag in the CreateNetwork and ListNetwork examples above?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \"\"\"Update network\u0027s information"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Sample: update_net \u003cnetwork_id\u003e --name\u003dtest --admin_state_up type\u003dbool True"},{"line_number":97,"context_line":"    \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UpdateNetwork\u0027)"},{"line_number":100,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FU0%3D","line":97,"in_reply_to":"AAAAIX%2F%2F%2FWg%3D","updated":"2012-06-10 09:58:25.000000000","message":"This is not tag, These are fileds and their values cli put into request body. Cli can put any information into request body.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v2_0/port.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \"\"\"Create a port for a given tenant"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    Sample create_port --tenant-id xxx --admin-state-down \\"},{"line_number":59,"context_line":"    --op-status DOWN \u003cnetwork_id\u003e \u003cmac_address\u003e \u003cdevice_uuid\u003e"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWc%3D","line":59,"updated":"2012-06-10 00:26:31.000000000","message":"op_status (now renamed to \u0027status\u0027) is actually read-only.\n\nI have review for the v2 API to enforce this.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \"\"\"Create a port for a given tenant"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    Sample create_port --tenant-id xxx --admin-state-down \\"},{"line_number":59,"context_line":"    --op-status DOWN \u003cnetwork_id\u003e \u003cmac_address\u003e \u003cdevice_uuid\u003e"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUs%3D","line":59,"in_reply_to":"AAAAIX%2F%2F%2FWc%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":81,"context_line":"            help\u003d\u0027mac address of port\u0027)"},{"line_number":82,"context_line":"        parser.add_argument("},{"line_number":83,"context_line":"            \u0027device_id\u0027,"},{"line_number":84,"context_line":"            help\u003d\u0027device id of this port\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def args2body(self, parsed_args):"},{"line_number":87,"context_line":"        body \u003d {\u0027port\u0027: {\u0027admin_state_up\u0027: parsed_args.admin_state_down,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWU%3D","line":84,"updated":"2012-06-10 00:26:31.000000000","message":"will need to add a few new args, but this is a good start :)","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            help\u003d\u0027mac address of port\u0027)"},{"line_number":82,"context_line":"        parser.add_argument("},{"line_number":83,"context_line":"            \u0027device_id\u0027,"},{"line_number":84,"context_line":"            help\u003d\u0027device id of this port\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def args2body(self, parsed_args):"},{"line_number":87,"context_line":"        body \u003d {\u0027port\u0027: {\u0027admin_state_up\u0027: parsed_args.admin_state_down,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUo%3D","line":84,"in_reply_to":"AAAAIX%2F%2F%2FWU%3D","updated":"2012-06-10 09:58:25.000000000","message":"in fact, our new cli is flexible. user can add more args when it is running the command. These arguments are just known.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":88,"context_line":"                         \u0027op_status\u0027: parsed_args.op_status,"},{"line_number":89,"context_line":"                         \u0027network_id\u0027: parsed_args.network_id,"},{"line_number":90,"context_line":"                         \u0027mac_address\u0027: parsed_args.mac_address,"},{"line_number":91,"context_line":"                         \u0027device_id\u0027: parsed_args.device_id,"},{"line_number":92,"context_line":"                        },"},{"line_number":93,"context_line":"               }"},{"line_number":94,"context_line":"        if parsed_args.tenant_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWY%3D","line":91,"updated":"2012-06-10 00:26:31.000000000","message":"all values except network_id here are optional.  See: http://wiki.openstack.org/QuantumV2APIIntro","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                         \u0027op_status\u0027: parsed_args.op_status,"},{"line_number":89,"context_line":"                         \u0027network_id\u0027: parsed_args.network_id,"},{"line_number":90,"context_line":"                         \u0027mac_address\u0027: parsed_args.mac_address,"},{"line_number":91,"context_line":"                         \u0027device_id\u0027: parsed_args.device_id,"},{"line_number":92,"context_line":"                        },"},{"line_number":93,"context_line":"               }"},{"line_number":94,"context_line":"        if parsed_args.tenant_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUk%3D","line":91,"in_reply_to":"AAAAIX%2F%2F%2FWY%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/quantum/v2_0/subnet.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \u0027network_id\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027Network id of this subnet belongs to\u0027)"},{"line_number":65,"context_line":"        parser.add_argument("},{"line_number":66,"context_line":"            \u0027prefix\u0027, metavar\u003d\u0027prefix\u0027,"},{"line_number":67,"context_line":"            help\u003d\u0027prefix of subnet to create\u0027)"},{"line_number":68,"context_line":"        parser.add_argument("},{"line_number":69,"context_line":"            \u0027gateway\u0027, metavar\u003d\u0027gateway\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWQ%3D","line":66,"updated":"2012-06-10 00:26:31.000000000","message":"we renamed this to cidr.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \u0027network_id\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027Network id of this subnet belongs to\u0027)"},{"line_number":65,"context_line":"        parser.add_argument("},{"line_number":66,"context_line":"            \u0027prefix\u0027, metavar\u003d\u0027prefix\u0027,"},{"line_number":67,"context_line":"            help\u003d\u0027prefix of subnet to create\u0027)"},{"line_number":68,"context_line":"        parser.add_argument("},{"line_number":69,"context_line":"            \u0027gateway\u0027, metavar\u003d\u0027gateway\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUg%3D","line":66,"in_reply_to":"AAAAIX%2F%2F%2FWQ%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"        body \u003d {\u0027subnet\u0027: {\u0027prefix\u0027: parsed_args.prefix,"},{"line_number":74,"context_line":"                           \u0027network_id\u0027: parsed_args.network_id,"},{"line_number":75,"context_line":"                           \u0027ip_version\u0027: parsed_args.ip_version,"},{"line_number":76,"context_line":"                           \u0027gateway_ip\u0027: parsed_args.gateway,"},{"line_number":77,"context_line":"                           },"},{"line_number":78,"context_line":"               }"},{"line_number":79,"context_line":"        if parsed_args.tenant_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWM%3D","line":76,"updated":"2012-06-10 00:26:31.000000000","message":"gateway is optional","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        body \u003d {\u0027subnet\u0027: {\u0027prefix\u0027: parsed_args.prefix,"},{"line_number":74,"context_line":"                           \u0027network_id\u0027: parsed_args.network_id,"},{"line_number":75,"context_line":"                           \u0027ip_version\u0027: parsed_args.ip_version,"},{"line_number":76,"context_line":"                           \u0027gateway_ip\u0027: parsed_args.gateway,"},{"line_number":77,"context_line":"                           },"},{"line_number":78,"context_line":"               }"},{"line_number":79,"context_line":"        if parsed_args.tenant_id:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FUc%3D","line":76,"in_reply_to":"AAAAIX%2F%2F%2FWM%3D","updated":"2012-06-10 09:58:25.000000000","message":"Done","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/shell.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"gettext.install(\u0027quantum\u0027, unicode\u003d1)"},{"line_number":38,"context_line":"VERSION \u003d \u00272.0\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def env(*vars, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWE%3D","line":38,"updated":"2012-06-10 00:26:31.000000000","message":"it seems like this is referring to the CLI version, not the API version, is that correct?  If so, we should use the same version convention (i.e., 2012.2dev) and file for storing the version info as quantum server (i.e., quantum/version.py).","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"gettext.install(\u0027quantum\u0027, unicode\u003d1)"},{"line_number":38,"context_line":"VERSION \u003d \u00272.0\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def env(*vars, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BGA%3D","line":38,"in_reply_to":"AAAAIX%2F%2F%2FU8%3D","updated":"2012-06-13 01:47:14.000000000","message":"from a discussion at today\u0027s PPB meeting, it sounds like we\u0027re potentially decoupling server + client versions anyway, so you may be in luck :)","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"gettext.install(\u0027quantum\u0027, unicode\u003d1)"},{"line_number":38,"context_line":"VERSION \u003d \u00272.0\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def env(*vars, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FU8%3D","line":38,"in_reply_to":"AAAAIX%2F%2F%2FWE%3D","updated":"2012-06-10 09:58:25.000000000","message":"Yes, it is CLI version. I prefer to use a const to save the version.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":"            \u0027delete_port\u0027: utils.import_class("},{"line_number":112,"context_line":"                    \u0027quantumclient.quantum.v2_0.port.DeletePort\u0027),"},{"line_number":113,"context_line":"            \u0027update_port\u0027: utils.import_class("},{"line_number":114,"context_line":"                    \u0027quantumclient.quantum.v2_0.port.UpdatePort\u0027),"},{"line_number":115,"context_line":"              }"},{"line_number":116,"context_line":"COMMANDS \u003d {\u00271.0\u0027: COMMAND_V1,"},{"line_number":117,"context_line":"            \u00271.1\u0027: COMMAND_V1,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWA%3D","line":114,"updated":"2012-06-10 00:26:31.000000000","message":"Is the expectation that for extensions that implement new functionality (e.g., security groups), they will be added to this dictionary?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            \u0027delete_port\u0027: utils.import_class("},{"line_number":112,"context_line":"                    \u0027quantumclient.quantum.v2_0.port.DeletePort\u0027),"},{"line_number":113,"context_line":"            \u0027update_port\u0027: utils.import_class("},{"line_number":114,"context_line":"                    \u0027quantumclient.quantum.v2_0.port.UpdatePort\u0027),"},{"line_number":115,"context_line":"              }"},{"line_number":116,"context_line":"COMMANDS \u003d {\u00271.0\u0027: COMMAND_V1,"},{"line_number":117,"context_line":"            \u00271.1\u0027: COMMAND_V1,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BEU%3D","line":114,"in_reply_to":"AAAAIX%2F%2F%2FWA%3D","updated":"2012-06-13 03:26:00.000000000","message":"Yes.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":348,"context_line":"        apiVersion \u003d env(\u0027OS_QUANTUM_API_VERSION\u0027, default\u003d\u00272.0\u0027)"},{"line_number":349,"context_line":"    try:"},{"line_number":350,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":351,"context_line":"            setattr(itertools, \u0027compress\u0027, itertools_compressdef)"},{"line_number":352,"context_line":"        return QuantumShell(apiVersion).run(argv)"},{"line_number":353,"context_line":"    except exc.QuantumClientException:"},{"line_number":354,"context_line":"        return 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FWI%3D","line":351,"updated":"2012-06-10 00:26:31.000000000","message":"maybe have this logic outside of main up where itertools_compressdef is defined?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/tests/unit/test_cli.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def tearDown(self):"},{"line_number":64,"context_line":"        \"\"\"Clear the test environment\"\"\""},{"line_number":65,"context_line":"        db.clear_db()"},{"line_number":66,"context_line":"        sys.stdout \u003d sys.__stdout__"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FV4%3D","line":66,"updated":"2012-06-10 00:26:31.000000000","message":"i\u0027m guessing test cases will have significant differences between v1.1 and v2.0 ... is ClientCases logic being extracted to a different file with the goal of sharing them across both?","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def tearDown(self):"},{"line_number":64,"context_line":"        \"\"\"Clear the test environment\"\"\""},{"line_number":65,"context_line":"        db.clear_db()"},{"line_number":66,"context_line":"        sys.stdout \u003d sys.__stdout__"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2FVA%3D","line":66,"in_reply_to":"AAAAIX%2F%2F%2FV4%3D","updated":"2012-06-10 09:58:25.000000000","message":"Hi, I redo the test cases in a newer patch.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def tearDown(self):"},{"line_number":64,"context_line":"        \"\"\"Clear the test environment\"\"\""},{"line_number":65,"context_line":"        db.clear_db()"},{"line_number":66,"context_line":"        sys.stdout \u003d sys.__stdout__"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAIX%2F%2F%2BF8%3D","line":66,"in_reply_to":"AAAAIX%2F%2F%2FVA%3D","updated":"2012-06-13 01:47:14.000000000","message":"ok","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}],"quantumclient/tests/unit/test_cli20.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 19, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: Yong Sheng Gong"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F548%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"}],"quantumclient/tests/unit/testcases.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 19, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: root"},{"line_number":5,"context_line":"\u0027\u0027\u0027"},{"line_number":6,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55k%3D","line":3,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 19, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: root"},{"line_number":5,"context_line":"\u0027\u0027\u0027"},{"line_number":6,"context_line":"import logging"},{"line_number":7,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55g%3D","line":4,"updated":"2012-05-20 05:07:35.000000000","message":"I think that you can and should add your name - this is what I see in other files in the project.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"}],"quantumclient/v2_0/client.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u0027\u0027\u0027"},{"line_number":2,"context_line":"Created on May 16, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: Yong Sheng Gong"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F544%3D","line":1,"updated":"2012-05-20 05:07:35.000000000","message":"Please add OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Created on May 16, 2012"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"@author: Yong Sheng Gong"},{"line_number":5,"context_line":"\u0027\u0027\u0027"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"import httplib"},{"line_number":8,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55w%3D","line":5,"updated":"2012-05-20 05:07:35.000000000","message":"Please add the relevant OpenStack license header.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027RequestedStateInvalid\u0027: exceptions.StateInvalidClient,"},{"line_number":35,"context_line":"        \u0027PortInUse\u0027: exceptions.PortInUseClient,"},{"line_number":36,"context_line":"        \u0027AlreadyAttached\u0027: exceptions.AlreadyAttachedClient,"},{"line_number":37,"context_line":"        }"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    error_dict \u003d None"},{"line_number":40,"context_line":"    if isinstance(error_content, dict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55s%3D","line":37,"updated":"2012-05-20 05:07:35.000000000","message":"Should this also include invalid input?","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027RequestedStateInvalid\u0027: exceptions.StateInvalidClient,"},{"line_number":35,"context_line":"        \u0027PortInUse\u0027: exceptions.PortInUseClient,"},{"line_number":36,"context_line":"        \u0027AlreadyAttached\u0027: exceptions.AlreadyAttachedClient,"},{"line_number":37,"context_line":"        }"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    error_dict \u003d None"},{"line_number":40,"context_line":"    if isinstance(error_content, dict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F54E%3D","line":37,"in_reply_to":"AAAAHX%2F%2F55s%3D","updated":"2012-05-20 08:19:01.000000000","message":"If I get what you are meaning here, the invalid command input will be dealt with cliff frame itself.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa9466131390f80e9017a13324cc5ed527c64ad7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def __init__(self, **kwargs):"},{"line_number":97,"context_line":"        \"\"\" Initialize a new client for the Quantum v2.0 API. \"\"\""},{"line_number":98,"context_line":"        self.httpclient \u003d HTTPClient(**kwargs)"},{"line_number":99,"context_line":"        self.version \u003d \u00271.1\u0027  # wait for 2.0 API"},{"line_number":100,"context_line":"        super(Client, self).__init__(format\u003d\u0027xml\u0027, version\u003dself.version)"},{"line_number":101,"context_line":"        self.httpclient.content_type \u003d self.content_type()"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F55o%3D","line":99,"updated":"2012-05-20 05:07:35.000000000","message":"This may be a bit confusing. What not say \u00272.0 alpha\"?","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def __init__(self, **kwargs):"},{"line_number":97,"context_line":"        \"\"\" Initialize a new client for the Quantum v2.0 API. \"\"\""},{"line_number":98,"context_line":"        self.httpclient \u003d HTTPClient(**kwargs)"},{"line_number":99,"context_line":"        self.version \u003d \u00271.1\u0027  # wait for 2.0 API"},{"line_number":100,"context_line":"        super(Client, self).__init__(format\u003d\u0027xml\u0027, version\u003dself.version)"},{"line_number":101,"context_line":"        self.httpclient.content_type \u003d self.content_type()"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F54A%3D","line":99,"in_reply_to":"AAAAHX%2F%2F55o%3D","updated":"2012-05-20 08:19:01.000000000","message":"Our v1.1 server is on http://xx:port/v1.1/tenants path. So for testing I cannot write others before we have v2.0 API.","commit_id":"c815b8a1e7c6edf224e0d96eedd82cf489a32b19"}],"tools/pip-requires":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":2,"context_line":"argparse"},{"line_number":3,"context_line":"httplib2"},{"line_number":4,"context_line":"prettytable"},{"line_number":5,"context_line":"simplejson"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAIX%2F%2F%2FXs%3D","line":5,"updated":"2012-06-10 00:26:31.000000000","message":"In some cases, the jenkins tests are failing to find cliff, argparse, and httplib2, even though they are specified here.  I\u0027m not sure why, we may need to to talk to the CI folks about why.\n\nSee bottom of: https://jenkins.openstack.org/job/gate-python-quantumclient-python26/33/console","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":2,"context_line":"argparse"},{"line_number":3,"context_line":"httplib2"},{"line_number":4,"context_line":"prettytable"},{"line_number":5,"context_line":"simplejson"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAIX%2F%2F%2BF4%3D","line":5,"in_reply_to":"AAAAIX%2F%2F%2FVE%3D","updated":"2012-06-13 01:47:14.000000000","message":"I think jenkins installs both pip-requires and test-requires... test-requires is just for things that are ONLY needed for testing.  Anyway, would be great if you can look into this.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d730216a83de8225624890f03967db3309c9c1c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"argparse"},{"line_number":3,"context_line":"httplib2"},{"line_number":4,"context_line":"prettytable"},{"line_number":5,"context_line":"simplejson"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAIX%2F%2F%2FVE%3D","line":5,"in_reply_to":"AAAAIX%2F%2F%2FXs%3D","updated":"2012-06-10 09:58:25.000000000","message":"I think it is because I have not included them in test-requires.","commit_id":"e657c78ce1a5db26a30ac47cb7c148447cf0aab8"}]}
