)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2012-08-14 14:31:47 -0400"},{"line_number":4,"context_line":"Commit:     John Dunning \u003cjrd@jrd.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-08-16 22:18:16 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update rootwrap mechanism to track changes in nova/cinder"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"New config element pointing to dir full of filter specs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAALH%2F%2FtT4%3D","line":6,"updated":"2012-08-17 05:34:34.000000000","message":"Please take a look at: http://berrange.com/posts/2012/06/27/thoughts-on-improving-openstack-git-commit-practicehistory/\n\nYou should also add: Fixes bug 1037815\nThis links it to the bug in launchpad","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2012-08-20 16:04:30 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[PATCH] quantum: update rootwrap mechanism to track changes"},{"line_number":8,"context_line":"  in nova and cinder"},{"line_number":9,"context_line":"Fix https://bugs.launchpad.net/quantum/+bug/1037815"},{"line_number":10,"context_line":"Break out into per-agent filter files"},{"line_number":11,"context_line":"remove spurious whitespace"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAALH%2F%2FrOA%3D","line":8,"updated":"2012-08-21 14:56:39.000000000","message":"According to git convention, the commit message should start with a short message (in one line). Since this is a patch for Quantum, \"[PATCH] qunautm: \" is unnecessary.","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2012-08-20 16:04:30 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[PATCH] quantum: update rootwrap mechanism to track changes"},{"line_number":8,"context_line":"  in nova and cinder"},{"line_number":9,"context_line":"Fix https://bugs.launchpad.net/quantum/+bug/1037815"},{"line_number":10,"context_line":"Break out into per-agent filter files"},{"line_number":11,"context_line":"remove spurious whitespace"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAALH%2F%2FrZA%3D","line":8,"updated":"2012-08-21 10:04:32.000000000","message":"Please add a new line","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[PATCH] quantum: update rootwrap mechanism to track changes"},{"line_number":8,"context_line":"  in nova and cinder"},{"line_number":9,"context_line":"Fix https://bugs.launchpad.net/quantum/+bug/1037815"},{"line_number":10,"context_line":"Break out into per-agent filter files"},{"line_number":11,"context_line":"remove spurious whitespace"},{"line_number":12,"context_line":"reorder includes per garyk"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAALH%2F%2FrY8%3D","line":9,"updated":"2012-08-21 10:04:32.000000000","message":"You do not need the https://bugs.launchpad.net/quantum/+bug/1037815. It should just be \"Fixes bug 1037815\" or \"Fixes #1037815\"\nThe link is done by gerrit automatically","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"dcb4141f44ac7da83c6e06817f922c6370278747","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     John Dunning \u003cjrd@jrd.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-08-23 15:15:44 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"quantum: update rootwrap mechanism to track changes"},{"line_number":8,"context_line":"  in nova and cinder"},{"line_number":9,"context_line":"Fix https://bugs.launchpad.net/quantum/+bug/1037815"},{"line_number":10,"context_line":"Summary: Copy/paste the essential parts of the rootwrap"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAALH%2F%2Fo38%3D","line":7,"updated":"2012-08-23 21:24:50.000000000","message":"Remove \"quantum: \" and capitalize \"Update\".","commit_id":"f8345ec63ce51f9417247bd757bc1ac0ef9dc470"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"dcb4141f44ac7da83c6e06817f922c6370278747","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2012-08-23 15:15:44 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"quantum: update rootwrap mechanism to track changes"},{"line_number":8,"context_line":"  in nova and cinder"},{"line_number":9,"context_line":"Fix https://bugs.launchpad.net/quantum/+bug/1037815"},{"line_number":10,"context_line":"Summary: Copy/paste the essential parts of the rootwrap"},{"line_number":11,"context_line":"  mechanism from nova/cinder into quantum.  This includes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAALH%2F%2Fo4A%3D","line":8,"updated":"2012-08-23 21:24:50.000000000","message":"Insert blank line here to separate title from next paragraph.","commit_id":"f8345ec63ce51f9417247bd757bc1ac0ef9dc470"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"dcb4141f44ac7da83c6e06817f922c6370278747","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"quantum: update rootwrap mechanism to track changes"},{"line_number":8,"context_line":"  in nova and cinder"},{"line_number":9,"context_line":"Fix https://bugs.launchpad.net/quantum/+bug/1037815"},{"line_number":10,"context_line":"Summary: Copy/paste the essential parts of the rootwrap"},{"line_number":11,"context_line":"  mechanism from nova/cinder into quantum.  This includes"},{"line_number":12,"context_line":"  the core changes to filter.py and wrapper.py which deal"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAALH%2F%2Fo4E%3D","line":9,"updated":"2012-08-23 21:24:50.000000000","message":"Change to \"Fix bug 1037815\". Gerrit will make \"bug \u003c#\u003e\" into a link.","commit_id":"f8345ec63ce51f9417247bd757bc1ac0ef9dc470"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2012-08-23 18:35:34 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update rootwrap mechanism to track changes in nova"},{"line_number":8,"context_line":"  and cinder"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Fix bug 1037815"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAALH%2F%2Fol4%3D","line":8,"updated":"2012-08-24 11:15:57.000000000","message":"First line should be smaller (serves as git shortlog)","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"bin/quantum-rootwrap":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        filters_path \u003d config.get(\"DEFAULT\", \"filters_path\").split(\",\")"},{"line_number":64,"context_line":"        filters \u003d None"},{"line_number":65,"context_line":"    except ConfigParser.Error:"},{"line_number":66,"context_line":"        print \"%s: Incorrect configuration file: %s\" % (execname, configfile)"},{"line_number":67,"context_line":"        sys.exit(RC_BADCONFIG)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    # Add ../ to sys.path to allow running from branch"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAALH%2F%2FtT0%3D","line":66,"updated":"2012-08-17 05:34:34.000000000","message":"Should this be logged?","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   To make allowed commands node-specific, your packaging should only"},{"line_number":33,"context_line":"   install quantum.filters on quantum control nodes, ie nodes where"},{"line_number":34,"context_line":"   agents that need root privileges are run."},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import ConfigParser"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpcQ%3D","line":34,"updated":"2012-08-23 10:40:26.000000000","message":"Now that multiple filters files are shipped, you shouold change the wording to something like this: \"should only install .filters files corresponding to commands that are needed on that node\"","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":"   agents that need root privileges are run."},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import ConfigParser"},{"line_number":38,"context_line":"import os"},{"line_number":39,"context_line":"import subprocess"},{"line_number":40,"context_line":"import sys"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpcM%3D","line":37,"updated":"2012-08-23 10:40:26.000000000","message":"This might add a new dependency to Quantum, in which case we need to communicate it.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"                                  /etc/quantum/rootwrap.conf *"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   To make allowed commands node-specific, your packaging should only"},{"line_number":33,"context_line":"   install apropriate .filters for commands which are needed on each"},{"line_number":34,"context_line":"   node."},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Fos0%3D","line":33,"updated":"2012-08-24 05:37:11.000000000","message":"this last part of the comment might be confusing, as the comment hasn\u0027t mentioned \u0027.filters\u0027 before.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                                  /etc/quantum/rootwrap.conf *"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   To make allowed commands node-specific, your packaging should only"},{"line_number":33,"context_line":"   install apropriate .filters for commands which are needed on each"},{"line_number":34,"context_line":"   node."},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Fojc%3D","line":33,"in_reply_to":"AAAALH%2F%2Fos0%3D","updated":"2012-08-24 13:56:45.000000000","message":"Done","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"[AGENT]"},{"line_number":30,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":31,"context_line":"polling_interval \u003d 2"},{"line_number":32,"context_line":"# Use \"sudo quantum-rootwrap /etc/quantum/rootwrap.conf\" to use the real "},{"line_number":33,"context_line":"# root filter facility."},{"line_number":34,"context_line":"# Change to \"sudo\" to skip the filtering and just run the comand directly"},{"line_number":35,"context_line":"root_helper \u003d \"sudo\""}],"source_content_type":"text/x-properties","patch_set":1,"id":"AAAALH%2F%2FtTw%3D","line":32,"updated":"2012-08-17 05:34:34.000000000","message":"White space at the end of the sentence","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"[AGENT]"},{"line_number":30,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":31,"context_line":"polling_interval \u003d 2"},{"line_number":32,"context_line":"# Use \"sudo quantum-rootwrap /etc/quantum/rootwrap.conf\" to use the real"},{"line_number":33,"context_line":"# root filter facility."},{"line_number":34,"context_line":"# Change to \"sudo\" to skip the filtering and just run the comand directly"},{"line_number":35,"context_line":"root_helper \u003d \"sudo\""}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAALH%2F%2FrY0%3D","line":32,"updated":"2012-08-21 10:04:32.000000000","message":"Please note that this same comment should be added to the following files:\n - quantum/etc/quantum/plugins/nec/nec.ini\n - quantum/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini\n - quantum/etc/quantum/plugins/ryu/ryu.ini\n - quantum/etcdhcp-agent.ini\n - quantum/etc/l3-agent.ini","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":32,"context_line":"# Use \"sudo quantum-rootwrap /etc/quantum/rootwrap.conf\" to use the real"},{"line_number":33,"context_line":"# root filter facility."},{"line_number":34,"context_line":"# Change to \"sudo\" to skip the filtering and just run the comand directly"},{"line_number":35,"context_line":"root_helper \u003d \"sudo\""},{"line_number":36,"context_line":"# Use RPC messaging to interface between agent and plugin"},{"line_number":37,"context_line":"# rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":5,"id":"AAAALH%2F%2FqDw%3D","line":35,"updated":"2012-08-23 02:48:19.000000000","message":"plugin.ini of other plugins have similar comments. It would be better to fix it like this.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":29,"context_line":"[AGENT]"},{"line_number":30,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":31,"context_line":"polling_interval \u003d 2"},{"line_number":32,"context_line":"# Use \"sudo quantum-rootwrap /etc/quantum/rootwrap.conf\" to use the real"},{"line_number":33,"context_line":"# root filter facility."},{"line_number":34,"context_line":"# Change to \"sudo\" to skip the filtering and just run the comand directly"},{"line_number":35,"context_line":"root_helper \u003d \"sudo\""}],"source_content_type":"text/x-properties","patch_set":7,"id":"AAAALH%2F%2FosE%3D","line":32,"updated":"2012-08-24 05:37:11.000000000","message":"can you update the other plugin ini files to now indicate that the conf file must be passed as the first arg?  at least OVS needs that update.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":29,"context_line":"[AGENT]"},{"line_number":30,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":31,"context_line":"polling_interval \u003d 2"},{"line_number":32,"context_line":"# Use \"sudo quantum-rootwrap /etc/quantum/rootwrap.conf\" to use the real"},{"line_number":33,"context_line":"# root filter facility."},{"line_number":34,"context_line":"# Change to \"sudo\" to skip the filtering and just run the comand directly"},{"line_number":35,"context_line":"root_helper \u003d \"sudo\""}],"source_content_type":"text/x-properties","patch_set":7,"id":"AAAALH%2F%2FmkI%3D","line":32,"in_reply_to":"AAAALH%2F%2FojM%3D","updated":"2012-08-28 10:49:41.000000000","message":"ok, thanks.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":29,"context_line":"[AGENT]"},{"line_number":30,"context_line":"# Agent\u0027s polling interval in seconds"},{"line_number":31,"context_line":"polling_interval \u003d 2"},{"line_number":32,"context_line":"# Use \"sudo quantum-rootwrap /etc/quantum/rootwrap.conf\" to use the real"},{"line_number":33,"context_line":"# root filter facility."},{"line_number":34,"context_line":"# Change to \"sudo\" to skip the filtering and just run the comand directly"},{"line_number":35,"context_line":"root_helper \u003d \"sudo\""}],"source_content_type":"text/x-properties","patch_set":7,"id":"AAAALH%2F%2FojM%3D","line":32,"in_reply_to":"AAAALH%2F%2FosE%3D","updated":"2012-08-24 13:56:45.000000000","message":"Done, modulo the fact that not every .ini specifies a root_helper.  I assume that\u0027s correct as written, I updated the ones which *do* specify root_helper.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"etc/quantum/rootwrap.d/dhcp.filters":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAALH%2F%2FrYI%3D","line":12,"updated":"2012-08-21 10:04:32.000000000","message":"2 issues:\n1.The path in Ubuntu/Fedora is /usr/sbin/dsnmasq\n2.The IP commands are missing. The DHCP agent creates interfaces.","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAALH%2F%2FrXc%3D","line":12,"updated":"2012-08-21 10:07:09.000000000","message":"In addition to this the ovs-vsctl commands are also missing. Please note that the dhcp-agent and the l3 agent make use of the commands from the file /opt/stack/quantum/quantum/agent/linux/interface.py and /opt/stack/quantum/quantum/agent/linux/ip_lib.py\n\nIs it possible for a file to be included. This may save the headache.","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"# cmd-name: filter-name, raw-command, user, args"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"dnsmasq_usr: CommandFilter, /usr/sbin/dnsmasq, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FqHU%3D","line":10,"updated":"2012-08-22 17:51:36.000000000","message":"The following commands are missing:\n1. ip commands\n2. ovs-vsctl","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"dnsmasq_usr: CommandFilter, /usr/sbin/dnsmasq, root"},{"line_number":14,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpXg%3D","line":13,"updated":"2012-08-23 13:46:19.000000000","message":"In dhcp.py, \"cat\" is called with root_helper.\n\nIn addition to the above, \"ip\" and \"ovs-vsctl\" are also called.\n(ovs-vsctl is called if plugin other than linuxbridge is used)","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"dnsmasq_usr: CommandFilter, /usr/sbin/dnsmasq, root"},{"line_number":14,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FqD8%3D","line":14,"updated":"2012-08-23 02:48:19.000000000","message":"KillFilter does not seem to be loaded automatically. Do we need to specify KillFilter explicitly here?","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"dnsmasq_usr: CommandFilter, /usr/sbin/dnsmasq, root"},{"line_number":14,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpcY%3D","line":14,"in_reply_to":"AAAALH%2F%2FqD8%3D","updated":"2012-08-23 10:40:26.000000000","message":"Yes you do. You have to specify which process and which signals you actually allow kill to interact with.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"dnsmasq_usr: CommandFilter, /usr/sbin/dnsmasq, root"},{"line_number":14,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAALH%2F%2FoZE%3D","line":14,"updated":"2012-08-24 15:38:59.000000000","message":"To enable the KillFilter, you have to list a KillFilter with the name of affected executable and authorized signals. See https://github.com/openstack/nova/blob/master/etc/nova/rootwrap.d/network.filters#L59 for an example.","commit_id":"08346225bc6128e390200da20cb3370f0d6a45ad"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# dhcp-agent"},{"line_number":12,"context_line":"dnsmasq: CommandFilter, /sbin/dnsmasq, root"},{"line_number":13,"context_line":"dnsmasq_usr: CommandFilter, /usr/sbin/dnsmasq, root"},{"line_number":14,"context_line":"# dhcp-agent used kill as well, that\u0027s handled by the generic KillFilter"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAALH%2F%2FoWI%3D","line":14,"in_reply_to":"AAAALH%2F%2FoZE%3D","updated":"2012-08-24 16:10:19.000000000","message":"Drat.  Done :-(","commit_id":"08346225bc6128e390200da20cb3370f0d6a45ad"}],"etc/quantum/rootwrap.d/iptables-firewall.filters":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# iptables-firewall-agent"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":14,"context_line":"#   \"iptables-save\", ..."}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpXY%3D","line":11,"updated":"2012-08-23 13:46:19.000000000","message":"Is this file required?\nSInce l3_agent manages iptables via iptables_manager, l3_agent.filter will cover it.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"ip6tables-restore: Commandfilter, /sbin/ip6tables-restore, root"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":21,"context_line":"#   \"iptables\", \"-A\", ..."},{"line_number":22,"context_line":"iptables: Commandfilter, /sbin/iptables, root"},{"line_number":23,"context_line":"ip6tables: Commandfilter, /sbin/ip6tables, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpXM%3D","line":21,"updated":"2012-08-23 13:46:19.000000000","message":"iptables and ip6tables commands seem not to be used by iptables_manager.py.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# iptables-firewall-agent"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":14,"context_line":"#   \"iptables-save\", ..."}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Fosw%3D","line":11,"updated":"2012-08-24 05:37:11.000000000","message":"there actually isn\u0027t a iptables-firewall-agent itself, its just a library that can be used by agents.  Right now, only the l3-agent uses it, though in the future, agents that will implement security groups in Grizzly will likely use it as well.  \n\nI guess this really comes down to whether you want to align filter files with the source files (minimizes duplication) or the agents (simplifies packagers decision of which files to install).  Either way, my sense is that we should either get rid of this file, or the references to iptables in the filter file for L3 agetns.  I would say the same question applies to filters needed by any agent that uses \u0027interface.py\u0027 (e.g., ovs-vsctl).","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# iptables-firewall-agent"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":14,"context_line":"#   \"iptables-save\", ..."}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2FmkA%3D","line":11,"in_reply_to":"AAAALH%2F%2FojE%3D","updated":"2012-08-28 10:49:41.000000000","message":"Yes, limiting the scope is good.  My comment about the fact that this file doesn\u0027t need to exist still applies though, I think.  The reason is that there is no iptables-firewall agent itself,  just a library, and it seems the strategy we\u0027ve chosen is to align .filter files with agents, not libraries.  Does that make sense, or do I seem to be off my rocker? :)","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# iptables-firewall-agent"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":14,"context_line":"#   \"iptables-save\", ..."}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2FojE%3D","line":11,"in_reply_to":"AAAALH%2F%2Fosw%3D","updated":"2012-08-24 13:56:45.000000000","message":"Well, ok, all that sounds sensible.  Do you think it\u0027s reasonable to treat that cleanup as a followon?\n\nI\u0027m not trying to gratuitously avoid work, but I\u0027d like to limit scope to something which is minimally intrusive and improves the state of the art at least somewhat.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":14,"context_line":"#   \"iptables-save\", ..."},{"line_number":15,"context_line":"iptables-save: Commandfilter, /sbin/iptables-save, root"},{"line_number":16,"context_line":"iptables-restore: Commandfilter, /sbin/iptables-restore, root"},{"line_number":17,"context_line":"ip6tables-save: Commandfilter, /sbin/ip6tables-save, root"},{"line_number":18,"context_line":"ip6tables-restore: Commandfilter, /sbin/ip6tables-restore, root"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Fol0%3D","line":15,"updated":"2012-08-24 11:15:57.000000000","message":"Should be \"CommandFilter\", not \"Commandfilter\"","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# quantum/agent/linux/iptables_manager.py"},{"line_number":14,"context_line":"#   \"iptables-save\", ..."},{"line_number":15,"context_line":"iptables-save: Commandfilter, /sbin/iptables-save, root"},{"line_number":16,"context_line":"iptables-restore: Commandfilter, /sbin/iptables-restore, root"},{"line_number":17,"context_line":"ip6tables-save: Commandfilter, /sbin/ip6tables-save, root"},{"line_number":18,"context_line":"ip6tables-restore: Commandfilter, /sbin/ip6tables-restore, root"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2FojA%3D","line":15,"in_reply_to":"AAAALH%2F%2Fol0%3D","updated":"2012-08-24 13:56:45.000000000","message":"Drat.  Thought I got that last time.  Sorry about that...","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"etc/quantum/rootwrap.d/l3.filters":[{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"ovs-vsctl_usr: CommandFilter, /usr/sbin/ovs-vsctl, root"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# iptables_manager"},{"line_number":23,"context_line":"iptables-save: Commandfilter, /sbin/iptables-save, root"},{"line_number":24,"context_line":"iptables-restore: Commandfilter, /sbin/iptables-restore, root"},{"line_number":25,"context_line":"ip6tables-save: Commandfilter, /sbin/ip6tables-save, root"},{"line_number":26,"context_line":"ip6tables-restore: Commandfilter, /sbin/ip6tables-restore, root"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Folw%3D","line":23,"updated":"2012-08-24 11:15:57.000000000","message":"Should be CommandFilter","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":20,"context_line":"ovs-vsctl_usr: CommandFilter, /usr/sbin/ovs-vsctl, root"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# iptables_manager"},{"line_number":23,"context_line":"iptables-save: Commandfilter, /sbin/iptables-save, root"},{"line_number":24,"context_line":"iptables-restore: Commandfilter, /sbin/iptables-restore, root"},{"line_number":25,"context_line":"ip6tables-save: Commandfilter, /sbin/ip6tables-save, root"},{"line_number":26,"context_line":"ip6tables-restore: Commandfilter, /sbin/ip6tables-restore, root"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Foi8%3D","line":23,"in_reply_to":"AAAALH%2F%2Folw%3D","updated":"2012-08-24 13:56:45.000000000","message":"Done","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"etc/quantum/rootwrap.d/linuxbridge.filters":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# linuxbridge-agent"},{"line_number":12,"context_line":"brctl: CommandFilter, /usr/sbin/brctl, root"},{"line_number":13,"context_line":"ip: CommandFilter, /usr/sbin/ip, root"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAALH%2F%2FrYA%3D","line":12,"updated":"2012-08-21 10:04:32.000000000","message":"In Ubuntu the path is /sbin/brctl\nIn Fedora it is the same as you have stated","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# linuxbridge-agent"},{"line_number":12,"context_line":"brctl: CommandFilter, /usr/sbin/brctl, root"},{"line_number":13,"context_line":"ip: CommandFilter, /usr/sbin/ip, root"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAALH%2F%2FrYE%3D","line":13,"updated":"2012-08-21 10:04:32.000000000","message":"In Ubuntu the path is /sbin/ip\nIn Fedora it is what you have listed. How can this be treated or will each flavor need to update?","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# linuxbridge-agent"},{"line_number":12,"context_line":"# unclear whether both variants are necessary, but I\u0027m transliterating "},{"line_number":13,"context_line":"# from the old mechanism"},{"line_number":14,"context_line":"brctl: CommandFilter, /sbin/brctl, root"},{"line_number":15,"context_line":"brctl_usr: CommandFilter, /usr/sbin/brctl, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FqH8%3D","line":12,"updated":"2012-08-22 17:51:36.000000000","message":"whitespace","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"}],"etc/quantum/rootwrap.d/openvswitch.filters":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# openvswitch-agent"},{"line_number":12,"context_line":"ovs-vsctl: CommandFilter, /usr/sbin/ovs-vsctl, root"},{"line_number":13,"context_line":"ovs-ofctl: CommandFilter, /usr/sbin/ovs-ofctl, root"},{"line_number":14,"context_line":"xe: CommandFilter, /usr/sbin/xe, root"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAALH%2F%2FrX8%3D","line":14,"updated":"2012-08-21 10:04:32.000000000","message":"In fedora the paths are /bin\nIn Ubuntu the paths are /usr/bin","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# openvswitch-agent"},{"line_number":12,"context_line":"# unclear whether both variants are necessary, but I\u0027m transliterating "},{"line_number":13,"context_line":"# from the old mechanism"},{"line_number":14,"context_line":"ovs-vsctl: CommandFilter, /sbin/ovs-vsctl, root"},{"line_number":15,"context_line":"ovs-vsctl_usr: CommandFilter, /usr/sbin/ovs-vsctl, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FqH4%3D","line":12,"updated":"2012-08-22 17:51:36.000000000","message":"whitespace","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# quantum-rootwrap command filters for nodes on which quantum is"},{"line_number":2,"context_line":"# expected to control network"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# This file should be owned by (and only-writeable by) the root user"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Foss%3D","line":1,"updated":"2012-08-24 05:37:11.000000000","message":"we should probably name this the openvswitch-plugin.filters, as this is really specific to the plugin-agent.  Probably the same comment for all other plugin agents.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# quantum-rootwrap command filters for nodes on which quantum is"},{"line_number":2,"context_line":"# expected to control network"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# This file should be owned by (and only-writeable by) the root user"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2FmkE%3D","line":1,"in_reply_to":"AAAALH%2F%2Foiw%3D","updated":"2012-08-28 10:49:41.000000000","message":"yes, thanks.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# quantum-rootwrap command filters for nodes on which quantum is"},{"line_number":2,"context_line":"# expected to control network"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# This file should be owned by (and only-writeable by) the root user"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Foiw%3D","line":1,"in_reply_to":"AAAALH%2F%2Foss%3D","updated":"2012-08-24 13:56:45.000000000","message":"So that\u0027s linuxbridge, nec, openvswitch, and ryu, correct?  I\u0027ll change those; if I\u0027m missing any, please whack me over the head.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"etc/quantum/rootwrap.d/quantum.filters":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# This file should be owned by (and only-writeable by) the root user"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# format seems to be "},{"line_number":7,"context_line":"# cmd-name: filter-name, raw-command, user, args"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[Filters]"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAALH%2F%2FtTs%3D","line":6,"updated":"2012-08-17 05:34:34.000000000","message":"White space","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"}],"etc/quantum/rootwrap.d/ryu.filters":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"[Filters]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# ryu-agent"},{"line_number":12,"context_line":"# unclear whether both variants are necessary, but I\u0027m transliterating "},{"line_number":13,"context_line":"# from the old mechanism"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# quantum/plugins/ryu/agent/ryu_quantum_agent.py:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FqH0%3D","line":12,"updated":"2012-08-22 17:51:36.000000000","message":"whitespace","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#   \"ovs-vsctl\", \"--timeout\u003d2\", ..."},{"line_number":17,"context_line":"ovs-vsctl: Commandfilter, /bin/ovsctl, root"},{"line_number":18,"context_line":"ovs-vsctl_usr: Commandfilter, /usr/bin/ovsctl, root"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# quantum/plugins/ryu/agent/ryu_quantum_agent.py:"},{"line_number":21,"context_line":"#   \"xe\", \"vif-param-get\", ..."},{"line_number":22,"context_line":"xe: CommandFilter, /bin/xe, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpeU%3D","line":19,"updated":"2012-08-23 09:29:47.000000000","message":"typo s/Commandfilter/CommandFilter/\nCapital F","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#   \"ovs-vsctl\", \"--timeout\u003d2\", ..."},{"line_number":17,"context_line":"ovs-vsctl: Commandfilter, /bin/ovsctl, root"},{"line_number":18,"context_line":"ovs-vsctl_usr: Commandfilter, /usr/bin/ovsctl, root"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# quantum/plugins/ryu/agent/ryu_quantum_agent.py:"},{"line_number":21,"context_line":"#   \"xe\", \"vif-param-get\", ..."},{"line_number":22,"context_line":"xe: CommandFilter, /bin/xe, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FpmE%3D","line":19,"updated":"2012-08-23 05:15:04.000000000","message":"typo. s/ovsctl/ovs-vsctl/","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#   \"ovs-vsctl\", \"--timeout\u003d2\", ..."},{"line_number":17,"context_line":"ovs-vsctl: Commandfilter, /bin/ovs-vsctl, root"},{"line_number":18,"context_line":"ovs-vsctl_usr: Commandfilter, /usr/bin/ovs-vsctl, root"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# quantum/plugins/ryu/agent/ryu_quantum_agent.py:"},{"line_number":21,"context_line":"#   \"xe\", \"vif-param-get\", ..."},{"line_number":22,"context_line":"xe: CommandFilter, /bin/xe, root"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2FonQ%3D","line":19,"updated":"2012-08-24 10:03:56.000000000","message":"Typo remains.\ns/Commandfilter/CommandFilter/\nf -\u003e F (Capital F)","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#   \"ovs-vsctl\", \"--timeout\u003d2\", ..."},{"line_number":17,"context_line":"ovs-vsctl: Commandfilter, /bin/ovs-vsctl, root"},{"line_number":18,"context_line":"ovs-vsctl_usr: Commandfilter, /usr/bin/ovs-vsctl, root"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# quantum/plugins/ryu/agent/ryu_quantum_agent.py:"},{"line_number":21,"context_line":"#   \"xe\", \"vif-param-get\", ..."},{"line_number":22,"context_line":"xe: CommandFilter, /bin/xe, root"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAALH%2F%2Fois%3D","line":19,"in_reply_to":"AAAALH%2F%2FonQ%3D","updated":"2012-08-24 13:56:45.000000000","message":"Done","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"etc/rootwrap.conf":[{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# path to where the various filter specs live"},{"line_number":3,"context_line":"filters_path\u003d/etc/quantum/rootwrap.d/"}],"source_content_type":"text/plain","patch_set":5,"id":"AAAALH%2F%2FpcI%3D","line":3,"updated":"2012-08-23 10:40:26.000000000","message":"For consistency, I\u0027d rather put (like Nova\u0027s file):\n# List of directories to load filter definitions from (separated by \u0027,\u0027).\n# These directories MUST all be only writeable by root !\nfilters_path\u003d/etc/quantum/rootwrap.d,/usr/share/quantum/rootwrap","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# List of directories to load filter definitions from (separated by \u0027,\u0027)."},{"line_number":3,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":4,"context_line":"filters_path\u003d/etc/quantum/rootwrap.d/"}],"source_content_type":"text/plain","patch_set":7,"id":"AAAALH%2F%2Folk%3D","line":4,"updated":"2012-08-24 11:15:57.000000000","message":"Should be filters_path\u003d/etc/quantum/rootwrap.d,/usr/share/quantum/filters to mimick how its done with Nova","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# List of directories to load filter definitions from (separated by \u0027,\u0027)."},{"line_number":3,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":4,"context_line":"filters_path\u003d/etc/quantum/rootwrap.d/"}],"source_content_type":"text/plain","patch_set":7,"id":"AAAALH%2F%2Foio%3D","line":4,"in_reply_to":"AAAALH%2F%2Folk%3D","updated":"2012-08-24 13:56:45.000000000","message":"Done","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# List of directories to load filter definitions from (separated by \u0027,\u0027)."},{"line_number":3,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":4,"context_line":"filters_path\u003d/etc/quantum/rootwrap.d/,/usr/share/quantum/filters"}],"source_content_type":"text/plain","patch_set":8,"id":"AAAALH%2F%2FoY8%3D","line":4,"updated":"2012-08-24 15:38:59.000000000","message":"Minor nit: Nova does not have trailing / in rootwrap.d dir name... I\u0027m pretty sure that\u0027s OK if you leave it like this.","commit_id":"08346225bc6128e390200da20cb3370f0d6a45ad"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"# List of directories to load filter definitions from (separated by \u0027,\u0027)."},{"line_number":3,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":4,"context_line":"filters_path\u003d/etc/quantum/rootwrap.d/,/usr/share/quantum/filters"}],"source_content_type":"text/plain","patch_set":8,"id":"AAAALH%2F%2FoV4%3D","line":4,"in_reply_to":"AAAALH%2F%2FoY8%3D","updated":"2012-08-24 16:10:19.000000000","message":"Nope, NP, no need to be gratuitously different.  Done.","commit_id":"08346225bc6128e390200da20cb3370f0d6a45ad"}],"quantum/rootwrap/wrapper.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import ConfigParser"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"import sys"},{"line_number":22,"context_line":"import string"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# this import has the effect of defining global var \"filters\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FtTo%3D","line":21,"updated":"2012-08-17 05:34:34.000000000","message":"order of includes sys should come after string","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"# this import has the effect of defining global var \"filters\","},{"line_number":25,"context_line":"# refernced by build_filter(), below.  It gets set up quantum-rootwrap,"},{"line_number":26,"context_line":"# when we load_filters()."},{"line_number":27,"context_line":"from quantum.rootwrap import filters"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def build_filter(class_name, *args):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FqJ4%3D","line":27,"updated":"2012-08-23 02:48:19.000000000","message":"It looks like a normal python import. Is this comment necessary?","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"            filterconfig \u003d ConfigParser.RawConfigParser()"},{"line_number":47,"context_line":"            filterconfig.read(os.path.join(filterdir, filterfile))"},{"line_number":48,"context_line":"            for (name, value) in filterconfig.items(\"Filters\"):"},{"line_number":49,"context_line":"                filterdefinition \u003d [string.strip(s) for s in value.split(\u0027,\u0027)]"},{"line_number":50,"context_line":"                newfilter \u003d build_filter(*filterdefinition)"},{"line_number":51,"context_line":"                if newfilter is None:"},{"line_number":52,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FqIo%3D","line":49,"updated":"2012-08-23 02:48:19.000000000","message":"\"s.strip()\" and \"string.strip(s)\" return the same result. If the former is used, \"import string\" is unnecessary.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"            filterconfig \u003d ConfigParser.RawConfigParser()"},{"line_number":47,"context_line":"            filterconfig.read(os.path.join(filterdir, filterfile))"},{"line_number":48,"context_line":"            for (name, value) in filterconfig.items(\"Filters\"):"},{"line_number":49,"context_line":"                filterdefinition \u003d [string.strip(s) for s in value.split(\u0027,\u0027)]"},{"line_number":50,"context_line":"                newfilter \u003d build_filter(*filterdefinition)"},{"line_number":51,"context_line":"                if newfilter is None:"},{"line_number":52,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FpcE%3D","line":49,"in_reply_to":"AAAALH%2F%2FqIo%3D","updated":"2012-08-23 10:40:26.000000000","message":"Agreed, though there is some value in using the same code as Nova, will make switching to an openstack-common version of rootwrap easier in the future.","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":"import sys"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# this import has the effect of defining global var \"filters\","},{"line_number":25,"context_line":"# refernced by build_filter(), below.  It gets set up quantum-rootwrap,"},{"line_number":26,"context_line":"# when we load_filters()."},{"line_number":27,"context_line":"from quantum.rootwrap import filters"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Foso%3D","line":25,"updated":"2012-08-24 05:37:11.000000000","message":"referenced\n\nalso, missing \"by\" in next sentence.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"def build_filter(class_name, *args):"},{"line_number":31,"context_line":"    \"\"\"Returns a filter object of class class_name\"\"\""},{"line_number":32,"context_line":"    if not hasattr(filters, class_name):"},{"line_number":33,"context_line":"        # TODO(jrd): Log the error (whenever quantum-rootwrap has a log file)"},{"line_number":34,"context_line":"        return None"},{"line_number":35,"context_line":"    filterclass \u003d getattr(filters, class_name)"},{"line_number":36,"context_line":"    return filterclass(*args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fosk%3D","line":33,"updated":"2012-08-24 05:37:11.000000000","message":"Is it correct that returning None here is effectively \"failing secure\"?  That is, if we have trouble parsing a rule, the result is that the user will be denied the ability to run a command that they need to(failing closed), not that a command that was meant to be prevent would be allowed (failing open).   I\u0027m pretty sure this fails secure, but wanted to check, otherwise, we should be much more noisy here, even to the point of failing rootwrap.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"def build_filter(class_name, *args):"},{"line_number":31,"context_line":"    \"\"\"Returns a filter object of class class_name\"\"\""},{"line_number":32,"context_line":"    if not hasattr(filters, class_name):"},{"line_number":33,"context_line":"        # TODO(jrd): Log the error (whenever quantum-rootwrap has a log file)"},{"line_number":34,"context_line":"        return None"},{"line_number":35,"context_line":"    filterclass \u003d getattr(filters, class_name)"},{"line_number":36,"context_line":"    return filterclass(*args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fmj4%3D","line":33,"in_reply_to":"AAAALH%2F%2Foic%3D","updated":"2012-08-28 10:49:41.000000000","message":"No, that makes sense.  My goal is to get generic code like rootwrap out of quantum and into an openstack common, so we can ignore all my comment in code that is just copied from nova/cinder.  I guess I just got into my normal reviewer mode :)","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":30,"context_line":"def build_filter(class_name, *args):"},{"line_number":31,"context_line":"    \"\"\"Returns a filter object of class class_name\"\"\""},{"line_number":32,"context_line":"    if not hasattr(filters, class_name):"},{"line_number":33,"context_line":"        # TODO(jrd): Log the error (whenever quantum-rootwrap has a log file)"},{"line_number":34,"context_line":"        return None"},{"line_number":35,"context_line":"    filterclass \u003d getattr(filters, class_name)"},{"line_number":36,"context_line":"    return filterclass(*args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Foic%3D","line":33,"in_reply_to":"AAAALH%2F%2Folg%3D","updated":"2012-08-24 13:56:45.000000000","message":"Ok, as before, I\u0027m happy to write it whichever way you guys think makes the most sense.  I think my general take is to agree with ttx; if we believe there will be a unification of this code with nova/cinder, I\u0027m inclined to not try to fix it piecemeal.  \n\nIf the concensus is that it\u0027s more important make it noisier in this case, please say so and I\u0027ll change it.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"def build_filter(class_name, *args):"},{"line_number":31,"context_line":"    \"\"\"Returns a filter object of class class_name\"\"\""},{"line_number":32,"context_line":"    if not hasattr(filters, class_name):"},{"line_number":33,"context_line":"        # TODO(jrd): Log the error (whenever quantum-rootwrap has a log file)"},{"line_number":34,"context_line":"        return None"},{"line_number":35,"context_line":"    filterclass \u003d getattr(filters, class_name)"},{"line_number":36,"context_line":"    return filterclass(*args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Folg%3D","line":33,"in_reply_to":"AAAALH%2F%2Fosk%3D","updated":"2012-08-24 11:15:57.000000000","message":"general agreement here.. though there is value in reusing the same code that is in Nova/Cinder right now, to facilitate migration to a common version. So I\u0027d minimize differences for the time being.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"quantum/tests/etc/quantum.conf.test":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# The messaging module to use, defaults to kombu."},{"line_number":21,"context_line":"rpc_backend \u003d quantum.openstack.common.rpc.impl_fake"},{"line_number":22,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAALH%2F%2FtTk%3D","line":22,"updated":"2012-08-17 05:34:34.000000000","message":"You can delet this line - no reason to have the file checked out if there are no chnages","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"}],"quantum/tests/etc/rootwrap.d/quantum.test.filters":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# quantum-rootwrap command filters for the unit test"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# format seems to be "},{"line_number":4,"context_line":"# cmd-name: filter-name, raw-command, user, args"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[Filters]"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAALH%2F%2FtTg%3D","line":3,"updated":"2012-08-17 05:34:34.000000000","message":"White space","commit_id":"95046d28d6db8ae68ef0a1f1c9a4ab2aa9c011cf"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# quantum-rootwrap command filters for the unit test"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# this file goes with quantum/tests/unit/_test_rootwrap_exec.py.  "},{"line_number":4,"context_line":"# See the comments there about how to run that unit tests"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# format seems to be"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FqHo%3D","line":3,"updated":"2012-08-22 17:51:36.000000000","message":"whitespace","commit_id":"0f2f6e8c1fa36130429e1774d7d6b36e3e45f31d"}],"quantum/tests/unit/_test_rootwrap_exec.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":"            f.write(\u0027ID\u003d`id | sed \\\u0027s/uid\u003d//\\\u0027 | sed \\\u0027s/(.*//\\\u0027 `\\n\u0027)"},{"line_number":43,"context_line":"            f.write(\"echo $ID $1\" +"},{"line_number":44,"context_line":"                    \"\\\" Now is the time for all good men to come \" +"},{"line_number":45,"context_line":"                    \"to the aid of their party.\\\"\\n\")"},{"line_number":46,"context_line":"        # we need a temporary conf file, pointing into pwd for the filter"},{"line_number":47,"context_line":"        # specs. there\u0027s probably a better way to do this, but I couldn\u0027t"},{"line_number":48,"context_line":"        # figure it out.  08/15/12 -- jrd"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FosY%3D","line":45,"updated":"2012-08-24 05:37:11.000000000","message":"suggest: probably a bit easier to read as a multi-line string.  same below.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            f.write(\u0027ID\u003d`id | sed \\\u0027s/uid\u003d//\\\u0027 | sed \\\u0027s/(.*//\\\u0027 `\\n\u0027)"},{"line_number":43,"context_line":"            f.write(\"echo $ID $1\" +"},{"line_number":44,"context_line":"                    \"\\\" Now is the time for all good men to come \" +"},{"line_number":45,"context_line":"                    \"to the aid of their party.\\\"\\n\")"},{"line_number":46,"context_line":"        # we need a temporary conf file, pointing into pwd for the filter"},{"line_number":47,"context_line":"        # specs. there\u0027s probably a better way to do this, but I couldn\u0027t"},{"line_number":48,"context_line":"        # figure it out.  08/15/12 -- jrd"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FoiI%3D","line":45,"in_reply_to":"AAAALH%2F%2FosY%3D","updated":"2012-08-24 13:56:45.000000000","message":"Done","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.root_helper \u003d \"sudo \" + self.cwd + \"/bin/quantum-rootwrap \""},{"line_number":59,"context_line":"        self.root_helper +\u003d self.conf_file"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def runTest(self):"},{"line_number":62,"context_line":"        try:"},{"line_number":63,"context_line":"            result \u003d utils.execute([\"bash\", self.test_file, \u0027arg\u0027],"},{"line_number":64,"context_line":"                                   self.root_helper)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FosI%3D","line":61,"updated":"2012-08-24 05:37:11.000000000","message":"huh... so is this file not supposed to be picked up by tox?  Is this related to the previous discussion about not wanting to execute this command as part of the unit tests by default?  A comment explaining this file would be useful to avoid confusion similar to mine.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.root_helper \u003d \"sudo \" + self.cwd + \"/bin/quantum-rootwrap \""},{"line_number":59,"context_line":"        self.root_helper +\u003d self.conf_file"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def runTest(self):"},{"line_number":62,"context_line":"        try:"},{"line_number":63,"context_line":"            result \u003d utils.execute([\"bash\", self.test_file, \u0027arg\u0027],"},{"line_number":64,"context_line":"                                   self.root_helper)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fmj0%3D","line":61,"in_reply_to":"AAAALH%2F%2Foh8%3D","updated":"2012-08-28 10:49:41.000000000","message":"for unit tests, I think in-code docs are OK.  Maybe would be a bit clearer as a doc-string on the class, as comments below the license text tend to blend in, but that\u0027s a minor nit only worth doing if we need to rev the patch for some others means.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.root_helper \u003d \"sudo \" + self.cwd + \"/bin/quantum-rootwrap \""},{"line_number":59,"context_line":"        self.root_helper +\u003d self.conf_file"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def runTest(self):"},{"line_number":62,"context_line":"        try:"},{"line_number":63,"context_line":"            result \u003d utils.execute([\"bash\", self.test_file, \u0027arg\u0027],"},{"line_number":64,"context_line":"                                   self.root_helper)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Foh8%3D","line":61,"in_reply_to":"AAAALH%2F%2FosI%3D","updated":"2012-08-24 13:56:45.000000000","message":"I was trying to express that with the comment toward the top, the one starting NB...\n\nMy apologies if the wording didn\u0027t convey the meaning.  Can you suggest better wording?  Perhaps put a readme in the containing directory?","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":66,"context_line":"                             \"0 arg Now is the time for all good men to \" +"},{"line_number":67,"context_line":"                             \"come to the aid of their party.\")"},{"line_number":68,"context_line":"        except Exception, ex:"},{"line_number":69,"context_line":"            print(\"Losing in rootwrap test: %s\\n\", str(ex))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def cleanUp(self):"},{"line_number":72,"context_line":"        os.remove(self.test_file)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fosg%3D","line":69,"updated":"2012-08-24 05:37:11.000000000","message":"suggest: use LOG.exception()","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                             \"0 arg Now is the time for all good men to \" +"},{"line_number":67,"context_line":"                             \"come to the aid of their party.\")"},{"line_number":68,"context_line":"        except Exception, ex:"},{"line_number":69,"context_line":"            print(\"Losing in rootwrap test: %s\\n\", str(ex))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def cleanUp(self):"},{"line_number":72,"context_line":"        os.remove(self.test_file)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FohM%3D","line":69,"in_reply_to":"AAAALH%2F%2Fosg%3D","updated":"2012-08-24 13:56:45.000000000","message":"Ah, ok, didn\u0027t know about that.  Good idea.","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except Exception, ex:"},{"line_number":69,"context_line":"            print(\"Losing in rootwrap test: %s\\n\", str(ex))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def cleanUp(self):"},{"line_number":72,"context_line":"        os.remove(self.test_file)"},{"line_number":73,"context_line":"        os.remove(self.conf_file)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fosc%3D","line":71,"updated":"2012-08-24 05:37:11.000000000","message":"do you mean tearDown()?  That is, do you intend for this to be called automatically after running by unittest ?","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"},{"author":{"_account_id":2974,"name":"jrd-q","email":"jrd@redhat.com","username":"jrd-q"},"change_message_id":"15e0bf10934523712a2305ee52298ec73a319c20","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except Exception, ex:"},{"line_number":69,"context_line":"            print(\"Losing in rootwrap test: %s\\n\", str(ex))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def cleanUp(self):"},{"line_number":72,"context_line":"        os.remove(self.test_file)"},{"line_number":73,"context_line":"        os.remove(self.conf_file)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FohI%3D","line":71,"in_reply_to":"AAAALH%2F%2Fosc%3D","updated":"2012-08-24 13:56:45.000000000","message":"Yes.  I clearly didn\u0027t digest enough of the test framework stuff when I wrote that :-(","commit_id":"a62ecfe35f962c0112f7b08a752cf371dc6eca4f"}],"quantum/tests/unit/test_rootwrap.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bf9c56a35d4e35fcfaea150e0c4540e6dd31e1d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from quantum.rootwrap import filters"},{"line_number":21,"context_line":"from quantum.rootwrap import wrapper"},{"line_number":22,"context_line":"import unittest"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class RootwrapTestCase(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FrX4%3D","line":22,"updated":"2012-08-21 10:04:32.000000000","message":"This include should be above the quantum includes","commit_id":"2b321c54117fc69d1def84cdf261210d42dc8966"}],"setup.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"        [\u0027etc/quantum.conf\u0027,"},{"line_number":58,"context_line":"         \u0027etc/api-paste.ini\u0027,"},{"line_number":59,"context_line":"         \u0027etc/policy.json\u0027,"},{"line_number":60,"context_line":"         \u0027etc/dhcp_agent.ini\u0027]),"},{"line_number":61,"context_line":"    (init_path, [\u0027etc/init.d/quantum-server\u0027]),"},{"line_number":62,"context_line":"    (ovs_plugin_config_path,"},{"line_number":63,"context_line":"        [\u0027etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini\u0027]),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2Fl0U%3D","line":60,"updated":"2012-08-29 05:41:10.000000000","message":"I think we also need rootwrap.conf here.","commit_id":"1dc917903ea7e511c6c798230bba969f0c12ac0e"}]}
