)]}'
{"neutron/tests/api/base_v2.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"9d9ad678b097d483fdc89d03a21f524483b54259","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"import testtools"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"from neutron.tests.common import helpers"},{"line_number":53,"context_line":"from neutron.tests import sub_base"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_f18b0c15","line":52,"updated":"2015-01-20 16:30:14.000000000","message":"I guess the docs are not as adequate as I was hoping, but this import will break the api job (that is unfortunately not yet gating so that you would be notified).  Nothing in neutron/tests/api should import code from neutron proper (and helpers does import code from neutron) - doing is likely to import configuration that conflicts with what tempest imports.  This is intended to be a temporary problem, but for now, I\u0027d recommend keeping get_rand_name in sub_base and importing it into the helpers module as was previously done in neutron.tests.base.","commit_id":"e1e18297da7972f2f7bfe12a5b1229733f3d295a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"23441114356effdf69ce410cd413f83e6da2ee3b","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"import testtools"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"from neutron.tests.common import helpers"},{"line_number":53,"context_line":"from neutron.tests import sub_base"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_f976ba05","line":52,"in_reply_to":"3a961159_f18b0c15","updated":"2015-01-21 08:42:18.000000000","message":"Done","commit_id":"e1e18297da7972f2f7bfe12a5b1229733f3d295a"}],"neutron/tests/common/helpers.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"834c059b1ef7ff21d45816df0969093e66cc3c1a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"import eventlet"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron.openstack.common import uuidutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_6910b000","line":13,"updated":"2015-01-15 03:49:14.000000000","message":"missing space, meh\n\nPerhaps consider calling this utils.py to avoid the name clash with the helpers under functional?","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"40dde9ad55810a84791c1340b9170bb7f430feb0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"import eventlet"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron.openstack.common import uuidutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_956d869d","line":13,"in_reply_to":"3a961159_6910b000","updated":"2015-01-19 11:36:27.000000000","message":"Fixed the space, left as \u0027helpers.py\u0027 for \u0027git mv\u0027 reasons.","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"7a0add65a989468d4e96fc94f2d87bd5606c42cd","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            wait_until_true("},{"line_number":153,"context_line":"                poll_predicate, timeout, 0.1,"},{"line_number":154,"context_line":"                RuntimeError("},{"line_number":155,"context_line":"                    \u0027No output in %.2f seconds\u0027 % timeout))"},{"line_number":156,"context_line":"        return stream.readline()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def writeline(self, data):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_05915353","line":155,"updated":"2015-01-19 22:33:30.000000000","message":"unrelated change?","commit_id":"2ba05c55efc5add9b7331649f633ea5b1eeed933"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"a7b858d2a93e797b47bd2d1875b612f15693c35d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            wait_until_true("},{"line_number":153,"context_line":"                poll_predicate, timeout, 0.1,"},{"line_number":154,"context_line":"                RuntimeError("},{"line_number":155,"context_line":"                    \u0027No output in %.2f seconds\u0027 % timeout))"},{"line_number":156,"context_line":"        return stream.readline()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def writeline(self, data):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_f0315c5a","line":155,"in_reply_to":"3a961159_05915353","updated":"2015-01-20 07:10:42.000000000","message":"Was related when in the previous changes I had to add a \u0027helpers.wait_...\u0027 prefix and the line exceeded 80 chars. Will revert.","commit_id":"2ba05c55efc5add9b7331649f633ea5b1eeed933"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5c967ba23e07f99d4bed915db6e5a27c8f7e387b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3a961159_8619b7d3","updated":"2015-01-20 13:32:30.000000000","message":"I am not 100% sure whether this file should have \"linux\" in its path. This module contains some linux specific code. Sorry if you all working on the functional tests already discussed it.","commit_id":"e1e18297da7972f2f7bfe12a5b1229733f3d295a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"05d6e1c6689b2a2c848ca813224228f69f994525","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3a961159_dceaa7d7","in_reply_to":"3a961159_512220a4","updated":"2015-01-20 16:58:08.000000000","message":"I agree with Maru here. Most of the full stack code depends on the Daemon class and the OVS, both currently linux-only, so I doubt we want to worry about this now.","commit_id":"e1e18297da7972f2f7bfe12a5b1229733f3d295a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"9d9ad678b097d483fdc89d03a21f524483b54259","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3a961159_512220a4","in_reply_to":"3a961159_8619b7d3","updated":"2015-01-20 16:30:14.000000000","message":"Until we\u0027re actually testing on platforms other than linux in the gate, I\u0027m not sure there\u0027s much point in differentiating.","commit_id":"e1e18297da7972f2f7bfe12a5b1229733f3d295a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"846d2286012ce5ec4a6b597c10011aa266487d62","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import shlex"},{"line_number":20,"context_line":"import subprocess"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import eventlet"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.agent.linux import utils"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a930d6b_1d6291d8","line":22,"updated":"2015-01-21 08:50:20.000000000","message":"Unrelated change, but an important one IMO so I left this in.","commit_id":"a50814508cc7a28254b6b00511f2806fead3a60e"}],"neutron/tests/functional/agent/linux/base.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"834c059b1ef7ff21d45816df0969093e66cc3c1a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from neutron.agent.linux import utils"},{"line_number":22,"context_line":"from neutron.common import constants as n_const"},{"line_number":23,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":24,"context_line":"from neutron.tests.common import helpers as c_helpers"},{"line_number":25,"context_line":"from neutron.tests.functional.agent.linux import helpers"},{"line_number":26,"context_line":"from neutron.tests.functional import base as functional_base"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_e9fbc0bb","line":24,"updated":"2015-01-15 03:49:14.000000000","message":"this sounds like helpers written in C :)\n\nperhaps test_helpers, but what about having helpers called utils instead of helpers?","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"40dde9ad55810a84791c1340b9170bb7f430feb0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from neutron.agent.linux import utils"},{"line_number":22,"context_line":"from neutron.common import constants as n_const"},{"line_number":23,"context_line":"from neutron.openstack.common import uuidutils"},{"line_number":24,"context_line":"from neutron.tests.common import helpers as c_helpers"},{"line_number":25,"context_line":"from neutron.tests.functional.agent.linux import helpers"},{"line_number":26,"context_line":"from neutron.tests.functional import base as functional_base"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b56a8280","line":24,"in_reply_to":"3a961159_e9fbc0bb","updated":"2015-01-19 11:36:27.000000000","message":"Since this turned into a \u0027git mv\u0027, renaming is no longer needed.","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"7a0add65a989468d4e96fc94f2d87bd5606c42cd","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        :param *args *kwargs: These will be passed to the create function."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        while True:"},{"line_number":71,"context_line":"            name \u003d helpers.get_rand_name("},{"line_number":72,"context_line":"                prefix\u003dname_prefix,"},{"line_number":73,"context_line":"                max_length\u003dn_const.DEVICE_NAME_MAX_LEN)"},{"line_number":74,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_a5907f43","line":71,"updated":"2015-01-19 22:33:30.000000000","message":"similar to get_rand_veth_name ...\n\nwhy not replacing get_rand_veth_name by get_rand_if_name(prefix)?","commit_id":"2ba05c55efc5add9b7331649f633ea5b1eeed933"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"a7b858d2a93e797b47bd2d1875b612f15693c35d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        :param *args *kwargs: These will be passed to the create function."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        while True:"},{"line_number":71,"context_line":"            name \u003d helpers.get_rand_name("},{"line_number":72,"context_line":"                prefix\u003dname_prefix,"},{"line_number":73,"context_line":"                max_length\u003dn_const.DEVICE_NAME_MAX_LEN)"},{"line_number":74,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_5005d013","line":71,"in_reply_to":"3a961159_a5907f43","updated":"2015-01-20 07:10:42.000000000","message":"I\u0027d rather not do these changes: this function intends on creating some resource (not necessarily an interface - create_ovs_bridge for example creates a bridge and this function is used throughout the functional code), so changing the inner implementation to \u0027get_rand_interface_name\u0027 is highly misleading.\n\nAccepting this change in turn would lead to  prolonged discussion over the implementation of this minor function, which really shouldn\u0027t happen in a \u0027minor-refactor/move-it\u0027 patch like this. So I\u0027m gonna draw the line here :)","commit_id":"2ba05c55efc5add9b7331649f633ea5b1eeed933"}],"neutron/tests/functional/agent/linux/helpers.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"915e04575e886d481462f49a010254abe32459b6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    cmdline \u003d get_cmdline_from_pid(pid)"},{"line_number":67,"context_line":"    return cmdlines_are_equal(expected_cmd, cmdline)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class Pinger(object):"},{"line_number":71,"context_line":"    def __init__(self, testcase, timeout\u003d1, max_attempts\u003d1):"},{"line_number":72,"context_line":"        self.testcase \u003d testcase"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_dd0b6220","line":69,"updated":"2015-01-13 15:38:55.000000000","message":"Why not moving all functions/class to common helpers?","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"40dde9ad55810a84791c1340b9170bb7f430feb0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    cmdline \u003d get_cmdline_from_pid(pid)"},{"line_number":67,"context_line":"    return cmdlines_are_equal(expected_cmd, cmdline)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class Pinger(object):"},{"line_number":71,"context_line":"    def __init__(self, testcase, timeout\u003d1, max_attempts\u003d1):"},{"line_number":72,"context_line":"        self.testcase \u003d testcase"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b58d2238","line":69,"in_reply_to":"3a961159_c967e4b6","updated":"2015-01-19 11:36:27.000000000","message":"Actually I agree with Cedric that this is a good idea. Cedric is working on a FakeMachine patch [1] which basically allows a test to create an interface with an IP and have it ping/dhcp/etc. The applications for such a patch are clear when dealing with fullstack tests, and I\u0027d hate to create another patch down the line just to move the functional-FakeMachine to fullstack.\n\nSince Pinger depends on the rest of the functions here, I\u0027m inclined to just change this into a \u0027git mv\u0027 patch (plus move get_rand_name, plus change imports appropriately).\n\n[1]: https://review.openstack.org/#/c/143412/","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"834c059b1ef7ff21d45816df0969093e66cc3c1a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    cmdline \u003d get_cmdline_from_pid(pid)"},{"line_number":67,"context_line":"    return cmdlines_are_equal(expected_cmd, cmdline)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class Pinger(object):"},{"line_number":71,"context_line":"    def __init__(self, testcase, timeout\u003d1, max_attempts\u003d1):"},{"line_number":72,"context_line":"        self.testcase \u003d testcase"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_c967e4b6","line":69,"in_reply_to":"3a961159_dd0b6220","updated":"2015-01-15 03:49:14.000000000","message":"this could be done later, and it will help us digest the patch more easily, IMO. But it sounds like Pinger etc are only functional-related","commit_id":"55dcd61669c9ecd5d026a54d27cf4ab60641fbe9"}]}
