)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"2dcc4229c7a474f8c7d5f8d65214e70a88db2a32","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2015-05-07 09:02:59 +0300"},{"line_number":4,"context_line":"Commit:     John Schwarz \u003cjschwarz@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-28 12:58:40 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move full-stack logs post-tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, it\u0027s up to the developer who wants to run full-stack on his"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"5afe65bd_940d9692","line":6,"updated":"2015-06-03 14:35:55.000000000","message":"This also fixes an issue where presently the logs are timestamp based, meaning that if you try to add a second test, it gets executed via a separate worker, so the timestamp for the two tests are sufficiently identical so that the two tests fixtures use the same log. Very confusing to see two neutron servers output logs to the same file :)","commit_id":"2fcbbf3031fe1d326ddb2b9bb1b06e0e39422022"}],"neutron/tests/contrib/post_test_hook.sh":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"666b937c78a5adce5c2a2efa3d24186f3ef47a49","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    fi"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # Compress all /tmp/*.log files and move them to /opt/stack/logs"},{"line_number":24,"context_line":"    sudo find /tmp -iname \"*.log\" -type f -exec gzip -9 {} \\; -exec mv {}.gz /tmp/stack/logs \\;"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if [ \"$venv\" \u003d\u003d \"dsvm-functional\" ]"}],"source_content_type":"text/x-sh","patch_set":4,"id":"7ad8896b_e278ee91","line":24,"updated":"2015-05-11 17:47:47.000000000","message":"This seems a little presumptuous to say that any regular file matching /tmp/*.log belongs to this test run and should be gzipped and moved.  How difficult would it be to create a unique directory in /tmp for the logs for this run?\n\nAlso, the location in the comment \"/opt/stack/logs\" doesn\u0027t match the code \"/tmp/stack/logs\".","commit_id":"ddf887da2a0206c98b2432a2ddd07d04af9fb8b2"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"c93e79f8aeebe64294011bf8b5e0ffcbd5b2703e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    fi"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # Compress all /tmp/*.log files and move them to /opt/stack/logs"},{"line_number":24,"context_line":"    sudo find /tmp -iname \"*.log\" -type f -exec gzip -9 {} \\; -exec mv {}.gz /tmp/stack/logs \\;"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if [ \"$venv\" \u003d\u003d \"dsvm-functional\" ]"}],"source_content_type":"text/x-sh","patch_set":4,"id":"7ad8896b_ddcb971d","line":24,"in_reply_to":"7ad8896b_7df943c8","updated":"2015-05-11 18:55:21.000000000","message":"Whoops. Fixed.\n\nAlso, I\u0027m fairly confident in just gzipping all the .log files from /tmp, since most projects that have log files should dump them to /var/log/ or /var/run or something like that anyway.\n\nDepending on another folder (say, \u0027/tmp/fullstack/\u0027) will work, but the creation of the folder itself poses a problem - if the user doesn\u0027t run pre-run \u0027configure_for_func_test.sh\u0027, he probably won\u0027t have the directory, which will cause for some weird errors (mainly neutron daemons won\u0027t run). On the other hand, I don\u0027t want to add code to full stack that checks if the folder exists because I consider this a deployment issue, so some outside script should take care of it. The middle ground was using a folder all linux-based machines have and that all users have write access to - /tmp.\n\nSince we\u0027re keeping an air-tight ship in regards to the projects that are ran during the functional test suite, I\u0027m fine with leaving this as is.\n\nAll that said, if there\u0027s further objections in this matter, I\u0027ll create a new folder, /tmp/fullstack, and the developers be damned :)","commit_id":"ddf887da2a0206c98b2432a2ddd07d04af9fb8b2"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"b2024e26a773640a267c3edc88c02af6eb6fa5bd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    fi"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # Compress all /tmp/*.log files and move them to /opt/stack/logs"},{"line_number":24,"context_line":"    sudo find /tmp -iname \"*.log\" -type f -exec gzip -9 {} \\; -exec mv {}.gz /tmp/stack/logs \\;"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"if [ \"$venv\" \u003d\u003d \"dsvm-functional\" ]"}],"source_content_type":"text/x-sh","patch_set":4,"id":"7ad8896b_7df943c8","line":24,"in_reply_to":"7ad8896b_e278ee91","updated":"2015-05-11 18:35:32.000000000","message":"Yeah, looks like typo inserted.","commit_id":"ddf887da2a0206c98b2432a2ddd07d04af9fb8b2"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"80e33381708c12b32e3d03a3f875342e2756a242","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    # suffix changed to .txt (so browsers will know to open the compressed"},{"line_number":26,"context_line":"    # files and not download them)."},{"line_number":27,"context_line":"    if [ -d /tmp/fullstack-logs/ ]; then"},{"line_number":28,"context_line":"        sudo find /tmp/fullstack-logs -iname \"*.log\" -type f -exec mv {} {}.txt \\; -exec gzip -9 {}.txt \\;"},{"line_number":29,"context_line":"        sudo mv /tmp/fullstack-logs/* /opt/stack/logs/"},{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":12,"id":"7a016987_356277ae","line":28,"updated":"2015-05-15 15:04:53.000000000","message":"so log files will be renamed to .log.txt and then gzipped? Just want to make sure I understand. Is there a requirement to (re)name them this way? Just curious.","commit_id":"063dd6406ef4f5109f96e8f95a9b8b2dbc486124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6cccdb9770450f9f856963dee8b12f384bb8f207","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    # suffix changed to .txt (so browsers will know to open the compressed"},{"line_number":26,"context_line":"    # files and not download them)."},{"line_number":27,"context_line":"    if [ -d /tmp/fullstack-logs/ ]; then"},{"line_number":28,"context_line":"        sudo find /tmp/fullstack-logs -iname \"*.log\" -type f -exec mv {} {}.txt \\; -exec gzip -9 {}.txt \\;"},{"line_number":29,"context_line":"        sudo mv /tmp/fullstack-logs/* /opt/stack/logs/"},{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":12,"id":"7a016987_a5b3cae8","line":28,"in_reply_to":"7a016987_356277ae","updated":"2015-05-16 07:38:18.000000000","message":"When browsing log files from gate jobs, browsers know how to handle .txt.gz files (they simply ungzip them in memory and display them). They don\u0027t do the same for .log.gz (they download them and allows the user to handle them as they please).\n\n.txt.gz is more comfortable.","commit_id":"063dd6406ef4f5109f96e8f95a9b8b2dbc486124"}],"neutron/tests/fullstack/base.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"e120b51e26a72376f4c5ab3e259922ae6ba5370f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.client \u003d self.environment.neutron_server.client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def name(self):"},{"line_number":42,"context_line":"        return self.id().split(\".\")[-1]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create_db_tables(self):"},{"line_number":45,"context_line":"        \"\"\"Populate the new database."}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_48c9c277","line":42,"updated":"2015-05-16 17:58:40.000000000","message":"Should we fear test name collision?\n\nname will contain parenthesis and can contain spaces if we define scenarios, should we replace them?","commit_id":"063dd6406ef4f5109f96e8f95a9b8b2dbc486124"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3fe9275db9f9283c2a17522632551464d04693e1","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.client \u003d self.environment.neutron_server.client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def name(self):"},{"line_number":42,"context_line":"        return self.id().split(\".\")[-1]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create_db_tables(self):"},{"line_number":45,"context_line":"        \"\"\"Populate the new database."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_2eedb98e","line":42,"updated":"2015-05-26 11:39:56.000000000","message":"is this supposed to be unique?\n\nit might be better to mirror the test tree structure.","commit_id":"7bc151dbdeb3d5fa10894c0aabef82c2020aba7a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"cb0adcc0a650437973d17c64882354c6600f18b8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.client \u003d self.environment.neutron_server.client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def name(self):"},{"line_number":42,"context_line":"        return self.id().split(\".\")[-1]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create_db_tables(self):"},{"line_number":45,"context_line":"        \"\"\"Populate the new database."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_1ec46190","line":42,"in_reply_to":"7a016987_29625317","updated":"2015-05-26 17:11:22.000000000","message":"I\u0027m not concern at all about test name collision. Should there be multiple tests that are named the same, there should be multiple sets of log files, one for each test that was run.\n\nI could add the class name as a prefix, so for example the folder will be named TestL3Agent.test_namespace_exists (for the existing test). Would that suffice everyone?","commit_id":"7bc151dbdeb3d5fa10894c0aabef82c2020aba7a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"95799136b1c9718a5e1a984b4a19fe6f7c4f88f1","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.client \u003d self.environment.neutron_server.client"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def name(self):"},{"line_number":42,"context_line":"        return self.id().split(\".\")[-1]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create_db_tables(self):"},{"line_number":45,"context_line":"        \"\"\"Populate the new database."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_29625317","line":42,"in_reply_to":"7a016987_2eedb98e","updated":"2015-05-26 12:09:36.000000000","message":"From previous PS:\n\nShould we fear test name collision?\n\nname will contain parenthesis and can contain spaces if we define scenarios, should we replace them?","commit_id":"7bc151dbdeb3d5fa10894c0aabef82c2020aba7a"}],"neutron/tests/fullstack/fullstack_fixtures.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"b5a2334cbe6c581b00fa360afc11373aa0fcc774","unresolved":false,"context_lines":[{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# This should correspond the directory from which infra retrieves log files"},{"line_number":33,"context_line":"DEFAULT_LOG_DIR \u003d \u0027/tmp\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ProcessFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ad58531_ed7345b3","line":33,"updated":"2015-05-11 19:13:47.000000000","message":"+1 to using a more specific path than \u0027/tmp\u0027.  Even better - a unique directory per test run (e.g. /tmp/fullstack-logs-[timestamp]) that the post test hook script could still discover.","commit_id":"6bf71626ed952e4802d6940d6aab69ca6cd47298"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"b3c6b163351c8c2d383071b8c08fe83348ff458f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# This should correspond the directory from which infra retrieves log files"},{"line_number":33,"context_line":"DEFAULT_LOG_DIR \u003d \u0027/tmp\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ProcessFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_d2469fbe","line":33,"in_reply_to":"5ad58531_ed7345b3","updated":"2015-05-13 08:17:07.000000000","message":"Done.\n\nI\u0027ve changed the directory to be /tmp/fullstack-\u003ctest_name\u003e instead, so the user will have an easier time debugging tests on local machines.","commit_id":"6bf71626ed952e4802d6940d6aab69ca6cd47298"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d79d1847b0afa7c5f3723f980e2bd08faaa31245","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                os.mkdir(log_dir)"},{"line_number":55,"context_line":"            except OSError:"},{"line_number":56,"context_line":"                # Directory was created by a different (concurrent) worker."},{"line_number":57,"context_line":"                pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        cmd \u003d [spawn.find_executable(self.exec_name),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_0d1212b5","line":56,"updated":"2015-05-14 06:04:53.000000000","message":"Is there a reason not to check for Errno 17 (file exists) to avoid the potential for, say, ignoring a permission error?","commit_id":"f4e2bebf0ed80e8d530f74e4174155752ce89884"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"460b302a8be4765ec5f9393286da9a36170f1a71","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                os.mkdir(log_dir)"},{"line_number":55,"context_line":"            except OSError:"},{"line_number":56,"context_line":"                # Directory was created by a different (concurrent) worker."},{"line_number":57,"context_line":"                pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        cmd \u003d [spawn.find_executable(self.exec_name),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_ed67b623","line":56,"in_reply_to":"7a016987_0d1212b5","updated":"2015-05-14 06:29:13.000000000","message":"This is an excellent idea. Done.","commit_id":"f4e2bebf0ed80e8d530f74e4174155752ce89884"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3fe9275db9f9283c2a17522632551464d04693e1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                os.makedirs(log_dir)"},{"line_number":57,"context_line":"            except OSError as e:"},{"line_number":58,"context_line":"                # Make sure that the error was that the directory was created"},{"line_number":59,"context_line":"                # by a different (concurrent) worker. If not, raise the error."},{"line_number":60,"context_line":"                if e.errno !\u003d errno.EEXIST:"},{"line_number":61,"context_line":"                    raise"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_092af77e","line":59,"updated":"2015-05-26 11:39:56.000000000","message":"there can be multiple workers using the same test_name?","commit_id":"7bc151dbdeb3d5fa10894c0aabef82c2020aba7a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"cb0adcc0a650437973d17c64882354c6600f18b8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                os.makedirs(log_dir)"},{"line_number":57,"context_line":"            except OSError as e:"},{"line_number":58,"context_line":"                # Make sure that the error was that the directory was created"},{"line_number":59,"context_line":"                # by a different (concurrent) worker. If not, raise the error."},{"line_number":60,"context_line":"                if e.errno !\u003d errno.EEXIST:"},{"line_number":61,"context_line":"                    raise"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_fe6e2595","line":59,"in_reply_to":"7a016987_092af77e","updated":"2015-05-26 17:11:22.000000000","message":"Yes. For example 2 classes contain the same test name, \"test_my_stuff\", and 2 workers are running the 2 tests at the same time. In this case only one of the workers should be able to create the log dir, while the second will throw and exception (which this catches).\n\nMoving to the ClassName.test_name format (see other file\u0027s comment), this code can be removed.","commit_id":"7bc151dbdeb3d5fa10894c0aabef82c2020aba7a"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"964ada6127b78be5c93d3365c8052878f22ab407","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def start(self):"},{"line_number":52,"context_line":"        fmt \u003d self.process_name + \"--%Y-%m-%d--%H%M%S.log\""},{"line_number":53,"context_line":"        log_dir \u003d os.path.join(DEFAULT_LOG_DIR, self.test_name)"},{"line_number":54,"context_line":"        if not os.path.exists(log_dir):"},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                os.makedirs(log_dir)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_d503f4b6","line":53,"updated":"2015-05-28 12:58:05.000000000","message":"We actually have a util method for this in neutron/agent/linux/utils.py:ensure_dir, but if you\u0027d want to catch OSError and compare to EEXIST I\u0027d keep the code as is.","commit_id":"2fcbbf3031fe1d326ddb2b9bb1b06e0e39422022"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"8f6c8538c625d0ff5c7829cff9d2bb802fa1ca5e","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def start(self):"},{"line_number":52,"context_line":"        fmt \u003d self.process_name + \"--%Y-%m-%d--%H%M%S.log\""},{"line_number":53,"context_line":"        log_dir \u003d os.path.join(DEFAULT_LOG_DIR, self.test_name)"},{"line_number":54,"context_line":"        if not os.path.exists(log_dir):"},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                os.makedirs(log_dir)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5afe65bd_1aa0a88f","line":53,"in_reply_to":"7a016987_d503f4b6","updated":"2015-06-03 16:58:47.000000000","message":"Maybe the util should be updated.  I\u0027ll get it.  It should be quick.","commit_id":"2fcbbf3031fe1d326ddb2b9bb1b06e0e39422022"}],"tools/configure_for_func_testing.sh":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"7da58b8f69f5db31f61a74e54ac51e0b2c1b91a0","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"set -x"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"if [ ! -d \"/opt/stack/logs\" ]; then"},{"line_number":66,"context_line":"    # Some tests (specifically full-stack) require that this directory exists"},{"line_number":67,"context_line":"    # before the processes start, so they can save their log files here."},{"line_number":68,"context_line":"    mkdir -p /opt/stack/logs"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1aca2d91_eefadabc","line":65,"updated":"2015-05-07 15:08:57.000000000","message":"Should this be using $GATE_DEST so that it points to right place for running via gate job? (or use $DEST, as defined on L82)","commit_id":"1d89e960a82138da524acd2ac6094548dfbe5173"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"c80aa55fcf5e4a94afbc18189cf1d12bc2197d68","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"set -x"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"if [ ! -d \"/opt/stack/logs\" ]; then"},{"line_number":66,"context_line":"    # Some tests (specifically full-stack) require that this directory exists"},{"line_number":67,"context_line":"    # before the processes start, so they can save their log files here."},{"line_number":68,"context_line":"    mkdir -p /opt/stack/logs"}],"source_content_type":"text/x-sh","patch_set":1,"id":"9af37de9_205821fa","line":65,"in_reply_to":"1aca2d91_eefadabc","updated":"2015-05-11 14:44:36.000000000","message":"I\u0027m not sure. Either way, this code is neglected in favor of dumping all the logs to /tmp/ and then copying them (and gziping them) to this folder. This will be done in the post_test_hook.sh script.","commit_id":"1d89e960a82138da524acd2ac6094548dfbe5173"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7bbe8c2989756424f7fbf96555db7965d5d48019","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"if [ ! -d \"/opt/stack/logs\" ]; then"},{"line_number":66,"context_line":"    # Some tests (specifically full-stack) require that this directory exists"},{"line_number":67,"context_line":"    # before the processes start, so they can save their log files here."},{"line_number":68,"context_line":"    mkdir -p /opt/stack/logs"},{"line_number":69,"context_line":"fi"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"1aca2d91_ddcb5652","line":67,"updated":"2015-05-07 14:03:58.000000000","message":"This script is supposed to be run as root. This means that these directories will be created under the root user and the stack user won\u0027t be able to access them?","commit_id":"1d89e960a82138da524acd2ac6094548dfbe5173"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"3f08c708e3183a66b4193fc0ba2577d087239966","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"if [ ! -d \"/opt/stack/logs\" ]; then"},{"line_number":66,"context_line":"    # Some tests (specifically full-stack) require that this directory exists"},{"line_number":67,"context_line":"    # before the processes start, so they can save their log files here."},{"line_number":68,"context_line":"    mkdir -p /opt/stack/logs"},{"line_number":69,"context_line":"fi"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"1aca2d91_fdea92ab","line":67,"in_reply_to":"1aca2d91_ddcb5652","updated":"2015-05-07 14:04:16.000000000","message":"Or run with sudo I meant.","commit_id":"1d89e960a82138da524acd2ac6094548dfbe5173"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"a6d70d0decfcd1ae70f1e13f85984fe1fe88254c","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"if [ ! -d \"/opt/stack/logs\" ]; then"},{"line_number":66,"context_line":"    # Some tests (specifically full-stack) require that this directory exists"},{"line_number":67,"context_line":"    # before the processes start, so they can save their log files here."},{"line_number":68,"context_line":"    mkdir -p /opt/stack/logs"},{"line_number":69,"context_line":"fi"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"1aca2d91_731353b9","line":67,"in_reply_to":"1aca2d91_fdea92ab","updated":"2015-05-07 14:50:08.000000000","message":"Done","commit_id":"1d89e960a82138da524acd2ac6094548dfbe5173"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"d4854be9b9ef1d791122b4ebc03e66017d51ac32","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    DEST\u003d${GATE_DEST:-$DEST}"},{"line_number":78,"context_line":"    STACK_USER\u003d${GATE_STACK_USER:-$STACK_USER}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if [ ! -d \"/opt/stack/logs\" ]; then"},{"line_number":81,"context_line":"        # Some tests (specifically full-stack) require that this directory"},{"line_number":82,"context_line":"        # exists before the processes start, so they can save their log files."},{"line_number":83,"context_line":"        mkdir -p /opt/stack/logs"}],"source_content_type":"text/x-sh","patch_set":2,"id":"1aca2d91_8ea9267e","line":80,"updated":"2015-05-07 15:05:44.000000000","message":"See PS1 comment. I just missed the new version pushed.","commit_id":"aadc0af1a87bb6f675965688c80d892ca7e3654c"}]}
