)]}'
{"etc/nova/policy.json":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"0c97e23d33a31663b3e3c4bbf44f9339228c13f4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"true\" : [],"},{"line_number":3,"context_line":"    \"compute:create_instance\": [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":4,"context_line":"    \"compute:attach_network\":  [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":5,"context_line":"    \"compute:attach_volume\":   [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":6,"context_line":"    \"compute:list_instances\":  [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"}],"source_content_type":"application/json","patch_set":3,"id":"AAAADH%2F%2F%2BmE%3D","line":3,"updated":"2012-01-04 16:06:56.000000000","message":"Why project_id and not tenant_id here? Do we have to switch internally to tenant before we can do that?","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"99dccf3915163fe6c1da4d6cb8adf05766b63014","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"true\" : [],"},{"line_number":3,"context_line":"    \"compute:create_instance\": [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":4,"context_line":"    \"compute:attach_network\":  [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":5,"context_line":"    \"compute:attach_volume\":   [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":6,"context_line":"    \"compute:list_instances\":  [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"}],"source_content_type":"application/json","patch_set":3,"id":"AAAADX%2F%2F%2F6Q%3D","line":3,"in_reply_to":"AAAADH%2F%2F%2BmE%3D","updated":"2012-01-05 19:58:28.000000000","message":"yeah, even if project_id implies tenant_id, shouldn\u0027t we stop using project_id wherever possible?","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"3742f2fabbf43b545f7dfca69251cb14be794857","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"true\" : [],"},{"line_number":3,"context_line":"    \"compute:create_instance\": [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":4,"context_line":"    \"compute:attach_network\":  [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":5,"context_line":"    \"compute:attach_volume\":   [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"},{"line_number":6,"context_line":"    \"compute:list_instances\":  [[\"role:admin\"], [\"project_id:%(project_id)s\"]],"}],"source_content_type":"application/json","patch_set":3,"id":"AAAADX%2F%2F%2F5I%3D","line":3,"in_reply_to":"AAAADX%2F%2F%2F6Q%3D","updated":"2012-01-05 21:29:58.000000000","message":"in this case, the actual object is still has project_id as the name of the field, and the context object still contains project_id, so changing wouldn\u0027t work.  I think it is better to switch the entire code base over to tenant_id from project_id in e4 after we remove the deprecated auth code.","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"}],"nova/compute/api.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"0c97e23d33a31663b3e3c4bbf44f9339228c13f4","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        could be \u0027None\u0027 or a list of instance dicts depending on if"},{"line_number":549,"context_line":"        we waited for information from the scheduler or not."},{"line_number":550,"context_line":"        \"\"\""},{"line_number":551,"context_line":"        target \u003d {\u0027project_id\u0027: context.project_id,"},{"line_number":552,"context_line":"                  \u0027user_id\u0027: context.user_id,"},{"line_number":553,"context_line":"                  \u0027availability_zone\u0027: availability_zone}"},{"line_number":554,"context_line":"        policy.enforce(context, \"compute:create_instance\", target)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2BmA%3D","line":551,"updated":"2012-01-04 16:06:56.000000000","message":"This block of code seems rather large for what it\u0027s doing. Maybe we need a simpler approach for enforcing policy? I\u0027d hate to see these giant blocks added everywhere...","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"},{"author":{"_account_id":693,"name":"Christopher MacGown","email":"chris@pistoncloud.com","username":"0x44"},"change_message_id":"2f0702db15d92232e686baa5a75302130d446bba","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        if requested_networks:"},{"line_number":559,"context_line":"            for network in requested_networks:"},{"line_number":560,"context_line":"                # TODO(JMC): I realize this doesn\u0027t work for quantum nets yet."},{"line_number":561,"context_line":"                (net_id, _i) \u003d network"},{"line_number":562,"context_line":"                network_ref \u003d self.network_api.get(context, net_id)"},{"line_number":563,"context_line":"                policy.enforce(context, \"compute:attach_network\", instance)"},{"line_number":564,"context_line":"                policy.enforce(context, \"network:attach_network\", network_ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2BwQ%3D","line":561,"updated":"2012-01-04 04:05:56.000000000","message":"If you\u0027re not going to use _i, why don\u0027t you just make it _?","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"},{"author":{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},"change_message_id":"201d63a3296fab8ace0032a43acd75bcc6696c92","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        if requested_networks:"},{"line_number":559,"context_line":"            for network in requested_networks:"},{"line_number":560,"context_line":"                # TODO(JMC): I realize this doesn\u0027t work for quantum nets yet."},{"line_number":561,"context_line":"                (net_id, _i) \u003d network"},{"line_number":562,"context_line":"                network_ref \u003d self.network_api.get(context, net_id)"},{"line_number":563,"context_line":"                policy.enforce(context, \"compute:attach_network\", instance)"},{"line_number":564,"context_line":"                policy.enforce(context, \"network:attach_network\", network_ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2Bfk%3D","line":561,"in_reply_to":"AAAADH%2F%2F%2BwQ%3D","updated":"2012-01-04 18:05:46.000000000","message":"gettext conflict in that case sometimes with the _() function.","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"0c97e23d33a31663b3e3c4bbf44f9339228c13f4","unresolved":false,"context_lines":[{"line_number":559,"context_line":"            for network in requested_networks:"},{"line_number":560,"context_line":"                # TODO(JMC): I realize this doesn\u0027t work for quantum nets yet."},{"line_number":561,"context_line":"                (net_id, _i) \u003d network"},{"line_number":562,"context_line":"                network_ref \u003d self.network_api.get(context, net_id)"},{"line_number":563,"context_line":"                policy.enforce(context, \"compute:attach_network\", instance)"},{"line_number":564,"context_line":"                policy.enforce(context, \"network:attach_network\", network_ref)"},{"line_number":565,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2Bl8%3D","line":562,"updated":"2012-01-04 16:06:56.000000000","message":"This is adding a lot of overhead (the network api and volume api calls) to authorize this action. We need a less invasive way of doing this.","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"}],"nova/network/api.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"0c97e23d33a31663b3e3c4bbf44f9339228c13f4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"class API(base.Base):"},{"line_number":34,"context_line":"    \"\"\"API for interacting with the network manager.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def get(self, context, network_id):"},{"line_number":37,"context_line":"        \"\"\" Returns a network db model."},{"line_number":38,"context_line":"            Does *not* work for quantum defined nets."},{"line_number":39,"context_line":"            TODO(JMC)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2Bl4%3D","line":36,"updated":"2012-01-04 16:06:56.000000000","message":"Can you add a test for this new method?","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"},{"author":{"_account_id":693,"name":"Christopher MacGown","email":"chris@pistoncloud.com","username":"0x44"},"change_message_id":"2f0702db15d92232e686baa5a75302130d446bba","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            TODO(JMC)"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        rv \u003d self.db.network_get_by_uuid(context, network_id)"},{"line_number":42,"context_line":"        return dict(rv.iteritems())"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def get_floating_ip(self, context, id):"},{"line_number":45,"context_line":"        return rpc.call(context,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2BwM%3D","line":42,"updated":"2012-01-04 04:05:56.000000000","message":"This should be .items() to support 3.x.","commit_id":"2cfb1e87c466f27e59104e48b961ae7f6f6a5001"}]}
