)]}'
{"bin/quantum-dhcp-agent-dnsmasq-lease-update":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import sys"},{"line_number":20,"context_line":"sys.path.insert(0, \u0027/home/gongysh/git/quantum\u0027)"},{"line_number":21,"context_line":"from quantum.agent.linux import dhcp"},{"line_number":22,"context_line":"dhcp.Dnsmasq.lease_update()"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAMH%2F%2F1Ww%3D","line":20,"updated":"2012-11-20 20:48:31.000000000","message":"Oops.  Hard coded path.  Please remove these changes.","commit_id":"4f3d204d38bef673d095578492e999ed6070ac92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import sys"},{"line_number":20,"context_line":"sys.path.insert(0, \u0027/home/gongysh/git/quantum\u0027)"},{"line_number":21,"context_line":"from quantum.agent.linux import dhcp"},{"line_number":22,"context_line":"dhcp.Dnsmasq.lease_update()"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAMH%2F%2F1E8%3D","line":20,"in_reply_to":"AAAAMH%2F%2F1Ww%3D","updated":"2012-11-20 23:27:43.000000000","message":"sorry for that, It is because ...","commit_id":"4f3d204d38bef673d095578492e999ed6070ac92"}],"bin/quantum-netns-cleanup":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"sys.path.insert(0, \u0027/home/gongysh/git/quantum\u0027)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.agent.netns_cleanup_util import main"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAMH%2F%2F1Wo%3D","line":18,"updated":"2012-11-20 20:48:31.000000000","message":"Hard coded path.  Please remove these changes.","commit_id":"4f3d204d38bef673d095578492e999ed6070ac92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"sys.path.insert(0, \u0027/home/gongysh/git/quantum\u0027)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.agent.netns_cleanup_util import main"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAMH%2F%2F1E0%3D","line":18,"in_reply_to":"AAAAMH%2F%2F1Wo%3D","updated":"2012-11-20 23:27:43.000000000","message":"sorry for that, It is because ...","commit_id":"4f3d204d38bef673d095578492e999ed6070ac92"}],"quantum/context.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"78081e6790b80fbe1bc29ecc5879bf6976f702e0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                      is_admin\u003dis_admin)"},{"line_number":51,"context_line":"        self.user_id \u003d user_id"},{"line_number":52,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":53,"context_line":"        self.project_id \u003d tenant_id"},{"line_number":54,"context_line":"        self.roles \u003d roles or []"},{"line_number":55,"context_line":"        if self.is_admin is None:"},{"line_number":56,"context_line":"            self.is_admin \u003d \u0027admin\u0027 in [x.lower() for x in self.roles]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2Ft1k%3D","line":53,"updated":"2012-11-10 18:23:57.000000000","message":"Have you considered redefining get_attr in a way that would return tenant_id value when asking for project_id?","commit_id":"5c9478d9d1cf33aab42d445c3f20db86cc41de8f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                      is_admin\u003dis_admin)"},{"line_number":51,"context_line":"        self.user_id \u003d user_id"},{"line_number":52,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":53,"context_line":"        self.project_id \u003d tenant_id"},{"line_number":54,"context_line":"        self.roles \u003d roles or []"},{"line_number":55,"context_line":"        if self.is_admin is None:"},{"line_number":56,"context_line":"            self.is_admin \u003d \u0027admin\u0027 in [x.lower() for x in self.roles]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F%2F9A%3D","line":53,"in_reply_to":"AAAALn%2F%2Ft1k%3D","updated":"2012-11-12 01:35:22.000000000","message":"I will try to do it.","commit_id":"5c9478d9d1cf33aab42d445c3f20db86cc41de8f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @tenant_id.setter"},{"line_number":71,"context_line":"    def tenant_id(self, tenant_id):"},{"line_number":72,"context_line":"        self.tenant \u003d tenant_id"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @property"},{"line_number":75,"context_line":"    def user_id(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F33k%3D","line":72,"updated":"2012-11-19 10:01:51.000000000","message":"self.tenant for storing tenant_id is a bit confusing.\nI understand why you are using properties, but I would have probably just called the internal variable \u0027_tenant_id\u0027 rather than \u0027tenant\u0027.\n\nIs this something you might reconsider?","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @tenant_id.setter"},{"line_number":71,"context_line":"    def tenant_id(self, tenant_id):"},{"line_number":72,"context_line":"        self.tenant \u003d tenant_id"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @property"},{"line_number":75,"context_line":"    def user_id(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F30I%3D","line":72,"in_reply_to":"AAAAMH%2F%2F32E%3D","updated":"2012-11-19 11:25:52.000000000","message":"ok, so never mind.\nWe are entering the uglyness of having to adapt common code to suit the fact that quantum.context has a different interface.\n\nAs context.tenant_id is used throughout the code, there little we can do about it. A recatoring is possible, but definitely not in this patch.","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @tenant_id.setter"},{"line_number":71,"context_line":"    def tenant_id(self, tenant_id):"},{"line_number":72,"context_line":"        self.tenant \u003d tenant_id"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @property"},{"line_number":75,"context_line":"    def user_id(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F32E%3D","line":72,"in_reply_to":"AAAAMH%2F%2F33k%3D","updated":"2012-11-19 10:40:37.000000000","message":"self.tenant is saved by base class.(openstack-common/context)","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def to_dict(self):"},{"line_number":104,"context_line":"        return {\u0027user_id\u0027: self.user_id,"},{"line_number":105,"context_line":"                \u0027tenant_id\u0027: self.tenant_id,"},{"line_number":106,"context_line":"                \u0027project_id\u0027: self.project_id,"},{"line_number":107,"context_line":"                \u0027is_admin\u0027: self.is_admin,"},{"line_number":108,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F33c%3D","line":105,"updated":"2012-11-19 10:01:51.000000000","message":"Using the internal name here would probably be more efficient (no big deal anyway)","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def to_dict(self):"},{"line_number":104,"context_line":"        return {\u0027user_id\u0027: self.user_id,"},{"line_number":105,"context_line":"                \u0027tenant_id\u0027: self.tenant_id,"},{"line_number":106,"context_line":"                \u0027project_id\u0027: self.project_id,"},{"line_number":107,"context_line":"                \u0027is_admin\u0027: self.is_admin,"},{"line_number":108,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F3z8%3D","line":105,"in_reply_to":"AAAAMH%2F%2F318%3D","updated":"2012-11-19 11:25:52.000000000","message":"You wouldn\u0027t modify it anyway since it come from the superclass. Anyway, this is more readable probably.","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def to_dict(self):"},{"line_number":104,"context_line":"        return {\u0027user_id\u0027: self.user_id,"},{"line_number":105,"context_line":"                \u0027tenant_id\u0027: self.tenant_id,"},{"line_number":106,"context_line":"                \u0027project_id\u0027: self.project_id,"},{"line_number":107,"context_line":"                \u0027is_admin\u0027: self.is_admin,"},{"line_number":108,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F318%3D","line":105,"in_reply_to":"AAAAMH%2F%2F33c%3D","updated":"2012-11-19 10:40:37.000000000","message":"To use the internal name will lose the property meaning. To use property here will enable us to modify the inner variable name easily.","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"}],"quantum/plugins/__init__.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 OpenStack, LLC."},{"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":6,"id":"AAAAMH%2F%2F3is%3D","line":1,"updated":"2012-11-19 15:56:14.000000000","message":"Consider moving this file to quantum.common.rpc.","commit_id":"773f0b3f7ae13c207d45d7361b6d501306310cfb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 OpenStack, LLC."},{"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":6,"id":"AAAAMH%2F%2F2sM%3D","line":1,"in_reply_to":"AAAAMH%2F%2F3is%3D","updated":"2012-11-19 23:05:16.000000000","message":"Done","commit_id":"773f0b3f7ae13c207d45d7361b6d501306310cfb"}],"quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"78081e6790b80fbe1bc29ecc5879bf6976f702e0","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.agent.linux import utils"},{"line_number":34,"context_line":"from quantum.agent import rpc as agent_rpc"},{"line_number":35,"context_line":"from quantum.common import config as logging_config"},{"line_number":36,"context_line":"from quantum.common import constants"},{"line_number":37,"context_line":"from quantum.common import topics"},{"line_number":38,"context_line":"from quantum.openstack.common import cfg"},{"line_number":39,"context_line":"from quantum.openstack.common import context"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2Ft1g%3D","side":"PARENT","line":36,"updated":"2012-11-10 18:23:57.000000000","message":"Unrelated, but justified","commit_id":"c89d71f14a45c63dbc9df259d7e39a85898d40f8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.agent.linux import utils"},{"line_number":34,"context_line":"from quantum.agent import rpc as agent_rpc"},{"line_number":35,"context_line":"from quantum.common import config as logging_config"},{"line_number":36,"context_line":"from quantum.common import constants"},{"line_number":37,"context_line":"from quantum.common import topics"},{"line_number":38,"context_line":"from quantum.openstack.common import cfg"},{"line_number":39,"context_line":"from quantum.openstack.common import context"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F%2F88%3D","side":"PARENT","line":36,"in_reply_to":"AAAALn%2F%2Ft1g%3D","updated":"2012-11-12 01:35:22.000000000","message":"what does u mean, how is it justified be here?","commit_id":"c89d71f14a45c63dbc9df259d7e39a85898d40f8"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.plugin_rpc \u003d agent_rpc.PluginApi(topics.PLUGIN)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        # RPC network init"},{"line_number":171,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":172,"context_line":"        # Handle updates from service"},{"line_number":173,"context_line":"        self.dispatcher \u003d self.create_rpc_dispatcher()"},{"line_number":174,"context_line":"        # Define the listening consumers for the agent"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F33Q%3D","line":171,"updated":"2012-11-19 10:01:51.000000000","message":"I think this is the point that Mark was worried about. (see comment on db access). This context has a session that, if configured with the appropriate sql connection, can give you direct access to the db","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.plugin_rpc \u003d agent_rpc.PluginApi(topics.PLUGIN)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        # RPC network init"},{"line_number":171,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":172,"context_line":"        # Handle updates from service"},{"line_number":173,"context_line":"        self.dispatcher \u003d self.create_rpc_dispatcher()"},{"line_number":174,"context_line":"        # Define the listening consumers for the agent"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F3zk%3D","line":171,"in_reply_to":"AAAAMH%2F%2F30g%3D","updated":"2012-11-19 11:25:52.000000000","message":"I don\u0027t think we want to modify quantum.context to have an \u0027agent\u0027 context. \nMy only point is that I do not deem this necessary, but I have not done enough testing to prove or disprove this thesis. I will do more tests in the afternoon; in the meanwhile if mark or any other reviewer approves, I am happy with the patch going in as it is.","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.plugin_rpc \u003d agent_rpc.PluginApi(topics.PLUGIN)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        # RPC network init"},{"line_number":171,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":172,"context_line":"        # Handle updates from service"},{"line_number":173,"context_line":"        self.dispatcher \u003d self.create_rpc_dispatcher()"},{"line_number":174,"context_line":"        # Define the listening consumers for the agent"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F30g%3D","line":171,"in_reply_to":"AAAAMH%2F%2F310%3D","updated":"2012-11-19 11:13:56.000000000","message":"How about to use a quantum context without session?","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.plugin_rpc \u003d agent_rpc.PluginApi(topics.PLUGIN)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        # RPC network init"},{"line_number":171,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":172,"context_line":"        # Handle updates from service"},{"line_number":173,"context_line":"        self.dispatcher \u003d self.create_rpc_dispatcher()"},{"line_number":174,"context_line":"        # Define the listening consumers for the agent"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F310%3D","line":171,"in_reply_to":"AAAAMH%2F%2F33Q%3D","updated":"2012-11-19 10:40:37.000000000","message":"to access db, we need correct setting, and then we also need db access codes written.","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"}],"quantum/tests/unit/test_quantum_comtext.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 Nicira, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F33w%3D","line":1,"updated":"2012-11-19 10:01:51.000000000","message":"The file name for this module has a typo \"comtext\"","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"1e53b2e60a3ae0274bd05fb6d2e065063dfa2ea3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 Nicira, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMH%2F%2F31w%3D","line":1,"in_reply_to":"AAAAMH%2F%2F33w%3D","updated":"2012-11-19 10:40:37.000000000","message":"Done","commit_id":"d77bc72ed9f3e75cab7c82037c64baf42f87616f"}]}
